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

Method queueRadioMessage

source/game/StarPlayer.cpp:2547–2591  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2545}
2546
2547void Player::queueRadioMessage(Json const& messageConfig, float delay) {
2548 RadioMessage message;
2549 try {
2550 message = Root::singleton().radioMessageDatabase()->createRadioMessage(messageConfig);
2551
2552 if (message.type == RadioMessageType::Tutorial && !Root::singleton().configuration()->get("tutorialMessages").toBool())
2553 return;
2554
2555 // non-absolute portrait image paths are assumed to be a frame name within the player's species-specific AI
2556 if (!message.portraitImage.empty() && message.portraitImage[0] != '/')
2557 message.portraitImage = Root::singleton().aiDatabase()->portraitImage(species(), message.portraitImage);
2558 } catch (RadioMessageDatabaseException const& e) {
2559 Logger::error("Couldn't queue radio message '{}': {}", messageConfig, e.what());
2560 return;
2561 }
2562
2563 if (m_log->radioMessages().contains(message.messageId)) {
2564 return;
2565 } else {
2566 if (message.type == RadioMessageType::Mission) {
2567 if (m_missionRadioMessages.contains(message.messageId))
2568 return;
2569 else
2570 m_missionRadioMessages.add(message.messageId);
2571 }
2572
2573 for (RadioMessage const& pendingMessage : m_pendingRadioMessages) {
2574 if (pendingMessage.messageId == message.messageId)
2575 return;
2576 }
2577 for (auto& delayedMessagePair : m_delayedRadioMessages) {
2578 if (delayedMessagePair.second.messageId == message.messageId) {
2579 if (delay == 0)
2580 delayedMessagePair.first.setDone();
2581 return;
2582 }
2583 }
2584 }
2585
2586 if (delay > 0) {
2587 m_delayedRadioMessages.append(pair<GameTimer, RadioMessage>{GameTimer(delay), message});
2588 } else {
2589 queueRadioMessage(message);
2590 }
2591}
2592
2593void Player::queueRadioMessage(RadioMessage message) {
2594 if (message.important) {

Callers 2

makePlayerCallbacksMethod · 0.80
radioMessageMethod · 0.80

Calls 15

singletonClass · 0.85
errorFunction · 0.85
GameTimerClass · 0.85
createRadioMessageMethod · 0.80
radioMessageDatabaseMethod · 0.80
toBoolMethod · 0.80
configurationMethod · 0.80
portraitImageMethod · 0.80
aiDatabaseMethod · 0.80
radioMessagesMethod · 0.80
setDoneMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected