diff --git a/Source/Game/Entities/Object/Update/UpdateField.cs b/Source/Game/Entities/Object/Update/UpdateField.cs index bf5de1b96..8f55a84a5 100644 --- a/Source/Game/Entities/Object/Update/UpdateField.cs +++ b/Source/Game/Entities/Object/Update/UpdateField.cs @@ -13,21 +13,19 @@ namespace Game.Entities { UpdateMask _changesMask = new((int)TypeId.Max); - public UpdateFieldHolder(WorldObject owner) { } - - public BaseUpdateData ModifyValue(BaseUpdateData updateData) + public HasChangesMask ModifyValue(HasChangesMask updateData) { _changesMask.Set(updateData.Bit); return updateData; } - public void ClearChangesMask(BaseUpdateData updateData) + public void ClearChangesMask(HasChangesMask updateData) { _changesMask.Reset(updateData.Bit); updateData.ClearChangesMask(); } - public void ClearChangesMask(BaseUpdateData updateData, ref UpdateField updateField) where T : new() where U : new() + public void ClearChangesMask(HasChangesMask updateData, ref UpdateField updateField) where U : new() { _changesMask.Reset(updateData.Bit); @@ -342,20 +340,20 @@ namespace Game.Entities UpdateMask GetUpdateMask(); } - public abstract class BaseUpdateData : IHasChangesMask + public abstract class HasChangesMask : IHasChangesMask { public UpdateMask _changesMask; public int _blockBit; public int Bit; - public BaseUpdateData(int blockBit, TypeId bit, int changeMask) + public HasChangesMask(int blockBit, TypeId bit, int changeMask) { _blockBit = blockBit; Bit = (int)bit; _changesMask = new UpdateMask(changeMask); } - public BaseUpdateData(int changeMask) + public HasChangesMask(int changeMask) { _changesMask = new UpdateMask(changeMask); } diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index 75aad889d..d5b86012c 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -13,7 +13,7 @@ using System.Numerics; namespace Game.Entities { - public class ObjectFieldData : BaseUpdateData + public class ObjectFieldData : HasChangesMask { public UpdateField EntryId = new(0, 1); public UpdateField DynamicFlags = new(0, 2); @@ -170,7 +170,7 @@ namespace Game.Entities } } - public class ItemEnchantment : BaseUpdateData + public class ItemEnchantment : HasChangesMask { public UpdateField ID = new(0, 1); public UpdateField Duration = new(0, 2); @@ -245,7 +245,7 @@ namespace Game.Entities } } - public class ItemModList : BaseUpdateData + public class ItemModList : HasChangesMask { public DynamicUpdateField Values = new(-1, 0); @@ -318,7 +318,7 @@ namespace Game.Entities } } - public class SocketedGem : BaseUpdateData + public class SocketedGem : HasChangesMask { public UpdateField ItemId = new(0, 1); public UpdateField Context = new(0, 2); @@ -378,7 +378,7 @@ namespace Game.Entities } } - public class ItemData : BaseUpdateData + public class ItemData : HasChangesMask { public DynamicUpdateField ArtifactPowers = new(0, 1); public DynamicUpdateField Gems = new(0, 2); @@ -650,7 +650,7 @@ namespace Game.Entities } } - public class ContainerData : BaseUpdateData + public class ContainerData : HasChangesMask { public UpdateField NumSlots = new(0, 1); public UpdateFieldArray Slots = new(36, 2, 3); @@ -706,7 +706,7 @@ namespace Game.Entities } } - public class AzeriteEmpoweredItemData : BaseUpdateData + public class AzeriteEmpoweredItemData : HasChangesMask { public UpdateFieldArray Selections = new(5, 0, 1); @@ -769,7 +769,7 @@ namespace Game.Entities } } - public class SelectedAzeriteEssences : BaseUpdateData + public class SelectedAzeriteEssences : HasChangesMask { public UpdateField Enabled = new(0, 1); public UpdateField SpecializationID = new(0, 2); @@ -836,7 +836,7 @@ namespace Game.Entities } } - public class AzeriteItemData : BaseUpdateData + public class AzeriteItemData : HasChangesMask { public UpdateField Enabled = new(0, 1); public DynamicUpdateField UnlockedEssences = new(0, 2); @@ -1043,7 +1043,7 @@ namespace Game.Entities } } - public class VisibleItem : BaseUpdateData + public class VisibleItem : HasChangesMask { public UpdateField ItemID = new(0, 1); public UpdateField SecondaryItemModifiedAppearanceID = new(0, 2); @@ -1118,7 +1118,7 @@ namespace Game.Entities } } - public class UnitData : BaseUpdateData + public class UnitData : HasChangesMask { static int ChangeMaskLength = 217; @@ -2406,7 +2406,7 @@ namespace Game.Entities } } - public class QuestLog : BaseUpdateData + public class QuestLog : HasChangesMask { static int changeMaskLength = 30; @@ -2483,7 +2483,7 @@ namespace Game.Entities } } - public class ArenaCooldown : BaseUpdateData + public class ArenaCooldown : HasChangesMask { public UpdateField SpellID = new(0, 1); public UpdateField Charges = new(0, 2); @@ -2582,7 +2582,7 @@ namespace Game.Entities } } - public class PlayerData : BaseUpdateData + public class PlayerData : HasChangesMask { public UpdateField HasQuestSession = new(0, 1); public UpdateField HasLevelLink = new(0, 2); @@ -3055,7 +3055,7 @@ namespace Game.Entities bool IsQuestLogChangesMaskSkipped() { return false; } // bandwidth savings aren't worth the cpu time } - public class SkillInfo : BaseUpdateData + public class SkillInfo : HasChangesMask { public UpdateFieldArray SkillLineID = new(256, 0, 1); public UpdateFieldArray SkillStep = new(256, 0, 257); @@ -3144,7 +3144,7 @@ namespace Game.Entities } } - public class RestInfo : BaseUpdateData + public class RestInfo : HasChangesMask { public UpdateField Threshold = new(0, 1); public UpdateField StateID = new(0, 2); @@ -3187,7 +3187,7 @@ namespace Game.Entities } } - public class PVPInfo : BaseUpdateData + public class PVPInfo : HasChangesMask { public UpdateField Disqualified = new(0, 1); public UpdateField Bracket = new(0, 2); @@ -3415,7 +3415,7 @@ namespace Game.Entities } } - public class CompletedProject : BaseUpdateData + public class CompletedProject : HasChangesMask { public UpdateField ProjectID = new(0, 1); public UpdateField FirstCompleted = new(0, 2); @@ -3465,7 +3465,7 @@ namespace Game.Entities } } - public class ResearchHistory : BaseUpdateData + public class ResearchHistory : HasChangesMask { public DynamicUpdateField CompletedProjects = new(0, 1); @@ -3584,7 +3584,7 @@ namespace Game.Entities } } - public class ActivePlayerUnk901 : BaseUpdateData + public class ActivePlayerUnk901 : HasChangesMask { public UpdateField Field_0 = new(0, 1); public UpdateField Field_10 = new(0, 2); @@ -3627,7 +3627,7 @@ namespace Game.Entities } } - public class QuestSession : BaseUpdateData + public class QuestSession : HasChangesMask { public UpdateField Owner = new(0, 1); public UpdateFieldArray QuestCompleted = new(875, 2, 3); @@ -3682,7 +3682,7 @@ namespace Game.Entities } } - public class ReplayedQuest : BaseUpdateData + public class ReplayedQuest : HasChangesMask { public UpdateField QuestID = new(0, 1); public UpdateField ReplayTime = new(0, 2); @@ -3757,7 +3757,7 @@ namespace Game.Entities } } - public class TraitConfig : BaseUpdateData + public class TraitConfig : HasChangesMask { public DynamicUpdateField Entries = new(0, 1); public UpdateField ID = new(0, 2); @@ -3906,7 +3906,7 @@ namespace Game.Entities } } - public class CraftingOrderItem : BaseUpdateData + public class CraftingOrderItem : HasChangesMask { public UpdateField Field_0 = new(-1, 0); public UpdateField ItemGUID = new(-1, 1); @@ -3991,7 +3991,7 @@ namespace Game.Entities } } - public class CraftingOrderData : BaseUpdateData + public class CraftingOrderData : HasChangesMask { public DynamicUpdateField Reagents = new(0, 1); public UpdateField Field_0 = new(0, 2); @@ -4209,7 +4209,7 @@ namespace Game.Entities } } - public class CraftingOrder : BaseUpdateData + public class CraftingOrder : HasChangesMask { public DynamicUpdateField Enchantments = new(-1, 0); public DynamicUpdateField Gems = new(-1, 1); @@ -4369,7 +4369,7 @@ namespace Game.Entities } } - public class StablePetInfo : BaseUpdateData + public class StablePetInfo : HasChangesMask { public UpdateField PetSlot = new(0, 1); public UpdateField PetNumber = new(0, 2); @@ -4451,7 +4451,7 @@ namespace Game.Entities } } - public class StableInfo : BaseUpdateData + public class StableInfo : HasChangesMask { public DynamicUpdateField Pets = new(0, 1); public UpdateField StableMaster = new(0, 2); @@ -4514,7 +4514,7 @@ namespace Game.Entities } } - public class CollectableSourceTrackedData : BaseUpdateData + public class CollectableSourceTrackedData : HasChangesMask { public UpdateField TargetType = new(0, 1); public UpdateField TargetID = new(0, 2); @@ -4579,7 +4579,7 @@ namespace Game.Entities } } - public class ActivePlayerData : BaseUpdateData + public class ActivePlayerData : HasChangesMask { public static int ExploredZonesSize; public static int ExploredZonesBits; @@ -6401,7 +6401,7 @@ namespace Game.Entities } } - public class GameObjectFieldData : BaseUpdateData + public class GameObjectFieldData : HasChangesMask { public UpdateField> StateWorldEffectIDs = new(0, 1); public DynamicUpdateField EnableDoodadSets = new(0, 2); @@ -6670,7 +6670,7 @@ namespace Game.Entities } } - public class DynamicObjectData : BaseUpdateData + public class DynamicObjectData : HasChangesMask { public UpdateField Caster = new(0, 1); public UpdateField Type = new(0, 2); @@ -6742,7 +6742,7 @@ namespace Game.Entities } } - public class CorpseData : BaseUpdateData + public class CorpseData : HasChangesMask { public DynamicUpdateField Customizations = new(0, 1); public UpdateField DynamicFlags = new(0, 2); @@ -6895,7 +6895,7 @@ namespace Game.Entities } } - public class ScaleCurve : BaseUpdateData + public class ScaleCurve : HasChangesMask { public UpdateField OverrideActive = new(0, 1); public UpdateField StartTimeOffset = new(0, 2); @@ -6967,7 +6967,7 @@ namespace Game.Entities } } - public class VisualAnim : BaseUpdateData + public class VisualAnim : HasChangesMask { public UpdateField Field_C = new(0, 1); public UpdateField AnimationDataID = new(0, 2); @@ -7029,7 +7029,7 @@ namespace Game.Entities } } - public class AreaTriggerFieldData : BaseUpdateData + public class AreaTriggerFieldData : HasChangesMask { public UpdateField HeightIgnoresScale = new(0, 1); public UpdateField Field_261 = new(0, 2); @@ -7242,7 +7242,7 @@ namespace Game.Entities } } - public class SceneObjectData : BaseUpdateData + public class SceneObjectData : HasChangesMask { public UpdateField ScriptPackageID = new(0, 1); public UpdateField RndSeedVal = new(0, 2); @@ -7374,7 +7374,7 @@ namespace Game.Entities } } - public class ConversationData : BaseUpdateData + public class ConversationData : HasChangesMask { public UpdateField DontPlayBroadcastTextSounds = new(0, 1); public UpdateField> Lines = new(0, 2); diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index 2fb65ed90..243527277 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -33,7 +33,7 @@ namespace Game.Entities ObjectTypeId = TypeId.Object; ObjectTypeMask = TypeMask.Object; - m_values = new UpdateFieldHolder(this); + m_values = new UpdateFieldHolder(); m_movementInfo = new MovementInfo(); m_updateFlag.Clear();