34 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
40 TC_LOG_ERROR(
"scenario",
"Scenario::Scenario: Could not launch Scenario (id: {}), found no valid scenario step",
_data->
Entry->
ID);
71 if (_step.second->IsBonusObjective())
78 newStep = _step.second;
85 TC_LOG_ERROR(
"scenario",
"Scenario::CompleteStep: Scenario (id: {}, step: {}) was completed, but could not determine new step, or validate scenario completion.", step->
ScenarioID, step->
ID);
132 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
134 if (scenarioStep.second->IsBonusObjective())
194 return currentStep == step;
212 if (step != currentStep)
261 for (std::pair<ScenarioStepEntry const* const, ScenarioStepState>
const& state :
_stepStates)
263 if (state.first->IsBonusObjective())
266 switch (state.second)
276 scenarioState->
PickedSteps.push_back(state.first->ID);
285 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
287 if (scenarioStep.second->IsBonusObjective())
291 firstStep = scenarioStep.second;
301 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
303 if (scenarioStep.second->IsBonusObjective())
307 lastStep = scenarioStep.second;
322 std::vector<WorldPackets::Scenario::BonusObjectiveData> bonusObjectivesData;
323 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
325 if (!scenarioStep.second->IsBonusObjective())
328 if (
sCriteriaMgr->GetCriteriaTree(scenarioStep.second->Criteriatreeid))
333 bonusObjectivesData.push_back(bonusObjectiveData);
337 return bonusObjectivesData;
342 std::vector<WorldPackets::Achievement::CriteriaProgress> criteriasProgress;
347 criteriaProgress.
Id = criteriaId;
348 criteriaProgress.
Quantity = progress.Counter;
354 return criteriasProgress;
std::vector< Criteria const * > CriteriaList
std::chrono::seconds Seconds
Seconds shorthand typedef.
#define ASSERT_NOTNULL(pointer)
#define TC_LOG_ERROR(filterType__, message__,...)
@ SCENARIO_STEP_IN_PROGRESS
@ SCENARIO_STEP_NOT_STARTED
ObjectGuid const & GetGUID() const
CriteriaProgressMap _criteriaProgress
virtual bool CanCompleteCriteriaTree(CriteriaTree const *tree)
bool IsCompletedCriteriaTree(CriteriaTree const *tree)
void SendDirectMessage(WorldPacket const *data) const
WorldSession * GetSession() const
void UpdateCriteria(CriteriaType type, uint64 miscValue1=0, uint64 miscValue2=0, uint64 miscValue3=0, WorldObject *ref=nullptr)
void SendScenarioState(Player const *player) const
ScenarioEntry const * GetEntry() const
std::vector< WorldPackets::Achievement::CriteriaProgress > GetCriteriasProgressFor(Player const *player) const
virtual void OnPlayerExit(Player *player)
void SendPacket(WorldPacket const *data) const override
void SendBootPlayer(Player const *player) const
ScenarioData const * _data
virtual void OnPlayerEnter(Player *player)
ScenarioStepEntry const * GetLastStep() const
ScenarioStepEntry const * GetFirstStep() const
std::vector< WorldPackets::Scenario::BonusObjectiveData > GetBonusObjectivesData() const
bool CanUpdateCriteriaTree(Criteria const *criteria, CriteriaTree const *tree, Player *referencePlayer) const override
virtual void CompleteStep(ScenarioStepEntry const *step)
ScenarioStepState GetStepState(ScenarioStepEntry const *step) const
std::map< ScenarioStepEntry const *, ScenarioStepState > _stepStates
Scenario(Map *map, ScenarioData const *scenarioData)
bool CanCompleteCriteriaTree(CriteriaTree const *tree) override
GuidUnorderedSet _players
void DoForAllPlayers(std::function< void(Player *)> const &worker) const
void BuildScenarioStateFor(Player const *player, WorldPackets::Scenario::ScenarioState *scenarioState) const
ScenarioStepEntry const * _currentstep
virtual void CompleteScenario()
void SetStepState(ScenarioStepEntry const *step, ScenarioStepState state)
ScenarioStepEntry const * GetStep() const
void SetStep(ScenarioStepEntry const *step)
bool IsCompletedStep(ScenarioStepEntry const *step)
CriteriaList const & GetCriteriaByType(CriteriaType type, uint32 asset) const override
void CompletedCriteriaTree(CriteriaTree const *tree, Player *referencePlayer) override
void SendCriteriaUpdate(Criteria const *criteria, CriteriaProgress const *progress, Seconds timeElapsed, bool timedCompleted) const override
WorldPacket const * Write() override
Achievement::CriteriaProgress CriteriaProgress
WorldPacket const * Write() override
std::vector< uint32 > PickedSteps
std::vector< Achievement::CriteriaProgress > CriteriaProgress
WorldPacket const * Write() override
std::vector< BonusObjectiveData > BonusObjectives
WorldPacket const * Write() override
Minutes GetTimezoneOffset() const
void SetUtcTimeFromUnixTime(std::time_t unixTime)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
ScenarioStepEntry const * ScenarioStep
CriteriaEntry const * Entry
std::map< uint8, ScenarioStepEntry const * > Steps
ScenarioEntry const * Entry
bool IsBonusObjective() const
Duration< Seconds > TimeFromCreate
Duration< Seconds > TimeFromStart