summaryrefslogtreecommitdiff
path: root/include/m_npc_schedule.h
blob: b410c6fd50dfa0eee8e87e030e735aa7d1ba3b80 (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
#ifndef M_NPC_SCHEDULE_H
#define M_NPC_SCHEDULE_H

#include "ultra64.h"
#include "m_npc.h"

typedef enum NpsScheduleType{
    /* 0 */ NPS_SCHEDULE_FIELD, /* in same acre as their home */
    /* 1 */ NPS_SCHEDULE_IN_HOUSE, /* inside their house */
    /* 2 */ NPS_SCHEDULE_SLEEP, /* asleep in their house */
    /* 3 */ NPS_SCHEDULE_STAND, /* standing around town?? */
    /* 4 */ NPS_SCHEDULE_WANDER, /* wander around town */
    /* 5 */ NPS_SCHEDULE_SPECIAL, /* unique schedule method for each NPC actor type */
    /* 6 */ NPS_SCHEDULE_TYPE_NUM
} NpsScheduleType;

typedef struct NpsScheduleData {
    /* 0x00 */ NpsScheduleType type;
    /* 0x04 */ s32 endTime;
} NpsScheduleData; // size = 0x8

typedef struct NpsScheduleDataTable {
    /* 0x00 */ s32 count;
    /* 0x04 */ NpsScheduleData* scheduleData;
} NpsScheduleDataTable; // size = 0x8

typedef struct NpsSchedule{
    /* 0x00 */ AnmPersonalID_c* id;
    /* 0x04 */ NpsScheduleDataTable* dataTable;
    /* 0x08 */ u8 currentType;
    /* 0x09 */ u8 forcedType;
    /* 0x0A */ u8 savedType;
    /* 0x0C */ s32 forcedTimer;
}NpsSchedule; // size = 0x10



NpsSchedule* mNPS_get_schedule_area(AnmPersonalID_c* id);
void mNPS_set_schedule_area(AnmPersonalID_c* id);
void mNPS_reset_schedule_area(AnmPersonalID_c* id);
void mNPS_schedule_manager_sub0(void);
void mNPS_schedule_manager_sub(void);
void mNPS_schedule_manager(void);
void mNPS_set_all_schedule_area(void);

#endif