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
MultiMap<byte, byte> m_textRepeat = new();
CreatureStaticFlags _staticFlags;
CreatureStaticFlags2 _staticFlags2;
CreatureStaticFlags3 _staticFlags3;
CreatureStaticFlags4 _staticFlags4;
CreatureStaticFlags5 _staticFlags5;
CreatureStaticFlags6 _staticFlags6;
CreatureStaticFlags7 _staticFlags7;
CreatureStaticFlags8 _staticFlags8;
CreatureStaticFlagsHolder _staticFlags;
// Regenerate health
bool _regenerateHealth; // Set on creation
@@ -108,4 +101,34 @@ namespace Game.Entities
public ObjectGuid Target; // the creature's "real" target 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());
}
public bool HasFlag(CreatureStaticFlags flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags2 flag) { return _staticFlags2.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags3 flag) { return _staticFlags3.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags4 flag) { return _staticFlags4.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags5 flag) { return _staticFlags5.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags6 flag) { return _staticFlags6.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags7 flag) { return _staticFlags7.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags8 flag) { return _staticFlags8.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags2 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags3 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags4 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags5 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags6 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags7 flag) { return _staticFlags.HasFlag(flag); }
public bool HasFlag(CreatureStaticFlags8 flag) { return _staticFlags.HasFlag(flag); }
public uint GetTrainerId()
{
@@ -1624,7 +1624,7 @@ namespace Game.Entities
public void SetSpawnHealth()
{
if (_staticFlags5.HasFlag(CreatureStaticFlags5.NoHealthRegen))
if (_staticFlags.HasFlag(CreatureStaticFlags5.NoHealthRegen))
return;
ulong curhealth;
@@ -3187,13 +3187,7 @@ namespace Game.Entities
public override void SetImmuneToPC(bool apply) { SetImmuneToPC(apply, HasReactState(ReactStates.Passive)); }
public override void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, HasReactState(ReactStates.Passive)); }
void SetUnkillable(bool unkillable)
{
if (unkillable)
_staticFlags |= CreatureStaticFlags.Unkillable;
else
_staticFlags &= ~CreatureStaticFlags.Unkillable;
}
void SetUnkillable(bool unkillable) { _staticFlags.ApplyFlag(CreatureStaticFlags.Unkillable, unkillable); }
public bool IsInEvadeMode() { return HasUnitState(UnitState.Evade); }
public bool IsEvadingAttacks() { return IsInEvadeMode() || CanNotReachTarget(); }
@@ -3357,15 +3351,9 @@ namespace Game.Entities
m_combatPulseTime = delay;
}
public bool CanRegenerateHealth() { return !_staticFlags5.HasFlag(CreatureStaticFlags5.NoHealthRegen) && _regenerateHealth; }
public void SetRegenerateHealth(bool value)
{
if (!value)
_staticFlags5 |= CreatureStaticFlags5.NoHealthRegen;
else
_staticFlags5 &= ~CreatureStaticFlags5.NoHealthRegen;
}
bool CanRegenerateHealth() { return !_staticFlags.HasFlag(CreatureStaticFlags5.NoHealthRegen) && _regenerateHealth; }
public void SetRegenerateHealth(bool value) { _staticFlags.ApplyFlag(CreatureStaticFlags5.NoHealthRegen, !value); }
public void SetHomePosition(float x, float y, float z, float o)
{
m_homePosition.Relocate(x, y, z, o);