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

summaryrefslogtreecommitdiff
path: root/source/game/scripting/StarUniverseServerLuaBindings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/scripting/StarUniverseServerLuaBindings.cpp')
-rw-r--r--source/game/scripting/StarUniverseServerLuaBindings.cpp110
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);
+}
+
+}