From a5664c666c17da3cece87f17d6803549848072b9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 2 Sep 2021 20:05:36 +0800 Subject: [PATCH] 1 --- server/gameserver/metamgr.cc | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index a2214fa..db11d79 100644 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -7,6 +7,7 @@ #include #include +#include #include "framework/cpp/utils.h" @@ -20,7 +21,8 @@ #define METAMGR_READ_STR(field_name, def_val) MetaMgr::Instance()->field_name = \ a8::XValue(MetaMgr::Instance()->GetSysParamAsString(#field_name, def_val)).GetString(); -static void ParseElemets(const std::string& text, +static void ParseElemets(const std::string& textid, + const std::string& text, std::vector>& elements) { auto parsevar_cb = @@ -37,6 +39,10 @@ static void ParseElemets(const std::string& text, } else if (var_name == "${weapon.text_icon}") { elements.push_back(std::make_tuple(kFieldIdxWeaponTextIcon, "")); } else if (var_name.find("${image.id:") == 0) { + std::vector strings; + a8::Split(var_name, strings, ':'); + std::string id = strings[1].substr(0, strings[1].length() - 1); + elements.push_back(std::make_tuple(kImageElement, id)); } else { abort(); } @@ -62,6 +68,27 @@ static void ParseElemets(const std::string& text, pcurr = pend; } } + + { + a8::MutableXObject* obj = a8::MutableXObject::NewObject(); + a8::MutableXObject* arr = a8::MutableXObject::NewArray(); + for (auto& e : elements) { + a8::MutableXObject* obj_el = a8::MutableXObject::NewObject(); + obj_el->SetVal("type", std::get<0>(e)); + obj_el->SetVal("val", std::get<1>(e)); + arr->Push(obj_el); + } + obj->SetVal("text", text); + obj->SetVal("elemets", arr); + a8::UdpLog::Instance()->Info + ("load textid:%s ", + { + textid, + obj->ToJsonStr() + } + ); + delete obj; + } } class MetaDataLoader @@ -778,7 +805,7 @@ private: text_hash[meta.textid()] = meta.text(); if (meta.text().find("battle_server_dead_text_") != std::string::npos) { std::vector> elemets; - ParseElemets(meta.text(), elemets); + ParseElemets(meta.textid(), meta.text(), elemets); text_element_hash[meta.text()] = elemets; } }