Files
ss/include/d/a/e/d_a_e_remly.h
T
elijah-thomas774 24624a4fd2 some more naming
2026-05-03 22:13:53 -04:00

232 lines
6.6 KiB
C++

#ifndef D_A_E_REMLY_H
#define D_A_E_REMLY_H
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/e/d_a_en_base.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_shadow.h"
#include "m/m3d/m_anmtexpat.h"
#include "m/m3d/m_mdl.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "s/s_State.hpp"
#include "toBeSorted/d_d3d.h"
#include "toBeSorted/d_emitter.h"
class dAcBomb_c;
class dAcNpcSkn2_c;
class dAcEremly_c : public dAcEnBase_c {
public:
class callback_c : public m3d::callback_c {
public:
virtual ~callback_c() {}
virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override;
/* 0x04 */ mAng3_c mHeadRotation;
/* 0x0C */ UNKWORD field_0x0C; // Guess
};
enum Animation_e {
ANM_WaitStand = 0,
ANM_WaitSit = 1,
ANM_WaitSitCry = 2,
ANM_CryWalk = 3,
ANM_RemlyWalk = 4,
ANM_Run = 5,
ANM_Swim = 6,
ANM_Water = 7,
ANM_SwimDamage = 8,
ANM_Wind = 9,
ANM_WindBack = 10,
ANM_Hold = 11,
ANM_HoldMozo = 12,
ANM_HoldBata = 13,
ANM_HoldJumpStart = 14,
ANM_HoldJumpEnd = 15,
ANM_Fly = 16,
ANM_FlyDamage = 17,
ANM_Damage = 18,
ANM_Sleep = 19,
ANM_WakeUp = 20,
ANM_Scared = 21,
ANM_Piyo1 = 22,
ANM_Piyo2 = 23,
ANM_Piyo3 = 24,
ANM_SleepNight = 25,
ANM_Demo = 26,
ANM_27 = 27, // UNUSED
ANM_Foo = 28,
ANM_WalkNight = 29,
ANM_RunFast = 30,
ANM_Jump = 31,
ANM_Sound = 32,
};
public:
dAcEremly_c() : mStateMgr(*this) {}
virtual ~dAcEremly_c() {}
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual int actorCreate() override;
virtual int actorPostCreate() override;
virtual int actorExecute() override;
STATE_FUNC_DECLARE(dAcEremly_c, Wait);
STATE_FUNC_DECLARE(dAcEremly_c, Walk);
STATE_FUNC_DECLARE(dAcEremly_c, Run);
STATE_FUNC_DECLARE(dAcEremly_c, Escape);
STATE_FUNC_DECLARE(dAcEremly_c, EscapeDash);
STATE_FUNC_DECLARE(dAcEremly_c, Wind);
STATE_FUNC_DECLARE(dAcEremly_c, Hold);
STATE_FUNC_DECLARE(dAcEremly_c, Jump);
STATE_FUNC_DECLARE(dAcEremly_c, Fly);
STATE_FUNC_DECLARE(dAcEremly_c, Damage);
STATE_FUNC_DECLARE(dAcEremly_c, Sleep);
STATE_FUNC_DECLARE(dAcEremly_c, Scared);
STATE_FUNC_DECLARE(dAcEremly_c, Stun);
STATE_FUNC_DECLARE(dAcEremly_c, Water);
STATE_FUNC_DECLARE(dAcEremly_c, Hear);
STATE_FUNC_DECLARE(dAcEremly_c, NightSleepDemo);
STATE_FUNC_DECLARE(dAcEremly_c, NightFoo);
STATE_FUNC_DECLARE(dAcEremly_c, NightReflectionFoo);
STATE_FUNC_DECLARE(dAcEremly_c, NightWait);
STATE_FUNC_DECLARE(dAcEremly_c, NightWalk);
STATE_FUNC_DECLARE(dAcEremly_c, NightRun);
STATE_FUNC_DECLARE(dAcEremly_c, NightRet);
STATE_FUNC_DECLARE(dAcEremly_c, NightJumpAttack);
STATE_FUNC_DECLARE(dAcEremly_c, BirthWait);
bool isAnimation(Animation_e state) {
return mAnimation == (u32)state;
}
STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcEremly_c);
STATE_MGR_DEFINE_UTIL_ISSTATE(dAcEremly_c);
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcEremly_c);
private:
void playWink();
bool calcHeadRotation(bool lookAtTarget, const mAng &); // the Side-to-side angle
void calcHeadPitch(bool); // The up-down angle
void resetHeadRotation(bool);
bool fn_177_7040(u32, f32);
bool isScary();
bool shouldBeScared();
bool isWithinTargetRadius(f32 radius);
bool isHorwellRemlitQuestComplete();
/** false -> compares to camera
* true -> compares to player */
bool fn_177_7650(bool comparePlayer) const;
void fn_177_77C0();
// Set Scary Face
void applyScaryMat();
void fn_177_79D0(bool);
bool isUnderWater();
void nightSleepDemoImpl();
void checkSlope(bool);
void spawnGroundEffect();
bool fn_177_86C0();
bool fn_177_8980(f32);
bool fn_177_8AC0();
bool fn_177_8C20(mAng);
bool fn_177_8F90();
bool isPlayerInNightRange(f32 range);
private:
/* 0x378 */ STATE_MGR_DECLARE(dAcEremly_c);
/* 0x3B4 */ dShadowCircle_c mShadow;
/* 0x3BC */ d3d::AnmMdlWrapper mMdl;
/* 0x438 */ m3d::anmTexPat_c mTexPat;
/* 0x458 */ dBgS_AcchCir mAcchCir;
/* 0x3B4 */ dBgS_ObjAcch mAcch;
/* 0x864 */ dCcD_Sph mSph;
/* 0x9B4 */ callback_c mMdlCallback;
/* 0x9C4 */ dEmitter_c mEmitters[2];
/* 0xA2C */ dAcRef_c<dAcNpcSkn2_c> mHorwellRef;
/* 0xA38 */ dAcRef_c<dAcBomb_c> mNearbyBombRef;
/* 0xA44 */ mVec3_c mTargetPosition;
/* 0xA50 */ mVec3_c field_0xA50;
/* 0xA5C */ dWaterEffect_c mWaterEffect;
/* 0xAA4 */ mVec3_c field_0xAA4;
/* 0xAB0 */ mVec3_c field_0xAB0;
/* 0xABC */ mVec3_c field_0xABC;
/* 0xAC8 */ mVec3_c field_0xAC8;
/* 0xAD4 */ mVec3_c field_0xAD4;
/* 0xAE0 */ mVec3_c field_0xAE0;
/* 0xAEC */ mVec3_c field_0xAEC;
/* 0xAF8 */ mVec3_c field_0xAF8;
/* 0xB04 */ f32 field_0xB04;
/* 0xB08 */ f32 mPatrolAreaSize;
/* 0xB0C */ f32 mWaterHeight;
/* 0xB10 */ f32 mScaleF;
/* 0xB14 */ s32 mSomeCounter;
/* 0xB18 */ u32 mSomeCounter2;
/* 0xB1C */ u8 _B1C[0xB1E - 0xB1C];
/* 0xB1E */ mAng3_c mSlope;
/* 0xB24 */ s16 mSlopeXTarget;
/* 0xB26 */ s16 mSlopeZTarget;
/* 0xB26 */ u32 mSlopeCheckCounter;
/* 0xB2C */ s32 mHarpCounter;
/* 0xB30 */ mAng mHeadTiltTarget;
/* 0xB32 */ mAng field_0xB32;
/* 0xB34 */ mAng field_0xB34;
/* 0xB38 */ f32 mYPosition;
/* 0xB3C */ f32 mYOffset;
/* 0xB40 */ f32 mScaleFTarget;
/* 0xB44 */ u16 field_0xB44;
/* 0xB46 */ u16 field_0xB46;
/* 0xB48 */ u16 mAnimTimer;
/* 0xB4A */ u16 mWinkTimer;
/* 0xB4C */ u16 mHeadTiltTimer;
/* 0xB4E */ u16 mAnimSafeTimer;
/* 0xB50 */ u16 field_0xB50;
/* 0xB52 */ u16 field_0xB52;
/* 0xB54 */ u16 mScaleFTimer;
/* 0xB56 */ u16 field_0xB56;
/* 0xB58 */ u16 mNoGroundCounter;
/* 0xB5A */ u16 mSwimPosYCounter;
/* 0xB5C */ u16 mFlySpeedCounter;
/* 0xB5E */ u16 mFlyAngleCounter;
/* 0xB60 */ u8 mAnimation;
/* 0xB61 */ u8 mIsHorwellsPet;
/* 0xB62 */ u8 mSceneflag;
/* 0xB63 */ u8 mNightSleepDemoStep;
/* 0xB64 */ u8 field_0xB64;
/* 0xB65 */ u8 mAnmStep;
/* 0xB66 */ bool field_0xB66;
/* 0xB67 */ u8 field_0xB67;
/* 0xB68 */ u8 field_0xB68;
/* 0xB69 */ u8 field_0xB69;
/* 0xB6A */ u8 field_0xB6A;
/* 0xB6B */ bool field_0xB6B;
/* 0xB6C */ u8 field_0xB6C;
/* 0xB6D */ u8 field_0xB6D;
/* 0xB6E */ u8 field_0xB6E;
/* 0xB6F */ u8 field_0xB6F;
};
#endif