1#include "Library/Player/PlayerUtil.h"
2
3#include "Library/LiveActor/ActorFlagFunction.h"
4#include "Library/LiveActor/ActorModelFunction.h"
5#include "Library/LiveActor/ActorPoseUtil.h"
6#include "Library/Player/PlayerHolder.h"
7
8namespace al {
9
10s32 getPlayerNumMax(const PlayerHolder* holder) {
11 return holder->getPlayerNum();
12}
13
14s32 getAlivePlayerNum(const PlayerHolder* holder) {
15 s32 player_num = holder->getPlayerNum();
16 s32 alive_players = 0;
17
18 for (s32 i = 0; i < player_num; i++) {
19 LiveActor* player = holder->tryGetPlayer(index: i);
20 if (isAlive(actor: player))
21 alive_players++;
22 }
23
24 return alive_players;
25}
26
27LiveActor* getPlayerActor(const PlayerHolder* holder, s32 index) {
28 return holder->tryGetPlayer(index);
29}
30
31const sead::Vector3f& getPlayerPos(const PlayerHolder* holder, s32 index) {
32 LiveActor* player = holder->tryGetPlayer(index);
33 return getTrans(actor: player);
34}
35
36LiveActor* tryGetPlayerActor(const PlayerHolder* holder, s32 index) {
37 return holder->tryGetPlayer(index);
38}
39
40bool isPlayerDead(const PlayerHolder* holder, s32 index) {
41 LiveActor* player = holder->tryGetPlayer(index);
42 return isDead(actor: player);
43}
44
45bool isPlayerAreaTarget(const PlayerHolder* holder, s32 index) {
46 LiveActor* player = holder->tryGetPlayer(index);
47 return isAreaTarget(actor: player);
48}
49
50LiveActor* tryFindAlivePlayerActorFirst(const PlayerHolder* holder) {
51 u32 player_num = holder->getPlayerNum();
52
53 for (u32 i = 0; i < player_num; i++) {
54 LiveActor* player = holder->tryGetPlayer(index: i);
55 if (!isDead(actor: player))
56 return player;
57 }
58
59 return nullptr;
60}
61
62LiveActor* findAlivePlayerActorFirst(const PlayerHolder* holder) {
63 u32 player_num = holder->getPlayerNum();
64
65 for (u32 i = 0; i < player_num; i++) {
66 LiveActor* player = holder->tryGetPlayer(index: i);
67 if (!isDead(actor: player))
68 return player;
69 }
70
71 return nullptr;
72}
73} // namespace al
74