Core/Creatures: Wrap all creature static flags in a structure

Port From (https://github.com/TrinityCore/TrinityCore/commit/6bcbc786e50390cd64f634c87a5871178dd9b36f)
This commit is contained in:
hondacrx
2023-03-14 02:19:34 -04:00
parent 5a79b3f385
commit ccea9d09df
2 changed files with 44 additions and 33 deletions
@@ -21,14 +21,7 @@ namespace Game.Entities
long _lastDamagedTime; // Part of Evade mechanics long _lastDamagedTime; // Part of Evade mechanics
MultiMap<byte, byte> m_textRepeat = new(); MultiMap<byte, byte> m_textRepeat = new();
CreatureStaticFlags _staticFlags; CreatureStaticFlagsHolder _staticFlags;
CreatureStaticFlags2 _staticFlags2;
CreatureStaticFlags3 _staticFlags3;
CreatureStaticFlags4 _staticFlags4;
CreatureStaticFlags5 _staticFlags5;
CreatureStaticFlags6 _staticFlags6;
CreatureStaticFlags7 _staticFlags7;
CreatureStaticFlags8 _staticFlags8;
// Regenerate health // Regenerate health
bool _regenerateHealth; // Set on creation bool _regenerateHealth; // Set on creation
@@ -108,4 +101,34 @@ namespace Game.Entities
public ObjectGuid Target; // the creature's "real" target while casting public ObjectGuid Target; // the creature's "real" target while casting
public float Orientation; // the creature's "real" orientation while casting public float Orientation; // the creature's "real" orientation while casting
} }
struct CreatureStaticFlagsHolder
{
CreatureStaticFlags _flags;
CreatureStaticFlags2 _flags2;
CreatureStaticFlags3 _flags3;
CreatureStaticFlags4 _flags4;
CreatureStaticFlags5 _flags5;
CreatureStaticFlags6 _flags6;
CreatureStaticFlags7 _flags7;
CreatureStaticFlags8 _flags8;
public bool HasFlag(CreatureStaticFlags flag) { return _flags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags2 flag) { return _flags2.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags3 flag) { return _flags3.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags4 flag) { return _flags4.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags5 flag) { return _flags5.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags6 flag) { return _flags6.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags7 flag) { return _flags7.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags8 flag) { return _flags8.HasFlag(flag); }
public void ApplyFlag(CreatureStaticFlags flag, bool apply) { if (apply) _flags |= flag; else _flags &= ~flag; }
public void ApplyFlag(CreatureStaticFlags2 flag, bool apply) { if (apply) _flags2 |= flag; else _flags2 &= ~flag; }
public void ApplyFlag(CreatureStaticFlags3 flag, bool apply) { if (apply) _flags3 |= flag; else _flags3 &= ~flag; }
public void ApplyFlag(CreatureStaticFlags4 flag, bool apply) { if (apply) _flags4 |= flag; else _flags4 &= ~flag; }
public void ApplyFlag(CreatureStaticFlags5 flag, bool apply) { if (apply) _flags5 |= flag; else _flags5 &= ~flag; }
public void ApplyFlag(CreatureStaticFlags6 flag, bool apply) { if (apply) _flags6 |= flag; else _flags6 &= ~flag; }
public void ApplyFlag(CreatureStaticFlags7 flag, bool apply) { if (apply) _flags7 |= flag; else _flags7 &= ~flag; }
public void ApplyFlag(CreatureStaticFlags8 flag, bool apply) { if (apply) _flags8 |= flag; else _flags8 &= ~flag; }
}
} }
+13 -25
View File
@@ -1129,14 +1129,14 @@ namespace Game.Entities
SetHomePosition(GetPosition()); SetHomePosition(GetPosition());
} }
public bool HasFlag(CreatureStaticFlags flag) { return _staticFlags.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags2 flag) { return _staticFlags2.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags2 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags3 flag) { return _staticFlags3.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags3 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags4 flag) { return _staticFlags4.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags4 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags5 flag) { return _staticFlags5.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags5 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags6 flag) { return _staticFlags6.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags6 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags7 flag) { return _staticFlags7.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags7 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags8 flag) { return _staticFlags8.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags8 flag) { return _staticFlags.HasFlag(flag); }
public uint GetTrainerId() public uint GetTrainerId()
{ {
@@ -1624,7 +1624,7 @@ namespace Game.Entities
public void SetSpawnHealth() public void SetSpawnHealth()
{ {
if (_staticFlags5.HasFlag(CreatureStaticFlags5.NoHealthRegen)) if (_staticFlags.HasFlag(CreatureStaticFlags5.NoHealthRegen))
return; return;
ulong curhealth; ulong curhealth;
@@ -3187,13 +3187,7 @@ namespace Game.Entities
public override void SetImmuneToPC(bool apply) { SetImmuneToPC(apply, HasReactState(ReactStates.Passive)); } public override void SetImmuneToPC(bool apply) { SetImmuneToPC(apply, HasReactState(ReactStates.Passive)); }
public override void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, HasReactState(ReactStates.Passive)); } public override void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, HasReactState(ReactStates.Passive)); }
void SetUnkillable(bool unkillable) void SetUnkillable(bool unkillable) { _staticFlags.ApplyFlag(CreatureStaticFlags.Unkillable, unkillable); }
{
if (unkillable)
_staticFlags |= CreatureStaticFlags.Unkillable;
else
_staticFlags &= ~CreatureStaticFlags.Unkillable;
}
public bool IsInEvadeMode() { return HasUnitState(UnitState.Evade); } public bool IsInEvadeMode() { return HasUnitState(UnitState.Evade); }
public bool IsEvadingAttacks() { return IsInEvadeMode() || CanNotReachTarget(); } public bool IsEvadingAttacks() { return IsInEvadeMode() || CanNotReachTarget(); }
@@ -3357,15 +3351,9 @@ namespace Game.Entities
m_combatPulseTime = delay; m_combatPulseTime = delay;
} }
public bool CanRegenerateHealth() { return !_staticFlags5.HasFlag(CreatureStaticFlags5.NoHealthRegen) && _regenerateHealth; } bool CanRegenerateHealth() { return !_staticFlags.HasFlag(CreatureStaticFlags5.NoHealthRegen) && _regenerateHealth; }
public void SetRegenerateHealth(bool value) public void SetRegenerateHealth(bool value) { _staticFlags.ApplyFlag(CreatureStaticFlags5.NoHealthRegen, !value); }
{
if (!value)
_staticFlags5 |= CreatureStaticFlags5.NoHealthRegen;
else
_staticFlags5 &= ~CreatureStaticFlags5.NoHealthRegen;
}
public void SetHomePosition(float x, float y, float z, float o) public void SetHomePosition(float x, float y, float z, float o)
{ {
m_homePosition.Relocate(x, y, z, o); m_homePosition.Relocate(x, y, z, o);