mirror of
https://github.com/zeldaret/ss
synced 2026-10-08 05:33:53 -04:00
Merge remote-tracking branch 'upstream/HEAD' into d_a_e_skytail
This commit is contained in:
@@ -12,7 +12,6 @@ public:
|
||||
dAcBombf_c() : mStateMgr(*this) {}
|
||||
virtual ~dAcBombf_c() {}
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
virtual int doDelete() override;
|
||||
@@ -31,7 +30,7 @@ private:
|
||||
/* 0x394 */ UNKWORD field_0x394;
|
||||
/* 0x398 */ cBgS_PolyInfo field_0x398;
|
||||
/* 0x3C4 */ TimeAreaStruct mTimeAreaStruct;
|
||||
/* 0x3D0 */ bool field_0x3D0;
|
||||
/* 0x3D0 */ bool mIsUnderground;
|
||||
/* 0x3D1 */ u8 mDespawnSceneFlag;
|
||||
/* 0x3D2 */ u8 field_0x3D2;
|
||||
/* 0x3D3 */ u8 field_0x3D3;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/c/c_bg_s_poly_info.h"
|
||||
#include "d/d_player_mdl.h"
|
||||
#include "m/m_angle.h"
|
||||
@@ -32,13 +33,44 @@ public:
|
||||
/* vt 0x314 */ virtual void vt_0x314();
|
||||
/* vt 0x318 */ virtual void vt_0x318();
|
||||
|
||||
struct ObjectArray {
|
||||
static const size_t sNumObjects = 16;
|
||||
|
||||
bool insert(dAcObjBase_c *);
|
||||
void execute();
|
||||
dAcObjBase_c *get(s32 index);
|
||||
void removeBombs();
|
||||
|
||||
dAcObjRef_c mObjs[sNumObjects];
|
||||
u32 mCounter[sNumObjects];
|
||||
};
|
||||
|
||||
protected:
|
||||
/* 0x137C */ u8 _0x137C[0x16F0 - 0x137C];
|
||||
/* 0x137C */ ObjectArray mOwnedObjects;
|
||||
/* 0x147C */ ObjectArray mOwnedProjectiles;
|
||||
/* 0x157C */ u8 _0x157C[0x16F0 - 0x157C];
|
||||
/* 0x16F0 */ nw4r::g3d::ResFile mHeldResFile;
|
||||
/* 0x16F4 */ u8 _0x16F4[0x4564 - 0x16F4];
|
||||
/* 0x4564 */ f32 field_0x4564;
|
||||
|
||||
public:
|
||||
// Bomb Function [0x80202CA0 - 0x80202DF0?]
|
||||
static f32 getBombDistanceUnknown0();
|
||||
static s32 getBombExplodeTimer();
|
||||
static f32 getBombAcceleration();
|
||||
static f32 getBombMaxSpeed();
|
||||
static f32 getBombUnknown0_0();
|
||||
static f32 getBombUnknown0_1();
|
||||
static f32 getBombUnknown1_0();
|
||||
static f32 getBombUnknown1_1();
|
||||
static f32 getBombAcceleration_1();
|
||||
static f32 getBombMaxSpeed_1();
|
||||
static f32 getBombBounceSpeed();
|
||||
static f32 getBombParticleScale();
|
||||
static f32 getBombExplodeRadius();
|
||||
static f32 getBombStopSpeedY();
|
||||
static f32 getBombMaxSpeedY();
|
||||
|
||||
// Beetle Functions [0x8021AA70 - 0x8021BE20]
|
||||
s16 getBeetleFlightTime();
|
||||
mAng getBeetleAngle0();
|
||||
@@ -58,6 +90,7 @@ public:
|
||||
void setBeetleFlashClr(const mColor &);
|
||||
void setBeetleBackAnim();
|
||||
s32 getBeetleWarningTimeLeft();
|
||||
void setBeetleReleasedObject(dAcObjBase_c *pObj);
|
||||
|
||||
// Item select/equip/use functions [0x801E3160 - 0x801E7AD0] ?
|
||||
static s32 calcItemWheelSelection(bool reset, s32 numOptions);
|
||||
@@ -75,6 +108,20 @@ public:
|
||||
f32 fn_802097C0(); // 1000.0f
|
||||
f32 fn_802097D0(); // 4000.0f
|
||||
|
||||
// Minigame Functions [0x8023BB60 - 0x8023BDD0]
|
||||
static bool isInMinigameInsectCapture();
|
||||
static bool isInMinigamePumpkinCarry();
|
||||
static bool isInMinigameBambooCutting();
|
||||
static bool isInMinigameThrillDigger();
|
||||
static bool isInMinigameFunFunIsland();
|
||||
static bool isInMinigameHouseCleaning();
|
||||
static bool isInMinigameTrialTimeAttack();
|
||||
static bool isInMinigameBossRush();
|
||||
static bool isInMinigamePumpkinArchery();
|
||||
static bool isInMinigameHarpPlaying();
|
||||
static bool isInMinigameRollerCoaster();
|
||||
static bool isInMinigameSprialChargeTutorial();
|
||||
|
||||
public:
|
||||
f32 getField_0x4564() const {
|
||||
return field_0x4564;
|
||||
@@ -117,6 +164,14 @@ public:
|
||||
return LINK2;
|
||||
}
|
||||
|
||||
static bool insertOwnedObject(dAcObjBase_c *pObj) {
|
||||
return LINK2->mOwnedObjects.insert(pObj);
|
||||
}
|
||||
|
||||
ObjectArray &getOwnedObjects() {
|
||||
return mOwnedObjects;
|
||||
}
|
||||
|
||||
void onShieldUpdate();
|
||||
|
||||
static dAcPy_c *LINK;
|
||||
@@ -130,9 +185,6 @@ public:
|
||||
}
|
||||
static s32 getCurrentBugNetType();
|
||||
|
||||
static bool isInBambooCuttingMinigame() {
|
||||
return MinigameManager::isInMinigameState(MinigameManager::BAMBOO_CUTTING);
|
||||
}
|
||||
static bool isItemRestrictedByBokoBase(ITEM_ID item);
|
||||
|
||||
static u32 getCurrentHealthCapacity();
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/a/obj/d_a_obj_bomb.h"
|
||||
#include "d/d_cc.h"
|
||||
#include "f/f_list_mg.h"
|
||||
#include "m/m3d/m_mdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
@@ -86,6 +87,7 @@ public:
|
||||
bool fn_80030570(m3d::mdl_c &, u8, f32); // lighting related
|
||||
void fn_800306D0();
|
||||
void fn_80030700();
|
||||
static void fn_800307E0(mVec3_c *pPos, s32);
|
||||
dAcObjBase_c *targetPlayerOrScrapper(f32 biasToScrapper);
|
||||
static void fn_80030980(m3d::mdl_c &, s32, bool markDirty);
|
||||
bool isWithinCameraView(f32, f32);
|
||||
@@ -95,6 +97,10 @@ public:
|
||||
|
||||
bool ChkCrossPlayer(f32 height);
|
||||
|
||||
static dAcEnBase_c *GetNextEnemy(dAcEnBase_c *pParent) {
|
||||
return static_cast<dAcEnBase_c *>(getNextObject(&sEnemyList, pParent));
|
||||
}
|
||||
|
||||
protected:
|
||||
// TODO: Make accessors for this list to auto-convert to dAcEnBase?
|
||||
static fLiMgBa_c sEnemyList;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#ifndef D_A_OBJ_BASE_H
|
||||
#define D_A_OBJ_BASE_H
|
||||
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/d_a_salbage_if.h"
|
||||
@@ -14,11 +13,9 @@
|
||||
#include "m/m3d/m_shadow.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_color.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "m/types_m.h"
|
||||
#include "nw4r/math/math_arithmetic.h"
|
||||
|
||||
// Ghidra: ActorObjectBase
|
||||
// size: 0x330
|
||||
|
||||
+111
-28
@@ -9,25 +9,64 @@
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "s/s_StateID.hpp"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
|
||||
// This may need its own file and could be independent of a bomb
|
||||
class UnkBombColInfo : public cBgS_PolyInfo {
|
||||
public:
|
||||
UnkBombColInfo() : field_0x10(0), field_0x14(0), field_0x18(0) {}
|
||||
u32 field_0x10;
|
||||
u32 field_0x14;
|
||||
u32 field_0x18;
|
||||
};
|
||||
|
||||
class dAcBomb_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcBomb_c() : mStateMgr(*this), mSelfRef(this), mEffect1(this), mEffect2(this) {}
|
||||
virtual ~dAcBomb_c();
|
||||
dAcBomb_c() : mStateMgr(*this), mUnkRef(this), mEffect1(this), mEffect2(this) {}
|
||||
virtual ~dAcBomb_c() {}
|
||||
|
||||
enum Type_e {
|
||||
BOMB_0 = 0, // Explode
|
||||
BOMBF = 1,
|
||||
BOMBF_CRAWLSPACE = 2,
|
||||
BOMB_PLAYER_CARRY = 3, // Carry
|
||||
BOMB_4 = 4, // Explode
|
||||
BOMB_5 = 5, // Flower
|
||||
BOMB_EXPLODE_NO_DAMAGE = 6,
|
||||
BOMB_BOCO_CARRY = 7,
|
||||
BOMB_MAX,
|
||||
};
|
||||
|
||||
enum Flag_e {
|
||||
FLAG_PLAYER_MAKE = (1 << 0),
|
||||
FLAG_CHAIN_BOMB = (1 << 1), // When another bomb blows another bomb up
|
||||
FLAG_BOMB_HIT = (1 << 2),
|
||||
FLAG_0x8 = (1 << 3),
|
||||
FLAG_0x10 = (1 << 4),
|
||||
FLAG_UNDERWATER = (1 << 5),
|
||||
FLAG_0x40 = (1 << 6),
|
||||
FLAG_0x80 = (1 << 7),
|
||||
FLAG_0x100 = (1 << 8),
|
||||
FLAG_NEAR_TIMEDOOR = (1 << 9),
|
||||
FLAG_0x400 = (1 << 10),
|
||||
FLAG_FALL_IN_WATER = (1 << 11),
|
||||
FLAG_DELETE_BOMB = (1 << 12),
|
||||
FLAG_0x2000 = (1 << 13),
|
||||
FLAG_0x4000 = (1 << 14),
|
||||
FLAG_0x8000 = (1 << 15),
|
||||
FLAG_0x10000 = (1 << 16),
|
||||
FLAG_0x20000 = (1 << 17),
|
||||
FLAG_ROLL = (1 << 18),
|
||||
FLAG_0x80000 = (1 << 19),
|
||||
FLAG_0x100000 = (1 << 20),
|
||||
FLAG_0x200000 = (1 << 21),
|
||||
FLAG_0x400000 = (1 << 22),
|
||||
FLAG_FUSE_PAUSED = (1 << 23), // Like in cutscenes
|
||||
FLAG_FLOWER = (1 << 24),
|
||||
FLAG_BEETLE_CARRY = (1 << 25),
|
||||
FLAG_0x4000000 = (1 << 26),
|
||||
FLAG_BOKO_CARRY = (1 << 27),
|
||||
FLAG_0x10000000 = (1 << 28),
|
||||
FLAG_0x20000000 = (1 << 29),
|
||||
FLAG_0x40000000 = (1 << 30),
|
||||
FLAG_0x80000000 = (1 << 31),
|
||||
};
|
||||
|
||||
/* vt 0x08 */ virtual int create() override;
|
||||
/* vt 0x14 */ virtual int doDelete() override;
|
||||
@@ -44,36 +83,80 @@ public:
|
||||
STATE_FUNC_DECLARE(dAcBomb_c, Carry);
|
||||
STATE_FUNC_DECLARE(dAcBomb_c, WindCarry);
|
||||
|
||||
void setTransformFromFlower(const mMtx_c &);
|
||||
STATE_MGR_DEFINE_UTIL_ISSTATE(dAcBomb_c);
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcBomb_c);
|
||||
STATE_MGR_DEFINE_UTIL_GETSTATEID(dAcBomb_c);
|
||||
STATE_MGR_DEFINE_UTIL_GETOLDSTATEID(dAcBomb_c);
|
||||
STATE_MGR_DEFINE_UTIL_GETNEWSTATEID(dAcBomb_c);
|
||||
STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcBomb_c);
|
||||
|
||||
void Off_0xA3C(u32 mask) {
|
||||
field_0xA3C &= ~mask;
|
||||
void coHitCallback(cCcD_Obj *i_objInfB);
|
||||
void tgHitCallback(dAcObjBase_c *i_actorB, cCcD_Obj *i_objInfA, cCcD_Obj *i_objInfB);
|
||||
|
||||
void setTarget(const mVec3_c &t);
|
||||
|
||||
void setRoomId();
|
||||
void setSmokePos();
|
||||
bool checkWaterIn();
|
||||
void setTransformFromFlower(const mMtx_c &);
|
||||
void setPickupTarget();
|
||||
bool checkExplode();
|
||||
void lookAt();
|
||||
void bounceWall(mAng angle);
|
||||
void getVelocity(mVec3_c &out);
|
||||
void setBombColor();
|
||||
void rollTo(const mVec3_c &dir);
|
||||
void rollToInternal(const mVec3_c &dir);
|
||||
|
||||
s16 getFuseTimer() const {
|
||||
return mFuseTime;
|
||||
}
|
||||
void On_0xA3C(u32 mask) {
|
||||
field_0xA3C |= mask;
|
||||
bool checkFlag(u32 mask) const {
|
||||
return (mFlag & mask);
|
||||
}
|
||||
void unsetFlag(u32 mask) {
|
||||
mFlag &= ~mask;
|
||||
}
|
||||
void setFlag(u32 mask) {
|
||||
mFlag |= mask;
|
||||
}
|
||||
|
||||
u32 getBombType() const {
|
||||
return mParams;
|
||||
}
|
||||
|
||||
private:
|
||||
bool createModel();
|
||||
|
||||
public:
|
||||
/* 0x330 */ nw4r::g3d::ResFile mBrres;
|
||||
/* 0x330 */ nw4r::g3d::ResFile mRes;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ dShadowCircle_c mShdw;
|
||||
/* 0x358 */ dBgS_BombAcch mAcch;
|
||||
/* 0x708 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x764 */ dCcD_Sph mCcDSph;
|
||||
/* 0x764 */ dCcD_Sph mSph;
|
||||
/* 0x8B4 */ mMtx_c mMtx;
|
||||
/* 0x8E4 */ dBgS_BombLinChk mLinChk;
|
||||
/* 0x97C */ UnkBombColInfo mUnkInfo;
|
||||
/* 0x9B4 */ u8 _9B4[0x9B8 - 0x9B4];
|
||||
/* 0x9B8 */ dAcBomb_c *mSelfRef;
|
||||
/* 0x9BC */ u8 _9BC[0x9D4 - 0x9BC];
|
||||
/* 0x97C */ cBgS_PolyInfo mUnkInfo;
|
||||
/* 0x9A8 */ dAcObjRef_unk mUnkRef;
|
||||
/* 0x9D4 */ dEmitter_c mEffect1;
|
||||
/* 0xA08 */ dEmitter_c mEffect2;
|
||||
/* 0xA3C */ u32 field_0xA3C;
|
||||
/* 0xA40 */ u32 field_0xA40;
|
||||
/* 0xA44 */ s16 field_0xA44;
|
||||
/* 0xA46 */ u8 _3[0xA50 - 0xA46];
|
||||
/* 0xA3C */ u32 mFlag;
|
||||
/* 0xA40 */ u8 mRollFrameTimer; // Set to `60` upon roll - Uses additional force to roll bomb
|
||||
/* 0xA41 */ u8 mMainMatID;
|
||||
/* 0xA42 */ u8 field_0xA42;
|
||||
/* 0xA44 */ s16 mFuseTime;
|
||||
/* 0xA46 */ u16 mCarryTimer;
|
||||
/* 0xA48 */ mAng mGndAngle;
|
||||
/* 0xA4A */ mAng mRollRotationY;
|
||||
/* 0xA4C */ f32 mRollSpeed;
|
||||
/* 0xA50 */ f32 field_0xA50;
|
||||
/* 0xA54 */ u8 _4[0xA9C - 0xA54];
|
||||
/* 0xA54 */ mVec3_c mSmokePosNext;
|
||||
/* 0xA60 */ mVec3_c mSmokePosPrev;
|
||||
/* 0xA6C */ mVec3_c mSmokePos;
|
||||
/* 0xA78 */ mVec3_c mExternalTranslation;
|
||||
/* 0xA84 */ mVec3_c mHitForce;
|
||||
/* 0xA90 */ mVec3_c mStreamForce;
|
||||
/* 0xA9C */ STATE_MGR_DECLARE(dAcBomb_c);
|
||||
};
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ enum dBgPc_Attribute {
|
||||
POLY_ATTR_DAMAGE = 13,
|
||||
POLY_ATTR_SLOPE_RUN = 15,
|
||||
POLY_ATTR_SAND_DEEP_SLOW = 16,
|
||||
POLY_ATTR_CURSED_WATER = 17,
|
||||
};
|
||||
class dBgPc {
|
||||
public:
|
||||
|
||||
@@ -524,6 +524,12 @@ public:
|
||||
const dBgS_GndChk &GetGnd() const {
|
||||
return mGnd;
|
||||
}
|
||||
dBgS_WtrChk &GetWtr() {
|
||||
return mWtr;
|
||||
}
|
||||
const dBgS_WtrChk &GetWtr() const {
|
||||
return mWtr;
|
||||
}
|
||||
|
||||
dBgS_RoofChk &GetRoof() {
|
||||
return mRoof;
|
||||
@@ -532,8 +538,17 @@ public:
|
||||
return mRoof;
|
||||
}
|
||||
|
||||
void SetField_0xD4(f32 v) {
|
||||
field_0x0D4 = v;
|
||||
void SetGndChkOffset(f32 v) {
|
||||
mGndChkOffset = v;
|
||||
}
|
||||
void SetRoofCrrHeight(f32 v) {
|
||||
mRoofCrrHeight = v;
|
||||
}
|
||||
void SetWaterCheckOffset(f32 v) {
|
||||
mWtrCheckOffset = v;
|
||||
}
|
||||
void SetWtrChkMode(u8 v) {
|
||||
mWtrMode = v;
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -555,12 +570,12 @@ public:
|
||||
/* 0x0A8 */ f32 field_0x0A8;
|
||||
/* 0x0AC */ f32 field_0x0AC;
|
||||
/* 0x0B0 */ f32 mGroundHeight;
|
||||
/* 0x0B4 */ f32 field_0x0B4;
|
||||
/* 0x0B4 */ f32 mGndChkOffset;
|
||||
/* 0x0B8 */ cM3dGPla mPlane_0x0B8;
|
||||
/* 0x0C8 */ f32 field_0x0C8;
|
||||
/* 0x0CC */ f32 field_0x0CC;
|
||||
/* 0x0D0 */ f32 mRoofHeight;
|
||||
/* 0x0D4 */ f32 field_0x0D4;
|
||||
/* 0x0D4 */ f32 mRoofCrrHeight;
|
||||
/* 0x0D8 */ f32 field_0x0D8;
|
||||
/* 0x0DC */ cBgS_PolyInfo *mpOutPolyInfo;
|
||||
/* 0x0E0 */ f32 mRoofH_0x0E0;
|
||||
@@ -572,9 +587,9 @@ public:
|
||||
/* 0x1D0 */ f32 field_0x1D0;
|
||||
/* 0x1D4 */ dBgS_GndChk mGnd;
|
||||
/* 0x264 */ dBgS_RoofChk mRoof;
|
||||
/* 0x2F4 */ f32 field_0x2F4;
|
||||
/* 0x2F4 */ f32 mWtrCheckOffset;
|
||||
/* 0x2F8 */ dBgS_WtrChk mWtr;
|
||||
/* 0x390 */ u8 field_0x390;
|
||||
/* 0x390 */ u8 mWtrMode;
|
||||
/* 0x394 */ s32 field_0x394;
|
||||
/* 0x398 */ mVec3_c field_0x398;
|
||||
/* 0x3A4 */ mVec3_c field_0x3A4;
|
||||
|
||||
@@ -526,6 +526,9 @@ public:
|
||||
void SetSrcModifer(u32 modifier) {
|
||||
mSrc.mInfo.mModifier = modifier;
|
||||
}
|
||||
u32 GetSrcModifer() const {
|
||||
return mSrc.mInfo.mModifier;
|
||||
}
|
||||
void OnSrcModifer(u32 m) {
|
||||
mSrc.mInfo.mModifier |= m;
|
||||
}
|
||||
@@ -949,6 +952,10 @@ public:
|
||||
mAt.SetCallback(cb);
|
||||
}
|
||||
|
||||
void SetTgCallback(cCcD_HitCallback cb) {
|
||||
mTg.SetCallback(cb);
|
||||
}
|
||||
|
||||
void SetCoCallback(cCcD_HitCallback cb) {
|
||||
mCo.SetCallback(cb);
|
||||
}
|
||||
@@ -1006,6 +1013,13 @@ public:
|
||||
void OnAt_0x4000() {
|
||||
mAt.OnSPrm(0x4000);
|
||||
}
|
||||
// Related to Beetle (no hook)
|
||||
u32 ChkAt_0x4000() {
|
||||
return mAt.MskSPrm(0x4000);
|
||||
}
|
||||
u32 GetAtSrcModifier() const {
|
||||
return mAt.GetSrcModifer();
|
||||
}
|
||||
|
||||
|
||||
void SetAtInfo_0x0(u8 amount) {
|
||||
@@ -1115,6 +1129,9 @@ public:
|
||||
void ClrCo_0x400() {
|
||||
mCo.OffSPrm(0x400);
|
||||
}
|
||||
u32 ChkCo_0x8000() {
|
||||
return mCo.MskSPrm(0x8000);
|
||||
}
|
||||
void OnCo_0x8000() {
|
||||
mCo.OnSPrm(0x8000);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "d/col/c/c_m3d.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/math/math_types.h"
|
||||
#include "rvl/MTX/vec.h"
|
||||
|
||||
// Plane with a normal
|
||||
@@ -29,8 +30,12 @@ public:
|
||||
mD = -VECDotProduct(mNormal, point);
|
||||
}
|
||||
|
||||
void SetupNP(const mVec3_c &normal, const mVec3_c &point) {
|
||||
mNormal = normal;
|
||||
mD = -nw4r::math::VEC3Dot(mNormal, point);
|
||||
}
|
||||
|
||||
// Unused
|
||||
// void SetupNP(const mVec3_c &, const mVec3_c &);
|
||||
// bool getCrossY(const mVec3_c &, f32 *) const;
|
||||
// void Set(const cM3dGPla *);
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@ public:
|
||||
dCcMassS_Mng &GetMassMng() {
|
||||
return mMassMng;
|
||||
}
|
||||
void SetMass(cCcD_Obj *p_obj, u8 priority) {
|
||||
mMassMng.SetObj(p_obj, priority);
|
||||
}
|
||||
|
||||
void Ct();
|
||||
void Dt();
|
||||
|
||||
+20
-7
@@ -19,15 +19,15 @@ public:
|
||||
public:
|
||||
enum ConnectionType_e {
|
||||
CONNECTION_0 = 0,
|
||||
CONNECTION_1 = 1,
|
||||
CONNECTION_1 = 1, // Standard
|
||||
CONNECTION_2 = 2,
|
||||
CONNECTION_3 = 3,
|
||||
CONNECTION_4 = 4,
|
||||
CONNECTION_5 = 5,
|
||||
CONNECTION_6 = 6,
|
||||
CONNECTION_7 = 7,
|
||||
CONNECTION_8 = 8,
|
||||
CONNECTION_9 = 9,
|
||||
CONNECTION_4 = 4, // clawshot
|
||||
CONNECTION_5 = 5, // Beetle
|
||||
CONNECTION_6 = 6, // From Sword Swing?
|
||||
CONNECTION_7 = 7, // Whip
|
||||
CONNECTION_8 = 8, // Arrow/Heartf
|
||||
CONNECTION_9 = 9, // Chandelier/lotus flower
|
||||
};
|
||||
enum State_e {
|
||||
STATE_0 = 0,
|
||||
@@ -87,6 +87,19 @@ public:
|
||||
return field_0xA0->getArrowOffsetPosAndAngle(param_1, param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
dAcBase_c *getControllingActor() {
|
||||
return static_cast<dAcBase_c *>(mControllingActor.p_owner);
|
||||
}
|
||||
|
||||
void setField_0x8C_0x90(f32 f0, f32 f1) {
|
||||
field_0x8C = f0;
|
||||
field_0x90 = f1;
|
||||
}
|
||||
void setField_0x94_0x98(f32 f0, f32 f1) {
|
||||
field_0x94 = f0;
|
||||
field_0x98 = f1;
|
||||
}
|
||||
|
||||
public:
|
||||
void set(u32 flags, f32, f32, f32, void *unk);
|
||||
bool tryAttach(dAcObjBase_c *, dAcObjBase_c *, dAcRefBase_c *, ConnectionType_e, bool);
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
#define D_A_PLAYER_ACT_H
|
||||
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_bomb.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/d_player_base.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
class dAcEnBase_c;
|
||||
class dAcOFairy_c;
|
||||
class dAcBomb_c;
|
||||
|
||||
// Does this one have a vtable?
|
||||
// Name unknown
|
||||
@@ -247,7 +248,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
/* vt 0x1B8 */ virtual void canHandleGameOver() {}
|
||||
/* vt 0x1BC */ virtual UNKWORD vt_0x1BC() {
|
||||
/* vt 0x1BC */ virtual dAcObjBase_c *getBeetleHeldActor() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -414,7 +415,7 @@ public:
|
||||
/* vt 0x2A4 */ virtual bool isRunningUpWall() {
|
||||
return false;
|
||||
}
|
||||
/* vt 0x2A8 */ virtual void lookTowardItem() {}
|
||||
/* vt 0x2A8 */ virtual void lookTowardItem(const mVec3_c &, u32, mAng, f32, f32, f32) {}
|
||||
/* vt 0x2AC */ virtual void vt_0x2AC() {}
|
||||
/* vt 0x2B0 */ virtual void vt_0x2B0() {}
|
||||
/* vt 0x2B4 */ virtual void triggerMoveEventMaybe(u32, u32, u32, const mVec3_c *, const mAng &, u32, u32) {}
|
||||
@@ -550,6 +551,10 @@ public:
|
||||
FLG0_HANGING_ITEM | FLG0_HANGING_LEDGE | FLG0_UNK_0x10 | FLG0_IN_AIR,
|
||||
};
|
||||
|
||||
enum dAcPy_FLG1 {
|
||||
ActFLG1_INCRAWLSPACE = 0x400000
|
||||
};
|
||||
|
||||
inline bool checkFlags0x340(u32 mask) const {
|
||||
return (someFlags_0x340 & mask) != 0;
|
||||
}
|
||||
|
||||
+6
-1
@@ -163,8 +163,13 @@ public:
|
||||
s8 getCurrRoomId() const {
|
||||
return curr_room_id;
|
||||
}
|
||||
bool isRoomID(s32 id) const {
|
||||
return curr_room_id == id;
|
||||
}
|
||||
|
||||
dFader_c& getFader() { return mFader; }
|
||||
dFader_c &getFader() {
|
||||
return mFader;
|
||||
}
|
||||
|
||||
bool fn_801B3EE0();
|
||||
void fn_801B3F20();
|
||||
|
||||
+8
-3
@@ -6,7 +6,7 @@
|
||||
|
||||
/**
|
||||
* @brief Gets a point on a XZ circle.
|
||||
*
|
||||
*
|
||||
* @param center the circle center. Will also hold the result.
|
||||
* @param angle the Y angle.
|
||||
* @param radius the circle radius.
|
||||
@@ -15,10 +15,15 @@ inline static void getXZCirclePoint(mVec3_c ¢er, const mAng &angle, f32 radi
|
||||
center.x += radius * angle.sin();
|
||||
center.z += radius * angle.cos();
|
||||
}
|
||||
inline static void setXYZCirclePoint(mVec3_c ¢er, const mAng &angle, f32 radius, f32 y) {
|
||||
center.x = radius * angle.sin();
|
||||
center.y = y;
|
||||
center.z = radius * angle.cos();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts a 2D vector to a 3D vector holding the original's vector coordinates in its XY components.
|
||||
*
|
||||
*
|
||||
* @param v The 2D vector
|
||||
* @return mVec3_c The 3D vector
|
||||
*/
|
||||
@@ -28,7 +33,7 @@ inline mVec3_c vec2ToVec3XY(const mVec2_c &v) {
|
||||
|
||||
/**
|
||||
* @brief Computes left x right
|
||||
*
|
||||
*
|
||||
* @param result the result
|
||||
* @param left left operant
|
||||
* @param right right operand
|
||||
|
||||
@@ -169,9 +169,6 @@ public:
|
||||
|
||||
virtual ~dLytMeterItemSelect_c() {}
|
||||
|
||||
static bool isInSpiralChargeTutorialMinigame();
|
||||
static bool isInRollercoasterMinigame();
|
||||
|
||||
// This enum might be used externally too?
|
||||
enum InternalItem_e {
|
||||
I_BOMB_BAG,
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef D_T_ALL_DIE_H
|
||||
#define D_T_ALL_DIE_H
|
||||
|
||||
#include "d/t/d_tg.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "toBeSorted/time_area_mgr.h"
|
||||
|
||||
class dTgAllDie_c : public dTg_c {
|
||||
public:
|
||||
dTgAllDie_c() {}
|
||||
virtual ~dTgAllDie_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
static dTgAllDie_c *getNearestToPlayer(s32 roomId);
|
||||
|
||||
private:
|
||||
/* 0x0FC */ mMtx_c mArea;
|
||||
/* 0x12C */ TimeAreaStruct mTimeArea;
|
||||
/* 0x138 */ s32 mNumEnemiesInArea;
|
||||
/* 0x13C */ u16 mTimer0x13C;
|
||||
/* 0x13E */ u8 mType;
|
||||
/* 0x13F */ u8 mSceneflag;
|
||||
/* 0x140 */ u8 mTimer0x140;
|
||||
/* 0x144 */ u32 field_0x144;
|
||||
/* 0x145 */ u8 field_0x148;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,49 @@
|
||||
#ifndef D_T_VIEW_CLIP_H
|
||||
#define D_T_VIEW_CLIP_H
|
||||
|
||||
#include "d/t/d_tg.h"
|
||||
#include "m/m_mtx.h"
|
||||
|
||||
class dTgViewClip_c : public dTg_c {
|
||||
public:
|
||||
static const s32 sNumEntries = 0x40;
|
||||
|
||||
enum Flag_e {
|
||||
FLAG_NORMAL = 0,
|
||||
FLAG_FORCE_ON = (1 << 0),
|
||||
FLAG_FORCE_OFF = (1 << 1),
|
||||
};
|
||||
|
||||
enum Type_e {
|
||||
TYPE_FORCE_ON,
|
||||
TYPE_FORCE_OFF,
|
||||
};
|
||||
|
||||
dTgViewClip_c() {}
|
||||
virtual ~dTgViewClip_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
void setViewClip(u8 setBit);
|
||||
static void resetViewClip();
|
||||
static f32 getCull(s32 idx, f32 cullDistance);
|
||||
static bool checkForceOn(s32 idx);
|
||||
|
||||
static u8 getViewClipBit(s32 idx, u8 setBit);
|
||||
static void setViewClipBit(s32 idx, u8 setBit);
|
||||
|
||||
static void setViewClip(s32 idx, u8 value);
|
||||
|
||||
private:
|
||||
/* 0x0DC */ mMtx_c mArea;
|
||||
/* 0x12C */ u8 mIndex;
|
||||
/* 0x12D */ u8 mType;
|
||||
/* 0x12E */ u8 mAreaIndex;
|
||||
|
||||
static u8 sViewClips[sNumEntries];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -48,11 +48,21 @@
|
||||
return *mStateMgr.getStateID() == value; \
|
||||
}
|
||||
|
||||
#define STATE_MGR_DEFINE_UTIL_GETSTATEID(class_name) \
|
||||
const sFStateID_c<class_name> &getStateID() const { \
|
||||
return (sFStateID_c<class_name> &)*mStateMgr.getStateID(); \
|
||||
}
|
||||
|
||||
#define STATE_MGR_DEFINE_UTIL_GETOLDSTATEID(class_name) \
|
||||
const sFStateID_c<class_name> &getOldStateID() const { \
|
||||
return (sFStateID_c<class_name> &)*mStateMgr.getOldStateID(); \
|
||||
}
|
||||
|
||||
#define STATE_MGR_DEFINE_UTIL_GETNEWSTATEID(class_name) \
|
||||
const sFStateID_c<class_name> &getNewStateID() const { \
|
||||
return (sFStateID_c<class_name> &)*mStateMgr.getNewStateID(); \
|
||||
}
|
||||
|
||||
// Use this when you need need sFStateID_c vtables to appear in a different order
|
||||
#define STATE_MGR_DEFINE_UTIL_INSTANCIATE_STATE(class_name) \
|
||||
bool dummy_need_state_instanciation(const sFStateID_c<class_name> &value) const { \
|
||||
|
||||
@@ -31,12 +31,42 @@ public:
|
||||
static MinigameManager *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
static bool checkInBossRush() {
|
||||
return isInMinigameState(BOSS_RUSH);
|
||||
static bool checkInInsectCapture() {
|
||||
return isInMinigameState(INSECT_CAPTURE);
|
||||
}
|
||||
static bool checkInPumpkinCarry() {
|
||||
return isInMinigameState(PUMPKIN_CARRY);
|
||||
}
|
||||
static bool checkInBambooCutting() {
|
||||
return isInMinigameState(BAMBOO_CUTTING);
|
||||
}
|
||||
static bool checkInThrillDigger() {
|
||||
return isInMinigameState(THRILL_DIGGER);
|
||||
}
|
||||
static bool checkInFunFunIsland() {
|
||||
return isInMinigameState(FUN_FUN_ISLAND);
|
||||
}
|
||||
static bool checkInHouseCleaning() {
|
||||
return isInMinigameState(HOUSE_CLEANING);
|
||||
}
|
||||
static bool checkInTrialTimeAttack() {
|
||||
return isInMinigameState(TRIAL_TIME_ATTACK);
|
||||
}
|
||||
static bool checkInBossRush() {
|
||||
return isInMinigameState(BOSS_RUSH);
|
||||
}
|
||||
static bool checkInPumpkinArchery() {
|
||||
return isInMinigameState(PUMPKIN_ARCHERY);
|
||||
}
|
||||
static bool checkInHarpPlaying() {
|
||||
return isInMinigameState(HARP_PLAYING);
|
||||
}
|
||||
static bool checkInRollerCoaster() {
|
||||
return isInMinigameState(ROLLERCOASTER);
|
||||
}
|
||||
static bool checkInSprialChargeTutorial() {
|
||||
return isInMinigameState(SPIRAL_CHARGE_TUTORIAL);
|
||||
}
|
||||
|
||||
private:
|
||||
MinigameManager() {}
|
||||
|
||||
@@ -41,7 +41,7 @@ struct TimeAreaStruct {
|
||||
return fabsf(field_0x00) <= FLT_EPSILON;
|
||||
}
|
||||
|
||||
f32 getDistMaybe() {
|
||||
f32 getDistMaybe() const {
|
||||
return field_0x00;
|
||||
}
|
||||
|
||||
@@ -72,6 +72,8 @@ public:
|
||||
s32 fn_800B9B60(s32 roomId, const mVec3_c &position);
|
||||
f32 fn_800B9CE0(const mVec3_c &position);
|
||||
|
||||
static bool fn_800BBD40();
|
||||
|
||||
bool isInLanayruMiningFacility() const {
|
||||
return mIsInLanayruMiningFacility;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user