summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actBaseProcJob.h
blob: be5a219d06de76a4e92924d8c7a8cdfd4479b992 (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
46
47
48
49
50
51
52
53
#pragma once

#include <container/seadTList.h>
#include "KingSystem/Utils/Types.h"

namespace ksys::act {

class BaseProc;

enum class Priority {
    PlayerBefore = 0,
    Player = 2,
    PlayerAfter = 2,
    AllAfter = 3,
};

enum class JobType {
    PreCalc = 0,
    Calc1 = 1,
    Calc2 = 2,
    Calc3 = 3,
    Calc4 = 4,
    AfterMessageDispatch = 5,
    Calc3Alt = 6,
    Invalid = 7,
};

class BaseProcJobLink : public sead::TListNode<BaseProc*> {
public:
    BaseProcJobLink(BaseProc* proc, u8 priority);

    u8 getPriority() const { return mPriority; }
    u8 getPriority2() const { return mPriority2; }

    void setNewPriority(u8 priority) { mNewPriority = priority; }
    void setNewPriority2(u8 priority) { mNewPriority2 = priority; }

    void loadNewPriority() { mPriority = mNewPriority; }
    void loadNewPriority2() { mPriority2 = mNewPriority2; }

    bool hasPriorityChange() const {
        return mPriority != mNewPriority || mPriority2 != mNewPriority2;
    }

private:
    u8 mPriority;
    u8 mNewPriority;
    u8 mPriority2;
    u8 mNewPriority2;
};
KSYS_CHECK_SIZE_NX150(BaseProcJobLink, 0x28);

}  // namespace ksys::act