mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-19 13:24:12 -04:00
d_s_open_sub work
This commit is contained in:
+309
-4
@@ -6,6 +6,8 @@
|
||||
#include "d/d_s_open.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "f_op/f_op_msg_mng.h"
|
||||
#include "f_op/f_op_overlap_mng.h"
|
||||
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
||||
#include "JSystem/J2DGraph/J2DScreen.h"
|
||||
#include "JSystem/J2DGraph/J2DTextBox.h"
|
||||
#include "JSystem/JKernel/JKRExpHeap.h"
|
||||
@@ -22,13 +24,24 @@ void dScnOpen_message_c::exec() {
|
||||
}
|
||||
|
||||
/* 80233524-80233620 .text __ct__18dScnOpen_message_cFP10JKRExpHeap */
|
||||
dScnOpen_message_c::dScnOpen_message_c(JKRExpHeap*) {
|
||||
dScnOpen_message_c::dScnOpen_message_c(JKRExpHeap* heap) {
|
||||
/* Nonmatching */
|
||||
exp_heap = heap;
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(exp_heap);
|
||||
tFont = mDoExt_getMesgFont();
|
||||
JUT_ASSERT(0xCD, tFont != NULL);
|
||||
rFont = mDoExt_getRubyFont();
|
||||
JUT_ASSERT(0xD0, rFont != NULL);
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
}
|
||||
|
||||
/* 80233620-80233698 .text __dt__18dScnOpen_message_cFv */
|
||||
dScnOpen_message_c::~dScnOpen_message_c() {
|
||||
/* Nonmatching */
|
||||
mDoExt_removeMesgFont();
|
||||
mDoExt_removeRubyFont();
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(exp_heap);
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
}
|
||||
|
||||
/* 80233698-80233B0C .text __ct__15dScnOpen_proc_cFv */
|
||||
@@ -36,7 +49,7 @@ dScnOpen_proc_c::dScnOpen_proc_c() {
|
||||
/* Nonmatching */
|
||||
exp_heap = fopMsgM_createExpHeap(0x20000);
|
||||
JUT_ASSERT(0xe2, exp_heap != NULL);
|
||||
JKRHeap* oldHeap = mDoExt_setCurrentHeap(exp_heap);
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(exp_heap);
|
||||
m_Screen = new J2DScreen();
|
||||
JUT_ASSERT(0xe7, m_Screen != NULL);
|
||||
m_message = new dScnOpen_message_c(exp_heap);
|
||||
@@ -56,21 +69,313 @@ dScnOpen_proc_c::dScnOpen_proc_c() {
|
||||
tx1 = (J2DTextBox*)m_Screen->search('\0tx1');
|
||||
tx2 = (J2DTextBox*)m_Screen->search('\0tx2');
|
||||
tx1->move(tx1->mBounds.i.x, 376.0f);
|
||||
m_message->field_0x22c4 = tx1;
|
||||
m_message->field_0x22c8 = tx2;
|
||||
m_message->field_0x22c4->setFont(m_message->tFont);
|
||||
m_message->field_0x22c8->setFont(m_message->rFont);
|
||||
m_message->field_0x22c8->setLineSpace(m_message->field_0x22c4->getLineSpace());
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(pane); i++) {
|
||||
fopMsgM_setPaneData(&pane[i], &d1[i]);
|
||||
fopMsgM_setNowAlpha(&pane[i], 0.0f);
|
||||
fopMsgM_setAlpha(&pane[i]);
|
||||
}
|
||||
|
||||
for (s32 i = 7; i < 9; i++) {
|
||||
fopMsgM_setNowAlpha(&pane[i], 1.0f);
|
||||
fopMsgM_setAlpha(&pane[i]);
|
||||
}
|
||||
|
||||
m_message->set_message(0, 0);
|
||||
mState = 0;
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
}
|
||||
|
||||
/* 80233B0C-80233BE4 .text __dt__15dScnOpen_proc_cFv */
|
||||
dScnOpen_proc_c::~dScnOpen_proc_c() {
|
||||
/* Nonmatching */
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(exp_heap);
|
||||
delete m_Screen;
|
||||
m_Screen = NULL;
|
||||
delete m_message;
|
||||
m_message = NULL;
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
fopMsgM_destroyExpHeap(exp_heap);
|
||||
}
|
||||
|
||||
/* 80233BE4-802344D8 .text proc_execute__15dScnOpen_proc_cFv */
|
||||
void dScnOpen_proc_c::proc_execute() {
|
||||
/* Nonmatching */
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(exp_heap);
|
||||
m_message->exec();
|
||||
switch (mState) {
|
||||
case 0:
|
||||
mTimer = 0;
|
||||
mState = 1;
|
||||
case 1:
|
||||
if (mTimer >= 90)
|
||||
mState = 2;
|
||||
else
|
||||
mTimer++;
|
||||
if (mTimer == 40 && ! fopOvlpM_IsPeek())
|
||||
mDoAud_bgmStreamPrepare(JA_STRM_DEMO_01_01);
|
||||
break;
|
||||
case 2:
|
||||
mDoAud_bgmStreamPlay();
|
||||
m_message->set_message(0x58e, 1);
|
||||
fopMsgM_paneTrans(&pane[9], 0.0f, -190.0f);
|
||||
fopMsgM_paneTrans(&pane[10], 0.0f, -190.0f);
|
||||
mState = 3;
|
||||
case 3:
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 4;
|
||||
break;
|
||||
case 4:
|
||||
fopMsgM_paneTrans(&pane[9], 0.0f, 0.0f);
|
||||
fopMsgM_paneTrans(&pane[10], 0.0f, 0.0f);
|
||||
mTimer = 0;
|
||||
mState = 5;
|
||||
case 5:
|
||||
if (mTimer >= 60)
|
||||
mState = 6;
|
||||
else
|
||||
mTimer++;
|
||||
break;
|
||||
case 6:
|
||||
fopMsgM_setNowAlpha(&pane[0], 0.0f);
|
||||
mPosX = 0.0f;
|
||||
mAlpha = 0.0f;
|
||||
mState = 7;
|
||||
case 7:
|
||||
mPosX -= 0.5719626f;
|
||||
mAlpha += 0.067f;
|
||||
if (mAlpha >= 1.0f) {
|
||||
mAlpha = 1.0f;
|
||||
mState = 8;
|
||||
}
|
||||
fopMsgM_paneTrans(&pane[0], 0.0f, mPosX);
|
||||
fopMsgM_setNowAlpha(&pane[0], mAlpha);
|
||||
break;
|
||||
case 8:
|
||||
m_message->set_message(0x579, 2);
|
||||
fopMsgM_setNowAlpha(&pane[0], 1.0f);
|
||||
mState = 9;
|
||||
case 9:
|
||||
mPosX -= 0.5719626f;
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 10;
|
||||
fopMsgM_paneTrans(&pane[0], 0.0f, mPosX);
|
||||
break;
|
||||
case 10:
|
||||
fopMsgM_setNowAlpha(&pane[0], 1.0f);
|
||||
fopMsgM_setNowAlpha(&pane[1], 0.0f);
|
||||
mAlpha = 0;
|
||||
mState = 11;
|
||||
case 11:
|
||||
mPosX -= 0.5719626f;
|
||||
mAlpha += 0.0223f;
|
||||
if (mAlpha >= 1.0f) {
|
||||
mAlpha = 1.0f;
|
||||
mState = 12;
|
||||
}
|
||||
fopMsgM_paneTrans(&pane[0], 0.0f, mPosX);
|
||||
fopMsgM_setNowAlpha(&pane[0], 1.0f - mAlpha);
|
||||
fopMsgM_setNowAlpha(&pane[1], mAlpha);
|
||||
break;
|
||||
case 12:
|
||||
m_message->set_message(0x57b, 3);
|
||||
mState = 13;
|
||||
case 13:
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 14;
|
||||
break;
|
||||
case 14:
|
||||
mAlpha = 1.0f;
|
||||
mState = 15;
|
||||
case 15:
|
||||
mAlpha -= 0.067f;
|
||||
if (mAlpha <= 0.0f) {
|
||||
mAlpha = 0.0f;
|
||||
mState = 16;
|
||||
}
|
||||
fopMsgM_setNowAlpha(&pane[1], mAlpha);
|
||||
break;
|
||||
case 16:
|
||||
mAlpha = 0.0f;
|
||||
mState = 17;
|
||||
case 17:
|
||||
mAlpha += 0.067f;
|
||||
if (mAlpha >= 1.0f) {
|
||||
mAlpha = 1.0f;
|
||||
mState = 18;
|
||||
}
|
||||
fopMsgM_setNowAlpha(&pane[2], mAlpha);
|
||||
break;
|
||||
case 18:
|
||||
m_message->set_message(0x57e, 2);
|
||||
fopMsgM_setNowAlpha(&pane[2], 1.0f);
|
||||
mState = 19;
|
||||
case 19:
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 20;
|
||||
break;
|
||||
case 20:
|
||||
mAlpha = 1.0f;
|
||||
mState = 21;
|
||||
case 21:
|
||||
mAlpha -= 0.067f;
|
||||
if (mAlpha <= 0.0f) {
|
||||
mAlpha = 0.0f;
|
||||
mState = 22;
|
||||
}
|
||||
fopMsgM_setNowAlpha(&pane[2], mAlpha);
|
||||
break;
|
||||
case 22:
|
||||
mPosX = 0.0f;
|
||||
mAlpha = 0.0f;
|
||||
mState = 23;
|
||||
case 23:
|
||||
mPosX -= 0.4748201f;
|
||||
mAlpha += 0.067f;
|
||||
if (mAlpha >= 1.0f) {
|
||||
mAlpha = 1.0f;
|
||||
mState = 24;
|
||||
}
|
||||
fopMsgM_paneTrans(&pane[3], mPosX, 0.0f);
|
||||
fopMsgM_setNowAlpha(&pane[3], mAlpha);
|
||||
fopMsgM_setNowAlpha(&pane[4], mAlpha);
|
||||
break;
|
||||
case 24:
|
||||
m_message->set_message(0x580, 5);
|
||||
fopMsgM_setNowAlpha(&pane[3], 1.0f);
|
||||
fopMsgM_setNowAlpha(&pane[4], 1.0f);
|
||||
mState = 25;
|
||||
case 25:
|
||||
mPosX -= 0.4748201f;
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 26;
|
||||
fopMsgM_paneTrans(&pane[3], mPosX, 0.0f);
|
||||
break;
|
||||
case 26:
|
||||
fopMsgM_setNowAlpha(&pane[3], 1.0f);
|
||||
fopMsgM_setNowAlpha(&pane[4], 1.0f);
|
||||
fopMsgM_setNowAlpha(&pane[5], 0.0f);
|
||||
mAlpha = 0.0f;
|
||||
mState = 27;
|
||||
case 27:
|
||||
mPosX -= 0.4748201f;
|
||||
mAlpha += 0.0223f;
|
||||
if (mAlpha >= 1.0f) {
|
||||
mAlpha = 1.0f;
|
||||
mState = 28;
|
||||
}
|
||||
fopMsgM_paneTrans(&pane[3], mPosX, 0.0f);
|
||||
fopMsgM_setNowAlpha(&pane[3], 1.0f - mAlpha);
|
||||
fopMsgM_setNowAlpha(&pane[4], 1.0f - mAlpha);
|
||||
fopMsgM_setNowAlpha(&pane[5], mAlpha);
|
||||
break;
|
||||
case 28:
|
||||
m_message->set_message(0x585, 4);
|
||||
fopMsgM_setNowAlpha(&pane[5], 1.0f);
|
||||
mState = 29;
|
||||
case 29:
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 30;
|
||||
break;
|
||||
case 30:
|
||||
mAlpha = 1.0f;
|
||||
mState = 31;
|
||||
case 31:
|
||||
mAlpha -= 0.067f;
|
||||
if (mAlpha <= 0.0f) {
|
||||
mAlpha = 0.0f;
|
||||
mState = 32;
|
||||
}
|
||||
fopMsgM_setNowAlpha(&pane[5], mAlpha);
|
||||
break;
|
||||
case 32:
|
||||
mTimer = 0;
|
||||
mState = 31;
|
||||
case 33:
|
||||
if (mTimer >= 90)
|
||||
mState = 34;
|
||||
else
|
||||
mTimer++;
|
||||
break;
|
||||
case 34:
|
||||
m_message->set_message(0x589, 1);
|
||||
fopMsgM_paneTrans(&pane[9], 0.0f, -190.0f);
|
||||
fopMsgM_paneTrans(&pane[10], 0.0f, -190.0f);
|
||||
mState = 35;
|
||||
case 35:
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 36;
|
||||
break;
|
||||
case 36:
|
||||
fopMsgM_paneTrans(&pane[9], 0.0f, 0.0f);
|
||||
fopMsgM_paneTrans(&pane[10], 0.0f, 0.0f);
|
||||
mTimer = 0;
|
||||
mState = 37;
|
||||
case 37:
|
||||
if (mTimer >= 60)
|
||||
mState = 38;
|
||||
else
|
||||
mTimer++;
|
||||
break;
|
||||
case 38:
|
||||
mScale = 2.0f;
|
||||
mAlpha = 0.0f;
|
||||
mState = 39;
|
||||
case 39:
|
||||
mScale -= 0.0007633588f;
|
||||
mAlpha += 0.067f;
|
||||
if (mAlpha >= 1.0f) {
|
||||
mAlpha = 1.0f;
|
||||
mState = 40;
|
||||
}
|
||||
fopMsgM_setNowAlpha(&pane[7], mAlpha);
|
||||
fopMsgM_paneScaleXY(&pane[7], mScale);
|
||||
break;
|
||||
case 40:
|
||||
m_message->set_message(0x58a, 4);
|
||||
fopMsgM_setNowAlpha(&pane[6], 1.0f);
|
||||
mState = 41;
|
||||
case 41:
|
||||
mScale -= 0.0007633588f;
|
||||
if (mScale < 1.0f)
|
||||
mScale = 1.0f;
|
||||
fopMsgM_paneScaleXY(&pane[6], mScale);
|
||||
if (m_message->field_0x22e8 != 0)
|
||||
mState = 42;
|
||||
break;
|
||||
case 42:
|
||||
mAlpha = 1.0f;
|
||||
mState = 43;
|
||||
case 43:
|
||||
mAlpha -= 0.067f;
|
||||
if (mAlpha <= 0.0f) {
|
||||
mAlpha = 0.0f;
|
||||
mState = 44;
|
||||
}
|
||||
fopMsgM_setNowAlpha(&pane[6], mAlpha);
|
||||
break;
|
||||
case 44:
|
||||
break;
|
||||
}
|
||||
|
||||
f32 alpha = m_message->field_0x22d8;
|
||||
fopMsgM_setNowAlpha(&pane[9], alpha);
|
||||
fopMsgM_setNowAlpha(&pane[10], alpha);
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(pane); i++)
|
||||
fopMsgM_setAlpha(&pane[i]);
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
}
|
||||
|
||||
/* 802344D8-80234550 .text proc_draw__15dScnOpen_proc_cFv */
|
||||
void dScnOpen_proc_c::proc_draw() {
|
||||
/* Nonmatching */
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(exp_heap);
|
||||
J2DOrthoGraph* graf = dComIfGp_getCurrentGrafPort();
|
||||
graf->setPort();
|
||||
m_Screen->draw(0.0f, 0.0f, graf);
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
}
|
||||
|
||||
/* 80234550-80234570 .text draw__15dScnOpen_proc_cFv */
|
||||
|
||||
Reference in New Issue
Block a user