mirror of
https://github.com/zeldaret/ss
synced 2026-05-28 16:31:21 -04:00
d_a_obj_pumpkin_bar ok
This commit is contained in:
@@ -11,3 +11,5 @@ REL/executor.c:
|
||||
|
||||
REL/d/a/obj/d_a_obj_pumpkin_bar.cpp:
|
||||
.text start:0x00000070 end:0x00000490
|
||||
.rodata start:0x00000000 end:0x00000020
|
||||
.data start:0x00000000 end:0x00000100
|
||||
|
||||
@@ -2,16 +2,28 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOpumpkinBar_c_classInit__Fv = .text:0x00000070; // type:function size:0x6C
|
||||
fn_391_E0 = .text:0x000000E0; // type:function size:0x7C
|
||||
AcOpumpkinBar__initModels = .text:0x00000160; // type:function size:0x158
|
||||
AcOpumpkinBar__init = .text:0x000002C0; // type:function size:0xF4
|
||||
fn_391_3C0 = .text:0x000003C0; // type:function size:0x8
|
||||
fn_391_3D0 = .text:0x000003D0; // type:function size:0x8
|
||||
AcOpumpkinBar__draw = .text:0x000003E0; // type:function size:0x28
|
||||
barCollisionRideCallback__16dAcOpumpkinBar_cFP4dBgWP12dAcObjBase_cP12dAcObjBase_c = .text:0x000000E0; // type:function size:0x7C
|
||||
createHeap__16dAcOpumpkinBar_cFv = .text:0x00000160; // type:function size:0x158
|
||||
create__16dAcOpumpkinBar_cFv = .text:0x000002C0; // type:function size:0xF4
|
||||
doDelete__16dAcOpumpkinBar_cFv = .text:0x000003C0; // type:function size:0x8
|
||||
actorExecute__16dAcOpumpkinBar_cFv = .text:0x000003D0; // type:function size:0x8
|
||||
draw__16dAcOpumpkinBar_cFv = .text:0x000003E0; // type:function size:0x28
|
||||
__dt__16dAcOpumpkinBar_cFv = .text:0x00000410; // type:function size:0x80
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_391_rodata_0 = .rodata:0x00000000; // type:object size:0x20 data:float
|
||||
g_profile_OBJ_PUMPKIN_BAR = .data:0x00000000; // type:object size:0x60
|
||||
lbl_391_data_60 = .data:0x00000060; // type:object size:0x20
|
||||
AcOpumpkinBar__vtable = .data:0x00000080; // type:object size:0x80
|
||||
lbl_391_rodata_00 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
|
||||
lbl_391_rodata_04 = .rodata:0x00000004; // type:object size:0x4 scope:local data:float
|
||||
lbl_391_rodata_08 = .rodata:0x00000008; // type:object size:0x4 scope:local data:float
|
||||
lbl_391_rodata_0C = .rodata:0x0000000C; // type:object size:0x4 scope:local data:float
|
||||
lbl_391_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
|
||||
lbl_391_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
|
||||
lbl_391_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
|
||||
lbl_391_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
|
||||
g_profile_OBJ_PUMPKIN_BAR = .data:0x00000000; // type:object size:0x10
|
||||
lbl_391_data_10 = .data:0x00000010; // type:object size:0x7 scope:local data:string
|
||||
lbl_391_data_18 = .data:0x00000018; // type:object size:0xE scope:local data:string
|
||||
lbl_391_data_28 = .data:0x00000028; // type:object size:0xE scope:local data:string
|
||||
lbl_391_data_28 = .data:0x00000038; // type:object size:0x14 scope:local data:string
|
||||
lbl_391_data_4C = .data:0x0000004C; // type:object size:0x14 scope:local data:string
|
||||
lbl_391_data_60 = .data:0x00000060; // type:object size:0x1F scope:local data:string
|
||||
__vt__16dAcOpumpkinBar_c = .data:0x00000080; // type:object size:0x80
|
||||
|
||||
+1
-1
@@ -1524,7 +1524,7 @@ config.libs = [
|
||||
NonMatching, "d_a_obj_propeller_lift", "REL/d/a/obj/d_a_obj_propeller_lift.cpp"
|
||||
),
|
||||
Rel(NonMatching, "d_a_obj_propera", "REL/d/a/obj/d_a_obj_propera.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_pumpkin_bar", "REL/d/a/obj/d_a_obj_pumpkin_bar.cpp"),
|
||||
Rel(Matching, "d_a_obj_pumpkin_bar", "REL/d/a/obj/d_a_obj_pumpkin_bar.cpp"),
|
||||
Rel(Matching, "d_a_obj_pumpkin_leaf", "REL/d/a/obj/d_a_obj_pumpkin_leaf.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_push_block", "REL/d/a/obj/d_a_obj_push_block.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_puzzle_island", "REL/d/a/obj/d_a_obj_puzzle_island.cpp"),
|
||||
|
||||
@@ -2,11 +2,23 @@
|
||||
#define D_A_OBJ_PUMPKIN_BAR_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
|
||||
class dAcOpumpkinBar_c : public dAcObjBase_c {
|
||||
public:
|
||||
static void barCollisionRideCallback(dBgW *collider, dAcObjBase_c *actor, dAcObjBase_c *interactor);
|
||||
dAcOpumpkinBar_c() {}
|
||||
virtual ~dAcOpumpkinBar_c() {}
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual ~dAcOpumpkinBar_c() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
/* 0x330 */ m3d::smdl_c mModel;
|
||||
/* 0x34C */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x350 */ dBgW mBarCollision;
|
||||
/* 0x560 */ dBgW mBarBirdCollision;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
@@ -200,6 +200,9 @@ public:
|
||||
u16 GetField_0x22() const {
|
||||
return field_0x22;
|
||||
}
|
||||
void SetField_0x22(u16 val) {
|
||||
field_0x22 = val;
|
||||
}
|
||||
|
||||
bool ChkStickWall() const {
|
||||
return field_0x24 & 1;
|
||||
|
||||
@@ -1,3 +1,67 @@
|
||||
#include "d/a/obj/d_a_obj_pumpkin_bar.h"
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/d_stage.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(OBJ_PUMPKIN_BAR, dAcOpumpkinBar_c, fProfile::OBJ_PUMPKIN_BAR, 0x1ED, 0, 3);
|
||||
|
||||
void dAcOpumpkinBar_c::barCollisionRideCallback(dBgW *collider, dAcObjBase_c *actor, dAcObjBase_c *interactor) {
|
||||
if (interactor->isActorPlayer() && actor != 0 && !StoryflagManager::sInstance->getCounterOrFlag(282)) {
|
||||
StoryflagManager::sInstance->setFlag(282);
|
||||
}
|
||||
}
|
||||
|
||||
bool dAcOpumpkinBar_c::createHeap() {
|
||||
mResFile = nw4r::g3d::ResFile(getOarcResFile("IslBar"));
|
||||
dStage_c::bindStageResToFile(&mResFile);
|
||||
dStage_c::bindSkyCmnToResFile(&mResFile);
|
||||
|
||||
nw4r::g3d::ResMdl mdl = mResFile.GetResMdl("IslBar");
|
||||
TRY_CREATE(mModel.create(mdl, &heap_allocator, 0x120));
|
||||
|
||||
void *dzb = getOarcFile("IslBar", "dzb/IslBar.dzb");
|
||||
void *plc = getOarcFile("IslBar", "dat/IslBar.plc");
|
||||
updateMatrix();
|
||||
mModel.setLocalMtx(mWorldMtx);
|
||||
TRY_CREATE(!mBarCollision.Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
|
||||
mBarCollision.Lock();
|
||||
|
||||
dzb = getOarcFile("IslBar", "dzb/IslBar_Bird.dzb");
|
||||
plc = getOarcFile("IslBar", "dat/IslBar_Bird.plc");
|
||||
TRY_CREATE(!mBarBirdCollision.Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
|
||||
mBarBirdCollision.Lock();
|
||||
return true;
|
||||
}
|
||||
|
||||
int dAcOpumpkinBar_c::create() {
|
||||
CREATE_ALLOCATOR(dAcOpumpkinBar_c);
|
||||
dBgS::GetInstance()->Regist(&mBarCollision, this);
|
||||
dBgS::GetInstance()->Regist(&mBarBirdCollision, this);
|
||||
mBarBirdCollision.SetField_0x22(2);
|
||||
mModel.setPriorityDraw(0x1C, 0x9);
|
||||
// 100000.0 is in the rodata and the instructions need it.
|
||||
// This also works if a separate variable is used but I
|
||||
// think it's more likely that mCullingDistance got set twice.
|
||||
mCullingDistance = 100000.0;
|
||||
boundingBox.Set(mVec3_c(-2790.0f, -1450.0f, -8270.0f), mVec3_c(2880.0f, 2120.0f, 1370.0f));
|
||||
mCullingDistance = 500000.0;
|
||||
mBarCollision.SetRideCallback(barCollisionRideCallback);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOpumpkinBar_c::doDelete() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOpumpkinBar_c::actorExecute() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOpumpkinBar_c::draw() {
|
||||
drawModelType1(&mModel);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
dAcOpumpkinBar_c::~dAcOpumpkinBar_c() {}
|
||||
|
||||
Reference in New Issue
Block a user