summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actActorTemplate.h
blob: 31cdf20be8ea3d8b68c0d7f8f3dd65dc4a07743c (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
34
#pragma once

#include <heap/seadDisposer.h>
#include "KingSystem/Utils/Types.h"

namespace al {
class ByamlIter;
}

namespace ksys::act {

class ActorTemplate {
    SEAD_SINGLETON_DISPOSER(ActorTemplate)
    ActorTemplate() = default;
    virtual ~ActorTemplate();

public:
    void init(const u8* data, sead::Heap* heap);

    bool getActorClass(const char** actor_class, const char* profile) const;
    s32 getNumAttPriorityEntries(const char* profile) const;
    bool getAttPriority(const char** priority, const char* profile, s32 idx) const;
    bool getAttDefPriority(const char** priority, const char* profile) const;
    s32 getNumProfiles() const;
    const char* getProfileName(s32 idx) const;

    al::ByamlIter* getRootIter() const { return mIter; }

private:
    al::ByamlIter* mIter = nullptr;
};
KSYS_CHECK_SIZE_NX150(ActorTemplate, 0x30);

}  // namespace ksys::act