MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / Chat

Method Chat

source/frontend/StarChat.cpp:25–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23namespace Star {
24
25Chat::Chat(UniverseClientPtr client, Json const& baseConfig) : BaseScriptPane(baseConfig, false) {
26 m_client = client;
27 m_scripted = baseConfig.get("scripts", Json()).isType(Json::Type::Array);
28 m_script.setLuaRoot(m_client->luaRoot());
29 m_script.addCallbacks("world", LuaBindings::makeWorldCallbacks((World*)m_client->worldClient().get()));
30 m_chatPrevIndex = 0;
31 m_historyOffset = 0;
32
33 auto assets = Root::singleton().assets();
34 auto config = baseConfig.get("config");
35 m_timeChatLastActive = Time::monotonicMilliseconds();
36 m_chatTextStyle = config.get("textStyle");
37 m_chatTextStyle.lineSpacing = config.get("lineHeight").toFloat();
38 m_chatVisTime = config.get("visTime").toFloat();
39 m_fadeRate = config.get("fadeRate").toDouble();
40 m_chatHistoryLimit = config.get("chatHistoryLimit").toInt();
41 m_chatFormatString = config.getString("chatFormatString");
42
43 m_portraitTextOffset = jsonToVec2I(config.get("portraitTextOffset"));
44 m_portraitImageOffset = jsonToVec2I(config.get("portraitImageOffset"));
45 m_portraitScale = config.get("portraitScale").toFloat();
46 m_portraitVerticalMargin = config.get("portraitVerticalMargin").toFloat();
47 m_portraitBackground = config.get("portraitBackground").toString();
48
49 m_bodyHeight = config.get("bodyHeight").toInt();
50 m_expandedBodyHeight = config.get("expandedBodyHeight").toInt();
51
52 m_colorCodes[MessageContext::Local] = config.query("colors.local").toString();
53 m_colorCodes[MessageContext::Party] = config.query("colors.party").toString();
54 m_colorCodes[MessageContext::Broadcast] = config.query("colors.broadcast").toString();
55 m_colorCodes[MessageContext::Whisper] = config.query("colors.whisper").toString();
56 m_colorCodes[MessageContext::CommandResult] = config.query("colors.commandResult").toString();
57 m_colorCodes[MessageContext::RadioMessage] = config.query("colors.radioMessage").toString();
58 m_colorCodes[MessageContext::World] = config.query("colors.world").toString();
59 if (!m_scripted) {
60 m_reader->registerCallback("textBox", [=](Widget*) { startChat(); });
61 m_reader->registerCallback("upButton", [=](Widget*) { scrollUp(); });
62 m_reader->registerCallback("downButton", [=](Widget*) { scrollDown(); });
63 m_reader->registerCallback("bottomButton", [=](Widget*) { scrollBottom(); });
64
65 m_reader->registerCallback("filterGroup", [=](Widget* widget) {
66 Json data = as<ButtonWidget>(widget)->data();
67 auto filter = data.getArray("filter", {});
68 m_modeFilter.clear();
69 for (auto mode : filter)
70 m_modeFilter.insert(MessageContextModeNames.getLeft(mode.toString()));
71 m_sendMode = ChatSendModeNames.getLeft(data.getString("sendMode", "Broadcast"));
72 m_historyOffset = 0;
73 });
74 }
75
76 construct(baseConfig.get("gui"));
77
78 m_sendMode = ChatSendMode::Broadcast;
79 m_chatLog = fetchChild<CanvasWidget>("chatLog");
80 m_bottomButton = fetchChild<ButtonWidget>("bottomButton");
81 m_upButton = fetchChild<ButtonWidget>("upButton");
82 m_textBox = fetchChild<TextBoxWidget>("textBox");

Callers

nothing calls this directly

Calls 15

JsonClass · 0.85
makeWorldCallbacksFunction · 0.85
singletonClass · 0.85
jsonToVec2IFunction · 0.85
constructClass · 0.85
setLuaRootMethod · 0.80
worldClientMethod · 0.80
assetsMethod · 0.80
toFloatMethod · 0.80
toDoubleMethod · 0.80
toIntMethod · 0.80
getStringMethod · 0.80

Tested by

no test coverage detected