1#include "Player/PlayerModelHolder.h"
2
3#include "Library/Base/StringUtil.h"
4
5PlayerModelHolder::PlayerModelHolder(u32 bufferSize) {
6 mBuffer.allocBuffer(ptrNumMax: bufferSize, heap: nullptr);
7}
8
9void PlayerModelHolder::registerModel(al::LiveActor* liveActor, const char* name) {
10 Entry* entry = new Entry{liveActor};
11 entry->name = name;
12 mBuffer.pushBack(ptr: entry);
13}
14
15void PlayerModelHolder::changeModel(const char* name) {
16 for (auto it = mBuffer.begin(), end = mBuffer.end(); it != end; ++it) {
17 if (al::isEqualString(safestr1: it->name, safestr2: sead::SafeString(name))) {
18 mCurrentModel = &*it;
19 return;
20 }
21 }
22}
23
24al::LiveActor* PlayerModelHolder::findModelActor(const char* name) const {
25 for (auto it = mBuffer.begin(), end = mBuffer.end(); it != end; ++it)
26 if (al::isEqualString(safestr1: it->name, safestr2: sead::SafeString(name)))
27 return it->actor;
28 return mCurrentModel->actor;
29}
30
31al::LiveActor* PlayerModelHolder::tryFindModelActor(const char* name) const {
32 for (auto it = mBuffer.begin(), end = mBuffer.end(); it != end; ++it)
33 if (al::isEqualString(safestr1: it->name, safestr2: sead::SafeString(name)))
34 return it->actor;
35 return nullptr;
36}
37
38bool PlayerModelHolder::isCurrentModelLabel(const char* name) const {
39 return al::isEqualString(str1: mCurrentModel->name.cstr(), str2: name);
40}
41
42bool PlayerModelHolder::isCurrentModelLabelSubString(const char* name) const {
43 return al::isEqualSubString(str: mCurrentModel->name.cstr(), subStr: name);
44}
45