diff options
author | ErodeesFleurs <862959461@qq.com> | 2025-01-22 22:11:47 +0800 |
---|---|---|
committer | ErodeesFleurs <862959461@qq.com> | 2025-01-22 22:11:47 +0800 |
commit | 77e3b5017570bdbe742f7843e800ee941784e3da (patch) | |
tree | ff209c6151b0aa384176aa4289985b5dce6bf0ce /source/game/scripting/StarTeamClientLuaBindings.cpp | |
parent | 099773621bc5eb6500829bcc5adf38ada3450f74 (diff) |
add "team" lua callbacks
Diffstat (limited to 'source/game/scripting/StarTeamClientLuaBindings.cpp')
-rw-r--r-- | source/game/scripting/StarTeamClientLuaBindings.cpp | 33 |
1 files changed, 33 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; +} + +} |