SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
Poihana.hpp
1#pragma once
2
3#include "Game/LiveActor/LiveActor.hpp"
4#include "Game/LiveActor/ModelObj.hpp"
5#include "Game/Enemy/AnimScaleController.hpp"
6#include "Game/Enemy/WalkerStateBindStarPointer.hpp"
7
8#define POIHANA_BEHAVIOR_NORMAL 0
9#define POIHANA_BEHAVIOR_SLEEP 1
10#define POIHANA_BEHAVIOR_NEW_HOME 2
11
12class ActorCameraInfo;
13
14class Poihana : public LiveActor {
15public:
16 Poihana(const char *pName);
17
18 virtual void init(const JMapInfoIter &rIter);
19 virtual void initAfterPlacement();
20 virtual void control();
21 virtual void calcAndSetBaseMtx();
22 virtual void attackSensor(HitSensor *pSender, HitSensor *pReceiver);
23 virtual bool receiveMsgPush(HitSensor *pSender, HitSensor *pReceiver);
24 virtual bool receiveMsgPlayerAttack(u32 msg, HitSensor *pSender, HitSensor *pReceiver);
25 virtual bool receiveMsgEnemyAttack(u32 msg, HitSensor *pSender, HitSensor *pReceiver);
26 virtual bool receiveOtherMsg(u32 msg, HitSensor *pSender, HitSensor *pReceiver);
27
28 void exeNonActive();
29 void endNonActive();
30 void exeWait();
31 void exeWalkAround();
32 void exeSleepStart();
33 void exeSleep();
34 void exeGetUp();
35 void exeSearch();
36 void exeChasePlayer();
37 void exeShootUpCharge();
38 void exeShootUp();
39 void endShootUp() NO_INLINE;
40 void exeGoBack();
41 void exeShock();
42 void exeSwoonLand();
43 void exeSwoon();
44 void exeRecover();
45 void exeShake();
46 void exeDrown();
47 void exeHide();
48 void exeAppear();
49 void exeDPDSwoon();
50 void endDPDSwoon() NO_INLINE;
51
52 bool tryToStartBind(HitSensor *pSender);
53 void updateBindActorMtx();
54 void endBind();
55 void startBound() NO_INLINE;
56 void calcBound();
57 void contactMario(HitSensor *pSender, HitSensor *pReceiver);
58 void controlVelocity();
59 void calcMyGravity();
60 bool tryNonActive();
61 bool tryDrown();
62 bool tryDPDSwoon();
63 bool tryShock();
64 bool tryHipDropShock();
65 bool isNerveTypeWalkOrWait() const;
66 bool isNeedForBackHome() const;
67 bool isNeedForGetUp() const;
68 bool isBackAttack(HitSensor *pMySensor) const NO_INLINE;
69
70 AnimScaleController* mAnimScaleCtrl; // 0x8C
71 WalkerStateBindStarPointer* mBindStarPointer; // 0x90
72 ActorCameraInfo* mCamInfo; // 0x94
73 LiveActor* mBindedActor; // 0x98
74 f32 mLaunchIntensity; // 0x9C
75 TVec3f mRespawnPos; // 0xA0
76 f32 _AC; // 0xAC
77 f32 _B0; // 0xB0
78 TVec3f mHomePos; // 0xB4
79 f32 _C0; // 0xC0
80 s32 mBoundTimer; // 0xC4
81 s32 mRandDir; // 0xC8
82 s32 mBehavior; // 0xCC
83 bool mCanDrown; // 0xD0
84 ModelObj* mWaterColumn; // 0xD4
85 TVec3f mFrontVec; // 0xD8
86 bool mIsActive; // 0xE4
87 u8 _E5; // 0xE5
88};
89
90namespace NrvPoihana {
91 NERVE_EXECEND(PoihanaNrvNonActive);
92 NERVE(PoihanaNrvWait);
93 NERVE(PoihanaNrvWalkAround);
94 NERVE(PoihanaNrvSleepStart);
95 NERVE(PoihanaNrvSleep);
96 NERVE(PoihanaNrvGetUp);
97 NERVE(PoihanaNrvSearch);
98 NERVE(PoihanaNrvChasePlayer);
99 NERVE(PoihanaNrvShootUpCharge);
100 NERVE_EXECEND(PoihanaNrvShootUp);
101 NERVE(PoihanaNrvGoBack);
102 NERVE(PoihanaNrvShock);
103 NERVE(PoihanaNrvSwoon);
104 NERVE(PoihanaNrvSwoonLand);
105 NERVE(PoihanaNrvRecover);
106 NERVE(PoihanaNrvShake);
107 NERVE(PoihanaNrvDrown);
108 NERVE(PoihanaNrvHide);
109 NERVE(PoihanaNrvAppear);
110 NERVE_EXECEND(PoihanaNrvDPDSwoon);
111};
The basis of a drawable actor that can contain states (see: Nerve)
Definition LiveActor.hpp:24
virtual void init(const JMapInfoIter &rIter)
Intializes the NameObj and can set various settings and construct necessary classes.
virtual void calcAndSetBaseMtx()
Calculates and sets the base matrix of the actor.
Definition Poihana.cpp:133