ace/Source/ACE.Database/SQLFormatters/World/WeenieSQLWriter.cs
Mag-nus fb5c1999a4
Rename SkillStatus to SkillAdvancementClass (#911)
* Rename SkillStatus to SkillAdvancementClass

SkillStatus and SkillAdvancementClass are neither the perfect names for what this value represents.

However, the client calls it SkillAdvancementClass. We call it SAC in the database. And GDLE also uses the SAC naming.

I think switching this name helps align ACE with the pdb without adding any additional confusion, meaning, this new name is equally as confusing as the previous, but at last its aligned with the pdb and gdle.

* changelog
2018-07-31 07:16:24 -05:00

672 lines
34 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using ACE.Database.Models.World;
using ACE.Entity.Enum;
using ACE.Entity.Enum.Properties;
namespace ACE.Database.SQLFormatters.World
{
public class WeenieSQLWriter : SQLWriter
{
/// <summary>
/// Default is formed from: input.ClassId.ToString("00000") + " " + name
/// </summary>
public string GetDefaultFileName(Weenie input)
{
var name = input.WeeniePropertiesString.FirstOrDefault(r => r.Type == (int)PropertyString.Name);
var fileName = input.ClassId.ToString("00000") + " " + (name != null ? name.Value : "");
fileName = IllegalInFileName.Replace(fileName, "_");
fileName += ".sql";
return fileName;
}
/// <summary>
/// This will create a default subfolder path with the following format:<para />
/// [Weenie Type]\\[Creature Type]\\<para />
/// or<para />
/// [Weenie Type]\\[Item Type]\\
/// </summary>
public string GetDefaultSubfolder(Weenie input)
{
var subFolder = Enum.GetName(typeof(WeenieType), input.Type) + "\\";
if (input.Type == (int)WeenieType.Creature)
{
var property = input.WeeniePropertiesInt.FirstOrDefault(r => r.Type == (int)PropertyInt.CreatureType);
if (property != null)
{
Enum.TryParse(property.Value.ToString(), out CreatureType ct);
if (Enum.IsDefined(typeof(CreatureType), ct))
subFolder += Enum.GetName(typeof(CreatureType), property.Value) + "\\";
else
subFolder += "UnknownCT_" + property.Value + "\\";
}
else
subFolder += "Unsorted" + "\\";
}
else
{
var property = input.WeeniePropertiesInt.FirstOrDefault(r => r.Type == (int)PropertyInt.ItemType);
if (property != null)
subFolder += Enum.GetName(typeof(ItemType), property.Value) + "\\";
else
subFolder += Enum.GetName(typeof(ItemType), ItemType.None) + "\\";
}
return subFolder;
}
public void CreateSQLDELETEStatement(Weenie input, StreamWriter writer)
{
writer.WriteLine($"DELETE FROM `weenie` WHERE `class_Id` = {input.ClassId};");
}
/// <exception cref="System.Exception">WeenieClassNames must be set, and must have a record for input.ClassId.</exception>
public void CreateSQLINSERTStatement(Weenie input, StreamWriter writer)
{
string className = null;
if (WeenieClassNames != null)
WeenieClassNames.TryGetValue(input.ClassId, out className);
writer.WriteLine("INSERT INTO `weenie` (`class_Id`, `class_Name`, `type`)");
var output = $"VALUES ('{input.ClassId}', '{className}', {input.Type}) /* {Enum.GetName(typeof(WeenieType), input.Type)} */;";
output = FixNullFields(output);
writer.WriteLine(output);
if (input.WeeniePropertiesInt != null && input.WeeniePropertiesInt.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesInt.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesInt64 != null && input.WeeniePropertiesInt64.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesInt64.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesBool != null && input.WeeniePropertiesBool.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesBool.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesFloat != null && input.WeeniePropertiesFloat.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesFloat.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesString != null && input.WeeniePropertiesString.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesString.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesDID != null && input.WeeniePropertiesDID.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesDID.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesPosition != null && input.WeeniePropertiesPosition.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesPosition.OrderBy(r => r.PositionType).ToList(), writer);
}
if (input.WeeniePropertiesIID != null && input.WeeniePropertiesIID.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesIID.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesAttribute != null && input.WeeniePropertiesAttribute.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesAttribute.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesAttribute2nd != null && input.WeeniePropertiesAttribute2nd.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesAttribute2nd.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesSkill != null && input.WeeniePropertiesSkill.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesSkill.OrderBy(r => r.Type).ToList(), writer);
}
if (input.WeeniePropertiesBodyPart != null && input.WeeniePropertiesBodyPart.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesBodyPart.OrderBy(r => r.Key).ToList(), writer);
}
if (input.WeeniePropertiesSpellBook != null && input.WeeniePropertiesSpellBook.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesSpellBook.OrderBy(r => r.Spell).ToList(), writer);
}
if (input.WeeniePropertiesEventFilter != null && input.WeeniePropertiesEventFilter.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesEventFilter.OrderBy(r => r.Event).ToList(), writer);
}
if (input.WeeniePropertiesEmote != null && input.WeeniePropertiesEmote.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesEmote.OrderBy(r => r.EmoteSetId).ThenBy(r => r.Category).ToList(), writer);
}
if (input.WeeniePropertiesEmoteAction != null && input.WeeniePropertiesEmoteAction.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesEmoteAction.OrderBy(r => r.EmoteSetId).ThenBy(r => r.EmoteCategory).ThenBy(r => r.Order).ToList(), writer);
}
if (input.WeeniePropertiesCreateList != null && input.WeeniePropertiesCreateList.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesCreateList.OrderBy(r => r.WeenieClassId).ToList(), writer);
}
if (input.WeeniePropertiesBook != null)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesBook, writer);
}
if (input.WeeniePropertiesBookPageData != null && input.WeeniePropertiesBookPageData.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesBookPageData.OrderBy(r => r.PageId).ToList(), writer);
}
if (input.WeeniePropertiesGenerator != null && input.WeeniePropertiesGenerator.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesGenerator.OrderBy(r => r.Probability).ToList(), writer);
}
if (input.WeeniePropertiesPalette != null && input.WeeniePropertiesPalette.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesPalette.OrderBy(r => r.SubPaletteId).ToList(), writer);
}
if (input.WeeniePropertiesTextureMap != null && input.WeeniePropertiesTextureMap.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesTextureMap.OrderBy(r => r.Index).ToList(), writer);
}
if (input.WeeniePropertiesAnimPart != null && input.WeeniePropertiesAnimPart.Count > 0)
{
writer.WriteLine();
CreateSQLINSERTStatement(input.ClassId, input.WeeniePropertiesAnimPart.OrderBy(r => r.Index).ToList(), writer);
}
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesInt> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_int` (`object_Id`, `type`, `value`)");
var lineGenerator = new Func<int, string>(i =>
{
string propertyValueDescription = GetValueEnumName((PropertyInt)input[i].Type, input[i].Value);
var comment = Enum.GetName(typeof(PropertyInt), input[i].Type);
if (propertyValueDescription != null)
comment += " - " + propertyValueDescription;
return $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].Value.ToString().PadLeft(10)}) /* {comment} */";
});
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesInt64> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_int64` (`object_Id`, `type`, `value`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].Value.ToString().PadLeft(10)}) /* {Enum.GetName(typeof(PropertyInt64), input[i].Type)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesBool> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_bool` (`object_Id`, `type`, `value`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].Value.ToString().PadRight(5)}) /* {Enum.GetName(typeof(PropertyBool), input[i].Type)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesFloat> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_float` (`object_Id`, `type`, `value`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].Value.ToString(CultureInfo.InvariantCulture).PadLeft(7)}) /* {Enum.GetName(typeof(PropertyFloat), input[i].Type)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesString> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_string` (`object_Id`, `type`, `value`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {GetSQLString(input[i].Value)}) /* {Enum.GetName(typeof(PropertyString), input[i].Type)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesDID> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_d_i_d` (`object_Id`, `type`, `value`)");
var lineGenerator = new Func<int, string>(i =>
{
string propertyValueDescription = GetValueEnumName((PropertyDataId)input[i].Type, input[i].Value);
var comment = Enum.GetName(typeof(PropertyDataId), input[i].Type);
if (propertyValueDescription != null)
comment += " - " + propertyValueDescription;
return $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].Value.ToString().PadLeft(10)}) /* {comment} */";
});
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesPosition> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_position` (`object_Id`, `position_Type`, `obj_Cell_Id`, `origin_X`, `origin_Y`, `origin_Z`, `angles_X`, `angles_Y`, `angles_Z`, `angles_W`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {(uint)input[i].PositionType}, {input[i].ObjCellId}, {input[i].OriginX}, {input[i].OriginY}, {input[i].OriginZ}, {input[i].AnglesX}, {input[i].AnglesY}, {input[i].AnglesZ}, {input[i].AnglesW}) /* {Enum.GetName(typeof(PositionType), input[i].PositionType)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesIID> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_i_i_d` (`object_Id`, `type`, `value`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].Value.ToString().PadLeft(10)}) /* {Enum.GetName(typeof(PropertyInstanceId), input[i].Type)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesAttribute> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_attribute` (`object_Id`, `type`, `init_Level`, `level_From_C_P`, `c_P_Spent`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].InitLevel.ToString().PadLeft(3)}, {input[i].LevelFromCP}, {input[i].CPSpent}) /* {Enum.GetName(typeof(PropertyAttribute), input[i].Type)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesAttribute2nd> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_attribute_2nd` (`object_Id`, `type`, `init_Level`, `level_From_C_P`, `c_P_Spent`, `current_Level`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Type.ToString().PadLeft(3)}, {input[i].InitLevel.ToString().PadLeft(5)}, {input[i].LevelFromCP}, {input[i].CPSpent}, {input[i].CurrentLevel}) /* {Enum.GetName(typeof(PropertyAttribute2nd), input[i].Type)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesSkill> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_skill` (`object_Id`, `type`, `level_From_P_P`, `s_a_c`, `p_p`, `init_Level`, `resistance_At_Last_Check`, `last_Used_Time`)");
var lineGenerator = new Func<int, string>(i =>
$"{weenieClassID}, " +
$"{input[i].Type.ToString().PadLeft(2)}, " +
$"{input[i].LevelFromPP}, " +
$"{input[i].SAC}, " +
$"{input[i].PP}, " +
$"{input[i].InitLevel.ToString().PadLeft(3)}, " +
$"{input[i].ResistanceAtLastCheck}, " +
$"{input[i].LastUsedTime}) " +
// ReSharper disable once PossibleNullReferenceException
$"/* {Enum.GetName(typeof(Skill), input[i].Type).PadRight(19)} {((SkillAdvancementClass)input[i].SAC).ToString()} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesBodyPart> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_body_part` (`object_Id`, `key`, " +
"`d_Type`, `d_Val`, `d_Var`, " +
"`base_Armor`, `armor_Vs_Slash`, `armor_Vs_Pierce`, `armor_Vs_Bludgeon`, `armor_Vs_Cold`, `armor_Vs_Fire`, `armor_Vs_Acid`, `armor_Vs_Electric`, `armor_Vs_Nether`, " +
"`b_h`, `h_l_f`, `m_l_f`, `l_l_f`, `h_r_f`, `m_r_f`, `l_r_f`, `h_l_b`, `m_l_b`, `l_l_b`, `h_r_b`, `m_r_b`, `l_r_b`)");
var lineGenerator = new Func<int, string>(i =>
$"{weenieClassID}, " +
$"{input[i].Key.ToString().PadLeft(2)}, " +
$"{input[i].DType.ToString().PadLeft(2)}, " +
$"{input[i].DVal.ToString().PadLeft(2)}, " +
$"{input[i].DVar.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].BaseArmor.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsSlash.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsPierce.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsBludgeon.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsCold.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsFire.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsAcid.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsElectric.ToString().PadLeft(4)}, " +
$"{input[i].ArmorVsNether.ToString().PadLeft(4)}, " +
$"{input[i].BH}, " +
$"{input[i].HLF.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].MLF.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].LLF.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].HRF.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].MRF.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].LRF.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].HLB.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].MLB.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].LLB.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].HRB.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].MRB.ToString(CultureInfo.InvariantCulture).PadLeft(4)}, " +
$"{input[i].LRB.ToString(CultureInfo.InvariantCulture).PadLeft(4)}) " +
$"/* {Enum.GetName(typeof(CombatBodyPart), input[i].Key)} */");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesSpellBook> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_spell_book` (`object_Id`, `spell`, `probability`)");
var lineGenerator = new Func<int, string>(i =>
{
string label = null;
if (SpellNames != null)
SpellNames.TryGetValue((uint)input[i].Spell, out label);
return $"{weenieClassID}, {input[i].Spell.ToString().PadLeft(5)}, {input[i].Probability.ToString(CultureInfo.InvariantCulture).PadLeft(6)}) /* {label} */";
});
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesEventFilter> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_event_filter` (`object_Id`, `event`)");
var lineGenerator = new Func<int, string>(i =>
{
string label = null;
if (PacketOpCodes != null)
PacketOpCodes.TryGetValue((uint)input[i].Event, out label);
return $"{weenieClassID}, {input[i].Event.ToString().PadLeft(3)}) /* {label} */";
});
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesEmote> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_emote` (`object_Id`, `emote_Set_Id`, `category`, `probability`, `weenie_Class_Id`, `style`, `substyle`, `quest`, `vendor_Type`, `min_Health`, `max_Health`)");
var lineGenerator = new Func<int, string>(i =>
{
var categoryLabel = Enum.GetName(typeof(EmoteCategory), input[i].Category);
if (categoryLabel != null)
categoryLabel = $" /* {categoryLabel} */";
string weenieClassIdLabel = null;
if (WeenieNames != null && input[i].WeenieClassId.HasValue)
{
WeenieNames.TryGetValue(input[i].WeenieClassId.Value, out weenieClassIdLabel);
if (weenieClassIdLabel != null)
weenieClassIdLabel = $" /* {weenieClassIdLabel} */";
}
string styleLabel = null;
if (input[i].Style.HasValue)
{
styleLabel = Enum.GetName(typeof(MotionStance), input[i].Style.Value);
if (styleLabel != null)
styleLabel = $" /* {styleLabel} */";
}
string substyleLabel = null;
if (input[i].Substyle.HasValue)
{
substyleLabel = Enum.GetName(typeof(MotionCommand), input[i].Substyle.Value);
if (substyleLabel != null)
substyleLabel = $" /* {substyleLabel} */";
}
string vendorTypeLabel = null;
if (input[i].VendorType.HasValue)
{
vendorTypeLabel = Enum.GetName(typeof(VendorType), input[i].VendorType.Value);
if (vendorTypeLabel != null)
vendorTypeLabel = $" /* {vendorTypeLabel} */";
}
return
$"{weenieClassID}, " +
$"{input[i].EmoteSetId}, " +
$"{input[i].Category.ToString().PadLeft(2)}{categoryLabel}, " +
$"{input[i].Probability.ToString(CultureInfo.InvariantCulture).PadLeft(6)}, " +
$"{input[i].WeenieClassId}{weenieClassIdLabel}, " +
$"{input[i].Style}{styleLabel}, " +
$"{input[i].Substyle}{substyleLabel}, " +
$"{GetSQLString(input[i].Quest)}, " +
$"{input[i].VendorType}{vendorTypeLabel}, " +
$"{input[i].MinHealth}, " +
$"{input[i].MaxHealth})";
});
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesEmoteAction> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_emote_action` (`object_Id`, `emote_Set_Id`, `emote_Category`, `order`, `type`, `delay`, `extent`, `motion`, `message`, `test_String`, `min`, `max`, `min_64`, `max_64`, `min_Dbl`, `max_Dbl`, " +
"`stat`, `display`, `amount`, `amount_64`, `hero_X_P_64`, `percent`, `spell_Id`, `wealth_Rating`, `treasure_Class`, `treasure_Type`, `p_Script`, `sound`, `destination_Type`, `weenie_Class_Id`, `stack_Size`, `palette`, `shade`, `try_To_Bond`, " +
"`obj_Cell_Id`, `origin_X`, `origin_Y`, `origin_Z`, `angles_X`, `angles_Y`, `angles_Z`, `angles_W`)");
var lineGenerator = new Func<int, string>(i =>
{
var categoryLabel = Enum.GetName(typeof(EmoteCategory), input[i].EmoteCategory);
if (categoryLabel != null)
categoryLabel = $" /* {categoryLabel} */";
string typeLabel = Enum.GetName(typeof(EmoteType), input[i].Type);
if (typeLabel != null)
typeLabel = $" /* {typeLabel} */";
string motionLabel = null;
if (input[i].Motion.HasValue)
{
motionLabel = Enum.GetName(typeof(MotionCommand), input[i].Motion.Value);
if (motionLabel != null)
motionLabel = $" /* {motionLabel} */";
}
string spellIdLabel = null;
if (SpellNames != null && input[i].SpellId.HasValue)
{
SpellNames.TryGetValue((uint)input[i].SpellId.Value, out spellIdLabel);
if (spellIdLabel != null)
spellIdLabel = $" /* {spellIdLabel} */";
}
string pScriptLabel = null;
if (input[i].PScript.HasValue)
{
pScriptLabel = Enum.GetName(typeof(PlayScript), input[i].PScript.Value);
if (pScriptLabel != null)
pScriptLabel = $" /* {pScriptLabel} */";
}
string soundLabel = null;
if (input[i].Sound.HasValue)
{
soundLabel = Enum.GetName(typeof(Sound), input[i].Sound.Value);
if (soundLabel != null)
soundLabel = $" /* {soundLabel} */";
}
string weenieClassIdLabel = null;
if (WeenieClassNames != null && input[i].WeenieClassId.HasValue)
{
WeenieNames.TryGetValue(input[i].WeenieClassId.Value, out weenieClassIdLabel);
if (weenieClassIdLabel != null)
weenieClassIdLabel = $" /* {weenieClassIdLabel} */";
}
return
$"{weenieClassID}, " +
$"{input[i].EmoteSetId}, " +
$"{input[i].EmoteCategory.ToString().PadLeft(2)}{categoryLabel}, " +
$"{input[i].Order.ToString().PadLeft(2)}, " +
$"{input[i].Type.ToString().PadLeft(3)}{typeLabel}, " +
$"{input[i].Delay}, " +
$"{input[i].Extent}, " +
$"{input[i].Motion}{motionLabel}, " +
$"{GetSQLString(input[i].Message)}, " +
$"{GetSQLString(input[i].TestString)}, " +
$"{input[i].Min}, " +
$"{input[i].Max}, " +
$"{input[i].Min64}, " +
$"{input[i].Max64}, " +
$"{input[i].MinDbl}, " +
$"{input[i].MaxDbl}, " +
$"{input[i].Stat}, " +
$"{input[i].Display}, " +
$"{input[i].Amount}, " +
$"{input[i].Amount64}, " +
$"{input[i].HeroXP64}, " +
$"{input[i].Percent}, " +
$"{input[i].SpellId}{spellIdLabel}, " +
$"{input[i].WealthRating}, " +
$"{input[i].TreasureClass}, " +
$"{input[i].TreasureType}, " +
$"{input[i].PScript}{pScriptLabel}, " +
$"{input[i].Sound}{soundLabel}, " +
$"{input[i].DestinationType}, " +
$"{input[i].WeenieClassId}{weenieClassIdLabel}, " +
$"{input[i].StackSize}, " +
$"{input[i].Palette}, " +
$"{input[i].Shade}, " +
$"{input[i].TryToBond}, " +
$"{input[i].ObjCellId}, " +
$"{input[i].OriginX}, " +
$"{input[i].OriginY}, " +
$"{input[i].OriginZ}, " +
$"{input[i].AnglesX}, " +
$"{input[i].AnglesY}, " +
$"{input[i].AnglesZ}, " +
$"{input[i].AnglesW})";
});
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesCreateList> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_create_list` (`object_Id`, `destination_Type`, `weenie_Class_Id`, `stack_Size`, `palette`, `shade`, `try_To_Bond`)");
var lineGenerator = new Func<int, string>(i =>
{
string weenieName = null;
if (WeenieNames != null)
WeenieNames.TryGetValue(input[i].WeenieClassId, out weenieName);
return $"{weenieClassID}, {input[i].DestinationType}, {input[i].WeenieClassId.ToString().PadLeft(5)}, {input[i].StackSize.ToString().PadLeft(2)}, {input[i].Palette}, {input[i].Shade}, {input[i].TryToBond}) /* Create {weenieName ?? "Unknown"} for {Enum.GetName(typeof(DestinationType), input[i].DestinationType)} */";
});
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, WeeniePropertiesBook input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_book` (`object_Id`, `max_Num_Pages`, `max_Num_Chars_Per_Page`)");
writer.WriteLine($"VALUES ({weenieClassID}, {input.MaxNumPages}, {input.MaxNumCharsPerPage});");
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesBookPageData> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_book_page_data` (`object_Id`, `page_Id`, `author_Id`, `author_Name`, `author_Account`, `ignore_Author`, `page_Text`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].PageId}, {input[i].AuthorId}, {GetSQLString(input[i].AuthorName)}, {GetSQLString(input[i].AuthorAccount)}, {input[i].IgnoreAuthor}, {GetSQLString(input[i].PageText)})");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesGenerator> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_generator` (`object_Id`, `probability`, `weenie_Class_Id`, " +
"`delay`, `init_Create`, `max_Create`, `when_Create`, `where_Create`, `stack_Size`, `palette_Id`, `shade`, " +
"`obj_Cell_Id`, `origin_X`, `origin_Y`, `origin_Z`, `angles_X`, `angles_Y`, `angles_Z`, `angles_W`)");
var lineGenerator = new Func<int, string>(i =>
$"{weenieClassID}, " +
$"{input[i].Probability}, " +
$"{input[i].WeenieClassId}, " +
$"{input[i].Delay}, " +
$"{input[i].InitCreate}, " +
$"{input[i].MaxCreate}, " +
$"{input[i].WhenCreate}, " +
$"{input[i].WhereCreate}, " +
$"{input[i].StackSize}, " +
$"{input[i].PaletteId}, " +
$"{input[i].Shade}, " +
$"{input[i].ObjCellId}, " +
$"{input[i].OriginX}, " +
$"{input[i].OriginY}, " +
$"{input[i].OriginZ}, " +
$"{input[i].AnglesX}, " +
$"{input[i].AnglesY}, " +
$"{input[i].AnglesZ}, " +
$"{input[i].AnglesW})");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesPalette> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_palette` (`object_Id`, `sub_Palette_Id`, `offset`, `length`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].SubPaletteId}, {input[i].Offset}, {input[i].Length})");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesTextureMap> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_texture_map` (`object_Id`, `index`, `old_Id`, `new_Id`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Index}, {input[i].OldId}, {input[i].NewId})");
ValuesWriter(input.Count, lineGenerator, writer);
}
public void CreateSQLINSERTStatement(uint weenieClassID, IList<WeeniePropertiesAnimPart> input, StreamWriter writer)
{
writer.WriteLine("INSERT INTO `weenie_properties_anim_part` (`object_Id`, `index`, `animation_Id`)");
var lineGenerator = new Func<int, string>(i => $"{weenieClassID}, {input[i].Index}, {input[i].AnimationId})");
ValuesWriter(input.Count, lineGenerator, writer);
}
}
}