New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
ActorBgCollisionPlayerCheck.h
Go to the documentation of this file.
1#pragma once
2
3#include <collision/ActorBgCollisionCheck.h>
4
5class ActorBgCollisionPlayerCheck : public ActorBgCollisionCheck // vtbl Address: 0x100417C0
6{
7 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: Deleted
8 // getRuntimeTypeInfoStatic()::typeInfo Address: Deleted
9 SEAD_RTTI_OVERRIDE(ActorBgCollisionPlayerCheck, ActorBgCollisionCheck)
10
11public:
19 static_assert(sizeof(VineType) == 4);
20
21 enum Flag
22 {
23 cFlag_IsVine = 1 << 0,
26 cFlag_IsMame = 1 << 3
27 };
28
37 static_assert(sizeof(PcCheckArea) == 0x14);
38
40 {
42 };
43
44public:
45 // Address: 0x021934C0
47 // Address: 0x021936A8
49
50 // Address: 0x02193714
52 // Address: 0x02193718
54 // Address: 0x0219371C
56
57 void setCarryPlayerNo(s8 player_no)
58 {
59 mCarryPlayerNo = player_no;
60 }
61
62 bool isSakaReverse() const
63 {
64 return mFlag.isOn(cFlag_IsSakaReverse);
65 }
66
67 void onMame()
68 {
69 mFlag.set(cFlag_IsMame);
70 }
71
72 void offMame()
73 {
74 mFlag.reset(cFlag_IsMame);
75 }
76
77 bool isMame() const
78 {
79 return mFlag.isOn(cFlag_IsMame);
80 }
81
82 // Address: 0x02193828
83 bool checkDokanDown(sead::Vector3f* pos, s32* dst_next_goto_no);
84 // Address: 0x02193B38
85 bool checkDokanUp(sead::Vector3f* pos, s32* dst_next_goto_no);
86 // Address: 0x02193E54
87 bool checkDokanLR(sead::Vector3f* pos, s32* dst_next_goto_no, DirType direction, const Sensor& wall);
88
89 bool isMameDokan() const
90 {
91 return mIsMameDokan;
92 }
93
94 // Address: 0x021941D8
95 VineResult checkVine(const Sensor& vine_sensor);
96
97 // Address: 0x02194F18
98 bool checkPole(const sead::Vector2f& offset);
99
100 // Address: 0x0219587C
101 Actor* getOwnerAtRevCheck(f32 bg_collision_pos_y) const override;
102 // Address: 0x021958E8
103 Actor* getOwnerAtHit(const BgCollision& bg_collision, u8 direction) const override;
104 // Address: 0x02195830
105 s8* vf4C(f32) const override;
106
108 {
109 return mVineType;
110 }
111
113 {
114 return mVineBgCollision;
115 }
116
117 void setPcCheckArea(const PcCheckArea& area)
118 {
119 mPcCheckArea = area;
120 }
121
122 // Address: 0x021950D0
123 bool checkGround(const sead::Vector3f& pos, f32 check_distance, BgCollisionCheckResultArea* res = nullptr);
124
126
127 // Address: 0x02195160
128 bool checkWall(const sead::Vector3f& pos, f32 speed_x, f32* hit_pos_x = nullptr, bool use_callback = false);
129
130 // Address: 0x021952D4
131 bool checkTenjou(const sead::Vector3f& pos, f32 check_distance, f32* hit_pos_y = nullptr, bool no_invis_block = false);
132
133 // Address: 0x02195658
134 bool checkQuicksand(const sead::Vector3f& pos, f32* hit_pos_y = nullptr);
135
136 // Address: 0x0219574C
137 bool checkKani(s32* type, f32* hit_pos_y, const sead::Vector3f& pos, f32 check_distance);
138
139private:
148 u32 _1524[(0x15A0 - 0x1524) / sizeof(u32)];
149};
150static_assert(sizeof(ActorBgCollisionPlayerCheck) == 0x15A0);
Definition ActorBgCollisionPlayerCheck.h:6
bool checkWall(const sead::Vector3f &pos, f32 speed_x, f32 *hit_pos_x=nullptr, bool use_callback=false)
bool checkGround(const sead::Vector3f &pos, f32 check_distance, BgCollisionCheckResultArea *res=nullptr)
BgCollision * getVineBgCollision() const
Definition ActorBgCollisionPlayerCheck.h:112
bool checkQuicksand(const sead::Vector3f &pos, f32 *hit_pos_y=nullptr)
void offMame()
Definition ActorBgCollisionPlayerCheck.h:72
bool checkKani(s32 *type, f32 *hit_pos_y, const sead::Vector3f &pos, f32 check_distance)
BgCollision * mVineBgCollision
Definition ActorBgCollisionPlayerCheck.h:145
bool isMameDokan() const
Definition ActorBgCollisionPlayerCheck.h:89
List::Node _14e0
Definition ActorBgCollisionPlayerCheck.h:140
sead::BitFlag16 mFlag
Definition ActorBgCollisionPlayerCheck.h:142
bool checkDokanDown(sead::Vector3f *pos, s32 *dst_next_goto_no)
VineResult checkVine(const Sensor &vine_sensor)
void onMame()
Definition ActorBgCollisionPlayerCheck.h:67
bool checkTenjou(const sead::Vector3f &pos, f32 check_distance, f32 *hit_pos_y=nullptr, bool no_invis_block=false)
VineType getVineType() const
Definition ActorBgCollisionPlayerCheck.h:107
bool mIsMameDokan
Definition ActorBgCollisionPlayerCheck.h:143
Actor * getOwnerAtHit(const BgCollision &bg_collision, u8 direction) const override
Flag
Definition ActorBgCollisionPlayerCheck.h:22
@ cFlag_IsVine
Definition ActorBgCollisionPlayerCheck.h:23
@ cFlag_IsWallSlide
Definition ActorBgCollisionPlayerCheck.h:24
@ cFlag_IsSakaReverse
Definition ActorBgCollisionPlayerCheck.h:25
@ cFlag_IsMame
Definition ActorBgCollisionPlayerCheck.h:26
bool isSakaReverse() const
Definition ActorBgCollisionPlayerCheck.h:62
virtual ~ActorBgCollisionPlayerCheck()
bool checkDokanUp(sead::Vector3f *pos, s32 *dst_next_goto_no)
PcCheckArea mPcCheckArea
Definition ActorBgCollisionPlayerCheck.h:146
PcCheckArea mPcCheckAreaPrev
Definition ActorBgCollisionPlayerCheck.h:147
s8 mCarryPlayerNo
Definition ActorBgCollisionPlayerCheck.h:141
bool isMame() const
Definition ActorBgCollisionPlayerCheck.h:77
void setPcCheckArea(const PcCheckArea &area)
Definition ActorBgCollisionPlayerCheck.h:117
bool checkDokanLR(sead::Vector3f *pos, s32 *dst_next_goto_no, DirType direction, const Sensor &wall)
Actor * getOwnerAtRevCheck(f32 bg_collision_pos_y) const override
void setCarryPlayerNo(s8 player_no)
Definition ActorBgCollisionPlayerCheck.h:57
s8 * vf4C(f32) const override
bool checkPole(const sead::Vector2f &offset)
u32 _1524[(0x15A0 - 0x1524)/sizeof(u32)]
Definition ActorBgCollisionPlayerCheck.h:148
VineType mVineType
Definition ActorBgCollisionPlayerCheck.h:144
void atFrameStart() override
Definition ActorBgCollisionPlayerCheck.h:30
f32 center_y
Definition ActorBgCollisionPlayerCheck.h:32
f32 half_size_x
Definition ActorBgCollisionPlayerCheck.h:35
f32 half_size_y1
Definition ActorBgCollisionPlayerCheck.h:33
f32 half_size_y2
Definition ActorBgCollisionPlayerCheck.h:34
f32 center_x
Definition ActorBgCollisionPlayerCheck.h:31
Definition ActorBgCollisionPlayerCheck.h:40
u16 flag
Definition ActorBgCollisionPlayerCheck.h:41