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);
126 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
128 if (scenarioStep.second->IsBonusObjective())
188 return currentStep == step;
206 if (step != currentStep)
255 for (std::pair<ScenarioStepEntry const* const, ScenarioStepState>
const& state :
_stepStates)
257 if (state.first->IsBonusObjective())
260 switch (state.second)
270 scenarioState->
PickedSteps.push_back(state.first->ID);
279 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
281 if (scenarioStep.second->IsBonusObjective())
285 firstStep = scenarioStep.second;
295 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
297 if (scenarioStep.second->IsBonusObjective())
301 lastStep = scenarioStep.second;
316 std::vector<WorldPackets::Scenario::BonusObjectiveData> bonusObjectivesData;
317 for (std::pair<uint8 const, ScenarioStepEntry const*>
const& scenarioStep :
_data->
Steps)
319 if (!scenarioStep.second->IsBonusObjective())
322 if (
sCriteriaMgr->GetCriteriaTree(scenarioStep.second->Criteriatreeid))
327 bonusObjectivesData.push_back(bonusObjectiveData);
331 return bonusObjectivesData;
336 std::vector<WorldPackets::Achievement::CriteriaProgress> criteriasProgress;
341 criteriaProgress.
Id = criteriaId;
342 criteriaProgress.
Quantity = progress.Counter;
345 criteriaProgress.
Player = progress.PlayerGUID;
348 return criteriasProgress;
std::vector< Criteria const * > CriteriaList
std::chrono::seconds Seconds
Seconds shorthand typedef.
#define ASSERT_NOTNULL(pointer)
#define TC_LOG_ERROR(filterType__,...)
if(posix_memalign(&__mallocedMemory, __align, __size)) return NULL
@ SCENARIO_STEP_IN_PROGRESS
@ SCENARIO_STEP_NOT_STARTED
CriteriaProgressMap _criteriaProgress
virtual bool CanCompleteCriteriaTree(CriteriaTree const *tree)
bool IsCompletedCriteriaTree(CriteriaTree const *tree)
static ObjectGuid GetGUID(Object const *o)
void SendDirectMessage(WorldPacket const *data) const
WorldSession * GetSession() const
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 uint32 GetId(std::string_view username)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
std::unique_ptr< VignetteData > Create(VignetteEntry const *vignetteData, WorldObject const *owner)
ScenarioStepEntry const * ScenarioStep
CriteriaEntry const * Entry
std::map< uint8, ScenarioStepEntry const * > Steps
ScenarioEntry const * Entry
bool IsBonusObjective() const
Duration< Seconds > TimeFromCreate
Duration< Seconds > TimeFromStart