From 4ee804980badffbe269ce46ed0c918b6399505aa Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 20 Apr 2023 13:22:18 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/GuideStep.cc | 81 +++++++++++++++++++++++++++++++ server/gameserver/mt/GuideStep.h | 5 ++ 2 files changed, 86 insertions(+) diff --git a/server/gameserver/mt/GuideStep.cc b/server/gameserver/mt/GuideStep.cc index db7b3010..0f24fb39 100644 --- a/server/gameserver/mt/GuideStep.cc +++ b/server/gameserver/mt/GuideStep.cc @@ -3,13 +3,94 @@ #include "mt/GuideStep.h" IMPL_TABLE(mt::GuideStep) +std::vector mt::GuideStep::_steps; namespace mt { void GuideStep::Init1() { + _int_param1 = a8::XValue(param1()); + std::vector param_strs; + { + param_strs.push_back(param1()); + param_strs.push_back(param2()); + param_strs.push_back(param3()); + param_strs.push_back(param4()); + } + switch (target()) { + case MOVE_TARGET_GUIDE_STEP: + { + std::vector strings; + a8::Split(param1(), strings, ':'); + if (strings.size() != 3) { + abort(); + } + _params.push_back(std::make_tuple + ( + 0, + glm::vec3( + (float)a8::XValue(strings[0]).GetDouble(), + (float)a8::XValue(strings[1]).GetDouble(), + (float)a8::XValue(strings[2]).GetDouble() + ), + 0)); + } + break; + case MOVE_TARGET_AND_PICKUP_GUIDE_STEP: + case KILL_ENEMY_GUIDE_STEP: + { + for (auto& str : param_strs) { + std::vector strings; + a8::Split(str, strings, ':'); + if (strings.size() != 5) { + abort(); + } + _params.push_back(std::make_tuple + ( + a8::XValue(strings[0]).GetInt(), + glm::vec3( + (float)a8::XValue(strings[1]).GetDouble(), + (float)a8::XValue(strings[2]).GetDouble(), + (float)a8::XValue(strings[3]).GetDouble() + ), + a8::XValue(strings[4]).GetInt())); + } + } + break; + case USE_SKILL_AND_KILL_ENEMY_GUIDE_STEP: + { + for (size_t i = 1; i < param_strs.size(); ++i) { + std::string str = param_strs[i]; + std::vector strings; + a8::Split(str, strings, ':'); + if (strings.size() != 5) { + abort(); + } + _params.push_back(std::make_tuple + ( + a8::XValue(strings[0]).GetInt(), + glm::vec3( + (float)a8::XValue(strings[1]).GetDouble(), + (float)a8::XValue(strings[2]).GetDouble(), + (float)a8::XValue(strings[3]).GetDouble() + ), + a8::XValue(strings[4]).GetInt())); + } + } + break; + case USE_SKILL_GUIDE_STEP: + { + } + break; + default: + { + abort(); + } + break; + } + _steps.push_back(this); } } diff --git a/server/gameserver/mt/GuideStep.h b/server/gameserver/mt/GuideStep.h index c73da472..1bf7ae2a 100644 --- a/server/gameserver/mt/GuideStep.h +++ b/server/gameserver/mt/GuideStep.h @@ -19,6 +19,11 @@ namespace mt void Init1(); + int _int_param1 = 0; + std::vector> _params; + + static std::vector _steps; + private: };