Core: SOme code cleanup, more to follow.

This commit is contained in:
hondacrx
2021-03-20 22:48:48 -04:00
parent 62f554f2e0
commit 62ec699ec6
318 changed files with 5080 additions and 5125 deletions
@@ -31,10 +31,10 @@ namespace Game.DataStorage
public void LoadAreaTriggerTemplates()
{
uint oldMSTime = Time.GetMSTime();
MultiMap<uint, Vector2> verticesByAreaTrigger = new MultiMap<uint, Vector2>();
MultiMap<uint, Vector2> verticesTargetByAreaTrigger = new MultiMap<uint, Vector2>();
MultiMap<uint, Vector3> splinesBySpellMisc = new MultiMap<uint, Vector3>();
MultiMap<AreaTriggerId, AreaTriggerAction> actionsByAreaTrigger = new MultiMap<AreaTriggerId, AreaTriggerAction>();
MultiMap<uint, Vector2> verticesByAreaTrigger = new();
MultiMap<uint, Vector2> verticesTargetByAreaTrigger = new();
MultiMap<uint, Vector3> splinesBySpellMisc = new();
MultiMap<AreaTriggerId, AreaTriggerAction> actionsByAreaTrigger = new();
// 0 1 2 3 4
SQLResult templateActions = DB.World.Query("SELECT AreaTriggerId, IsServerSide, ActionType, ActionParam, TargetType FROM `areatrigger_template_actions`");
@@ -110,7 +110,7 @@ namespace Game.DataStorage
{
uint spellMiscId = splines.Read<uint>(0);
Vector3 spline = new Vector3(splines.Read<float>(1), splines.Read<float>(2), splines.Read<float>(3));
Vector3 spline = new(splines.Read<float>(1), splines.Read<float>(2), splines.Read<float>(3));
splinesBySpellMisc.Add(spellMiscId, spline);
}
@@ -127,7 +127,7 @@ namespace Game.DataStorage
{
do
{
AreaTriggerTemplate areaTriggerTemplate = new AreaTriggerTemplate();
AreaTriggerTemplate areaTriggerTemplate = new();
areaTriggerTemplate.Id = new(templates.Read<uint>(0), templates.Read<byte>(1) == 1);
AreaTriggerTypes type = (AreaTriggerTypes)templates.Read<byte>(2);
@@ -172,7 +172,7 @@ namespace Game.DataStorage
{
do
{
AreaTriggerMiscTemplate miscTemplate = new AreaTriggerMiscTemplate();
AreaTriggerMiscTemplate miscTemplate = new();
miscTemplate.MiscId = areatriggerSpellMiscs.Read<uint>(0);
uint areatriggerId = areatriggerSpellMiscs.Read<uint>(1);
@@ -233,7 +233,7 @@ namespace Game.DataStorage
continue;
}
AreaTriggerOrbitInfo orbitInfo = new AreaTriggerOrbitInfo();
AreaTriggerOrbitInfo orbitInfo = new();
orbitInfo.StartDelay = circularMovementInfos.Read<uint>(1);
orbitInfo.Radius = circularMovementInfos.Read<float>(2);
@@ -305,7 +305,7 @@ namespace Game.DataStorage
continue;
}
AreaTriggerSpawn spawn = new AreaTriggerSpawn();
AreaTriggerSpawn spawn = new();
spawn.SpawnId = spawnId;
spawn.Id = areaTriggerId;
spawn.Location = new WorldLocation(location);
@@ -349,9 +349,9 @@ namespace Game.DataStorage
return _areaTriggerSpawnsBySpawnId.LookupByKey(spawnId);
}
Dictionary<(uint mapId, uint cellId), SortedSet<ulong>> _areaTriggerSpawnsByLocation = new Dictionary<(uint mapId, uint cellId), SortedSet<ulong>>();
Dictionary<ulong, AreaTriggerSpawn> _areaTriggerSpawnsBySpawnId = new Dictionary<ulong, AreaTriggerSpawn>();
Dictionary<AreaTriggerId, AreaTriggerTemplate> _areaTriggerTemplateStore = new Dictionary<AreaTriggerId, AreaTriggerTemplate>();
Dictionary<uint, AreaTriggerMiscTemplate> _areaTriggerTemplateSpellMisc = new Dictionary<uint, AreaTriggerMiscTemplate>();
Dictionary<(uint mapId, uint cellId), SortedSet<ulong>> _areaTriggerSpawnsByLocation = new();
Dictionary<ulong, AreaTriggerSpawn> _areaTriggerSpawnsBySpawnId = new();
Dictionary<AreaTriggerId, AreaTriggerTemplate> _areaTriggerTemplateStore = new();
Dictionary<uint, AreaTriggerMiscTemplate> _areaTriggerTemplateSpellMisc = new();
}
}
@@ -30,7 +30,7 @@ namespace Game.DataStorage
uint oldMSTime = Time.GetMSTime();
_characterTemplateStore.Clear();
MultiMap<uint, CharacterTemplateClass> characterTemplateClasses = new MultiMap<uint, CharacterTemplateClass>();
MultiMap<uint, CharacterTemplateClass> characterTemplateClasses = new();
SQLResult classesResult = DB.World.Query("SELECT TemplateId, FactionGroup, Class FROM character_template_class");
if (!classesResult.IsEmpty())
{
@@ -71,7 +71,7 @@ namespace Game.DataStorage
do
{
CharacterTemplate templ = new CharacterTemplate();
CharacterTemplate templ = new();
templ.TemplateSetId = templates.Read<uint>(0);
templ.Name = templates.Read<string>(1);
templ.Description = templates.Read<string>(2);
@@ -101,7 +101,7 @@ namespace Game.DataStorage
return _characterTemplateStore.LookupByKey(templateId);
}
Dictionary<uint, CharacterTemplate> _characterTemplateStore = new Dictionary<uint, CharacterTemplate>();
Dictionary<uint, CharacterTemplate> _characterTemplateStore = new();
}
public struct CharacterTemplateClass
+3 -3
View File
@@ -33,7 +33,7 @@ namespace Game.DataStorage
string db2Path = dataPath + "/dbc";
BitSet availableDb2Locales = new BitSet((int)Locale.Total);
BitSet availableDb2Locales = new((int)Locale.Total);
foreach (var dir in Directory.GetDirectories(db2Path))
{
Locale locale = Path.GetFileName(dir).ToEnum<Locale>();
@@ -698,8 +698,8 @@ namespace Game.DataStorage
public static byte[] OldContinentsNodesMask = new byte[PlayerConst.TaxiMaskSize];
public static byte[] HordeTaxiNodesMask = new byte[PlayerConst.TaxiMaskSize];
public static byte[] AllianceTaxiNodesMask = new byte[PlayerConst.TaxiMaskSize];
public static Dictionary<uint, Dictionary<uint, TaxiPathBySourceAndDestination>> TaxiPathSetBySource = new Dictionary<uint, Dictionary<uint, TaxiPathBySourceAndDestination>>();
public static Dictionary<uint, TaxiPathNodeRecord[]> TaxiPathNodesByPath = new Dictionary<uint, TaxiPathNodeRecord[]>();
public static Dictionary<uint, Dictionary<uint, TaxiPathBySourceAndDestination>> TaxiPathSetBySource = new();
public static Dictionary<uint, TaxiPathNodeRecord[]> TaxiPathNodesByPath = new();
#endregion
#region Helper Methods
@@ -159,7 +159,7 @@ namespace Game.DataStorage
case TypeCode.Object:
if (type == typeof(LocalizedString))
{
LocalizedString locString = new LocalizedString();
LocalizedString locString = new();
locString[Global.WorldMgr.GetDefaultDbcLocale()] = result.Read<string>(dbIndex++);
f.SetValue(obj, locString);
@@ -37,7 +37,7 @@ namespace Game.DataStorage
public static DB6Storage<T> Read<T>(BitSet availableDb2Locales, string db2Path, string fileName, HotfixStatements preparedStatement, HotfixStatements preparedStatementLocale, ref uint loadedFileCount) where T : new()
{
DB6Storage<T> storage = new DB6Storage<T>();
DB6Storage<T> storage = new();
if (!File.Exists(db2Path + fileName))
{
@@ -45,7 +45,7 @@ namespace Game.DataStorage
return storage;
}
DBReader reader = new DBReader();
DBReader reader = new();
using (var stream = new FileStream(db2Path + fileName, FileMode.Open))
{
if (!reader.Load(stream))
@@ -118,7 +118,7 @@ namespace Game.DataStorage
{
if (ColumnMeta[i].CompressionType == DB2ColumnCompression.Common)
{
Dictionary<int, Value32> commonValues = new Dictionary<int, Value32>();
Dictionary<int, Value32> commonValues = new();
CommonData[i] = commonValues;
for (int j = 0; j < ColumnMeta[i].AdditionalDataSize / 8; j++)
@@ -177,7 +177,7 @@ namespace Game.DataStorage
bool isIndexEmpty = Header.HasIndexTable() && indexData.Count(i => i == 0) == sections[sectionIndex].NumRecords;
// duplicate rows data
Dictionary<int, int> copyData = new Dictionary<int, int>();
Dictionary<int, int> copyData = new();
for (int i = 0; i < sections[sectionIndex].NumCopyRecords; i++)
copyData[reader.ReadInt32()] = reader.ReadInt32();
@@ -222,7 +222,7 @@ namespace Game.DataStorage
//indexData = sparseIndexData;
}
BitReader bitReader = new BitReader(recordsData);
BitReader bitReader = new(recordsData);
for (int i = 0; i < sections[sectionIndex].NumRecords; ++i)
{
@@ -262,7 +262,7 @@ namespace Game.DataStorage
internal Value32[][] PalletData;
internal Dictionary<int, Value32>[] CommonData;
Dictionary<int, WDC3Row> _records = new Dictionary<int, WDC3Row>();
Dictionary<int, WDC3Row> _records = new();
}
class WDC3Row
@@ -393,7 +393,7 @@ namespace Game.DataStorage
_data.Offset = _dataOffset;
int fieldIndex = 0;
T obj = new T();
T obj = new();
foreach (var f in typeof(T).GetFields())
{
@@ -533,7 +533,7 @@ namespace Game.DataStorage
case TypeCode.Object:
if (type == typeof(LocalizedString))
{
LocalizedString localized = new LocalizedString();
LocalizedString localized = new();
if (_stringsTable == null)
{
localized[Locale.enUS] = _data.ReadCString();
@@ -749,6 +749,6 @@ namespace Game.DataStorage
}
}
StringArray stringStorage = new StringArray((int)Locale.Total);
StringArray stringStorage = new((int)Locale.Total);
}
}
@@ -26,7 +26,7 @@ namespace Game.DataStorage
{
internal static GameTable<T> Read<T>(string path, string fileName, ref uint loadedFileCount) where T : new()
{
GameTable<T> storage = new GameTable<T>();
GameTable<T> storage = new();
if (!File.Exists(path + fileName))
{
@@ -42,7 +42,7 @@ namespace Game.DataStorage
return storage;
}
List<T> data = new List<T>();
List<T> data = new();
data.Add(new T()); // row id 0, unused
string line;
@@ -92,6 +92,6 @@ namespace Game.DataStorage
public void SetData(List<T> data) { _data = data; }
List<T> _data = new List<T>();
List<T> _data = new();
}
}
@@ -33,8 +33,8 @@ namespace Game.DataStorage
_conversationLineTemplateStorage.Clear();
_conversationTemplateStorage.Clear();
Dictionary<uint, ConversationActorTemplate[]> actorsByConversation = new Dictionary<uint, ConversationActorTemplate[]>();
Dictionary<uint, ulong[]> actorGuidsByConversation = new Dictionary<uint, ulong[]>();
Dictionary<uint, ConversationActorTemplate[]> actorsByConversation = new();
Dictionary<uint, ulong[]> actorGuidsByConversation = new();
SQLResult actorTemplates = DB.World.Query("SELECT Id, CreatureId, CreatureModelId FROM conversation_actor_template");
if (!actorTemplates.IsEmpty())
@@ -44,7 +44,7 @@ namespace Game.DataStorage
do
{
uint id = actorTemplates.Read<uint>(0);
ConversationActorTemplate conversationActor = new ConversationActorTemplate();
ConversationActorTemplate conversationActor = new();
conversationActor.Id = id;
conversationActor.CreatureId = actorTemplates.Read<uint>(1);
conversationActor.CreatureModelId = actorTemplates.Read<uint>(2);
@@ -75,7 +75,7 @@ namespace Game.DataStorage
continue;
}
ConversationLineTemplate conversationLine = new ConversationLineTemplate();
ConversationLineTemplate conversationLine = new();
conversationLine.Id = id;
conversationLine.StartTime = lineTemplates.Read<uint>(1);
conversationLine.UiCameraID = lineTemplates.Read<uint>(2);
@@ -165,7 +165,7 @@ namespace Game.DataStorage
do
{
ConversationTemplate conversationTemplate = new ConversationTemplate();
ConversationTemplate conversationTemplate = new();
conversationTemplate.Id = templateResult.Read<uint>(0);
conversationTemplate.FirstLineId = templateResult.Read<uint>(1);
conversationTemplate.LastLineEndTime = templateResult.Read<uint>(2);
@@ -210,9 +210,9 @@ namespace Game.DataStorage
return _conversationTemplateStorage.LookupByKey(conversationId);
}
Dictionary<uint, ConversationTemplate> _conversationTemplateStorage = new Dictionary<uint, ConversationTemplate>();
Dictionary<uint, ConversationActorTemplate> _conversationActorTemplateStorage = new Dictionary<uint, ConversationActorTemplate>();
Dictionary<uint, ConversationLineTemplate> _conversationLineTemplateStorage = new Dictionary<uint, ConversationLineTemplate>();
Dictionary<uint, ConversationTemplate> _conversationTemplateStorage = new();
Dictionary<uint, ConversationActorTemplate> _conversationActorTemplateStorage = new();
Dictionary<uint, ConversationLineTemplate> _conversationLineTemplateStorage = new();
}
public class ConversationActorTemplate
@@ -240,9 +240,9 @@ namespace Game.DataStorage
public uint TextureKitId; // Background texture
public uint ScriptId;
public List<ConversationActorTemplate> Actors = new List<ConversationActorTemplate>();
public List<ulong> ActorGuids = new List<ulong>();
public List<ConversationLineTemplate> Lines = new List<ConversationLineTemplate>();
public List<ConversationActorTemplate> Actors = new();
public List<ulong> ActorGuids = new();
public List<ConversationLineTemplate> Lines = new();
}
+83 -83
View File
@@ -115,7 +115,7 @@ namespace Game.DataStorage
_azeriteTierUnlockLevels[key][azeriteTierUnlock.Tier] = azeriteTierUnlock.AzeriteLevel;
}
MultiMap<uint, AzeriteUnlockMappingRecord> azeriteUnlockMappings = new MultiMap<uint, AzeriteUnlockMappingRecord>();
MultiMap<uint, AzeriteUnlockMappingRecord> azeriteUnlockMappings = new();
foreach (AzeriteUnlockMappingRecord azeriteUnlockMapping in CliDB.AzeriteUnlockMappingStorage.Values)
azeriteUnlockMappings.Add(azeriteUnlockMapping.AzeriteUnlockMappingSetID, azeriteUnlockMapping);
@@ -159,8 +159,8 @@ namespace Game.DataStorage
foreach (var customizationChoice in CliDB.ChrCustomizationChoiceStorage.Values)
_chrCustomizationChoicesByOption.Add(customizationChoice.ChrCustomizationOptionID, customizationChoice);
MultiMap<uint, Tuple<uint, byte>> shapeshiftFormByModel = new MultiMap<uint, Tuple<uint, byte>>();
Dictionary<uint, ChrCustomizationDisplayInfoRecord> displayInfoByCustomizationChoice = new Dictionary<uint, ChrCustomizationDisplayInfoRecord>();
MultiMap<uint, Tuple<uint, byte>> shapeshiftFormByModel = new();
Dictionary<uint, ChrCustomizationDisplayInfoRecord> displayInfoByCustomizationChoice = new();
// build shapeshift form model lookup
foreach (ChrCustomizationElementRecord customizationElement in CliDB.ChrCustomizationElementStorage.Values)
@@ -179,7 +179,7 @@ namespace Game.DataStorage
}
}
MultiMap<uint, ChrCustomizationOptionRecord> customizationOptionsByModel = new MultiMap<uint, ChrCustomizationOptionRecord>();
MultiMap<uint, ChrCustomizationOptionRecord> customizationOptionsByModel = new();
foreach (ChrCustomizationOptionRecord customizationOption in CliDB.ChrCustomizationOptionStorage.Values)
customizationOptionsByModel.Add(customizationOption.ChrModelID, customizationOption);
@@ -195,7 +195,7 @@ namespace Game.DataStorage
}
}
Dictionary<uint, uint> parentRaces = new Dictionary<uint, uint>();
Dictionary<uint, uint> parentRaces = new();
foreach (ChrRacesRecord chrRace in CliDB.ChrRacesStorage.Values)
if (chrRace.UnalteredVisualRaceID != 0)
parentRaces[(uint)chrRace.UnalteredVisualRaceID] = chrRace.Id;
@@ -220,7 +220,7 @@ namespace Game.DataStorage
// link shapeshift displays to race/gender/form
foreach (var shapeshiftOptionsForModel in shapeshiftFormByModel.LookupByKey(model.Id))
{
ShapeshiftFormModelData data = new ShapeshiftFormModelData();
ShapeshiftFormModelData data = new();
data.OptionID = shapeshiftOptionsForModel.Item1;
data.Choices = _chrCustomizationChoicesByOption.LookupByKey(shapeshiftOptionsForModel.Item1);
if (!data.Choices.Empty())
@@ -388,7 +388,7 @@ namespace Game.DataStorage
CliDB.MapDifficultyStorage.Clear();
List<MapDifficultyXConditionRecord> mapDifficultyConditions = new List<MapDifficultyXConditionRecord>();
List<MapDifficultyXConditionRecord> mapDifficultyConditions = new();
foreach (var mapDifficultyCondition in CliDB.MapDifficultyXConditionStorage.Values)
mapDifficultyConditions.Add(mapDifficultyCondition);
@@ -597,7 +597,7 @@ namespace Game.DataStorage
_uiMapAssignmentByWmoGroup[i] = new MultiMap<int, UiMapAssignmentRecord>();
}
MultiMap<int, UiMapAssignmentRecord> uiMapAssignmentByUiMap = new MultiMap<int, UiMapAssignmentRecord>();
MultiMap<int, UiMapAssignmentRecord> uiMapAssignmentByUiMap = new();
foreach (UiMapAssignmentRecord uiMapAssignment in CliDB.UiMapAssignmentStorage.Values)
{
uiMapAssignmentByUiMap.Add(uiMapAssignment.UiMapID, uiMapAssignment);
@@ -616,13 +616,13 @@ namespace Game.DataStorage
}
}
Dictionary<Tuple<int, uint>, UiMapLinkRecord> uiMapLinks = new Dictionary<Tuple<int, uint>, UiMapLinkRecord>();
Dictionary<Tuple<int, uint>, UiMapLinkRecord> uiMapLinks = new();
foreach (UiMapLinkRecord uiMapLink in CliDB.UiMapLinkStorage.Values)
uiMapLinks[Tuple.Create(uiMapLink.ParentUiMapID, (uint)uiMapLink.ChildUiMapID)] = uiMapLink;
foreach (UiMapRecord uiMap in CliDB.UiMapStorage.Values)
{
UiMapBounds bounds = new UiMapBounds();
UiMapBounds bounds = new();
UiMapRecord parentUiMap = CliDB.UiMapStorage.LookupByKey(uiMap.ParentUiMapID);
if (parentUiMap != null)
{
@@ -716,7 +716,7 @@ namespace Game.DataStorage
return;
}
Dictionary<(uint tableHash, int recordId), bool> deletedRecords = new Dictionary<(uint tableHash, int recordId), bool>();
Dictionary<(uint tableHash, int recordId), bool> deletedRecords = new();
uint count = 0;
do
@@ -734,7 +734,7 @@ namespace Game.DataStorage
}
}
HotfixRecord hotfixRecord = new HotfixRecord();
HotfixRecord hotfixRecord = new();
hotfixRecord.TableHash = tableHash;
hotfixRecord.RecordID = recordId;
hotfixRecord.HotfixID = id;
@@ -845,7 +845,7 @@ namespace Game.DataStorage
if (!availableDb2Locales[(int)locale])
continue;
HotfixOptionalData optionalData = new HotfixOptionalData();
HotfixOptionalData optionalData = new();
optionalData.Key = result.Read<uint>(3);
var allowedHotfixItr = allowedHotfixes.Find(v =>
{
@@ -1086,7 +1086,7 @@ namespace Game.DataStorage
_ => 0
};
ContentTuningLevels levels = new ContentTuningLevels();
ContentTuningLevels levels = new();
levels.MinLevel = (short)(contentTuning.MinLevel + getLevelAdjustment((ContentTuningCalcType)contentTuning.MinLevelType));
levels.MaxLevel = (short)(contentTuning.MaxLevel + getLevelAdjustment((ContentTuningCalcType)contentTuning.MaxLevelType));
levels.MinLevelWithDelta = (short)Math.Clamp(levels.MinLevel + contentTuning.TargetLevelDelta, 1, SharedConst.MaxLevel);
@@ -1432,7 +1432,7 @@ namespace Game.DataStorage
public List<uint> GetDefaultItemBonusTree(uint itemId, ItemContext itemContext)
{
List<uint> bonusListIDs = new List<uint>();
List<uint> bonusListIDs = new();
ItemSparseRecord proto = CliDB.ItemSparseStorage.LookupByKey(itemId);
if (proto == null)
@@ -2134,7 +2134,7 @@ namespace Game.DataStorage
UiMapAssignmentRecord FindNearestMapAssignment(float x, float y, float z, int mapId, int areaId, int wmoDoodadPlacementId, int wmoGroupId, UiMapSystem system)
{
UiMapAssignmentStatus nearestMapAssignment = new UiMapAssignmentStatus();
UiMapAssignmentStatus nearestMapAssignment = new();
var iterateUiMapAssignments = new Action<MultiMap<int, UiMapAssignmentRecord>, int>((assignments, id) =>
{
foreach (var assignment in assignments.LookupByKey(id))
@@ -2216,15 +2216,15 @@ namespace Game.DataStorage
uiMapId = uiMapAssignment.UiMapID;
Vector2 relativePosition = new Vector2(0.5f, 0.5f);
Vector2 regionSize = new Vector2(uiMapAssignment.Region[1].X - uiMapAssignment.Region[0].X, uiMapAssignment.Region[1].Y - uiMapAssignment.Region[0].Y);
Vector2 relativePosition = new(0.5f, 0.5f);
Vector2 regionSize = new(uiMapAssignment.Region[1].X - uiMapAssignment.Region[0].X, uiMapAssignment.Region[1].Y - uiMapAssignment.Region[0].Y);
if (regionSize.X > 0.0f)
relativePosition.X = (x - uiMapAssignment.Region[0].X) / regionSize.X;
if (regionSize.Y > 0.0f)
relativePosition.Y = (y - uiMapAssignment.Region[0].Y) / regionSize.Y;
// x any y are swapped
Vector2 uiPosition = new Vector2(((1.0f - (1.0f - relativePosition.Y)) * uiMapAssignment.UiMin.X) + ((1.0f - relativePosition.Y) * uiMapAssignment.UiMax.X), ((1.0f - (1.0f - relativePosition.X)) * uiMapAssignment.UiMin.Y) + ((1.0f - relativePosition.X) * uiMapAssignment.UiMax.Y));
Vector2 uiPosition = new(((1.0f - (1.0f - relativePosition.Y)) * uiMapAssignment.UiMin.X) + ((1.0f - relativePosition.Y) * uiMapAssignment.UiMax.X), ((1.0f - (1.0f - relativePosition.X)) * uiMapAssignment.UiMin.Y) + ((1.0f - relativePosition.X) * uiMapAssignment.UiMax.Y));
if (!local)
uiPosition = CalculateGlobalUiMapPosition(uiMapAssignment.UiMapID, uiPosition);
@@ -2287,83 +2287,83 @@ namespace Game.DataStorage
delegate bool AllowedHotfixOptionalData(byte[] data);
Dictionary<uint, IDB2Storage> _storage = new Dictionary<uint, IDB2Storage>();
List<HotfixRecord> _hotfixData = new List<HotfixRecord>();
Dictionary<uint, IDB2Storage> _storage = new();
List<HotfixRecord> _hotfixData = new();
Dictionary<(uint tableHash, int recordId), byte[]>[] _hotfixBlob = new Dictionary<(uint tableHash, int recordId), byte[]>[(int)Locale.Total];
MultiMap<uint, Tuple<uint, AllowedHotfixOptionalData>> _allowedHotfixOptionalData = new MultiMap<uint, Tuple<uint, AllowedHotfixOptionalData>>();
MultiMap<uint, Tuple<uint, AllowedHotfixOptionalData>> _allowedHotfixOptionalData = new();
MultiMap<(uint tableHash, int recordId), HotfixOptionalData>[]_hotfixOptionalData = new MultiMap<(uint tableHash, int recordId), HotfixOptionalData>[(int)Locale.Total];
MultiMap<uint, uint> _areaGroupMembers = new MultiMap<uint, uint>();
MultiMap<uint, ArtifactPowerRecord> _artifactPowers = new MultiMap<uint, ArtifactPowerRecord>();
MultiMap<uint, uint> _artifactPowerLinks = new MultiMap<uint, uint>();
Dictionary<Tuple<uint, byte>, ArtifactPowerRankRecord> _artifactPowerRanks = new Dictionary<Tuple<uint, byte>, ArtifactPowerRankRecord>();
Dictionary<uint, AzeriteEmpoweredItemRecord> _azeriteEmpoweredItems = new Dictionary<uint, AzeriteEmpoweredItemRecord>();
Dictionary<(uint azeriteEssenceId, uint rank), AzeriteEssencePowerRecord> _azeriteEssencePowersByIdAndRank = new Dictionary<(uint azeriteEssenceId, uint rank), AzeriteEssencePowerRecord>();
List<AzeriteItemMilestonePowerRecord> _azeriteItemMilestonePowers = new List<AzeriteItemMilestonePowerRecord>();
MultiMap<uint, uint> _areaGroupMembers = new();
MultiMap<uint, ArtifactPowerRecord> _artifactPowers = new();
MultiMap<uint, uint> _artifactPowerLinks = new();
Dictionary<Tuple<uint, byte>, ArtifactPowerRankRecord> _artifactPowerRanks = new();
Dictionary<uint, AzeriteEmpoweredItemRecord> _azeriteEmpoweredItems = new();
Dictionary<(uint azeriteEssenceId, uint rank), AzeriteEssencePowerRecord> _azeriteEssencePowersByIdAndRank = new();
List<AzeriteItemMilestonePowerRecord> _azeriteItemMilestonePowers = new();
AzeriteItemMilestonePowerRecord[] _azeriteItemMilestonePowerByEssenceSlot = new AzeriteItemMilestonePowerRecord[SharedConst.MaxAzeriteEssenceSlot];
MultiMap<uint, AzeritePowerSetMemberRecord> _azeritePowers = new MultiMap<uint, AzeritePowerSetMemberRecord>();
Dictionary<(uint azeriteUnlockSetId, ItemContext itemContext), byte[]> _azeriteTierUnlockLevels = new Dictionary<(uint azeriteUnlockSetId, ItemContext itemContext), byte[]>();
Dictionary<(uint itemId, ItemContext itemContext), AzeriteUnlockMappingRecord> _azeriteUnlockMappings = new Dictionary<(uint itemId, ItemContext itemContext), AzeriteUnlockMappingRecord>();
MultiMap<uint, AzeritePowerSetMemberRecord> _azeritePowers = new();
Dictionary<(uint azeriteUnlockSetId, ItemContext itemContext), byte[]> _azeriteTierUnlockLevels = new();
Dictionary<(uint itemId, ItemContext itemContext), AzeriteUnlockMappingRecord> _azeriteUnlockMappings = new();
ChrClassUIDisplayRecord[] _uiDisplayByClass = new ChrClassUIDisplayRecord[(int)Class.Max];
uint[][] _powersByClass = new uint[(int)Class.Max][];
MultiMap<uint, ChrCustomizationChoiceRecord> _chrCustomizationChoicesByOption = new MultiMap<uint, ChrCustomizationChoiceRecord>();
Dictionary<Tuple<byte, byte>, ChrModelRecord> _chrModelsByRaceAndGender = new Dictionary<Tuple<byte, byte>, ChrModelRecord>();
Dictionary<Tuple<byte, byte, byte>, ShapeshiftFormModelData> _chrCustomizationChoicesForShapeshifts = new Dictionary<Tuple<byte, byte, byte>, ShapeshiftFormModelData>();
MultiMap<Tuple<byte, byte>, ChrCustomizationOptionRecord> _chrCustomizationOptionsByRaceAndGender = new MultiMap<Tuple<byte, byte>, ChrCustomizationOptionRecord>();
Dictionary<uint, MultiMap<uint, uint>> _chrCustomizationRequiredChoices = new Dictionary<uint, MultiMap<uint, uint>>();
MultiMap<uint, ChrCustomizationChoiceRecord> _chrCustomizationChoicesByOption = new();
Dictionary<Tuple<byte, byte>, ChrModelRecord> _chrModelsByRaceAndGender = new();
Dictionary<Tuple<byte, byte, byte>, ShapeshiftFormModelData> _chrCustomizationChoicesForShapeshifts = new();
MultiMap<Tuple<byte, byte>, ChrCustomizationOptionRecord> _chrCustomizationOptionsByRaceAndGender = new();
Dictionary<uint, MultiMap<uint, uint>> _chrCustomizationRequiredChoices = new();
ChrSpecializationRecord[][] _chrSpecializationsByIndex = new ChrSpecializationRecord[(int)Class.Max + 1][];
MultiMap<uint, CurvePointRecord> _curvePoints = new MultiMap<uint, CurvePointRecord>();
Dictionary<Tuple<uint, byte, byte, byte>, EmotesTextSoundRecord> _emoteTextSounds = new Dictionary<Tuple<uint, byte, byte, byte>, EmotesTextSoundRecord>();
Dictionary<Tuple<uint, int>, ExpectedStatRecord> _expectedStatsByLevel = new Dictionary<Tuple<uint, int>, ExpectedStatRecord>();
MultiMap<uint, ExpectedStatModRecord> _expectedStatModsByContentTuning = new MultiMap<uint, ExpectedStatModRecord>();
MultiMap<uint, uint> _factionTeams = new MultiMap<uint, uint>();
Dictionary<uint, HeirloomRecord> _heirlooms = new Dictionary<uint, HeirloomRecord>();
MultiMap<uint, uint> _glyphBindableSpells = new MultiMap<uint, uint>();
MultiMap<uint, uint> _glyphRequiredSpecs = new MultiMap<uint, uint>();
MultiMap<uint, ItemBonusRecord> _itemBonusLists = new MultiMap<uint, ItemBonusRecord>();
Dictionary<short, uint> _itemLevelDeltaToBonusListContainer = new Dictionary<short, uint>();
MultiMap<uint, ItemBonusTreeNodeRecord> _itemBonusTrees = new MultiMap<uint, ItemBonusTreeNodeRecord>();
Dictionary<uint, ItemChildEquipmentRecord> _itemChildEquipment = new Dictionary<uint, ItemChildEquipmentRecord>();
MultiMap<uint, CurvePointRecord> _curvePoints = new();
Dictionary<Tuple<uint, byte, byte, byte>, EmotesTextSoundRecord> _emoteTextSounds = new();
Dictionary<Tuple<uint, int>, ExpectedStatRecord> _expectedStatsByLevel = new();
MultiMap<uint, ExpectedStatModRecord> _expectedStatModsByContentTuning = new();
MultiMap<uint, uint> _factionTeams = new();
Dictionary<uint, HeirloomRecord> _heirlooms = new();
MultiMap<uint, uint> _glyphBindableSpells = new();
MultiMap<uint, uint> _glyphRequiredSpecs = new();
MultiMap<uint, ItemBonusRecord> _itemBonusLists = new();
Dictionary<short, uint> _itemLevelDeltaToBonusListContainer = new();
MultiMap<uint, ItemBonusTreeNodeRecord> _itemBonusTrees = new();
Dictionary<uint, ItemChildEquipmentRecord> _itemChildEquipment = new();
ItemClassRecord[] _itemClassByOldEnum = new ItemClassRecord[19];
List<uint> _itemsWithCurrencyCost = new List<uint>();
MultiMap<uint, ItemLimitCategoryConditionRecord> _itemCategoryConditions = new MultiMap<uint, ItemLimitCategoryConditionRecord>();
MultiMap<uint, ItemLevelSelectorQualityRecord> _itemLevelQualitySelectorQualities = new MultiMap<uint, ItemLevelSelectorQualityRecord>();
Dictionary<uint, ItemModifiedAppearanceRecord> _itemModifiedAppearancesByItem = new Dictionary<uint, ItemModifiedAppearanceRecord>();
MultiMap<uint, uint> _itemToBonusTree = new MultiMap<uint, uint>();
MultiMap<uint, ItemSetSpellRecord> _itemSetSpells = new MultiMap<uint, ItemSetSpellRecord>();
MultiMap<uint, ItemSpecOverrideRecord> _itemSpecOverrides = new MultiMap<uint, ItemSpecOverrideRecord>();
Dictionary<uint, Dictionary<uint, MapDifficultyRecord>> _mapDifficulties = new Dictionary<uint, Dictionary<uint, MapDifficultyRecord>>();
MultiMap<uint, Tuple<uint, PlayerConditionRecord>> _mapDifficultyConditions = new MultiMap<uint, Tuple<uint, PlayerConditionRecord>>();
Dictionary<uint, MountRecord> _mountsBySpellId = new Dictionary<uint, MountRecord>();
MultiMap<uint, MountTypeXCapabilityRecord> _mountCapabilitiesByType = new MultiMap<uint, MountTypeXCapabilityRecord>();
MultiMap<uint, MountXDisplayRecord> _mountDisplays = new MultiMap<uint, MountXDisplayRecord>();
Dictionary<uint, List<NameGenRecord>[]> _nameGenData = new Dictionary<uint, List<NameGenRecord>[]>();
List<uint> _itemsWithCurrencyCost = new();
MultiMap<uint, ItemLimitCategoryConditionRecord> _itemCategoryConditions = new();
MultiMap<uint, ItemLevelSelectorQualityRecord> _itemLevelQualitySelectorQualities = new();
Dictionary<uint, ItemModifiedAppearanceRecord> _itemModifiedAppearancesByItem = new();
MultiMap<uint, uint> _itemToBonusTree = new();
MultiMap<uint, ItemSetSpellRecord> _itemSetSpells = new();
MultiMap<uint, ItemSpecOverrideRecord> _itemSpecOverrides = new();
Dictionary<uint, Dictionary<uint, MapDifficultyRecord>> _mapDifficulties = new();
MultiMap<uint, Tuple<uint, PlayerConditionRecord>> _mapDifficultyConditions = new();
Dictionary<uint, MountRecord> _mountsBySpellId = new();
MultiMap<uint, MountTypeXCapabilityRecord> _mountCapabilitiesByType = new();
MultiMap<uint, MountXDisplayRecord> _mountDisplays = new();
Dictionary<uint, List<NameGenRecord>[]> _nameGenData = new();
List<string>[] _nameValidators = new List<string>[(int)Locale.Total + 1];
MultiMap<uint, uint> _phasesByGroup = new MultiMap<uint, uint>();
Dictionary<PowerType, PowerTypeRecord> _powerTypes = new Dictionary<PowerType, PowerTypeRecord>();
Dictionary<uint, byte> _pvpItemBonus = new Dictionary<uint, byte>();
MultiMap<uint, uint> _phasesByGroup = new();
Dictionary<PowerType, PowerTypeRecord> _powerTypes = new();
Dictionary<uint, byte> _pvpItemBonus = new();
PvpTalentSlotUnlockRecord[] _pvpTalentSlotUnlock = new PvpTalentSlotUnlockRecord[PlayerConst.MaxPvpTalentSlots];
Dictionary<uint, Tuple<List<QuestPackageItemRecord>, List<QuestPackageItemRecord>>> _questPackages = new Dictionary<uint, Tuple<List<QuestPackageItemRecord>, List<QuestPackageItemRecord>>>();
MultiMap<uint, RewardPackXCurrencyTypeRecord> _rewardPackCurrencyTypes = new MultiMap<uint, RewardPackXCurrencyTypeRecord>();
MultiMap<uint, RewardPackXItemRecord> _rewardPackItems = new MultiMap<uint, RewardPackXItemRecord>();
MultiMap<uint, SkillLineRecord> _skillLinesByParentSkillLine = new MultiMap<uint, SkillLineRecord>();
MultiMap<uint, SkillLineAbilityRecord> _skillLineAbilitiesBySkillupSkill = new MultiMap<uint, SkillLineAbilityRecord>();
MultiMap<uint, SkillRaceClassInfoRecord> _skillRaceClassInfoBySkill = new MultiMap<uint, SkillRaceClassInfoRecord>();
MultiMap<uint, SpecializationSpellsRecord> _specializationSpellsBySpec = new MultiMap<uint, SpecializationSpellsRecord>();
List<Tuple<int, uint>> _specsBySpecSet = new List<Tuple<int, uint>>();
List<byte> _spellFamilyNames = new List<byte>();
MultiMap<uint, SpellProcsPerMinuteModRecord> _spellProcsPerMinuteMods = new MultiMap<uint, SpellProcsPerMinuteModRecord>();
Dictionary<uint, Tuple<List<QuestPackageItemRecord>, List<QuestPackageItemRecord>>> _questPackages = new();
MultiMap<uint, RewardPackXCurrencyTypeRecord> _rewardPackCurrencyTypes = new();
MultiMap<uint, RewardPackXItemRecord> _rewardPackItems = new();
MultiMap<uint, SkillLineRecord> _skillLinesByParentSkillLine = new();
MultiMap<uint, SkillLineAbilityRecord> _skillLineAbilitiesBySkillupSkill = new();
MultiMap<uint, SkillRaceClassInfoRecord> _skillRaceClassInfoBySkill = new();
MultiMap<uint, SpecializationSpellsRecord> _specializationSpellsBySpec = new();
List<Tuple<int, uint>> _specsBySpecSet = new();
List<byte> _spellFamilyNames = new();
MultiMap<uint, SpellProcsPerMinuteModRecord> _spellProcsPerMinuteMods = new();
List<TalentRecord>[][][] _talentsByPosition = new List<TalentRecord>[(int)Class.Max][][];
List<uint> _toys = new List<uint>();
MultiMap<uint, TransmogSetRecord> _transmogSetsByItemModifiedAppearance = new MultiMap<uint, TransmogSetRecord>();
MultiMap<uint, TransmogSetItemRecord> _transmogSetItemsByTransmogSet = new MultiMap<uint, TransmogSetItemRecord>();
Dictionary<int, UiMapBounds> _uiMapBounds = new Dictionary<int, UiMapBounds>();
List<uint> _toys = new();
MultiMap<uint, TransmogSetRecord> _transmogSetsByItemModifiedAppearance = new();
MultiMap<uint, TransmogSetItemRecord> _transmogSetItemsByTransmogSet = new();
Dictionary<int, UiMapBounds> _uiMapBounds = new();
MultiMap<int, UiMapAssignmentRecord>[] _uiMapAssignmentByMap = new MultiMap<int, UiMapAssignmentRecord>[(int)UiMapSystem.Max];
MultiMap<int, UiMapAssignmentRecord>[] _uiMapAssignmentByArea = new MultiMap<int, UiMapAssignmentRecord>[(int)UiMapSystem.Max];
MultiMap<int, UiMapAssignmentRecord>[] _uiMapAssignmentByWmoDoodadPlacement = new MultiMap<int, UiMapAssignmentRecord>[(int)UiMapSystem.Max];
MultiMap<int, UiMapAssignmentRecord>[] _uiMapAssignmentByWmoGroup = new MultiMap<int, UiMapAssignmentRecord>[(int)UiMapSystem.Max];
List<int> _uiMapPhases = new List<int>();
Dictionary<Tuple<short, sbyte, int>, WMOAreaTableRecord> _wmoAreaTableLookup = new Dictionary<Tuple<short, sbyte, int>, WMOAreaTableRecord>();
List<int> _uiMapPhases = new();
Dictionary<Tuple<short, sbyte, int>, WMOAreaTableRecord> _wmoAreaTableLookup = new();
}
class UiMapBounds
@@ -2606,8 +2606,8 @@ namespace Game.DataStorage
public class ShapeshiftFormModelData
{
public uint OptionID;
public List<ChrCustomizationChoiceRecord> Choices = new List<ChrCustomizationChoiceRecord>();
public List<ChrCustomizationDisplayInfoRecord> Displays = new List<ChrCustomizationDisplayInfoRecord>();
public List<ChrCustomizationChoiceRecord> Choices = new();
public List<ChrCustomizationDisplayInfoRecord> Displays = new();
}
enum CurveInterpolationMode
+8 -8
View File
@@ -27,7 +27,7 @@ namespace Game.DataStorage
// Convert the geomoetry from a spline value, to an actual WoW XYZ
static Vector3 TranslateLocation(Vector4 dbcLocation, Vector3 basePosition, Vector3 splineVector)
{
Vector3 work = new Vector3();
Vector3 work = new();
float x = basePosition.X + splineVector.X;
float y = basePosition.Y + splineVector.Y;
float z = basePosition.Z + splineVector.Z;
@@ -46,10 +46,10 @@ namespace Game.DataStorage
// Number of cameras not used. Multiple cameras never used in 7.1.5
static void ReadCamera(M2Camera cam, BinaryReader reader, CinematicCameraRecord dbcentry)
{
List<FlyByCamera> cameras = new List<FlyByCamera>();
List<FlyByCamera> targetcam = new List<FlyByCamera>();
List<FlyByCamera> cameras = new();
List<FlyByCamera> targetcam = new();
Vector4 dbcData = new Vector4(dbcentry.Origin.X, dbcentry.Origin.Y, dbcentry.Origin.Z, dbcentry.OriginFacing);
Vector4 dbcData = new(dbcentry.Origin.X, dbcentry.Origin.Y, dbcentry.Origin.Z, dbcentry.OriginFacing);
// Read target locations, only so that we can calculate orientation
for (uint k = 0; k < cam.target_positions.timestamps.number; ++k)
@@ -76,7 +76,7 @@ namespace Game.DataStorage
Vector3 newPos = TranslateLocation(dbcData, cam.target_position_base, targPositions[i].p0);
// Add to vector
FlyByCamera thisCam = new FlyByCamera();
FlyByCamera thisCam = new();
thisCam.timeStamp = targTimestamps[i];
thisCam.locations = new Vector4(newPos.X, newPos.Y, newPos.Z, 0.0f);
targetcam.Add(thisCam);
@@ -108,7 +108,7 @@ namespace Game.DataStorage
Vector3 newPos = TranslateLocation(dbcData, cam.position_base, positions[i].p0);
// Add to vector
FlyByCamera thisCam = new FlyByCamera();
FlyByCamera thisCam = new();
thisCam.timeStamp = posTimestamps[i];
thisCam.locations = new Vector4(newPos.X, newPos.Y, newPos.Z, 0);
@@ -170,7 +170,7 @@ namespace Game.DataStorage
try
{
using (BinaryReader m2file = new BinaryReader(new FileStream(filename, FileMode.Open, FileAccess.Read)))
using (BinaryReader m2file = new(new FileStream(filename, FileMode.Open, FileAccess.Read)))
{
// Check file has correct magic (MD21)
if (m2file.ReadUInt32() != 0x3132444D) //"MD21"
@@ -209,7 +209,7 @@ namespace Game.DataStorage
return FlyByCameraStorage.LookupByKey(cameraId);
}
static MultiMap<uint, FlyByCamera> FlyByCameraStorage = new MultiMap<uint, FlyByCamera>();
static MultiMap<uint, FlyByCamera> FlyByCameraStorage = new();
}
public class FlyByCamera