From 4121a61c857833fc2e2c736c712f9fded02e09e0 Mon Sep 17 00:00:00 2001 From: Inky Date: Fri, 26 Apr 2019 13:35:00 +0300 Subject: [PATCH] Added: display local chat message --HG-- branch : patches-from-atys --- .../client/src/interface_v3/lua_ihm_ryzom.cpp | 53 +++++++++++++++++++ .../client/src/interface_v3/lua_ihm_ryzom.h | 1 + 2 files changed, 54 insertions(+) diff --git a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp index 1c9d2aa80..d45f643f7 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp +++ b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp @@ -4175,4 +4175,57 @@ std::string CLuaIHMRyzom::getDbRGBA(const std::string &dbProp) return toString("%i %i %i %i", color.R, color.G, color.B, color.A); } return ""; +} + +// *************************************************************************** +int CLuaIHMRyzom::displayChatMessage(CLuaState &ls) +{ + //H_AUTO(Lua_CLuaIHM_displayChatMessage) + const char *funcName = "displayChatMessage"; + CLuaIHM::checkArgMin(ls, funcName, 2); + CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING); + + CInterfaceProperty prop; + CChatStdInput &ci = PeopleInterraction.ChatInput; + + std::string msg = ls.toString(1); + const std::string dbPath = "UI:SAVE:CHAT:COLORS"; + + if (ls.type(2) == LUA_TSTRING) + { + std::string input = toLower(ls.toString(2)); + std::unordered_map sParam; + // input should match chat_group_filter sParam + sParam.insert(make_pair(string("around"), string(dbPath+":SAY"))); + sParam.insert(make_pair(string("region"), string(dbPath+":REGION"))); + sParam.insert(make_pair(string("guild"), string(dbPath+":CLADE"))); + sParam.insert(make_pair(string("team"), string(dbPath+":GROUP"))); + sParam.insert(make_pair(string("universe"), string(dbPath+":UNIVERSE_NEW"))); + for (const auto& db : sParam) + { + if (db.first.c_str() == input) + { + prop.readRGBA(db.second.c_str(), " "); + if (input == "around") + ci.AroundMe.displayMessage(ucstring(msg), prop.getRGBA()); + if (input == "region") + ci.Region.displayMessage(ucstring(msg), prop.getRGBA()); + if (input == "universe") + ci.Universe.displayMessage(ucstring(msg), prop.getRGBA()); + if (input == "guild") + ci.Guild.displayMessage(ucstring(msg), prop.getRGBA()); + if (input == "team") + ci.Team.displayMessage(ucstring(msg), prop.getRGBA()); + break; + } + } + } + if (ls.type(2) == LUA_TNUMBER) + { + sint64 id = ls.toInteger(2); + prop.readRGBA(toString("%s:DYN:%i", dbPath.c_str(), id).c_str(), " "); + if (id >= 0 && id < CChatGroup::MaxDynChanPerPlayer) + ci.DynamicChat[id].displayMessage(ucstring(msg), prop.getRGBA()); + } + return 1; } \ No newline at end of file diff --git a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h index 7f2ee1ca5..d60279aec 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h +++ b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h @@ -60,6 +60,7 @@ private: static int getMainPageURL(CLuaState &ls); static int getCharSlot(CLuaState &ls); static int displaySystemInfo(CLuaState &ls); + static int displayChatMessage(CLuaState &ls); static int setWeatherValue(CLuaState &ls); // first value is a boolean to say automatic, second value ranges from of to 1 and gives the weather static int getWeatherValue(CLuaState &ls); // get current real weather value (blend between server driven value & predicted value). Manual weather value is ignored static int disableContextHelpForControl(CLuaState &ls); // params: CCtrlBase*. return: none