#pragma once namespace mt { class GuideStep; } class Human; class Guide { public: void Init(Human* owner); void SyncStep(); bool IsFinished() { return finished_; }; private: void UpdateStep(); void ProcMoveTarget(); void ProcPickup(); void ProcKillEnemy(); void ProcUseSkillAndKillEnemy(); void ProcUseSkill(); void NextStep(); private: Human* owner_ = nullptr; bool finished_ = false; int curr_step_idx_ = 0; const mt::GuideStep* curr_step_meta_ = nullptr; };