Core/Scenarios: Move map from InstanceScenario to base class

This commit is contained in:
Shauren
2023-07-07 14:01:19 +02:00
parent 02da2ae270
commit b7f06c154c
4 changed files with 11 additions and 10 deletions

View File

@@ -26,7 +26,7 @@
#include "ScenarioMgr.h"
#include "StringFormat.h"
InstanceScenario::InstanceScenario(InstanceMap const* map, ScenarioData const* scenarioData) : Scenario(scenarioData), _map(map)
InstanceScenario::InstanceScenario(InstanceMap* map, ScenarioData const* scenarioData) : Scenario(map, scenarioData)
{
ASSERT(_map);
LoadInstanceData();
@@ -39,7 +39,7 @@ InstanceScenario::InstanceScenario(InstanceMap const* map, ScenarioData const* s
void InstanceScenario::LoadInstanceData()
{
InstanceScript const* instanceScript = _map->GetInstanceScript();
InstanceScript const* instanceScript = _map->ToInstanceMap()->GetInstanceScript();
if (!instanceScript)
return;

View File

@@ -25,15 +25,13 @@ class InstanceMap;
class TC_GAME_API InstanceScenario : public Scenario
{
public:
InstanceScenario(InstanceMap const* map, ScenarioData const* scenarioData);
InstanceScenario(InstanceMap* map, ScenarioData const* scenarioData);
void LoadInstanceData();
protected:
std::string GetOwnerInfo() const override;
void SendPacket(WorldPacket const* data) const override;
InstanceMap const* _map;
};
#endif // InstanceScenario_h__

View File

@@ -23,7 +23,8 @@
#include "ScenarioMgr.h"
#include "ScenarioPackets.h"
Scenario::Scenario(ScenarioData const* scenarioData) : _data(scenarioData), _currentstep(nullptr)
Scenario::Scenario(Map* map, ScenarioData const* scenarioData) : _map(map), _data(scenarioData),
_currentstep(nullptr)
{
ASSERT(_data);
@@ -39,7 +40,7 @@ Scenario::Scenario(ScenarioData const* scenarioData) : _data(scenarioData), _cur
Scenario::~Scenario()
{
for (ObjectGuid guid : _players)
if (Player* player = ObjectAccessor::FindPlayer(guid))
if (Player* player = ObjectAccessor::GetPlayer(_map, guid))
SendBootPlayer(player);
_players.clear();
@@ -55,7 +56,7 @@ void Scenario::CompleteStep(ScenarioStepEntry const* step)
{
if (Quest const* quest = sObjectMgr->GetQuestTemplate(step->RewardQuestID))
for (ObjectGuid guid : _players)
if (Player* player = ObjectAccessor::FindPlayer(guid))
if (Player* player = ObjectAccessor::GetPlayer(_map, guid))
player->RewardQuest(quest, LootItemType::Item, 0, nullptr, false);
if (step->IsBonusObjective())
@@ -215,7 +216,7 @@ bool Scenario::IsCompletedStep(ScenarioStepEntry const* step)
void Scenario::SendPacket(WorldPacket const* data) const
{
for (ObjectGuid guid : _players)
if (Player* player = ObjectAccessor::FindPlayer(guid))
if (Player* player = ObjectAccessor::GetPlayer(_map, guid))
player->SendDirectMessage(data);
}

View File

@@ -21,6 +21,7 @@
#include "CriteriaHandler.h"
#include <unordered_set>
class Map;
struct ScenarioData;
struct ScenarioEntry;
struct ScenarioStepEntry;
@@ -50,7 +51,7 @@ enum ScenarioStepState
class TC_GAME_API Scenario : public CriteriaHandler
{
public:
Scenario(ScenarioData const* scenarioData);
Scenario(Map* map, ScenarioData const* scenarioData);
~Scenario();
void Reset() override;
@@ -76,6 +77,7 @@ class TC_GAME_API Scenario : public CriteriaHandler
void SendBootPlayer(Player* player);
protected:
Map const* _map;
GuidUnorderedSet _players;
void SendCriteriaUpdate(Criteria const* criteria, CriteriaProgress const* progress, Seconds timeElapsed, bool timedCompleted) const override;