diff options
Diffstat (limited to 'source/frontend')
-rw-r--r-- | source/frontend/StarClientCommandProcessor.cpp | 55 | ||||
-rw-r--r-- | source/frontend/StarClientCommandProcessor.hpp | 32 |
2 files changed, 53 insertions, 34 deletions
diff --git a/source/frontend/StarClientCommandProcessor.cpp b/source/frontend/StarClientCommandProcessor.cpp index 7b6e234..ec5b27c 100644 --- a/source/frontend/StarClientCommandProcessor.cpp +++ b/source/frontend/StarClientCommandProcessor.cpp @@ -10,6 +10,7 @@ #include "StarAiInterface.hpp" #include "StarQuestInterface.hpp" #include "StarStatistics.hpp" +#include "StarInterfaceLuaBindings.hpp" namespace Star { @@ -76,11 +77,10 @@ StringList ClientCommandProcessor::handleCommand(String const& commandLine) { String allArguments = commandLine.substr(1); String command = allArguments.extract(); - auto arguments = m_parser.tokenizeToStringList(allArguments); StringList result; if (auto builtinCommand = m_builtinCommands.maybe(command)) { - result.append((*builtinCommand)(arguments)); + result.append((*builtinCommand)(allArguments)); } else if (auto macroCommand = m_macroCommands.maybe(command)) { for (auto const& c : *macroCommand) { if (c.beginsWith("/")) @@ -89,7 +89,11 @@ StringList ClientCommandProcessor::handleCommand(String const& commandLine) { result.append(c); } } else { - m_universeClient->sendChat(commandLine, ChatSendMode::Broadcast); + auto player = m_universeClient->mainPlayer(); + if (auto messageResult = player->receiveMessage(connectionForEntity(player->entityId()), strf("/{}", command), { allArguments })) + result.append(messageResult->isType(Json::Type::String) ? *messageResult->stringPtr() : messageResult->repr(1, true)); + else + m_universeClient->sendChat(commandLine, ChatSendMode::Broadcast); } return result; } catch (ShellParsingException const& e) { @@ -130,7 +134,8 @@ String ClientCommandProcessor::gravity() { return toString(m_universeClient->worldClient()->gravity(m_universeClient->mainPlayer()->position())); } -String ClientCommandProcessor::debug(StringList const& arguments) { +String ClientCommandProcessor::debug(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -168,7 +173,8 @@ String ClientCommandProcessor::asyncLighting() { ? "enabled" : "disabled"); } -String ClientCommandProcessor::setGravity(StringList const& arguments) { +String ClientCommandProcessor::setGravity(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -198,7 +204,8 @@ String ClientCommandProcessor::monochromeLighting() { return strf("Monochrome lighting {}", monochrome ? "enabled" : "disabled"); } -String ClientCommandProcessor::radioMessage(StringList const& arguments) { +String ClientCommandProcessor::radioMessage(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -225,7 +232,8 @@ String ClientCommandProcessor::clearCinematics() { return "Player cinematic records cleared!"; } -String ClientCommandProcessor::startQuest(StringList const& arguments) { +String ClientCommandProcessor::startQuest(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -234,7 +242,8 @@ String ClientCommandProcessor::startQuest(StringList const& arguments) { return "Quest started"; } -String ClientCommandProcessor::completeQuest(StringList const& arguments) { +String ClientCommandProcessor::completeQuest(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -242,7 +251,8 @@ String ClientCommandProcessor::completeQuest(StringList const& arguments) { return strf("Quest {} complete", arguments.at(0)); } -String ClientCommandProcessor::failQuest(StringList const& arguments) { +String ClientCommandProcessor::failQuest(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -250,7 +260,8 @@ String ClientCommandProcessor::failQuest(StringList const& arguments) { return strf("Quest {} failed", arguments.at(0)); } -String ClientCommandProcessor::previewNewQuest(StringList const& arguments) { +String ClientCommandProcessor::previewNewQuest(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -259,7 +270,8 @@ String ClientCommandProcessor::previewNewQuest(StringList const& arguments) { }); } -String ClientCommandProcessor::previewQuestComplete(StringList const& arguments) { +String ClientCommandProcessor::previewQuestComplete(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -268,7 +280,8 @@ String ClientCommandProcessor::previewQuestComplete(StringList const& arguments) }); } -String ClientCommandProcessor::previewQuestFailed(StringList const& arguments) { +String ClientCommandProcessor::previewQuestFailed(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -294,7 +307,8 @@ String ClientCommandProcessor::deathCount() { return strf("Total deaths: {}{}", deaths, deaths == 0 ? ". Well done!" : ""); } -String ClientCommandProcessor::cinema(StringList const& arguments) { +String ClientCommandProcessor::cinema(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -326,7 +340,8 @@ String ClientCommandProcessor::resetAchievements() { return "Unable to reset achievements"; } -String ClientCommandProcessor::statistic(StringList const& arguments) { +String ClientCommandProcessor::statistic(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -337,7 +352,8 @@ String ClientCommandProcessor::statistic(StringList const& arguments) { return values.join("\n"); } -String ClientCommandProcessor::giveEssentialItem(StringList const& arguments) { +String ClientCommandProcessor::giveEssentialItem(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -354,7 +370,8 @@ String ClientCommandProcessor::giveEssentialItem(StringList const& arguments) { } } -String ClientCommandProcessor::makeTechAvailable(StringList const& arguments) { +String ClientCommandProcessor::makeTechAvailable(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -365,7 +382,8 @@ String ClientCommandProcessor::makeTechAvailable(StringList const& arguments) { return strf("Added {} to player's visible techs", arguments.at(0)); } -String ClientCommandProcessor::enableTech(StringList const& arguments) { +String ClientCommandProcessor::enableTech(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; @@ -377,7 +395,8 @@ String ClientCommandProcessor::enableTech(StringList const& arguments) { return strf("Player tech {} enabled", arguments.at(0)); } -String ClientCommandProcessor::upgradeShip(StringList const& arguments) { +String ClientCommandProcessor::upgradeShip(String const& argumentsString) { + auto arguments = m_parser.tokenizeToStringList(argumentsString); if (!adminCommandAllowed()) return "You must be an admin to use this command."; diff --git a/source/frontend/StarClientCommandProcessor.hpp b/source/frontend/StarClientCommandProcessor.hpp index 41809ed..e9e8962 100644 --- a/source/frontend/StarClientCommandProcessor.hpp +++ b/source/frontend/StarClientCommandProcessor.hpp @@ -29,40 +29,40 @@ private: String reload(); String whoami(); String gravity(); - String debug(StringList const& arguments); + String debug(String const& argumentsString); String boxes(); String fullbright(); String asyncLighting(); - String setGravity(StringList const& arguments); + String setGravity(String const& argumentsString); String resetGravity(); String fixedCamera(); String monochromeLighting(); - String radioMessage(StringList const& arguments); + String radioMessage(String const& argumentsString); String clearRadioMessages(); String clearCinematics(); - String startQuest(StringList const& arguments); - String completeQuest(StringList const& arguments); - String failQuest(StringList const& arguments); - String previewNewQuest(StringList const& arguments); - String previewQuestComplete(StringList const& arguments); - String previewQuestFailed(StringList const& arguments); + String startQuest(String const& argumentsString); + String completeQuest(String const& argumentsString); + String failQuest(String const& argumentsString); + String previewNewQuest(String const& argumentsString); + String previewQuestComplete(String const& argumentsString); + String previewQuestFailed(String const& argumentsString); String clearScannedObjects(); String playTime(); String deathCount(); - String cinema(StringList const& arguments); + String cinema(String const& argumentsString); String suicide(); String naked(); String resetAchievements(); - String statistic(StringList const& arguments); - String giveEssentialItem(StringList const& arguments); - String makeTechAvailable(StringList const& arguments); - String enableTech(StringList const& arguments); - String upgradeShip(StringList const& arguments); + String statistic(String const& argumentsString); + String giveEssentialItem(String const& argumentsString); + String makeTechAvailable(String const& argumentsString); + String enableTech(String const& argumentsString); + String upgradeShip(String const& argumentsString); UniverseClientPtr m_universeClient; CinematicPtr m_cinematicOverlay; MainInterfacePaneManager* m_paneManager; - CaseInsensitiveStringMap<function<String(StringList const&)>> m_builtinCommands; + CaseInsensitiveStringMap<function<String(String const&)>> m_builtinCommands; StringMap<StringList> m_macroCommands; ShellParser m_parser; LuaBaseComponent m_scriptComponent; |