mirror of
https://github.com/zeldaret/ss
synced 2026-05-31 09:21:42 -04:00
d_t_event OK
This commit is contained in:
@@ -1548,6 +1548,8 @@ d/tg/d_t_camera.cpp:
|
||||
d/tg/d_t_event.cpp:
|
||||
.text start:0x8027A370 end:0x8027A740 align:16
|
||||
.data start:0x80536718 end:0x805367A0
|
||||
.sdata start:0x80573B00 end:0x80573B08
|
||||
.sdata2 start:0x8057C648 end:0x8057C64C
|
||||
|
||||
d/tg/d_t_event_f.cpp:
|
||||
.text start:0x8027A740 end:0x8027AB30 align:16
|
||||
|
||||
+11
-11
@@ -14512,7 +14512,7 @@ fn_80274350 = .text:0x80274350; // type:function size:0x18
|
||||
setViewClipVals = .text:0x80274370; // type:function size:0x10
|
||||
fn_80274380 = .text:0x80274380; // type:function size:0x5C
|
||||
dTgSw_c_classInit__Fv = .text:0x802743E0; // type:function size:0xBC
|
||||
__dt__19sFState_c<7dTgSw_c>Fv = .text:0x802744A0; // type:function size:0x58 scope:weak
|
||||
__dt__5dTg_cFv = .text:0x802744A0; // type:function size:0x58 scope:weak
|
||||
__dt__22sFStateFct_c<7dTgSw_c>Fv = .text:0x80274500; // type:function size:0x6C scope:weak
|
||||
__dt__75sStateMgr_c<7dTgSw_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80274570; // type:function size:0xA0 scope:weak
|
||||
__dt__45sFStateMgr_c<7dTgSw_c,20sStateMethodUsr_FI_c>Fv = .text:0x80274610; // type:function size:0xA4 scope:weak
|
||||
@@ -14615,13 +14615,13 @@ fn_8027A230 = .text:0x8027A230; // type:function size:0x4C
|
||||
fn_8027A280 = .text:0x8027A280; // type:function size:0x4
|
||||
fn_8027A290 = .text:0x8027A290; // type:function size:0x74
|
||||
fn_8027A310 = .text:0x8027A310; // type:function size:0x60
|
||||
TgEvent__ctor = .text:0x8027A370; // type:function size:0x5C
|
||||
TgEvent__init = .text:0x8027A3D0; // type:function size:0x7C
|
||||
fn_8027A450 = .text:0x8027A450; // type:function size:0x8
|
||||
TgEvent__update = .text:0x8027A460; // type:function size:0x150
|
||||
TgEvent__updateInEvent = .text:0x8027A5B0; // type:function size:0x108
|
||||
fn_8027A6C0 = .text:0x8027A6C0; // type:function size:0x8
|
||||
fn_8027A6D0 = .text:0x8027A6D0; // type:function size:0x70
|
||||
dTgEvent_c_classInit__Fv = .text:0x8027A370; // type:function size:0x5C
|
||||
create__10dTgEvent_cFv = .text:0x8027A3D0; // type:function size:0x7C
|
||||
doDelete__10dTgEvent_cFv = .text:0x8027A450; // type:function size:0x8
|
||||
actorExecute__10dTgEvent_cFv = .text:0x8027A460; // type:function size:0x150
|
||||
actorExecuteInEvent__10dTgEvent_cFv = .text:0x8027A5B0; // type:function size:0x108
|
||||
draw__10dTgEvent_cFv = .text:0x8027A6C0; // type:function size:0x8
|
||||
__dt__10dTgEvent_cFv = .text:0x8027A6D0; // type:function size:0x70
|
||||
TgEventF__ctor = .text:0x8027A740; // type:function size:0x5C
|
||||
TgEventF__init = .text:0x8027A7A0; // type:function size:0x9C
|
||||
fn_8027A840 = .text:0x8027A840; // type:function size:0x8
|
||||
@@ -36460,7 +36460,7 @@ lbl_80536628 = .data:0x80536628; // type:object size:0x68
|
||||
g_profile_CAMERA2_TAG = .data:0x80536690; // type:object size:0x10
|
||||
lbl_805366A0 = .data:0x805366A0; // type:object size:0x78
|
||||
g_profile_EVENT_TAG = .data:0x80536718; // type:object size:0x10
|
||||
TgEvent__vtable = .data:0x80536728; // type:object size:0x78
|
||||
__vt__10dTgEvent_c = .data:0x80536728; // type:object size:0x78
|
||||
g_profile_EVENTF_TAG = .data:0x805367A0; // type:object size:0x10
|
||||
TgEventF__vtable = .data:0x805367B0; // type:object size:0x78
|
||||
g_profile_TAG_TKEVNT = .data:0x80536828; // type:object size:0x10
|
||||
@@ -41238,7 +41238,7 @@ lbl_80573AE0 = .sdata:0x80573AE0; // type:object size:0x7 data:string
|
||||
lbl_80573AE8 = .sdata:0x80573AE8; // type:object size:0x7 data:string
|
||||
lbl_80573AF0 = .sdata:0x80573AF0; // type:object size:0x4 data:4byte
|
||||
lbl_80573AF4 = .sdata:0x80573AF4; // type:object size:0x5 data:string
|
||||
lbl_80573B00 = .sdata:0x80573B00; // type:object size:0x8 data:4byte
|
||||
@23328 = .sdata:0x80573B00; // type:object size:0x8 data:4byte
|
||||
lbl_80573B08 = .sdata:0x80573B08; // type:object size:0x4 data:4byte
|
||||
lbl_80573B0C = .sdata:0x80573B0C; // type:object size:0x4 data:4byte
|
||||
lbl_80573B10 = .sdata:0x80573B10; // type:object size:0x4 data:4byte
|
||||
@@ -48501,7 +48501,7 @@ lbl_8057C630 = .sdata2:0x8057C630; // type:object size:0x4 align:4 data:float
|
||||
lbl_8057C634 = .sdata2:0x8057C634; // type:object size:0x4 align:4 data:float
|
||||
lbl_8057C638 = .sdata2:0x8057C638; // type:object size:0x4 align:4 data:float
|
||||
lbl_8057C640 = .sdata2:0x8057C640; // type:object size:0x4 align:4 data:float
|
||||
lbl_8057C648 = .sdata2:0x8057C648; // type:object size:0x4 align:4 data:float
|
||||
@23574 = .sdata2:0x8057C648; // type:object size:0x4 scope:local align:4 data:float
|
||||
lbl_8057C650 = .sdata2:0x8057C650; // type:object size:0x4 align:4 data:float
|
||||
lbl_8057C658 = .sdata2:0x8057C658; // type:object size:0x4 align:4 data:float
|
||||
lbl_8057C65C = .sdata2:0x8057C65C; // type:object size:0x4 align:4 data:float
|
||||
|
||||
+1
-1
@@ -644,7 +644,7 @@ config.libs = [
|
||||
Object(Matching, "d/tg/d_t_switch.cpp"),
|
||||
Object(NonMatching, "d/tg/d_t_mass_object.cpp"),
|
||||
Object(NonMatching, "d/tg/d_t_camera.cpp"),
|
||||
Object(NonMatching, "d/tg/d_t_event.cpp"),
|
||||
Object(Matching, "d/tg/d_t_event.cpp"),
|
||||
Object(NonMatching, "d/tg/d_t_event_f.cpp"),
|
||||
Object(NonMatching, "d/tg/d_tk_event.cpp"),
|
||||
Object(NonMatching, "toBeSorted/d_a_npc_inv.cpp"),
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef D_T_EVENT_H
|
||||
#define D_T_EVENT_H
|
||||
|
||||
#include "d/t/d_tg.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "toBeSorted/actor_event.h"
|
||||
|
||||
class dTgEvent_c : public dTg_c {
|
||||
public:
|
||||
dTgEvent_c() : mActorEvent(*this, nullptr) {}
|
||||
virtual ~dTgEvent_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int actorExecuteInEvent() override;
|
||||
virtual int draw() override;
|
||||
|
||||
bool checkUncommittedFlag(u16 flag);
|
||||
bool isValidFlag(u16 flag);
|
||||
|
||||
private:
|
||||
|
||||
/* 0x0FC */ ActorEventRelated mActorEvent;
|
||||
/* 0x14C */ mMtx_c mMatrix;
|
||||
/* 0x17C */ u32 mEventId;
|
||||
/* 0x180 */ u32 setSceneflag;
|
||||
/* 0x184 */ u32 trigSceneflag;
|
||||
/* 0x188 */ u32 subtype;
|
||||
/* 0x18C */ u32 unkParamFlag;
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,68 @@
|
||||
#include "d/t/d_t_event.h"
|
||||
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "f/f_base.h"
|
||||
#include "toBeSorted/area_math.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "toBeSorted/event.h"
|
||||
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(EVENT_TAG, dTgEvent_c, fProfile::EVENT_TAG, 0X13, 0, 0);
|
||||
|
||||
|
||||
int dTgEvent_c::create()
|
||||
{
|
||||
matrixCreateFromPosRotYScale(mMatrix, mPosition, mRotation.y, mScale, 0x0, 0.0f);
|
||||
mEventId = mParams & 0xFF;
|
||||
setSceneflag = mParams >> 8 & 0xFF;
|
||||
trigSceneflag = mParams >> 0x10 & 0xFF;
|
||||
subtype = mParams >> 0x18 & 0x3;
|
||||
unkParamFlag = mParams >> 0x1A & 1;
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dTgEvent_c::doDelete() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
inline u32 fun(const u32 &flag, const u32 &returnFlag) {
|
||||
u32 b = 0;
|
||||
if (flag & 1) b = returnFlag;
|
||||
return b;
|
||||
}
|
||||
|
||||
inline bool dTgEvent_c::checkUncommittedFlag(u16 flag) {
|
||||
return SceneflagManager::sInstance->checkUncommittedFlag(mRoomID, flag);
|
||||
}
|
||||
|
||||
inline bool dTgEvent_c::isValidFlag(u16 flag) {
|
||||
return flag < 0xFF;
|
||||
}
|
||||
|
||||
int dTgEvent_c::actorExecute() {
|
||||
if (!isValidFlag(trigSceneflag) || checkUncommittedFlag(trigSceneflag)) {
|
||||
if ((subtype != 0 && !(isValidFlag(setSceneflag) && checkUncommittedFlag(setSceneflag))) || (subtype == 0 && (isValidFlag(setSceneflag) && checkUncommittedFlag(setSceneflag)))) {
|
||||
if (checkIfVec3fInMatrix(mMatrix,dAcPy_c::LINK->mPosition)) {
|
||||
Event EStack_48 = Event(mEventId, mRoomID, fun(unkParamFlag, 0x1),0,0);
|
||||
mActorEvent.scheduleEvent(EStack_48,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dTgEvent_c::actorExecuteInEvent() {
|
||||
if (mActorEvent.isThisActorInEvent() != 0) {
|
||||
mActorEvent.advanceNext();
|
||||
if (subtype != 0 && isValidFlag(setSceneflag) && !checkUncommittedFlag(setSceneflag)) {
|
||||
SceneflagManager::sInstance->setFlag(mRoomID, setSceneflag);
|
||||
} else if (subtype == 0 && isValidFlag(setSceneflag) && checkUncommittedFlag(setSceneflag)) {
|
||||
SceneflagManager::sInstance->unsetFlag(mRoomID, setSceneflag);
|
||||
}
|
||||
}
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dTgEvent_c::draw() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
Reference in New Issue
Block a user