feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)

This commit is contained in:
UltraNix
2021-04-25 22:18:03 +02:00
committed by GitHub
parent 91081f4ad8
commit f4c226423d
568 changed files with 10655 additions and 11019 deletions

View File

@@ -98,8 +98,8 @@ public:
{
if (instance)
{
instance->HandleGameObject(instance->GetData64(DATA_DOOR4), true);
instance->HandleGameObject(instance->GetData64(DATA_DOOR5), true);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR4), true);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR5), true);
instance->SetData(DATA_BROGGOK, DONE);
}
}
@@ -139,7 +139,7 @@ public:
{
if (InstanceScript* instance = go->GetInstanceScript())
if (instance->GetData(DATA_BROGGOK) != DONE && instance->GetData(DATA_BROGGOK) != IN_PROGRESS)
if (Creature* broggok = ObjectAccessor::GetCreature(*go, instance->GetData64(DATA_BROGGOK)))
if (Creature* broggok = ObjectAccessor::GetCreature(*go, instance->GetGuidData(DATA_BROGGOK)))
{
instance->SetData(DATA_BROGGOK, IN_PROGRESS);
broggok->AI()->DoAction(ACTION_PREPARE_BROGGOK);

View File

@@ -63,12 +63,11 @@ public:
boss_kelidan_the_breakerAI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
memset(&channelers, 0, sizeof(channelers));
}
InstanceScript* instance;
EventMap events;
uint64 channelers[5];
ObjectGuid channelers[5];
uint32 checkTimer;
bool addYell;
@@ -172,7 +171,7 @@ public:
if (!channeler)
channeler = me->SummonCreature(NPC_CHANNELER, ShadowmoonChannelers[i][0], ShadowmoonChannelers[i][1], ShadowmoonChannelers[i][2], ShadowmoonChannelers[i][3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
channelers[i] = channeler ? channeler->GetGUID() : 0;
channelers[i] = channeler ? channeler->GetGUID() : ObjectGuid::Empty;
}
}
@@ -184,8 +183,8 @@ public:
// Xinef: load grid with start doors
me->GetMap()->LoadGrid(0, -111.0f);
instance->SetData(DATA_KELIDAN, DONE);
instance->HandleGameObject(instance->GetData64(DATA_DOOR1), true);
instance->HandleGameObject(instance->GetData64(DATA_DOOR6), true);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR1), true);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR6), true);
}
}
@@ -288,7 +287,7 @@ public:
Creature* GetKelidan()
{
if (me->GetInstanceScript())
return ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(DATA_KELIDAN));
return ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_KELIDAN));
return nullptr;
}

View File

@@ -47,7 +47,7 @@ public:
return;
instance->SetData(DATA_THE_MAKER, NOT_STARTED);
instance->HandleGameObject(instance->GetData64(DATA_DOOR2), true);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR2), true);
}
void EnterCombat(Unit* /*who*/) override
@@ -62,7 +62,7 @@ public:
return;
instance->SetData(DATA_THE_MAKER, IN_PROGRESS);
instance->HandleGameObject(instance->GetData64(DATA_DOOR2), false);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR2), false);
}
void KilledUnit(Unit* victim) override
@@ -79,8 +79,8 @@ public:
return;
instance->SetData(DATA_THE_MAKER, DONE);
instance->HandleGameObject(instance->GetData64(DATA_DOOR2), true);
instance->HandleGameObject(instance->GetData64(DATA_DOOR3), true);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR2), true);
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR3), true);
}
void UpdateAI(uint32 diff) override

View File

@@ -17,28 +17,20 @@ public:
instance_blood_furnace_InstanceMapScript(Map* map) : InstanceScript(map) {}
uint32 _auiEncounter[MAX_ENCOUNTER];
uint64 _bossGUIDs[3];
uint64 _doorGUIDs[6];
uint64 _prisonGUIDs[4];
ObjectGuid _bossGUIDs[3];
ObjectGuid _doorGUIDs[6];
ObjectGuid _prisonGUIDs[4];
std::set<uint64> _prisonersCell[4];
GuidSet _prisonersCell[4];
uint8 _prisonerCounter[4];
uint64 _broggokLeverGUID;
ObjectGuid _broggokLeverGUID;
void Initialize() override
{
memset(&_auiEncounter, 0, sizeof(_auiEncounter));
memset(&_bossGUIDs, 0, sizeof(_bossGUIDs));
memset(&_doorGUIDs, 0, sizeof(_doorGUIDs));
memset(&_prisonGUIDs, 0, sizeof(_prisonGUIDs));
memset(&_prisonerCounter, 0, sizeof(_prisonerCounter));
for (uint8 i = 0; i < 4; ++i)
_prisonersCell[i].clear();
_broggokLeverGUID = 0;
}
void OnCreatureCreate(Creature* creature) override
@@ -102,7 +94,7 @@ public:
_broggokLeverGUID = go->GetGUID(); //Broggok lever
}
uint64 GetData64(uint32 data) const override
ObjectGuid GetGuidData(uint32 data) const override
{
switch (data)
{
@@ -125,7 +117,8 @@ public:
case DATA_PRISON_CELL4:
return _prisonGUIDs[data - DATA_PRISON_CELL1];
}
return 0;
return ObjectGuid::Empty;
}
void SetData(uint32 type, uint32 data) override
@@ -223,10 +216,10 @@ public:
}
}
void ResetPrisoners(std::set<uint64> prisoners)
void ResetPrisoners(GuidSet prisoners)
{
for (std::set<uint64>::iterator i = prisoners.begin(); i != prisoners.end(); ++i)
if (Creature* prisoner = instance->GetCreature(*i))
for (ObjectGuid guid : prisoners)
if (Creature* prisoner = instance->GetCreature(guid))
ResetPrisoner(prisoner);
}
@@ -274,7 +267,7 @@ public:
}
}
void PrisonerDied(uint64 guid)
void PrisonerDied(ObjectGuid guid)
{
if (_prisonersCell[0].find(guid) != _prisonersCell[0].end() && --_prisonerCounter[0] <= 0)
ActivateCell(DATA_PRISON_CELL2);
@@ -299,16 +292,16 @@ public:
break;
case DATA_DOOR5:
HandleGameObject(_doorGUIDs[4], true);
if (Creature* broggok = instance->GetCreature(GetData64(DATA_BROGGOK)))
if (Creature* broggok = instance->GetCreature(GetGuidData(DATA_BROGGOK)))
broggok->AI()->DoAction(ACTION_ACTIVATE_BROGGOK);
break;
}
}
void ActivatePrisoners(std::set<uint64> prisoners)
void ActivatePrisoners(GuidSet prisoners)
{
for (std::set<uint64>::iterator i = prisoners.begin(); i != prisoners.end(); ++i)
if (Creature* prisoner = instance->GetCreature(*i))
for (ObjectGuid guid : prisoners)
if (Creature* prisoner = instance->GetCreature(guid))
{
prisoner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
prisoner->SetInCombatWithZone();

View File

@@ -52,7 +52,7 @@ public:
{
Talk(SAY_WIPE);
BossAI::Reset();
_targetGUID = 0;
_targetGUID.Clear();
}
void EnterCombat(Unit* who) override
@@ -139,7 +139,7 @@ public:
me->GetMotionMaster()->MoveChase(me->GetVictim());
if (Unit* target = ObjectAccessor::GetUnit(*me, _targetGUID))
me->CastSpell(target, SPELL_SHADOW_WHIP, false);
_targetGUID = 0;
_targetGUID.Clear();
break;
}
@@ -160,7 +160,7 @@ public:
}
private:
uint64 _targetGUID;
ObjectGuid _targetGUID;
};
CreatureAI* GetAI(Creature* creature) const override

View File

@@ -18,7 +18,6 @@ public:
void Initialize() override
{
SetBossNumber(MAX_ENCOUNTERS);
felIronChestGUID = 0;
}
void OnGameObjectCreate(GameObject* go) override
@@ -74,7 +73,7 @@ public:
}
protected:
uint64 felIronChestGUID;
ObjectGuid felIronChestGUID;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override

View File

@@ -69,7 +69,7 @@ enum Events
class DealDebrisDamage : public BasicEvent
{
public:
DealDebrisDamage(Creature& creature, uint64 targetGUID) : _owner(creature), _targetGUID(targetGUID) { }
DealDebrisDamage(Creature& creature, ObjectGuid targetGUID) : _owner(creature), _targetGUID(targetGUID) { }
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
{
@@ -80,7 +80,7 @@ public:
private:
Creature& _owner;
uint64 _targetGUID;
ObjectGuid _targetGUID;
};
class boss_magtheridon : public CreatureScript

View File

@@ -37,7 +37,6 @@ public:
_wardersSet.clear();
_cubesSet.clear();
_columnSet.clear();
_magtheridonGUID = 0;
}
void OnCreatureCreate(Creature* creature) override
@@ -119,8 +118,8 @@ public:
{
if (state == IN_PROGRESS)
{
for (std::set<uint64>::const_iterator itr = _wardersSet.begin(); itr != _wardersSet.end(); ++itr)
if (Creature* warder = instance->GetCreature(*itr))
for (ObjectGuid const guid : _wardersSet)
if (Creature* warder = instance->GetCreature(guid))
if (warder->IsAlive())
{
warder->InterruptNonMeleeSpells(true);
@@ -129,8 +128,8 @@ public:
}
else
{
for (std::set<uint64>::const_iterator itr = _cubesSet.begin(); itr != _cubesSet.end(); ++itr)
if (GameObject* cube = instance->GetGameObject(*itr))
for (ObjectGuid const guid : _cubesSet)
if (GameObject* cube = instance->GetGameObject(guid))
cube->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
if (state == NOT_STARTED)
@@ -150,13 +149,13 @@ public:
magtheridon->SetInCombatWithZone();
break;
case DATA_ACTIVATE_CUBES:
for (std::set<uint64>::const_iterator itr = _cubesSet.begin(); itr != _cubesSet.end(); ++itr)
if (GameObject* cube = instance->GetGameObject(*itr))
for (ObjectGuid const guid : _cubesSet)
if (GameObject* cube = instance->GetGameObject(guid))
cube->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
break;
case DATA_COLLAPSE:
for (std::set<uint64>::const_iterator itr = _columnSet.begin(); itr != _columnSet.end(); ++itr)
if (GameObject* column = instance->GetGameObject(*itr))
for (ObjectGuid const guid : _columnSet)
if (GameObject* column = instance->GetGameObject(guid))
column->SetGoState(GOState(data));
break;
}
@@ -206,10 +205,10 @@ public:
}
private:
uint64 _magtheridonGUID;
std::set<uint64> _wardersSet;
std::set<uint64> _cubesSet;
std::set<uint64> _columnSet;
ObjectGuid _magtheridonGUID;
GuidSet _wardersSet;
GuidSet _cubesSet;
GuidSet _columnSet;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override

View File

@@ -56,7 +56,7 @@ public:
{
BossAI::InitializeAI();
if (instance)
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_EXECUTIONER)))
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EXECUTIONER)))
executioner->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
}
@@ -66,7 +66,7 @@ public:
_JustDied();
if (instance)
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_EXECUTIONER)))
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EXECUTIONER)))
executioner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
}

View File

@@ -24,12 +24,7 @@ public:
void Initialize() override
{
SetBossNumber(ENCOUNTER_COUNT);
nethekurseDoor1GUID = 0;
nethekurseDoor2GUID = 0;
warchiefKargathGUID = 0;
executionerGUID = 0;
memset(&prisonerGUID, 0, sizeof(prisonerGUID));
TeamIdInInstance = TEAM_NEUTRAL;
RescueTimer = 100 * MINUTE * IN_MILLISECONDS;
}
@@ -47,12 +42,12 @@ public:
case GO_GRAND_WARLOCK_CHAMBER_DOOR_1:
nethekurseDoor1GUID = go->GetGUID();
if (GetBossState(DATA_NETHEKURSE) == DONE)
HandleGameObject(0, true, go);
HandleGameObject(ObjectGuid::Empty, true, go);
break;
case GO_GRAND_WARLOCK_CHAMBER_DOOR_2:
nethekurseDoor2GUID = go->GetGUID();
if (GetBossState(DATA_NETHEKURSE) == DONE)
HandleGameObject(0, true, go);
HandleGameObject(ObjectGuid::Empty, true, go);
break;
}
}
@@ -132,7 +127,7 @@ public:
}
}
uint64 GetData64(uint32 data) const override
ObjectGuid GetGuidData(uint32 data) const override
{
switch (data)
{
@@ -143,7 +138,8 @@ public:
case DATA_EXECUTIONER:
return executionerGUID;
}
return 0;
return ObjectGuid::Empty;
}
void Update(uint32 diff) override
@@ -223,12 +219,12 @@ public:
}
protected:
uint64 warchiefKargathGUID;
uint64 nethekurseDoor1GUID;
uint64 nethekurseDoor2GUID;
ObjectGuid warchiefKargathGUID;
ObjectGuid nethekurseDoor1GUID;
ObjectGuid nethekurseDoor2GUID;
uint64 executionerGUID;
uint64 prisonerGUID[3];
ObjectGuid executionerGUID;
ObjectGuid prisonerGUID[3];
uint32 RescueTimer;
TeamId TeamIdInInstance;
};