[Small Addition] added respawnInWorld Command

This commit is contained in:
lonaasan 2024-09-09 09:53:11 +02:00
parent 06b865fb84
commit 98a395721e
5 changed files with 52 additions and 13 deletions

View File

@ -10,6 +10,7 @@
},
"openSbCommands": {
"swap": "Usage /swap <name>. Swaps the current character, case-insensitive, only substring required."
"swap": "Usage /swap <name>. Swaps the current character, case-insensitive, only substring required.",
"respawninworld": "Usage /respawnInWorld. Sets the respawn flag for the current world until you teleport away."
}
}

View File

@ -51,7 +51,8 @@ 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)}
};
}
@ -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!";
}
}

View File

@ -58,6 +58,7 @@ private:
String enableTech(String const& argumentsString);
String upgradeShip(String const& argumentsString);
String swap(String const& argumentsString);
String respawnInWorld();
UniverseClientPtr m_universeClient;
CinematicPtr m_cinematicOverlay;

View File

@ -2421,4 +2421,16 @@ void WorldClient::setupForceRegions() {
}
}
bool WorldClient::toggleRespawnInWorld() {
// Setting oldValue to check if m_respawnInWorld triggered correctly later
const bool oldValue = respawnInWorld();
m_respawnInWorld ^= true;
if (respawnInWorld() != oldValue) {
return true;
}
return false;
}
}

View File

@ -175,6 +175,9 @@ public:
typedef std::function<bool(PlayerPtr, StringView)> BroadcastCallback;
BroadcastCallback& broadcastCallback();
bool toggleRespawnInWorld();
private:
static const float DropDist;