mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-11 03:25:52 -04:00
d_event OK
This commit is contained in:
+1
-1
@@ -366,7 +366,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/d_door.cpp"),
|
||||
Object(NonMatching, "d/d_resorce.cpp", extra_cflags=['-pragma "nosyminline on"']),
|
||||
Object(NonMatching, "d/d_material.cpp"),
|
||||
Object(NonMatching, "d/d_event.cpp"),
|
||||
Object(Matching, "d/d_event.cpp"),
|
||||
Object(Matching, "d/d_event_data.cpp"),
|
||||
Object(NonMatching, "d/d_event_manager.cpp"),
|
||||
Object(NonMatching, "d/d_magma.cpp"),
|
||||
|
||||
@@ -524,7 +524,8 @@ public:
|
||||
void setRStatus(u8 status) { field_0x492d = status; }
|
||||
u8 getRStatusForce() { return field_0x4930; }
|
||||
void setRStatusForce(u8 status) { field_0x4930 = status; }
|
||||
inline u8 getPictureStatus() { return mPictureStatus; }
|
||||
u8 getPictureStatus() { return mPictureStatus; }
|
||||
void setPictureStatusOn() { mPictureStatus = 2; }
|
||||
|
||||
u8 getScopeType() { return mbCamOverrideFarPlane; }
|
||||
void setScopeType(u8 v) { mbCamOverrideFarPlane = v; }
|
||||
@@ -2404,6 +2405,10 @@ inline u8 dComIfGp_getPictureStatus() {
|
||||
return g_dComIfG_gameInfo.play.getPictureStatus();
|
||||
}
|
||||
|
||||
inline void dComIfGp_setPictureStatusOn() {
|
||||
g_dComIfG_gameInfo.play.setPictureStatusOn();
|
||||
}
|
||||
|
||||
inline s16 dComIfGp_getMiniGameRupee() {
|
||||
return g_dComIfG_gameInfo.play.getMiniGameRupee();
|
||||
}
|
||||
|
||||
+2
-2
@@ -66,7 +66,7 @@ public:
|
||||
s32 order(u16, u16, u16, u16, void*, void*, s16, u8);
|
||||
void setParam(dEvt_order_c*);
|
||||
BOOL beforeFlagProc(dEvt_order_c*);
|
||||
BOOL afterFlagProc(dEvt_order_c*);
|
||||
void afterFlagProc(dEvt_order_c*);
|
||||
BOOL commonCheck(dEvt_order_c*, u16, u16);
|
||||
BOOL talkCheck(dEvt_order_c*);
|
||||
BOOL talkXyCheck(dEvt_order_c*);
|
||||
@@ -120,7 +120,7 @@ public:
|
||||
void reset() { onEventFlag(8); }
|
||||
|
||||
bool runCheck() { return mMode != 0; }
|
||||
u8 getMode() { return mMode; }
|
||||
u32 getMode() { return mMode & 0xFF; } // &0xFF added to fix dEvt_control_c::moveApproval, probably fakematch
|
||||
|
||||
void checkHind(u16) {}
|
||||
void chkPhoto() {}
|
||||
|
||||
@@ -67,6 +67,7 @@ enum fopAc_AttentionFlag_e {
|
||||
fopAc_Attn_ACTION_DOOR_e = 0x00000020,
|
||||
fopAc_Attn_ACTION_TREASURE_e = 0x00000040,
|
||||
fopAc_Attn_ACTION_SHIP_e = 0x00000080,
|
||||
fopAc_Attn_UNK1000000_e = 0x01000000,
|
||||
fopAc_Attn_TALKFLAG_NOTALK_e = 0x02000000,
|
||||
fopAc_Attn_ENEMYFLAG_NOLOCKON_e = 0x04000000,
|
||||
fopAc_Attn_TALKFLAG_LOOK_e = 0x08000000,
|
||||
@@ -166,22 +167,22 @@ public:
|
||||
void setCommand(u16 command) { mCommand = command; }
|
||||
|
||||
void setXyEventCB(CallbackFunc cb) { mpEventCB = cb; }
|
||||
s16 runXyEventCB(void* ac, int flag) {
|
||||
s16 runXyEventCB(void* ac, int equippedItemIdx) {
|
||||
if (mpEventCB == NULL)
|
||||
return -1;
|
||||
return mpEventCB(ac, flag);
|
||||
return mpEventCB(ac, equippedItemIdx);
|
||||
}
|
||||
void setXyCheckCB(CallbackFunc cb) { mpCheckCB = cb; }
|
||||
s16 runXyCheckCB(void* ac, int flag) {
|
||||
s16 runXyCheckCB(void* ac, int equippedItemIdx) {
|
||||
if (mpCheckCB == NULL)
|
||||
return -1;
|
||||
return mpCheckCB(ac, flag);
|
||||
return mpCheckCB(ac, equippedItemIdx);
|
||||
}
|
||||
void setPhotoEventCB(CallbackFunc cb) { mpPhotoCB = cb; }
|
||||
s16 runPhotoEventCB(void* ac, int flag) {
|
||||
s16 runPhotoEventCB(void* ac, int equippedItemIdx) {
|
||||
if (mpPhotoCB == NULL)
|
||||
return -1;
|
||||
return mpPhotoCB(ac, flag);
|
||||
return mpPhotoCB(ac, equippedItemIdx);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
@@ -156,7 +156,7 @@ void JAIZelBasic::heartGaugeOn() {
|
||||
/* 802A2F54-802A3058 .text processHeartGaugeSound__11JAIZelBasicFv */
|
||||
void JAIZelBasic::processHeartGaugeSound() {
|
||||
/* Nonmatching */
|
||||
if (dComIfGp_event_getMode() == 0 && field_0x0040) {
|
||||
if (dComIfGp_event_getMode() == dEvtMode_NONE_e && field_0x0040) {
|
||||
if (field_0x0034 && field_0x0206 == 0) {
|
||||
if (field_0x0034 <= 2) {
|
||||
seStart(JA_SE_ALMOST_DIE_ALERM_3, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
||||
|
||||
+126
-21
@@ -103,7 +103,7 @@ BOOL dEvt_control_c::beforeFlagProc(dEvt_order_c* order) {
|
||||
}
|
||||
|
||||
/* 8007018C-80070218 .text afterFlagProc__14dEvt_control_cFP12dEvt_order_c */
|
||||
BOOL dEvt_control_c::afterFlagProc(dEvt_order_c* order) {
|
||||
void dEvt_control_c::afterFlagProc(dEvt_order_c* order) {
|
||||
if ((order->mFlag & dEvtFlag_NOPARTNER_e))
|
||||
mPt2 = getPId(NULL);
|
||||
|
||||
@@ -153,14 +153,66 @@ BOOL dEvt_control_c::talkCheck(dEvt_order_c* order) {
|
||||
|
||||
/* 80070390-8007055C .text talkXyCheck__14dEvt_control_cFP12dEvt_order_c */
|
||||
BOOL dEvt_control_c::talkXyCheck(dEvt_order_c* order) {
|
||||
/* Nonmatching */
|
||||
const char* defaultEventName = "DEFAULT_TALK_XY";
|
||||
OSReport("DEFAULT_TALK_XY");
|
||||
|
||||
fopAc_ac_c* actor2 = order->mActor2;
|
||||
|
||||
int equippedItemIdx;
|
||||
switch (order->mEventType) {
|
||||
case dEvtType_SHOWITEM_X_e:
|
||||
equippedItemIdx = 0;
|
||||
break;
|
||||
case dEvtType_SHOWITEM_Y_e:
|
||||
equippedItemIdx = 1;
|
||||
break;
|
||||
default:
|
||||
equippedItemIdx = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dComIfGp_getSelectItem(equippedItemIdx) == NO_ITEM) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (actor2 == NULL || !actor2->mEvtInfo.chkCondition(dEvtCnd_CANTALKITEM_e)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (commonCheck(order, dEvtCnd_CANTALK_e, dEvtCmd_INTALK_e)) {
|
||||
mMode = dEvtMode_TALK_e;
|
||||
mItemNo = dComIfGp_getSelectItem(equippedItemIdx);
|
||||
|
||||
switch (order->mEventType) {
|
||||
case dEvtType_SHOWITEM_X_e:
|
||||
mTalkButton = 1;
|
||||
break;
|
||||
case dEvtType_SHOWITEM_Y_e:
|
||||
mTalkButton = 2;
|
||||
break;
|
||||
default:
|
||||
mTalkButton = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
// Fakematch
|
||||
s16 r3;
|
||||
if (actor2 != NULL && (r3 = actor2->mEvtInfo.runXyEventCB(actor2, equippedItemIdx), r3 != -1)) {
|
||||
mEventId = r3;
|
||||
} else {
|
||||
mEventId = dComIfGp_evmng_getEventIdx(defaultEventName, 0xFF);
|
||||
}
|
||||
|
||||
if (!dComIfGp_evmng_order(mEventId)) {
|
||||
JUT_ASSERT(401, 0);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 8007055C-800706D8 .text photoCheck__14dEvt_control_cFP12dEvt_order_c */
|
||||
BOOL dEvt_control_c::photoCheck(dEvt_order_c* order) {
|
||||
/* Nonmatching */
|
||||
fopAc_ac_c* actor2 = order->mActor2;
|
||||
const char* defaultEventName = "DEFAULT_TALK";
|
||||
|
||||
@@ -188,7 +240,7 @@ BOOL dEvt_control_c::photoCheck(dEvt_order_c* order) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 800706D8-800707C0 .text catchCheck__14dEvt_control_cFP12dEvt_order_c */
|
||||
@@ -361,16 +413,20 @@ BOOL dEvt_control_c::endProc() {
|
||||
|
||||
/* 80070DD4-80070E1C .text checkChange__14dEvt_control_cFv */
|
||||
BOOL dEvt_control_c::checkChange() {
|
||||
/* Nonmatching */
|
||||
if (mOrderCount != 0) {
|
||||
s8 idx = mFirstOrderIdx;
|
||||
dEvt_order_c* order;
|
||||
s8 nextIdx = mFirstOrderIdx;
|
||||
while (true) {
|
||||
s8 nextIdx = mOrder[idx].mNextOrderIdx;
|
||||
if ((s32)mOrder[idx].mEventType == dEvtType_CHANGE_e)
|
||||
order = &mOrder[nextIdx];
|
||||
nextIdx = order->mNextOrderIdx;
|
||||
if ((s32)order->mEventType != dEvtType_CHANGE_e) {
|
||||
// Fakematch, assigning a float member to itself tricks the compiler into creating a beq then a b.
|
||||
mCullFarClipRatio = mCullFarClipRatio;
|
||||
} else {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
idx = nextIdx;
|
||||
if (idx < 0)
|
||||
if (nextIdx < 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -380,17 +436,20 @@ BOOL dEvt_control_c::checkChange() {
|
||||
|
||||
/* 80070E1C-80070EA8 .text changeProc__14dEvt_control_cFv */
|
||||
BOOL dEvt_control_c::changeProc() {
|
||||
/* Nonmatching */
|
||||
if (mOrderCount != 0) {
|
||||
mOrderCount = 0;
|
||||
s8 idx = mFirstOrderIdx;
|
||||
s8 nextIdx = mFirstOrderIdx;
|
||||
while (true) {
|
||||
s8 nextIdx = mOrder[idx].mNextOrderIdx;
|
||||
if ((s32)mOrder[idx].mEventType == dEvtType_CHANGE_e && demoCheck(&mOrder[idx]))
|
||||
dEvt_order_c* order = &mOrder[nextIdx];
|
||||
nextIdx = order->mNextOrderIdx;
|
||||
if ((s32)order->mEventType != dEvtType_CHANGE_e) {
|
||||
// Fakematch, assigning a float member to itself tricks the compiler into creating a beq then a b.
|
||||
mCullFarClipRatio = mCullFarClipRatio;
|
||||
} else if (demoCheck(order)) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
idx = nextIdx;
|
||||
if (idx < 0)
|
||||
if (nextIdx < 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -500,12 +559,58 @@ BOOL dEvt_control_c::check() {
|
||||
|
||||
/* 80071140-80071270 .text photoCheck__14dEvt_control_cFv */
|
||||
BOOL dEvt_control_c::photoCheck() {
|
||||
/* Nonmatching */
|
||||
fopAc_ac_c* actor1;
|
||||
fopAc_ac_c* actor2;
|
||||
s8 orderIdx = mFirstOrderIdx;
|
||||
if (mOrderCount != 0) {
|
||||
dEvt_order_c* order = &mOrder[orderIdx];
|
||||
int equippedItemIdx = -1;
|
||||
switch (order->mEventType) {
|
||||
case dEvtType_SHOWITEM_X_e:
|
||||
equippedItemIdx = 0;
|
||||
break;
|
||||
case dEvtType_SHOWITEM_Y_e:
|
||||
equippedItemIdx = 1;
|
||||
break;
|
||||
case dEvtType_SHOWITEM_Z_e:
|
||||
equippedItemIdx = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (equippedItemIdx != -1 &&
|
||||
(dComIfGp_getSelectItem(equippedItemIdx) == CAMERA || dComIfGp_getSelectItem(equippedItemIdx) == CAMERA2) &&
|
||||
dComIfGs_getPictureNum() != 0
|
||||
) {
|
||||
actor2 = order->mActor2;
|
||||
if (actor2 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (!(actor2->mAttentionInfo.mFlags & fopAc_Attn_UNK1000000_e)) {
|
||||
return FALSE;
|
||||
}
|
||||
if (dComIfGp_getPictureStatus() == 2) {
|
||||
return FALSE;
|
||||
}
|
||||
actor1 = order->mActor1;
|
||||
if (actor1 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (!actor1->mEvtInfo.chkCondition(dEvtCnd_CANTALK_e) ||
|
||||
!actor2->mEvtInfo.chkCondition(dEvtCnd_CANTALK_e)
|
||||
) {
|
||||
return FALSE;
|
||||
}
|
||||
order->mEventType = dEvtType_PHOTO_e;
|
||||
dComIfGp_setPictureStatusOn();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 80071270-80071418 .text moveApproval__14dEvt_control_cFPv */
|
||||
s32 dEvt_control_c::moveApproval(void* actor) {
|
||||
/* Nonmatching */
|
||||
fopAc_ac_c* i_ac = (fopAc_ac_c*)actor;
|
||||
if (getMode() == dEvtMode_NONE_e)
|
||||
return dEvtMove_MOVE_e;
|
||||
@@ -547,7 +652,7 @@ s32 dEvt_control_c::moveApproval(void* actor) {
|
||||
|
||||
/* 80071418-80071468 .text compulsory__14dEvt_control_cFPvPCcUs */
|
||||
BOOL dEvt_control_c::compulsory(void* actor, const char* eventName, u16 p3) {
|
||||
if (getMode() != 0)
|
||||
if (getMode() != dEvtMode_NONE_e)
|
||||
return FALSE;
|
||||
|
||||
return orderOld(dEvtType_COMPULSORY_e, 1, 0, p3, actor, NULL, eventName);
|
||||
@@ -573,7 +678,7 @@ void dEvt_control_c::remove() {
|
||||
/* 800714AC-80071534 .text getStageEventDt__14dEvt_control_cFv */
|
||||
dStage_Event_dt_c* dEvt_control_c::getStageEventDt() {
|
||||
dStage_EventInfo_c* stageEventInfo = dComIfGp_getStageEventInfo();
|
||||
if (getMode() == 0)
|
||||
if (getMode() == dEvtMode_NONE_e)
|
||||
return NULL;
|
||||
|
||||
if (stageEventInfo == NULL || mEventInfoIdx == 0xFF || mEventInfoIdx >= stageEventInfo->num)
|
||||
|
||||
@@ -405,7 +405,7 @@ int dEvent_manager_c::getMyStaffId(const char* name, fopAc_ac_c* actor, int tagI
|
||||
|
||||
for (s32 i = 0; i < mList.getEventNum(); i++) {
|
||||
dEvDtEvent_c* event = mList.getEventP(i);
|
||||
if (event->mEventState == 2 || event->mEventState == 4 || event->mEventState == 3) {
|
||||
if (event->mEventState == dEvDtEvent_c::PLAY_e || event->mEventState == dEvDtEvent_c::CLOSE_e || event->mEventState == dEvDtEvent_c::UNK3_e) {
|
||||
s32 nStaff = event->getNStaff();
|
||||
for (s32 j = 0; j < nStaff; j++) {
|
||||
u32 staffIdx = event->getStaff(j);
|
||||
|
||||
+4
-4
@@ -173,7 +173,7 @@ BOOL dTimer_c::_execute() {
|
||||
|
||||
if (mState == 0 || mState == 2) {
|
||||
if (mTimerMode == 3 || mTimerMode == 2) {
|
||||
if (dMenu_flag() || dComIfGp_event_getMode() == 1)
|
||||
if (dMenu_flag() || dComIfGp_event_getMode() == dEvtMode_TALK_e)
|
||||
stop(1);
|
||||
else
|
||||
restart(1);
|
||||
@@ -433,7 +433,7 @@ void dDlst_TimerScrnDraw_c::setTimer(int time) {
|
||||
changeNumberTexture(mTimerNumber[2], sec % 10);
|
||||
changeNumberTexture(mTimerNumber[3], ms / 100);
|
||||
changeNumberTexture(mTimerNumber[4], (ms % 100) / 10);
|
||||
if (dComIfGp_event_getMode() == 1) {
|
||||
if (dComIfGp_event_getMode() == dEvtMode_TALK_e) {
|
||||
if (mClockIcon.mUserArea < 5) {
|
||||
mClockIcon.mUserArea++;
|
||||
s16 alphaStep = 5 - mClockIcon.mUserArea;
|
||||
@@ -448,7 +448,7 @@ void dDlst_TimerScrnDraw_c::setTimer(int time) {
|
||||
} else {
|
||||
if (mClockIcon.mUserArea > 0) {
|
||||
mClockIcon.mUserArea--;
|
||||
int alphaStep = 5 - mClockIcon.mUserArea;
|
||||
s16 alphaStep = 5 - mClockIcon.mUserArea;
|
||||
f32 alpha = ((f32)alphaStep * (f32)alphaStep) / 25.0f;
|
||||
fopMsgM_setNowAlpha(&mClockIcon, alpha);
|
||||
fopMsgM_setNowAlpha(&mClockBG, alpha);
|
||||
@@ -486,7 +486,7 @@ void dDlst_TimerScrnDraw_c::setRupee(s16 num) {
|
||||
changeNumberTexture(mRupeeNumberShadow[2], r100);
|
||||
}
|
||||
|
||||
if (dComIfGp_event_getMode() == 1) {
|
||||
if (dComIfGp_event_getMode() == dEvtMode_TALK_e) {
|
||||
if (mRupee.mUserArea < 5) {
|
||||
mRupee.mUserArea++;
|
||||
s16 alphaStep = mRupee.mUserArea;
|
||||
|
||||
Reference in New Issue
Block a user