* chair

* mostly done

* updateChairPos match

---------

Co-authored-by: robojumper <robojumper@gmail.com>
This commit is contained in:
Elijah Thomas
2025-03-30 21:34:05 -04:00
committed by GitHub
parent 4a17d86c3b
commit e85a989271
19 changed files with 388 additions and 33 deletions
@@ -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
+12 -11
View File
@@ -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
+2
View File
@@ -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;
+9
View File
@@ -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
+70 -1
View File
@@ -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 &param);
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
+9 -1
View File
@@ -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);
}
+260 -1
View File
@@ -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 &param) {
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;
}
}
+5 -1
View File
@@ -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
+3 -3
View File
@@ -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}
};
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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},
+1 -1
View File
@@ -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},
+1 -1
View File
@@ -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}
};
+2 -2
View File
@@ -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},
};
+1 -1
View File
@@ -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
+4 -5
View File
@@ -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;