mirror of
https://github.com/zeldaret/ss
synced 2026-10-08 13:36:24 -04:00
Merge remote-tracking branch 'upstream/HEAD' into d_a_obj_bomb
This commit is contained in:
@@ -17,11 +17,17 @@
|
||||
class dAcSalbageObj_c;
|
||||
|
||||
enum SalvageObj_e {
|
||||
SALVAGE_OBJ_NONE = -1,
|
||||
|
||||
SALVAGE_OBJ_PROPERA = 0,
|
||||
SALVAGE_OBJ_ROULETTE = 1,
|
||||
SALVAGE_OBJ_DIVINER_CRYSTAL = 2,
|
||||
SALVAGE_OBJ_SALVAGE_MORRY = 3,
|
||||
SALVAGE_OBJ_MOLE_ELDER = 4,
|
||||
SALVAGE_OBJ_WATER_JAR = 5,
|
||||
SALVAGE_OBJ_POT = 6,
|
||||
|
||||
SALVAGE_OBJ_MAX = 7,
|
||||
};
|
||||
|
||||
class dSalvageIfObj_c : public dSalvageIf_c {
|
||||
@@ -176,7 +182,7 @@ protected:
|
||||
/* 0x908 */ mMtx_c mWorldSRMtx;
|
||||
/* 0x938 */ f32 field_0x938;
|
||||
/* 0x93C */ DowsingTarget mDowsingTarget;
|
||||
/* 0x95C */ mVec3_c field_0x95C;
|
||||
/* 0x95C */ mVec3_c mDowsingOffset;
|
||||
/* 0x968 */ bool mIsDowsingRegistered;
|
||||
/* 0x96C */ const sStateID_c *mpNextStateId;
|
||||
};
|
||||
|
||||
@@ -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"
|
||||
@@ -96,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;
|
||||
|
||||
@@ -164,6 +164,10 @@ public:
|
||||
mLinkage.field_0xA0 = pCol;
|
||||
}
|
||||
|
||||
dSalvageIf_c *getSalvageIf() const {
|
||||
return mpSalvageIf;
|
||||
}
|
||||
|
||||
// could be their own thing?
|
||||
static void *getOarcFile(const char *oarcName, const char *fileName);
|
||||
static void *getOarcSubEntry(const char *oarcName, const char *fileName);
|
||||
|
||||
+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();
|
||||
|
||||
@@ -1640,12 +1640,12 @@ enum StoryFlags_e {
|
||||
/** [Windmill Propeller picked up]
|
||||
* Story Flag #324 (0x0144) - JP 805ACD7F 0x04 / US 805A9AFF 0x04
|
||||
*/
|
||||
STORYFLAG_324,
|
||||
STORYFLAG_PROPERA_PICKUP,
|
||||
|
||||
/** [Village Windmill reparation cutscene]
|
||||
* Story Flag #325 (0x0145) - JP 805ACD7F 0x08 / US 805A9AFF 0x08
|
||||
*/
|
||||
STORYFLAG_325,
|
||||
STORYFLAG_WINDMILL_REPAIRED,
|
||||
|
||||
/** [Wyrna's 5 gratitude crystals collected (not the crystals themselves)]
|
||||
* Story Flag #326 (0x0146) - JP 805ACD7F 0x10 / US 805A9AFF 0x10
|
||||
@@ -1842,12 +1842,12 @@ enum StoryFlags_e {
|
||||
/** [Spiral Charge Ability]
|
||||
* Story Flag #364 (0x016C) - JP 805ACD83 0x04 / US 805A9B03 0x04
|
||||
*/
|
||||
STORYFLAG_364,
|
||||
STORYFLAG_SPIRAL_CHARGE_UNLOCKED,
|
||||
|
||||
/** [Pumpkin Soup for Levias Collected, unset by picking up something else]
|
||||
* Story Flag #365 (0x016D) - JP 805ACD83 0x08 / US 805A9B03 0x08
|
||||
*/
|
||||
STORYFLAG_365,
|
||||
STORYFLAG_PUMPKIN_SOUP_PICKUP,
|
||||
|
||||
/** [Unset when Scrapper has a job, set when he has finished it]
|
||||
* Story Flag #366 (0x016E) - JP 805ACD83 0x10 / US 805A9B03 0x10
|
||||
@@ -1877,17 +1877,17 @@ enum StoryFlags_e {
|
||||
/** [Accepting the Fortune Teller Crystal Sidequest]
|
||||
* Story Flag #371 (0x0173) - JP 805ACD82 0x02 / US 805A9B02 0x02
|
||||
*/
|
||||
STORYFLAG_371,
|
||||
STORYFLAG_CRYSTAL_QUEST_STARTED,
|
||||
|
||||
/** [Sets after Sprapper picked the Crystal Ball up]
|
||||
* Story Flag #372 (0x0174) - JP 805ACD82 0x04 / US 805A9B02 0x04
|
||||
*/
|
||||
STORYFLAG_372,
|
||||
STORYFLAG_CRYSTAL_PICKUP,
|
||||
|
||||
/** [Sets before the Fortune Teller gives his Crystals]
|
||||
* Story Flag #373 (0x0175) - JP 805ACD82 0x08 / US 805A9B02 0x08
|
||||
*/
|
||||
STORYFLAG_373,
|
||||
STORYFLAG_CRYSTAL_DELIVERED,
|
||||
|
||||
/** [Sets when talking to the Fortune Teller in the Bazzar after 8x08 (Fortunes only cost half)]
|
||||
* Story Flag #374 (0x0176) - JP 805ACD82 0x10 / US 805A9B02 0x10
|
||||
@@ -2002,17 +2002,17 @@ enum StoryFlags_e {
|
||||
/** [Search for Party Wheel Crystal Quest started]
|
||||
* Story Flag #396 (0x018C) - JP 805ACD8F 0x20 / US 805A9B0F 0x20
|
||||
*/
|
||||
STORYFLAG_396,
|
||||
STORYFLAG_PARTY_WHEEL_QUEST_STARTED,
|
||||
|
||||
/** [Set after Scrapper picks up Party Wheel]
|
||||
* Story Flag #397 (0x018D) - JP 805ACD8F 0x80 / US 805A9B0F 0x80
|
||||
*/
|
||||
STORYFLAG_397,
|
||||
STORYFLAG_PARTY_WHEEL_PICKUP,
|
||||
|
||||
/** [Set before Fun Fun Owner gives his Crystals]
|
||||
* Story Flag #398 (0x018E) - JP 805ACD8E 0x01 / US 805A9B0E 0x01
|
||||
*/
|
||||
STORYFLAG_398,
|
||||
STORYFLAG_PARTY_WHEEL_DELIVERED,
|
||||
|
||||
/** [Sets after you get a free try at Diveing game]
|
||||
* Story Flag #399 (0x018F) - JP 805ACD91 0x80 / US 805A9B11 0x80
|
||||
@@ -2357,7 +2357,7 @@ enum StoryFlags_e {
|
||||
/** [Goron Text near Big Frog]
|
||||
* Story Flag #467 (0x01D3) - JP 805ACD8F 0x10 / US 805A9B0F 0x10
|
||||
*/
|
||||
STORYFLAG_467,
|
||||
STORYFLAG_WATER_BASIN_QUEST_STARTED,
|
||||
|
||||
/** [Goron Text after Watering 1st Frog]
|
||||
* Story Flag #468 (0x01D4) - JP 805ACD8F 0x40 / US 805A9B0F 0x40
|
||||
@@ -2372,17 +2372,17 @@ enum StoryFlags_e {
|
||||
/** [Kina's Crystal Quest started]
|
||||
* Story Flag #470 (0x01D6) - JP 805ACD8E 0x04 / US 805A9B0E 0x04
|
||||
*/
|
||||
STORYFLAG_470,
|
||||
STORYFLAG_MOLE_ELDER_QUEST_STARTED,
|
||||
|
||||
/** [Guld picked up (unsets after)]
|
||||
* Story Flag #471 (0x01D7) - JP 805ACD8E 0x08 / US 805A9B0E 0x08
|
||||
*/
|
||||
STORYFLAG_471,
|
||||
STORYFLAG_MOLE_ELDER_PICKUP,
|
||||
|
||||
/** [Kina's Crystal Quest related]
|
||||
* Story Flag #472 (0x01D8) - JP 805ACD8E 0x10 / US 805A9B0E 0x10
|
||||
*/
|
||||
STORYFLAG_472,
|
||||
STORYFLAG_MOLE_ELDER_DELIVERED,
|
||||
|
||||
/** [Kina's Crystal Quest related]
|
||||
* Story Flag #473 (0x01D9) - JP 805ACD8E 0x20 / US 805A9B0E 0x20
|
||||
@@ -2417,7 +2417,7 @@ enum StoryFlags_e {
|
||||
/** [Owlans Crystal Sidequest started]
|
||||
* Story Flag #479 (0x01DF) - JP 805ACD91 0x08 / US 805A9B11 0x08
|
||||
*/
|
||||
STORYFLAG_479,
|
||||
STORYFLAG_PLANT_SPECIES_QUEST_STARTED,
|
||||
|
||||
/** []
|
||||
* Story Flag #480 (0x01E0) - JP 805ACD91 0x10 / US 805A9B11 0x10
|
||||
|
||||
@@ -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
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/d_a_salbage_obj.h"
|
||||
#include "d/a/npc/d_a_npc_salbage_robot.h"
|
||||
#include "m/m_mtx.h"
|
||||
|
||||
class dAcSalbageObj_c;
|
||||
@@ -15,8 +17,11 @@ public:
|
||||
// return sInstance;
|
||||
// }
|
||||
|
||||
bool checkDeliveredStoryflag(const s32& id) const;
|
||||
bool startedQuestForSalvageObj(const dAcSalbageObj_c *obj) const;
|
||||
// TODO a fun theory is that all those `const s32 &`s are just `const SalvageObj_e &`s.
|
||||
|
||||
bool checkDeliveredStoryflag(const s32 &id) const;
|
||||
bool checkPickupStoryflag(const s32 &id) const;
|
||||
bool hasStartedQuestForSalvageObj(const dAcSalbageObj_c *obj) const;
|
||||
bool hasDowsingForSalvageObj(const dAcSalbageObj_c *obj) const;
|
||||
mMtx_c getCarryRotMtx(const s32 &id) const;
|
||||
mMtx_c getCarryRotMtx2(const s32 &id) const {
|
||||
@@ -26,13 +31,46 @@ public:
|
||||
void deleteObjAndSlb();
|
||||
|
||||
static dSalvageMgr_c *sInstance;
|
||||
static void create();
|
||||
static void remove();
|
||||
|
||||
void init();
|
||||
void execute();
|
||||
|
||||
void setPickupIndex(const s32 &id);
|
||||
void unsetPickupStoryflag(const s32 &id);
|
||||
void handlePickupIndex();
|
||||
void setupDeliverToTarget();
|
||||
bool checkIsOnDeliveryStage() const;
|
||||
bool checkIsOnDeliveryStage2() const;
|
||||
u16 getDeliverToActorId(s32 id);
|
||||
dAcObjBase_c *findDeliveryTarget();
|
||||
bool hasStartedQuestForId(const s32 &id) const;
|
||||
bool hasDowsingForId(const s32 &id) const;
|
||||
|
||||
void noop();
|
||||
|
||||
bool triggerDeliveryEvent();
|
||||
|
||||
u16 getTalkEntryPoint1ForPickup(dAcObjBase_c *obj);
|
||||
u16 getTalkEntryPoint2ForPickup(dAcObjBase_c *obj);
|
||||
u16 getTalkEntryPoint3ForPickup(dAcObjBase_c *obj);
|
||||
|
||||
bool hasObjAndSlb() const {
|
||||
return mObjRef.isLinked() && mSlbRef.isLinked();
|
||||
}
|
||||
|
||||
bool checkPickupMask(const s32 &id) const {
|
||||
return (mCurrentPickupMaskBit & (1 << id)) != 0;
|
||||
}
|
||||
|
||||
/* 0x00 */ dAcRef_c<dAcSalbageObj_c> mObjRef;
|
||||
/* 0x0C */ dAcRef_c<dAcNpcSlb_c> mSlbRef;
|
||||
/* 0x18 */ dAcRef_c<dAcObjBase_c> mDeliverToRef;
|
||||
/* 0x24 */ s32 mCurrentPickupIdx;
|
||||
/* 0x28 */ s32 mCurrentPickupMaskBit;
|
||||
/* 0x2C */ s16 field_0x2C;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
@@ -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