summaryrefslogtreecommitdiff
path: root/src/KingSystem/Quest/qstIndicator.h
blob: b4482c70e54b5d2c34a07db4dd9ae9d89abfd985 (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
35
36
37
38
39
40
41
42
43
44
45
#pragma once

#include <heap/seadHeap.h>
#include "KingSystem/Quest/qstManager.h"
#include "KingSystem/Utils/Byaml/Byaml.h"

namespace ksys::qst {

struct Step;

struct IndicatorActor {
    IndicatorActor();
    virtual ~IndicatorActor();

    act::BaseProcLink link;
    bool has_far;
    const char* instance_name;
    sead::Vector3f location;
    const char* name;
    const char* off_flag;
    u32 is_remains;
    u32 hash_name = 0;
    u32 hash_instance_name = 0;
    void* _58;
};

struct Indicator {
    Indicator(Step* step, sead::Heap* heap);
    virtual ~Indicator();

    bool init(al::ByamlIter* iter, sead::BufferedSafeString* out_message);
    void finalize();

    void acquireActors();
    void sub_7100FD4FC4();
    const IndicatorActor* sub_7100FD54E4(int idx) const;
    const IndicatorActor* sub_7100FD5518(int idx) const;

    sead::ObjArray<IndicatorActor> actors;
    sead::ObjArray<IndicatorActor> _28;
    sead::Heap* heap;
    Step* step;
};

}  // namespace ksys::qst