From 8b19c8d637a9a323a0912cff2e2a95b959a53d46 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 20 Apr 2023 14:19:30 +0800 Subject: [PATCH] 1 --- server/gameserver/guide.cc | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/server/gameserver/guide.cc b/server/gameserver/guide.cc index 5761455c..4753a24e 100644 --- a/server/gameserver/guide.cc +++ b/server/gameserver/guide.cc @@ -6,6 +6,7 @@ #include "glmhelper.h" #include "mt/GuideStep.h" +#include "mt/Hero.h" void Guide::Init(Human* owner) { @@ -103,6 +104,7 @@ void Guide::ProcMoveTargetAndPickup() int time = std::get<0>(tuple); glm::vec3 pos = std::get<1>(tuple); int equip_id = std::get<2>(tuple); + ++i; context->loots.push_back(-1); owner_->room->xtimer.SetTimeoutEx ( @@ -155,6 +157,60 @@ void Guide::ProcKillEnemy() return; } + auto context = A8_MAKE_ANON_STRUCT_SHARED + ( + std::vector heros; + ); + + { + int i = 0; + for (auto& tuple : curr_step_meta_->_params) { + int time = std::get<0>(tuple); + glm::vec3 pos = std::get<1>(tuple); + int hero_id = std::get<2>(tuple); + const mt::Hero* hero_meta = mt::Hero::GetById(hero_id); + if (!hero_meta){ + continue; + } + ++i; + context->heros.push_back(nullptr); + owner_->room->xtimer.SetTimeoutEx + ( + time / FRAME_RATE_MS, + [this, hero_id, hero_meta, pos, context, i ] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + context->heros[i] = + owner_->room->CreateHero + ( + nullptr, + hero_meta, + pos, + pos, + 666 + ) + ; + } + }, + &owner_->xtimer_attacher); + } + } + + owner_->room->xtimer.SetTimeoutEx + (1, + [this, context] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + bool done = true; + for (Hero* hero : context->heros) { + } + if (done) { + NextStep(); + } + } + }, + &owner_->xtimer_attacher); + } void Guide::ProcUseSkillAndKillEnemy()