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

summaryrefslogtreecommitdiff
path: root/source/game/scripting/StarTeamClientLuaBindings.cpp
blob: 53ebb62be866e5941e5b78f58ac1e2d7daa61c0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
}

}