mirror of
https://github.com/zeldaret/ss
synced 2026-05-23 15:01:38 -04:00
Chair (#143)
* chair * mostly done * updateChairPos match --------- Co-authored-by: robojumper <robojumper@gmail.com>
This commit is contained in:
@@ -17,3 +17,6 @@ REL/global_destructor_chain.c:
|
||||
REL/d/a/obj/d_a_obj_chair.cpp:
|
||||
.text start:0x000000F0 end:0x000015F8
|
||||
.ctors start:0x00000000 end:0x00000004
|
||||
.rodata start:0x00000000 end:0x00000054
|
||||
.data start:0x00000000 end:0x00000268
|
||||
.bss start:0x00000008 end:0x00000060
|
||||
|
||||
@@ -4,24 +4,24 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
__register_global_object = .text:0x00000070; // type:function size:0x1C scope:global
|
||||
__destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global
|
||||
dAcOChair_c_classInit__Fv = .text:0x000000F0; // type:function size:0xF0
|
||||
fn_484_1E0 = .text:0x000001E0; // type:function size:0x58
|
||||
__dt__15dShadowCircle_cFv = .text:0x000001E0; // type:function size:0x58
|
||||
__dt__24sFState_c<11dAcOChair_c>Fv = .text:0x00000240; // type:function size:0x58
|
||||
__dt__27sFStateFct_c<11dAcOChair_c>Fv = .text:0x000002A0; // type:function size:0x6C
|
||||
__dt__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000310; // type:function size:0xA0
|
||||
__dt__50sFStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003B0; // type:function size:0xA4
|
||||
AcOChair__initModels = .text:0x00000460; // type:function size:0xC4
|
||||
AcOChair__init = .text:0x00000530; // type:function size:0x2DC
|
||||
createHeap__11dAcOChair_cFv = .text:0x00000460; // type:function size:0xC4
|
||||
create__11dAcOChair_cFv = .text:0x00000530; // type:function size:0x2DC
|
||||
changeState__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000810; // type:function size:0x10
|
||||
fn_484_820 = .text:0x00000820; // type:function size:0x8
|
||||
fn_484_830 = .text:0x00000830; // type:function size:0x350
|
||||
doDelete__11dAcOChair_cFv = .text:0x00000820; // type:function size:0x8
|
||||
actorExecute__11dAcOChair_cFv = .text:0x00000830; // type:function size:0x350
|
||||
executeState__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000B80; // type:function size:0x10
|
||||
fn_484_B90 = .text:0x00000B90; // type:function size:0x1C
|
||||
fn_484_BB0 = .text:0x00000BB0; // type:function size:0x104
|
||||
calcTimer<Uc>__4sLibFPUc_Uc = .text:0x00000B90; // type:function size:0x1C
|
||||
draw__11dAcOChair_cFv = .text:0x00000BB0; // type:function size:0x104
|
||||
initializeState_Wait__11dAcOChair_cFv = .text:0x00000CC0; // type:function size:0x4
|
||||
executeState_Wait__11dAcOChair_cFv = .text:0x00000CD0; // type:function size:0x194
|
||||
finalizeState_Wait__11dAcOChair_cFv = .text:0x00000E70; // type:function size:0x4
|
||||
AcOChair__getType = .text:0x00000E80; // type:function size:0xD8
|
||||
fn_484_F60 = .text:0x00000F60; // type:function size:0x1B4
|
||||
getChairType__11dAcOChair_cFRUc = .text:0x00000E80; // type:function size:0xD8
|
||||
updateChairPos__11dAcOChair_cFv = .text:0x00000F60; // type:function size:0x1B4
|
||||
__dt__11dAcOChair_cFv = .text:0x00001120; // type:function size:0x10C
|
||||
getStateID__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001230; // type:function size:0x10
|
||||
build__27sFStateFct_c<11dAcOChair_c>FRC12sStateIDIf_c = .text:0x00001240; // type:function size:0x60
|
||||
@@ -57,8 +57,9 @@ lbl_484_data_38 = .data:0x00000038; // type:object size:0x8
|
||||
lbl_484_data_40 = .data:0x00000040; // type:object size:0x8
|
||||
lbl_484_data_48 = .data:0x00000048; // type:object size:0x8
|
||||
lbl_484_data_50 = .data:0x00000050; // type:object size:0x8
|
||||
AcOChair__CHAR_TYPES = .data:0x00000058; // type:object size:0x80
|
||||
AcOChair__vtable = .data:0x000000D8; // type:object size:0x80
|
||||
CHAIR_FILES = .data:0x00000058; // type:object size:0x24
|
||||
sChairColData = .data:0x00000080; // type:object size:0x30
|
||||
__vt__15dShadowCircle_c = .data:0x000000D8; // type:object size:0x80
|
||||
lbl_484_data_158 = .data:0x00000158; // type:object size:0x30
|
||||
lbl_484_data_188 = .data:0x00000188; // type:object size:0x30
|
||||
lbl_484_data_1B8 = .data:0x000001B8; // type:object size:0x18
|
||||
|
||||
@@ -63,6 +63,8 @@ public:
|
||||
static void itemGetEventStart(dAcBase_c *);
|
||||
static void itemGetEventEnd(dAcBase_c *);
|
||||
|
||||
static void healLink(u32 amount, bool);
|
||||
|
||||
private:
|
||||
/* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system
|
||||
/* 0x338 */ dShadowCircle_c mShdw;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#ifndef D_A_PLAYER_H
|
||||
#define D_A_PLAYER_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
@@ -256,6 +259,10 @@ public:
|
||||
return mCurrentAction;
|
||||
}
|
||||
|
||||
bool checkCurrentAction(int action) const {
|
||||
return mCurrentAction == action;
|
||||
}
|
||||
|
||||
inline bool checkActionFlags(u32 mask) const {
|
||||
return (mActionFlags & mask) != 0;
|
||||
}
|
||||
@@ -271,3 +278,5 @@ public:
|
||||
|
||||
static dAcPy_c *LINK;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,18 +2,87 @@
|
||||
#define D_A_OBJ_CHAIR_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s_acch.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "s/s_StateMgr.hpp"
|
||||
|
||||
class dAcOChair_c : public dAcObjBase_c {
|
||||
public:
|
||||
enum ChairType {
|
||||
CHAIR_A, // Standard Stool
|
||||
CHAIR_B, // Standard Chair
|
||||
CHAIR_C, // Seat like in Headmaster Room
|
||||
CHAIR_D, // Couch
|
||||
CHAIR_E, // Bench
|
||||
CHAIR_F, // Faron - Stump
|
||||
CHAIR_G, // Eldin - In Huts
|
||||
CHAIR_H, // Lanayru - 'Past'
|
||||
CHAIR_I, // In Front of ET
|
||||
};
|
||||
|
||||
dAcOChair_c() : mStateMgr(*this, sStateID::null) {}
|
||||
virtual ~dAcOChair_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOChair_c, Wait);
|
||||
|
||||
ChairType getChairType(u8 ¶m);
|
||||
|
||||
void updateChairPos();
|
||||
|
||||
bool isBench() const {
|
||||
return (mChairType == CHAIR_D || mChairType == CHAIR_E || mChairType == CHAIR_I);
|
||||
}
|
||||
bool isChairTypeIdk0() const {
|
||||
return (
|
||||
mChairType == CHAIR_A || mChairType == CHAIR_F || mChairType == CHAIR_G || mChairType == CHAIR_H ||
|
||||
mChairType == CHAIR_I
|
||||
);
|
||||
}
|
||||
bool isChairTypeIdk1() const {
|
||||
return mChairType == CHAIR_F || mChairType == CHAIR_H;
|
||||
}
|
||||
|
||||
// Might be an inline from dAcBase_c?
|
||||
mAng getRelativeYRotationToPlayer() {
|
||||
mAng a = getXZAngleToPlayer();
|
||||
return a - rotation.y;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcOChair_c);
|
||||
/* 0x330 */ nw4r::g3d::ResFile mRes;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ dShadowCircle_c mShadow;
|
||||
|
||||
/* 0x358 */ dCcD_Cyl mCyl;
|
||||
/* 0x4A8 */ dBgW mBgW;
|
||||
/* 0x6B8 */ dBgS_ObjAcch mObjAcch;
|
||||
/* 0xA68 */ dBgS_AcchCir mAcchCir;
|
||||
|
||||
/* 0xAC4 */ STATE_MGR_DECLARE(dAcOChair_c);
|
||||
/* 0xB00 */ mVec3_c mChairPos;
|
||||
/* 0xB0C */ u8 _B0C[0xB14 - 0xB0C];
|
||||
/* 0xB14 */ u32 mSeatNodeID;
|
||||
/* 0xB18 */ mAng mChairRot;
|
||||
/* 0xB1A */ u8 field_0xB1A;
|
||||
/* 0xB1B */ u8 field_0xB1B;
|
||||
/* 0xB1C */ u8 field_0xB1C;
|
||||
/* 0xB1D */ u8 mHealTimer;
|
||||
/* 0xB1E */ u8 mChairType;
|
||||
/* 0xB1E */ u8 mSceneflag;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -315,7 +315,8 @@ public:
|
||||
};
|
||||
|
||||
struct cCcD_SrcGObjTgInfo {
|
||||
/* 0x00 */ u16 mField_0x0;
|
||||
/* 0x00 */ u8 mField_0x0;
|
||||
/* 0x01 */ u8 mField_0x1;
|
||||
/* 0x02 */ u16 mField_0x2;
|
||||
};
|
||||
|
||||
@@ -631,6 +632,10 @@ public:
|
||||
mField_0x4B = val;
|
||||
}
|
||||
|
||||
void SetInfo_0x1(u8 val) {
|
||||
mSrc.mInfo.mField_0x1 = val;
|
||||
}
|
||||
|
||||
void SetInfo_0x2(u16 val) {
|
||||
mSrc.mInfo.mField_0x2 = val;
|
||||
}
|
||||
@@ -911,6 +916,9 @@ public:
|
||||
void SetTg_0x4B(u8 val) {
|
||||
mTg.Set_0x4B(val);
|
||||
}
|
||||
void SetTgInfo_0x1(u8 val) {
|
||||
mTg.SetInfo_0x1(val);
|
||||
}
|
||||
void SetTgInfo_0x2(u16 val) {
|
||||
mTg.SetInfo_0x2(val);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,268 @@
|
||||
#include "d/a/obj/d_a_obj_chair.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "f/f_base.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_quat.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "nw4r/math/math_arithmetic.h"
|
||||
#include "s/s_Math.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(OBJ_CHAIR, dAcOChair_c, fProfile::OBJ_CHAIR, 0x196, 0, 7);
|
||||
|
||||
STATE_DEFINE(dAcOChair_c, Wait);
|
||||
|
||||
// Honestly, I dont know. This just made the most sense to me
|
||||
static const u8 _heal_cooldowns[] = {0, 60, 30};
|
||||
#define HEAL_COOLDOWN (_heal_cooldowns[2])
|
||||
#define FIRST_HEAL_COOLDOWN (_heal_cooldowns[1])
|
||||
|
||||
char *CHAIR_FILES[9] = {
|
||||
"CharA", "CharB", "CharC", "CharD", "CharE", "CharF", "CharG", "CharH", "CharI",
|
||||
};
|
||||
|
||||
static dCcD_SrcCyl sChairColData = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
|
||||
0x111,
|
||||
{0, 0x7, 0x407},
|
||||
0x0,
|
||||
0x0},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mCylInf */
|
||||
{40.f, 50.f}
|
||||
};
|
||||
|
||||
bool dAcOChair_c::createHeap() {
|
||||
if (!isBench()) {
|
||||
mRes = nw4r::g3d::ResFile(getOarcResFile(CHAIR_FILES[mChairType]));
|
||||
TRY_CREATE(mMdl.create(mRes.GetResMdl(CHAIR_FILES[mChairType]), &heap_allocator, 0x120, 1, NULL));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int dAcOChair_c::create() {
|
||||
u8 paramType = params & 0xF;
|
||||
mChairType = getChairType(paramType);
|
||||
mSceneflag = params >> 4;
|
||||
|
||||
CREATE_ALLOCATOR(dAcOChair_c);
|
||||
|
||||
if (!isBench()) {
|
||||
mObjAcch.Set(this, 1, &mAcchCir);
|
||||
mAcchCir.SetWall(20.f, 50.f);
|
||||
}
|
||||
|
||||
if (!isBench()) {
|
||||
mStts.SetRank(13);
|
||||
mCyl.Set(sChairColData);
|
||||
|
||||
mCyl.SetStts(mStts);
|
||||
mCyl.SetTg_0x4C(0x2000);
|
||||
|
||||
if (mChairType == CHAIR_H) {
|
||||
mCyl.SetTgInfo_0x1(6);
|
||||
}
|
||||
|
||||
f32 height = 55.f;
|
||||
f32 radius = 35.f;
|
||||
|
||||
if (mChairType == CHAIR_B) {
|
||||
height = 130.f;
|
||||
radius = 45.f;
|
||||
} else if (mChairType == CHAIR_C) {
|
||||
height = 160.f;
|
||||
radius = 65.f;
|
||||
}
|
||||
|
||||
mCyl.SetR(radius);
|
||||
mCyl.SetH(height);
|
||||
|
||||
mSeatNodeID = mMdl.getResMdl().GetResNode("SetLink").GetID();
|
||||
}
|
||||
|
||||
updateMatrix();
|
||||
|
||||
if (isChairTypeIdk1()) {
|
||||
mMdl.setPriorityDraw(0x1C, 9);
|
||||
|
||||
} else if (!isBench()) {
|
||||
mObjAcch.CrrPos(*dBgS::GetInstance());
|
||||
}
|
||||
|
||||
forwardAccel = -2.f;
|
||||
forwardMaxSpeed = -40.f;
|
||||
|
||||
field_0xB1B = 1;
|
||||
field_0xB1A = 1;
|
||||
|
||||
mChairRot = rotation.y;
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
|
||||
boundingBox.Set(mVec3_c(-60.f, -0.f, -60.f), mVec3_c(60.f, 160.f, 60.f));
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOChair_c::doDelete() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
inline bool isPlayerSitting() {
|
||||
bool ret = false;
|
||||
if (
|
||||
dAcPy_c::GetLink()->checkCurrentAction(173) /* SITTING*/ ||
|
||||
dAcPy_c::GetLink()->checkCurrentAction(174) /* ??? */
|
||||
) {
|
||||
ret = true;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int dAcOChair_c::actorExecute() {
|
||||
mStateMgr.executeState();
|
||||
|
||||
// Calculate the HealCooldown (Heal link if needed)
|
||||
if (!checkObjectProperty(0x8000)) {
|
||||
if (!isBench()) {
|
||||
mCyl.SetC(GetPostion());
|
||||
dCcS::GetInstance()->Set(&mCyl);
|
||||
}
|
||||
mHealTimer = FIRST_HEAL_COOLDOWN;
|
||||
} else if (isPlayerSitting()) {
|
||||
if (sLib::calcTimer(&mHealTimer) == 0) {
|
||||
dAcItem_c::healLink(4, 1);
|
||||
mHealTimer = HEAL_COOLDOWN;
|
||||
}
|
||||
}
|
||||
|
||||
// Set the flag that link is sitting
|
||||
if (checkObjectProperty(0x8000) && isPlayerSitting()) {
|
||||
if (mSceneflag < 0xFF && !SceneflagManager::sInstance->checkBoolFlag(roomid, mSceneflag)) {
|
||||
SceneflagManager::sInstance->setFlag(roomid, mSceneflag);
|
||||
}
|
||||
} else {
|
||||
if (mSceneflag < 0xFF && SceneflagManager::sInstance->checkBoolFlag(roomid, mSceneflag)) {
|
||||
SceneflagManager::sInstance->unsetFlag(roomid, mSceneflag);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isBench()) {
|
||||
if (isChairTypeIdk0() && !checkObjectProperty(0x8000)) {
|
||||
if (sLib::absDiff(GetRotation().y, getXZAngleToPlayer()) > 910) {
|
||||
GetRotation().y = getXZAngleToPlayer();
|
||||
}
|
||||
}
|
||||
|
||||
updateMatrix();
|
||||
|
||||
if (isChairTypeIdk0()) {
|
||||
mWorldMtx.YrotM(mChairRot - GetRotation().y);
|
||||
}
|
||||
mMdl.setLocalMtx(mWorldMtx);
|
||||
mMdl.calc(false);
|
||||
} else {
|
||||
if (isChairTypeIdk0() && !checkObjectProperty(0x8000)) {
|
||||
if (sLib::absDiff(GetRotation().y, getXZAngleToPlayer()) > 910) {
|
||||
GetRotation().y = getXZAngleToPlayer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updateChairPos();
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOChair_c::draw() {
|
||||
if (!isBench()) {
|
||||
drawModelType1(&mMdl);
|
||||
static mQuat_c shadowRot(0.f, 40.f, 0.f, 80.f);
|
||||
drawShadow(mShadow, nullptr, mWorldMtx, &shadowRot, -1, -1, -1, -1, -1, 0.f);
|
||||
}
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
void dAcOChair_c::initializeState_Wait() {}
|
||||
void dAcOChair_c::executeState_Wait() {}
|
||||
|
||||
void dAcOChair_c::executeState_Wait() {
|
||||
const f32 height_diff = position.y - dAcPy_c::GetLink()->position.y;
|
||||
if (!isBench() || (50.f < height_diff && height_diff < 60.f)) {
|
||||
if (field_0xB1A && field_0xB1B) {
|
||||
if (dAcPy_c::GetLink()->checkActionFlagsCont(0x1000)) {
|
||||
return;
|
||||
}
|
||||
if (!isBench() && nw4r::math::FAbs(height_diff) > 10.f) {
|
||||
return;
|
||||
}
|
||||
if (field_0xB1C && mChairType == CHAIR_E) {
|
||||
const f32 mag = (mChairPos - poscopy2).squareMagXZ();
|
||||
if (mag < 10000.f) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AttentionManager::GetInstance()->addSitTarget(*this, isBench() ? 0 : 3, 120.f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dAcOChair_c::finalizeState_Wait() {}
|
||||
|
||||
dAcOChair_c::ChairType dAcOChair_c::getChairType(u8 ¶m) {
|
||||
switch (actor_subtype) {
|
||||
case 0: return CHAIR_A;
|
||||
case 1: return CHAIR_B;
|
||||
case 2: return CHAIR_C;
|
||||
case 3: return CHAIR_D;
|
||||
case 4: return CHAIR_E;
|
||||
case 5: {
|
||||
switch (param) {
|
||||
case 0: return CHAIR_A;
|
||||
case 1: return CHAIR_D;
|
||||
case 2: return CHAIR_I;
|
||||
case 3: return CHAIR_F;
|
||||
case 4: return CHAIR_G;
|
||||
case 5: return CHAIR_H;
|
||||
default: return CHAIR_A;
|
||||
}
|
||||
}
|
||||
default: return CHAIR_A;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcOChair_c::updateChairPos() {
|
||||
if (mChairType != CHAIR_E) {
|
||||
if (isBench()) {
|
||||
poscopy2 = position;
|
||||
} else {
|
||||
mMdl.getNodeWorldMtxMultVecZero(mSeatNodeID, poscopy2);
|
||||
}
|
||||
poscopy3 = poscopy2;
|
||||
} else {
|
||||
field_0xB1A = true;
|
||||
if (!checkObjectProperty(0x8000)) {
|
||||
mVec3_c work = mVec3_c::Ez * getDistToPlayer();
|
||||
work.rotY(getRelativeYRotationToPlayer());
|
||||
work.z = 0.f;
|
||||
work.rotY(rotation.y);
|
||||
poscopy2 = position;
|
||||
if (work.squareMagXZ() < 10000.f) {
|
||||
poscopy2 += work;
|
||||
} else {
|
||||
field_0xB1A = false;
|
||||
}
|
||||
}
|
||||
poscopy3 = poscopy2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,11 @@ dCcD_SrcCps dAcODungeonShip_c::sCcSrc = {
|
||||
{
|
||||
|
||||
{0, 0x1003E, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0, 0x407, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x111,
|
||||
{0, 0, 0x407},
|
||||
0,
|
||||
0},
|
||||
{0xE8},
|
||||
},
|
||||
{1000.0f},
|
||||
|
||||
@@ -40,7 +40,7 @@ bool dAcOFlyingClawshotTarget_c::createHeap() {
|
||||
// clang-format off
|
||||
const cCcD_SrcGObj dAcOFlyingClawshotTarget_c::sColSrc = {
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {6, 0x407}, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, 0},
|
||||
/* mObjCo */ {0x0}
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@@ -24,11 +24,11 @@ STATE_DEFINE(dAcOSeatSword_c, Wait);
|
||||
STATE_DEFINE(dAcOSeatSword_c, Get);
|
||||
|
||||
dCcD_SrcCyl dAcOSeatSword_c::sCylSrc = {
|
||||
/* mObjInf */
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {0, 0x311, {0, 0x407}, 0x0, 0x0},
|
||||
/* mObjTg */ {0, 0x311, {0, 0, 0x407}, 0x0, 0x0},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mCylInf */
|
||||
/* mCylInf */
|
||||
{20.f, 100.f}
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ SPECIAL_ACTOR_PROFILE(OBJ_SPIKE, dAcOspike_c, fProfile::OBJ_SPIKE, 0x1D9, 0, 2);
|
||||
// clang-format off
|
||||
dCcD_SrcUnk dAcOspike_c::sCcSrc = {
|
||||
{{AT_TYPE_DAMAGE, 0x2003F, {0, 0, 0}, 1, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x06, 0x407, 0, },
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, },
|
||||
{0}},
|
||||
{-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f}};
|
||||
// clang-format on
|
||||
|
||||
@@ -38,7 +38,8 @@ dCcD_SrcCyl dAcOtoD3StoneFigure_c::sCcSrc = {
|
||||
~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x1000111,
|
||||
{
|
||||
0x06,
|
||||
0x0,
|
||||
0x06,
|
||||
0x407
|
||||
},
|
||||
0,
|
||||
|
||||
@@ -10,7 +10,7 @@ SPECIAL_ACTOR_PROFILE(OBJ_TRIFORCE, dAcOtriforce_c, fProfile::OBJ_TRIFORCE, 0x15
|
||||
// clang-format off
|
||||
dCcD_SrcSph dAcOtriforce_c::sCcSrc = {
|
||||
{{0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x06, 0x407, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, 0},
|
||||
{0xE9}},
|
||||
{150.0f}};
|
||||
// clang-format on
|
||||
|
||||
@@ -53,7 +53,7 @@ STATE_DEFINE(dAcOtubo_c, Rebirth);
|
||||
dCcD_SrcSph dAcOtubo_c::sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_PHYSICS, 0x12, {0, 0, 0}, 2, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x801111, {0xA, 0x40F}, 8, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, 0},
|
||||
/* mObjCo */ {0x1E9}},
|
||||
/* mSphInf */
|
||||
{30.f},
|
||||
|
||||
@@ -32,7 +32,7 @@ STATE_DEFINE(dAcOTumbleWeed_c, Slope);
|
||||
dCcD_SrcSph dAcOTumbleWeed_c::sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x111, {8, 0x40F}, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, 0},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mSphInf */
|
||||
{60.f},
|
||||
|
||||
@@ -22,7 +22,7 @@ const f32 dTgReaction_c::sHeight = 100.0f;
|
||||
// clang-format off
|
||||
dCcD_SrcCyl dTgReaction_c::sCcSrc = {
|
||||
{{0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{AT_TYPE_BELLOWS, 0x213, 0, 0x8, 0x8,},
|
||||
{AT_TYPE_BELLOWS, 0x213, {0, 0, 0x8},0x8},
|
||||
{0xE8}},
|
||||
{dTgReaction_c::sRadius, dTgReaction_c::sHeight}
|
||||
};
|
||||
|
||||
@@ -20,7 +20,7 @@ cCcD_SrcGObj dAcArrow_c::sCcSrcInf = {
|
||||
{AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{
|
||||
~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_ARROW | AT_TYPE_0x100 | AT_TYPE_WIND | AT_TYPE_SLINGSHOT),
|
||||
0x210, 0, 0x407, 0, 0
|
||||
0x210, {0, 0, 0x407}, 0, 0
|
||||
},
|
||||
{0},
|
||||
};
|
||||
@@ -32,7 +32,7 @@ dCcD_SrcCps dAcArrow_c::sCc1 = {
|
||||
|
||||
const dCcD_SrcSph dAcArrow_c::sCc2 = {
|
||||
{{0x0, 0x0, 0x0, 0, 0, 0, 0, 0, 0},
|
||||
{AT_TYPE_SWORD, 0x211, 0, 0x407, 0, 0},
|
||||
{AT_TYPE_SWORD, 0x211, {0, 0, 0x407}, 0, 0},
|
||||
{0xC28}},
|
||||
{100.0f},
|
||||
};
|
||||
|
||||
@@ -89,7 +89,7 @@ static char *const sOpenEventNames[] = {
|
||||
// TODO just copied from somewhere
|
||||
const cCcD_SrcGObj dAcTbox_c::sColSrc = {
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0x407}, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, 0},
|
||||
/* mObjCo */ {0xE9}
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@@ -498,7 +498,6 @@ bool dBgS::UnRegist(dBgW_Base *pBg) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Not Quite Right
|
||||
if (id <= (BG_ID_MAX - 1) && mColllisionTbl[id] != nullptr) {
|
||||
mColllisionTbl[id] = nullptr;
|
||||
pBg->UnRegistBg();
|
||||
@@ -513,12 +512,11 @@ bool dBgS::UnRegist(dBgW_Base *pBg) {
|
||||
}
|
||||
}
|
||||
}
|
||||
ret = false;
|
||||
} else {
|
||||
ret = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dBgS::ChkMoveBG(cBgS_PolyInfo const &info, bool bChkLock) {
|
||||
@@ -1004,7 +1002,8 @@ mVec3_c dBgS_GetN(cBgS_PolyInfo const &info) {
|
||||
}
|
||||
|
||||
void dBgS::UpdateScrollTex() {
|
||||
MapSrollText_t *scrollTex = (MapSrollText_t *)OarcManager::GetInstance()->getData(common_folder, MAP_SCROLL_TEX_FILE);
|
||||
MapSrollText_t *scrollTex =
|
||||
(MapSrollText_t *)OarcManager::GetInstance()->getData(common_folder, MAP_SCROLL_TEX_FILE);
|
||||
for (int i = 0; i < 5; ++i, ++scrollTex) {
|
||||
if (++mField_0x3864[i] >= scrollTex->mField_0x0E) {
|
||||
mField_0x3864[i] = 0;
|
||||
|
||||
Reference in New Issue
Block a user