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

Method createRadioMessage

source/game/StarRadioMessageDatabase.cpp:38–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

36}
37
38RadioMessage RadioMessageDatabase::createRadioMessage(Json const& config, Maybe<String> const& messageId) const {
39 if (config.isType(Json::Type::String)) {
40 return radioMessage(config.toString());
41 } else if (config.isType(Json::Type::Object)) {
42 Json const& defaults = Root::singleton().assets()->json("/radiomessages.config:messageDefaults");
43 auto mergedConfig = jsonMerge(defaults, config);
44
45 RadioMessage message;
46 message.messageId = messageId.value(mergedConfig.getString("messageId", ""));
47 if (message.messageId.empty())
48 throw RadioMessageDatabaseException("Custom radio messages must specify a messageId!");
49 message.type = RadioMessageTypeNames.getLeft(mergedConfig.getString("type"));
50 // mission messages default to non unique because they are already restricted to play
51 // once per session (cleared on player init) but should repeat when the mission is replayed
52 if (message.type == RadioMessageType::Mission)
53 message.unique = config.getBool("unique", false);
54 else
55 message.unique = mergedConfig.getBool("unique");
56 message.important = mergedConfig.getBool("important");
57 message.text = mergedConfig.getString("text");
58 message.senderName = mergedConfig.getString("senderName");
59 message.portraitImage = mergedConfig.getString("portraitImage");
60 message.portraitFrames = mergedConfig.getInt("portraitFrames");
61 message.portraitSpeed = mergedConfig.getFloat("portraitSpeed");
62 message.textSpeed = mergedConfig.getFloat("textSpeed");
63 message.persistTime = mergedConfig.getFloat("persistTime");
64 message.chatterSound = mergedConfig.getString("chatterSound");
65
66 if (message.portraitFrames <= 0)
67 throw RadioMessageDatabaseException(
68 strf("Invalid portraitFrames {} in radio message config!", message.portraitFrames));
69
70 return message;
71 } else {
72 throw RadioMessageDatabaseException("Invalid radio message specification; expected message name or configuration.");
73 }
74}
75
76}

Callers 1

queueRadioMessageMethod · 0.80

Calls 13

singletonClass · 0.85
strfFunction · 0.85
jsonMethod · 0.80
assetsMethod · 0.80
getStringMethod · 0.80
getBoolMethod · 0.80
getIntMethod · 0.80
getFloatMethod · 0.80
jsonMergeFunction · 0.50
isTypeMethod · 0.45
toStringMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected