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

summaryrefslogtreecommitdiff
path: root/source/game/scripting
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/scripting')
-rw-r--r--source/game/scripting/StarTeamClientLuaBindings.cpp33
-rw-r--r--source/game/scripting/StarTeamClientLuaBindings.hpp12
2 files changed, 45 insertions, 0 deletions
diff --git a/source/game/scripting/StarTeamClientLuaBindings.cpp b/source/game/scripting/StarTeamClientLuaBindings.cpp
new file mode 100644
index 0000000..53ebb62
--- /dev/null
+++ b/source/game/scripting/StarTeamClientLuaBindings.cpp
@@ -0,0 +1,33 @@
+#include "StarTeamClientLuaBindings.hpp"
+#include "StarTeamClient.hpp"
+
+namespace Star {
+
+LuaCallbacks LuaBindings::makeTeamClientCallbacks(TeamClient* teamClient) {
+ LuaCallbacks callbacks;
+
+ callbacks.registerCallbackWithSignature<void>("isMemberOfTeam", bind(mem_fn(&TeamClient::isMemberOfTeam), teamClient));
+ callbacks.registerCallbackWithSignature<void, String>("invitePlayer", bind(mem_fn(&TeamClient::invitePlayer), teamClient, _1));
+
+ callbacks.registerCallback("isTeamLeader", [teamClient](Maybe<String> const& playerUuid) -> bool {
+ if (playerUuid)
+ return teamClient->isTeamLeader(Uuid(*playerUuid));
+ return teamClient->isTeamLeader();
+ });
+ callbacks.registerCallback("currentTeam", [teamClient]() -> Maybe<String> {
+ auto teamUuid = teamClient->currentTeam();
+ if (teamUuid)
+ return teamUuid->hex();
+ return {};
+ });
+ callbacks.registerCallback("makeLeader", [teamClient](String const& playerUuid) {
+ teamClient->makeLeader(Uuid(playerUuid));
+ });
+ callbacks.registerCallback("removeFromTeam", [teamClient](String const& playerUuid) {
+ teamClient->removeFromTeam(Uuid(playerUuid));
+ });
+
+ return callbacks;
+}
+
+}
diff --git a/source/game/scripting/StarTeamClientLuaBindings.hpp b/source/game/scripting/StarTeamClientLuaBindings.hpp
new file mode 100644
index 0000000..8001477
--- /dev/null
+++ b/source/game/scripting/StarTeamClientLuaBindings.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "StarLua.hpp"
+
+namespace Star {
+
+STAR_CLASS(TeamClient);
+
+namespace LuaBindings {
+ LuaCallbacks makeTeamClientCallbacks(TeamClient* teamClient);
+}
+}