diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
commit | 6352e8e3196f78388b6c771073f9e03eaa612673 (patch) | |
tree | e23772f79a7fbc41bc9108951e9e136857484bf4 /source/game/scripting/StarUniverseServerLuaBindings.cpp | |
parent | 6741a057e5639280d85d0f88ba26f000baa58f61 (diff) |
everything everywhere
all at once
Diffstat (limited to 'source/game/scripting/StarUniverseServerLuaBindings.cpp')
-rw-r--r-- | source/game/scripting/StarUniverseServerLuaBindings.cpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/source/game/scripting/StarUniverseServerLuaBindings.cpp b/source/game/scripting/StarUniverseServerLuaBindings.cpp new file mode 100644 index 0000000..b055b76 --- /dev/null +++ b/source/game/scripting/StarUniverseServerLuaBindings.cpp @@ -0,0 +1,110 @@ +#include "StarUniverseServerLuaBindings.hpp" +#include "StarJsonExtra.hpp" +#include "StarLuaGameConverters.hpp" +#include "StarUniverseServer.hpp" + +namespace Star { + +LuaCallbacks LuaBindings::makeUniverseServerCallbacks(UniverseServer* universe) { + LuaCallbacks callbacks; + + callbacks.registerCallbackWithSignature<List<ConnectionId>>("clientIds", bind(UniverseServerCallbacks::clientIds, universe)); + callbacks.registerCallbackWithSignature<size_t>("numberOfClients", bind(UniverseServerCallbacks::numberOfClients, universe)); + callbacks.registerCallbackWithSignature<bool, ConnectionId>("isConnectedClient", bind(UniverseServerCallbacks::isConnectedClient, universe, _1)); + callbacks.registerCallbackWithSignature<String, ConnectionId>("clientNick", bind(UniverseServerCallbacks::clientNick, universe, _1)); + callbacks.registerCallbackWithSignature<Maybe<ConnectionId>, String>("findNick", bind(UniverseServerCallbacks::findNick, universe, _1)); + callbacks.registerCallbackWithSignature<void, String>("adminBroadcast", bind(UniverseServerCallbacks::adminBroadcast, universe, _1)); + callbacks.registerCallbackWithSignature<void, ConnectionId, String>("adminWhisper", bind(UniverseServerCallbacks::adminWhisper, universe, _1, _2)); + 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)); + + return callbacks; +} + +// Gets a list of client ids +// +// @return A list of numerical client IDs. +List<ConnectionId> LuaBindings::UniverseServerCallbacks::clientIds(UniverseServer* universe) { + return universe->clientIds(); +} + +// Gets the number of logged in clients +// +// @return An integer containing the number of logged in clients +size_t LuaBindings::UniverseServerCallbacks::numberOfClients(UniverseServer* universe) { + return universe->numberOfClients(); +} + +// Returns whether or not the provided client ID is currently connected +// +// @param clientId the client ID in question +// @return A bool that is true if the client is connected and false otherwise +bool LuaBindings::UniverseServerCallbacks::isConnectedClient(UniverseServer* universe, ConnectionId arg1) { + return universe->isConnectedClient(arg1); +} + +// Returns the nickname for the given client ID +// +// @param clientId the client ID in question +// @return A string containing the nickname of the given client +String LuaBindings::UniverseServerCallbacks::clientNick(UniverseServer* universe, ConnectionId arg1) { + return universe->clientNick(arg1); +} + +// Returns the client ID for the given nick +// +// @param nick the nickname of the client to search for +// @return An integer containing the clientID of the nick in question +Maybe<ConnectionId> LuaBindings::UniverseServerCallbacks::findNick(UniverseServer* universe, String const& arg1) { + return universe->findNick(arg1); +} + +// Sends a message to all logged in clients +// +// @param message the message to broadcast +// @return nil +void LuaBindings::UniverseServerCallbacks::adminBroadcast(UniverseServer* universe, String const& arg1) { + universe->adminBroadcast(arg1); +} + +// Sends a message to a specific client +// +// @param clientId the client id to whisper +// @param message the message to whisper +// @return nil +void LuaBindings::UniverseServerCallbacks::adminWhisper(UniverseServer* universe, ConnectionId arg1, String const& arg2) { + ConnectionId client = arg1; + String message = arg2; + universe->adminWhisper(client, message); +} + +// Returns whether or not a specific client is flagged as an admin +// +// @param clientId the client id to check +// @return a boolean containing true if the client is an admin, false otherwise +bool LuaBindings::UniverseServerCallbacks::isAdmin(UniverseServer* universe, ConnectionId arg1) { + return universe->isAdmin(arg1); +} + +// Returns whether or not a specific client is flagged as pvp +// +// @param clientId the client id to check +// @return a boolean containing true if the client is flagged as pvp, false +// otherwise +bool LuaBindings::UniverseServerCallbacks::isPvp(UniverseServer* universe, ConnectionId arg1) { + return universe->isPvp(arg1); +} + +// Set (or unset) the pvp status of a specific user +// +// @param clientId the client id to check +// @param setPvp set pvp status to this bool, defaults to true +// @return nil +void LuaBindings::UniverseServerCallbacks::setPvp(UniverseServer* universe, ConnectionId arg1, Maybe<bool> arg2) { + ConnectionId client = arg1; + bool setPvpTo = arg2.value(true); + universe->setPvp(client, setPvpTo); +} + +} |