summaryrefslogtreecommitdiff
path: root/src/overlays/actors/player_actor/m_player.h
blob: 43fe69051cd857899da2cb35dffc428f20603062 (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#ifndef M_PLAYER_H
#define M_PLAYER_H

#include "ultra64.h"
#include "m_actor.h"
#include "m_collision_obj.h"
#include "m_controller.h"
#include "unk.h"

struct Game;
struct Game_Play;
struct Player;

typedef enum Player_ItemKind {
    Player_ITEM_KIND_START,
    Player_ITEM_KIND_AXE = Player_ITEM_KIND_START,
    Player_ITEM_KIND_NET,
    Player_ITEM_KIND_UMBRELLA00,
    Player_ITEM_KIND_UMBRELLA01,
    Player_ITEM_KIND_UMBRELLA02,
    Player_ITEM_KIND_UMBRELLA03,
    Player_ITEM_KIND_UMBRELLA04,
    Player_ITEM_KIND_UMBRELLA05,
    Player_ITEM_KIND_UMBRELLA06,
    Player_ITEM_KIND_UMBRELLA07,
    Player_ITEM_KIND_UMBRELLA08,
    Player_ITEM_KIND_UMBRELLA09,
    Player_ITEM_KIND_UMBRELLA10,
    Player_ITEM_KIND_UMBRELLA11,
    Player_ITEM_KIND_UMBRELLA12,
    Player_ITEM_KIND_UMBRELLA13,
    Player_ITEM_KIND_UMBRELLA14,
    Player_ITEM_KIND_UMBRELLA15,
    Player_ITEM_KIND_UMBRELLA16,
    Player_ITEM_KIND_UMBRELLA17,
    Player_ITEM_KIND_UMBRELLA18,
    Player_ITEM_KIND_UMBRELLA19,
    Player_ITEM_KIND_UMBRELLA20,
    Player_ITEM_KIND_UMBRELLA21,
    Player_ITEM_KIND_UMBRELLA22,
    Player_ITEM_KIND_UMBRELLA23,
    Player_ITEM_KIND_UMBRELLA24,
    Player_ITEM_KIND_UMBRELLA25,
    Player_ITEM_KIND_UMBRELLA26,
    Player_ITEM_KIND_UMBRELLA27,
    Player_ITEM_KIND_UMBRELLA28,
    Player_ITEM_KIND_UMBRELLA29,
    Player_ITEM_KIND_UMBRELLA30,
    Player_ITEM_KIND_UMBRELLA31,
    Player_ITEM_KIND_ROD,
    Player_ITEM_KIND_SCOOP
} Player_ItemKind;

#define Player_ITEM_KIND_CHECK(kind, min, max) (kind >= min && kind < max + 1)
#define Player_ITEM_IS_AXE(kind) (kind == Player_ITEM_KIND_AXE)
#define Player_ITEM_IS_NET(kind) (kind == Player_ITEM_KIND_NET)
#define Player_ITEM_IS_ROD(kind) (kind == Player_ITEM_KIND_ROD)
#define Player_ITEM_IS_SCOOP(kind) (kind == Player_ITEM_KIND_SCOOP)
#define Player_ITEM_IS_UMBRELLA(kind) \
    (Player_ITEM_KIND_CHECK(kind, Player_ITEM_KIND_UMBRELLA00, Player_ITEM_KIND_UMBRELLA31))
#define Player_ITEM_IS_VALID(kind) (Player_ITEM_KIND_CHECK(kind, Player_ITEM_KIND_START, Player_ITEM_KIND_SCOOP))

typedef struct PlayerControllerData {
    /* 0x00 */ Controller controller;
    /* 0x38 */ s8 triggerButtonA;
    /* 0x39 */ s8 buttonA;
    /* 0x3A */ s8 triggerButtonB;
    /* 0x3B */ s8 buttonB;
    /* 0x3C */ u16 equippedItem;
} PlayerControllerData; // size = 0x40;

typedef void (*PlayerUnk1230Func)(struct Player*, struct Game_Play*, Actor*, s32, xyz_t*, f32);
typedef f32 (*PlayerUnk1234Func)(struct Player*, struct Game_Play*);
typedef void (*PlayerUnk1238Func)(struct Player*, struct Game_Play*, Actor*, s32);
typedef s32 (*SetMgrGetEndPosProc)(struct Game*, xyz_t*);

typedef struct Player {
    /* 0x0000 */ Actor actor;
    /* 0x0174 */ UNK_TYPE1 unk_0174[0xB7C];
    /* 0x0CF0*/ s32 unk_0CF0;
    /* 0x0CF4*/ s32 unk_0CF4;
    /* 0x0CF8 */ UNK_TYPE1 unk_0CF8[0x8];
    /* 0x0D00 */ s32 unk_0D00;
    /* 0x0D04 */ s32 unk_0D04;
    /* 0x0D08 */ s32 unk_0D08;
    /* 0x0D0C */ UNK_TYPE1 unk_0D0C[0xA0];
    /* 0x0DAC */ UNK_TYPE unk_0DAC;
    /* 0x0DB0 */ UNK_TYPE unk_0DB0;
    /* 0x0DB4 */ UNK_TYPE1 unk_0DB4[0x8];
    /* 0x0DBC */ u8* unk_0DBC[2];
    /* 0x0DC4 */ UNK_TYPE1 unk_0DC4[0x18];
    /* 0x0DDC */ UNK_TYPE unk_0DDC[2];
    /* 0x0DE4 */ UNK_TYPE unk_0DE4[2];
    /* 0x0DEC */ UNK_TYPE1 unk_0DEC[0x160];
    /* 0x0F4C */ ClObjTris colliderTris1;
    /* 0x0F60 */ UNK_TYPE1 unk_0F60[0x44];
    /* 0x0FA4 */ ClObjTris colliderTris2;
    /* 0x0FB8 */ UNK_TYPE1 unk_0FB8[0x50];
    /* 0x1008 */ ClObjPipe colliderPipe;
    /* 0x1024 */ UNK_TYPE1 unk_1024[0x20C];
    /* 0x1230 */ PlayerUnk1230Func unk_1230;
    /* 0x1234 */ PlayerUnk1234Func unk_1234;
    /* 0x1238 */ PlayerUnk1238Func unk_1238;
    /* 0x123C */ UNK_TYPE1 unk_123C[0x8];
    /* 0x1244 */ SetMgrGetEndPosProc getEndPos;
    /* 0x1248 */ UNK_TYPE1 unk_1248[0x70];
    /* 0x12B8 */ UNK_TYPE unk_12B8;
    /* 0x12BC */ s32 unk_12BC;
    /* 0x12C0 */ u16 unk_12C0;
    /* 0x12C2 */ UNK_TYPE1 unk_12C2[0x2];
    /* 0x12C4 */ UNK_TYPE1 unk_12C4[0x14];
} Player; // size = 0x12D8

void Player_actor_ct(Actor* thisx, struct Game_Play* game_play);
void Player_actor_dt(Actor* thisx, struct Game_Play* game_play);
void Player_actor_move(Actor* thisx, struct Game_Play* game_play);
void Player_actor_draw(Actor* thisx, struct Game_Play* game_play);

#endif