Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/frontend/StarClientCommandProcessor.cpp
diff options
context:
space:
mode:
authorlonaasan <shadowlona@shadowlona.dev>2024-09-09 09:53:11 +0200
committerlonaasan <shadowlona@shadowlona.dev>2024-09-09 09:53:11 +0200
commit98a395721ee0383bd2ed046235dd644909f2f943 (patch)
tree40a3f17b8d1dc18b387581703e836f89d41127ad /source/frontend/StarClientCommandProcessor.cpp
parent06b865fb844c1e2bbe18f329b7ed5126ce53f5c6 (diff)
[Small Addition] added respawnInWorld Command
Diffstat (limited to 'source/frontend/StarClientCommandProcessor.cpp')
-rw-r--r--source/frontend/StarClientCommandProcessor.cpp46
1 files changed, 34 insertions, 12 deletions
diff --git a/source/frontend/StarClientCommandProcessor.cpp b/source/frontend/StarClientCommandProcessor.cpp
index 2d98289..39b0d89 100644
--- a/source/frontend/StarClientCommandProcessor.cpp
+++ b/source/frontend/StarClientCommandProcessor.cpp
@@ -15,9 +15,9 @@
namespace Star {
ClientCommandProcessor::ClientCommandProcessor(UniverseClientPtr universeClient, CinematicPtr cinematicOverlay,
- MainInterfacePaneManager* paneManager, StringMap<StringList> macroCommands)
- : m_universeClient(std::move(universeClient)), m_cinematicOverlay(std::move(cinematicOverlay)),
- m_paneManager(paneManager), m_macroCommands(std::move(macroCommands)) {
+ MainInterfacePaneManager* paneManager, StringMap<StringList> macroCommands)
+ : m_universeClient(std::move(universeClient)), m_cinematicOverlay(std::move(cinematicOverlay)),
+ m_paneManager(paneManager), m_macroCommands(std::move(macroCommands)) {
m_builtinCommands = {
{"reload", bind(&ClientCommandProcessor::reload, this)},
{"whoami", bind(&ClientCommandProcessor::whoami, this)},
@@ -51,13 +51,14 @@ ClientCommandProcessor::ClientCommandProcessor(UniverseClientPtr universeClient,
{"maketechavailable", bind(&ClientCommandProcessor::makeTechAvailable, this, _1)},
{"enabletech", bind(&ClientCommandProcessor::enableTech, this, _1)},
{"upgradeship", bind(&ClientCommandProcessor::upgradeShip, this, _1)},
- {"swap", bind(&ClientCommandProcessor::swap, this, _1)}
+ {"swap", bind(&ClientCommandProcessor::swap, this, _1)},
+ {"respawnInWorld", bind(&ClientCommandProcessor::respawnInWorld, this)}
};
}
bool ClientCommandProcessor::adminCommandAllowed() const {
return Root::singleton().configuration()->get("allowAdminCommandsFromAnyone").toBool() ||
- m_universeClient->mainPlayer()->isAdmin();
+ m_universeClient->mainPlayer()->isAdmin();
}
String ClientCommandProcessor::previewQuestPane(StringList const& arguments, function<PanePtr(QuestPtr)> createPane) {
@@ -128,7 +129,7 @@ String ClientCommandProcessor::reload() {
String ClientCommandProcessor::whoami() {
return strf("Client: You are {}. You are {}an Admin.",
- m_universeClient->mainPlayer()->name(), m_universeClient->mainPlayer()->isAdmin() ? "" : "not ");
+ m_universeClient->mainPlayer()->name(), m_universeClient->mainPlayer()->isAdmin() ? "" : "not ");
}
String ClientCommandProcessor::gravity() {
@@ -273,8 +274,8 @@ String ClientCommandProcessor::previewNewQuest(String const& argumentsString) {
return "You must be an admin to use this command.";
return previewQuestPane(arguments, [this](QuestPtr const& quest) {
- return make_shared<NewQuestInterface>(m_universeClient->questManager(), quest, m_universeClient->mainPlayer());
- });
+ return make_shared<NewQuestInterface>(m_universeClient->questManager(), quest, m_universeClient->mainPlayer());
+ });
}
String ClientCommandProcessor::previewQuestComplete(String const& argumentsString) {
@@ -283,8 +284,8 @@ String ClientCommandProcessor::previewQuestComplete(String const& argumentsStrin
return "You must be an admin to use this command.";
return previewQuestPane(arguments, [this](QuestPtr const& quest) {
- return make_shared<QuestCompleteInterface>(quest, m_universeClient->mainPlayer(), CinematicPtr{});
- });
+ return make_shared<QuestCompleteInterface>(quest, m_universeClient->mainPlayer(), CinematicPtr{});
+ });
}
String ClientCommandProcessor::previewQuestFailed(String const& argumentsString) {
@@ -293,8 +294,8 @@ String ClientCommandProcessor::previewQuestFailed(String const& argumentsString)
return "You must be an admin to use this command.";
return previewQuestPane(arguments, [this](QuestPtr const& quest) {
- return make_shared<QuestFailedInterface>(quest, m_universeClient->mainPlayer());
- });
+ return make_shared<QuestFailedInterface>(quest, m_universeClient->mainPlayer());
+ });
}
String ClientCommandProcessor::clearScannedObjects() {
@@ -427,4 +428,25 @@ String ClientCommandProcessor::swap(String const& argumentsString) {
return "Failed to swap player";
}
+String ClientCommandProcessor::respawnInWorld() {
+ WorldClientPtr worldClient = m_universeClient->worldClient();
+
+ // Make sure we got the worldClient
+ if (!worldClient) {
+ return "Error: Unable to access world client.";
+ }
+
+ if (worldClient->toggleRespawnInWorld()) {
+ // Convert boolean to string for the response
+ const std::string result = worldClient->respawnInWorld() ? "true" : "false";
+
+ return "Successfully switched respawn in this world to " + result;
+ }
+ else
+ return "Failed to switch respawn in this world!";
+
+ // This should never trigger, but its better to have it than not :3
+ return "Something unforseen happend!";
}
+
+} \ No newline at end of file