diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 99af7a3d..0c368472 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -165,17 +165,35 @@ void Room::Init() } }, &xtimer_attacher_); - xtimer.SetIntervalWpEx - (SERVER_FRAME_RATE * mt::Param::s().moba_tower_interval, - [this] (int event, const a8::Args* args) - { - if (a8::TIMER_EXEC_EVENT == event) { - if (!IsGameOver() && !GetVictoryTeam()) { + if (mt::Param::s().moba_towers.size() != 2) { + xtimer.SetIntervalWpEx + (SERVER_FRAME_RATE * mt::Param::s().moba_tower_interval, + [this] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + if (!IsGameOver() && !GetVictoryTeam()) { + for (size_t i = 0; i < 2; ++i) { + Team* team = GetMobaTeamA(); + if (i == 1) { + team = GetMobaTeamB(); + } + auto tuple = mt::Param::s().moba_towers.at(i); + team->TraverseMembers + ( + [&tuple] (Human* hum) -> bool + { + float distance = hum->GetPos().Distance2D2(std::get<0>(tuple)); + if (distance < std::get<1>(tuple)) { + } + return true; + }); + } + } } - } - }, - &xtimer_attacher_); + }, + &xtimer_attacher_); + } } ob_ = std::make_shared(this); ob_->Init();