diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-24 18:42:55 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-24 18:42:55 +1000 |
commit | af31bde03216ba337fb6b3b5ef306c4a0bb745b5 (patch) | |
tree | f001ad9f8e59c78a30ebb5e4011de5f2e026b02a /source/game/scripting | |
parent | a2d901bd66178bbaacc2fec3acd07e7a27b9235f (diff) |
Handle world creation error when sending world messages, add active world callbacks
Diffstat (limited to 'source/game/scripting')
-rw-r--r-- | source/game/scripting/StarUniverseServerLuaBindings.cpp | 18 | ||||
-rw-r--r-- | source/game/scripting/StarUniverseServerLuaBindings.hpp | 4 |
2 files changed, 19 insertions, 3 deletions
diff --git a/source/game/scripting/StarUniverseServerLuaBindings.cpp b/source/game/scripting/StarUniverseServerLuaBindings.cpp index 9101be5..ac513a2 100644 --- a/source/game/scripting/StarUniverseServerLuaBindings.cpp +++ b/source/game/scripting/StarUniverseServerLuaBindings.cpp @@ -18,7 +18,9 @@ LuaCallbacks LuaBindings::makeUniverseServerCallbacks(UniverseServer* universe) callbacks.registerCallbackWithSignature<bool, ConnectionId>("isAdmin", bind(UniverseServerCallbacks::isAdmin, universe, _1)); callbacks.registerCallbackWithSignature<bool, ConnectionId>("isPvp", bind(UniverseServerCallbacks::isPvp, universe, _1)); callbacks.registerCallbackWithSignature<void, ConnectionId, bool>("setPvp", bind(UniverseServerCallbacks::setPvp, universe, _1, _2)); - callbacks.registerCallbackWithSignature<RpcThreadPromise<Json>, LuaEngine&, String, String, LuaVariadic<Json>>("sendWorldMessage", bind(UniverseServerCallbacks::sendWorldMessage, universe, _1, _2, _3, _4)); + callbacks.registerCallbackWithSignature<bool, String>("isWorldActive", bind(UniverseServerCallbacks::isWorldActive, universe, _1)); + callbacks.registerCallbackWithSignature<bool, StringList>("activeWorlds", bind(UniverseServerCallbacks::activeWorlds, universe)); + callbacks.registerCallbackWithSignature<RpcThreadPromise<Json>, String, String, LuaVariadic<Json>>("sendWorldMessage", bind(UniverseServerCallbacks::sendWorldMessage, universe, _1, _2, _3)); return callbacks; } @@ -108,7 +110,19 @@ void LuaBindings::UniverseServerCallbacks::setPvp(UniverseServer* universe, Conn universe->setPvp(client, setPvpTo); } -RpcThreadPromise<Json> LuaBindings::UniverseServerCallbacks::sendWorldMessage(UniverseServer* universe, LuaEngine& engine, String const& worldId, String const& message, LuaVariadic<Json> args) { +bool LuaBindings::UniverseServerCallbacks::isWorldActive(UniverseServer* universe, String const& worldId) { + return universe->isWorldActive(parseWorldId(worldId)); +} + +StringList LuaBindings::UniverseServerCallbacks::activeWorlds(UniverseServer* universe) { + StringList worlds; + for (WorldId& world : universe->activeWorlds()) + worlds.append(printWorldId(world)); + + return worlds; +} + +RpcThreadPromise<Json> LuaBindings::UniverseServerCallbacks::sendWorldMessage(UniverseServer* universe, String const& worldId, String const& message, LuaVariadic<Json> args) { return universe->sendWorldMessage(parseWorldId(worldId), message, JsonArray::from(move(args))); } diff --git a/source/game/scripting/StarUniverseServerLuaBindings.hpp b/source/game/scripting/StarUniverseServerLuaBindings.hpp index 5eb1674..0b6b21b 100644 --- a/source/game/scripting/StarUniverseServerLuaBindings.hpp +++ b/source/game/scripting/StarUniverseServerLuaBindings.hpp @@ -23,7 +23,9 @@ namespace LuaBindings { bool isAdmin(UniverseServer* universe, ConnectionId arg1); bool isPvp(UniverseServer* universe, ConnectionId arg1); void setPvp(UniverseServer* universe, ConnectionId arg1, Maybe<bool> arg2); - RpcThreadPromise<Json> sendWorldMessage(UniverseServer* universe, LuaEngine& engine, String const& worldId, String const& message, LuaVariadic<Json> args); + bool isWorldActive(UniverseServer* universe, String const& worldId); + StringList activeWorlds(UniverseServer* universe); + RpcThreadPromise<Json> sendWorldMessage(UniverseServer* universe, String const& worldId, String const& message, LuaVariadic<Json> args); } } } |