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

summaryrefslogtreecommitdiff
path: root/source/game/StarUniverseServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarUniverseServer.cpp')
-rw-r--r--source/game/StarUniverseServer.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/source/game/StarUniverseServer.cpp b/source/game/StarUniverseServer.cpp
index eafa844..5587b98 100644
--- a/source/game/StarUniverseServer.cpp
+++ b/source/game/StarUniverseServer.cpp
@@ -143,8 +143,19 @@ void UniverseServer::setPause(bool pause) {
else
m_universeClock->start();
- for (auto p : m_clients)
- m_connectionServer->sendPackets(p.first, {make_shared<PausePacket>(*m_pause)});
+ for (auto& p : m_clients)
+ m_connectionServer->sendPackets(p.first, {make_shared<PausePacket>(*m_pause, GlobalTimescale)});
+}
+
+void UniverseServer::setTimescale(float timescale) {
+ ReadLocker clientsLocker(m_clientsLock);
+ GlobalTimescale = timescale;
+ for (auto& p : m_clients)
+ m_connectionServer->sendPackets(p.first, {make_shared<PausePacket>(*m_pause, GlobalTimescale)});
+}
+
+void UniverseServer::setTickRate(float tickRate) {
+ ServerGlobalTimestep = 1.0f / tickRate;
}
List<WorldId> UniverseServer::activeWorlds() const {
@@ -1677,7 +1688,8 @@ void UniverseServer::acceptConnection(UniverseConnection connection, Maybe<HostA
m_connectionServer->sendPackets(clientId, {
make_shared<ConnectSuccessPacket>(clientId, m_universeSettings->uuid(), m_celestialDatabase->baseInformation()),
- make_shared<UniverseTimeUpdatePacket>(m_universeClock->time())
+ make_shared<UniverseTimeUpdatePacket>(m_universeClock->time()),
+ make_shared<PausePacket>(*m_pause, GlobalTimescale)
});
setPvp(clientId, false);
@@ -1701,8 +1713,8 @@ void UniverseServer::acceptConnection(UniverseConnection connection, Maybe<HostA
bool useReviveWarp = true;
if (reviveWarp.world.is<InstanceWorldId>()) {
String instance = reviveWarp.world.get<InstanceWorldId>().instance;
- Json worldConfig = Root::singleton().assets()->json("/instance_worlds.config").get(instance);
- if (!worldConfig.getBool("persistent", false))
+ auto worldConfig = Root::singleton().assets()->json("/instance_worlds.config").opt(instance);
+ if (!worldConfig || !worldConfig->getBool("persistent", false))
useReviveWarp = false;
}