mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-10-08 20:41:23 -04:00
Delta time msg
This commit is contained in:
@@ -197,12 +197,16 @@ struct jmessage_tReference : public JMessage::TReference {
|
||||
void addDrawLightCount() { mDrawLightCount++; }
|
||||
void setCharAlpha(f32 alpha) { mCharAlpha = alpha; }
|
||||
|
||||
#if TARGET_PC
|
||||
void addCharAlpha();
|
||||
#else
|
||||
void addCharAlpha() {
|
||||
mCharAlpha += mAddCharAlpha;
|
||||
if (mCharAlpha > 255.0f) {
|
||||
mCharAlpha = 255.0f;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void setLineLength(int i_no, f32 i_strLen, f32 i_spaceLen) {
|
||||
mStrLength[i_no] = i_strLen;
|
||||
@@ -215,12 +219,16 @@ struct jmessage_tReference : public JMessage::TReference {
|
||||
}
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void addCharAllAlphaRate();
|
||||
#else
|
||||
void addCharAllAlphaRate() {
|
||||
mCharAllAlphaRate += mAddCharAllAlphaRate;
|
||||
if (mCharAllAlphaRate > 1.0f) {
|
||||
mCharAllAlphaRate = 1.0f;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void addLineLength(int param_0, f32 param_1, f32 param_2) {
|
||||
mStrLength[param_0] += param_1;
|
||||
|
||||
@@ -21,6 +21,9 @@ public:
|
||||
int _create(msg_class*);
|
||||
int _execute();
|
||||
int _draw();
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
#endif
|
||||
int _delete();
|
||||
void setMessageIndex(u32, u32, bool);
|
||||
void setMessageIndexDemo(u32, bool);
|
||||
@@ -285,7 +288,7 @@ public:
|
||||
/* 0x164 */ u16 mNodeIdx;
|
||||
/* 0x166 */ u16 field_0x166;
|
||||
/* 0x168 */ u16 field_0x168;
|
||||
/* 0x16A */ s16 field_0x16a;
|
||||
/* 0x16A */ DUSK_IF_ELSE(f32, s16) field_0x16a;
|
||||
/* 0x16C */ s16 mCurrentGroupID; // group whose BMG is parsed; -1 none, 0 common, 1-8 stage
|
||||
/* 0x16E */ s16 field_0x16e;
|
||||
/* 0x170 */ s16 mNowTalkFlowNo;
|
||||
|
||||
@@ -39,7 +39,7 @@ class COutFont_c {
|
||||
public:
|
||||
COutFont_c(u8);
|
||||
void initialize();
|
||||
void setBlendAnime(J2DPicture*, s16);
|
||||
void setBlendAnime(J2DPicture*, DUSK_IF_ELSE(f32, s16));
|
||||
const char* getBtiName(int);
|
||||
|
||||
virtual ~COutFont_c();
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
/* 0x1A8 */ f32 mAlphaRatio;
|
||||
/* 0x1AC */ f32 field_0x1ac;
|
||||
/* 0x1B0 */ f32 field_0x1b0;
|
||||
/* 0x1B4 */ s16 field_0x1b4[70];
|
||||
/* 0x1B4 */ DUSK_IF_ELSE(f32, s16) field_0x1b4[70];
|
||||
/* 0x240 */ bool field_0x240;
|
||||
/* 0x241 */ u8 mRupeeColor;
|
||||
/* 0x242 */ u8 field_0x242;
|
||||
|
||||
@@ -26,10 +26,16 @@ public:
|
||||
dMsgScrn3Select_c();
|
||||
virtual ~dMsgScrn3Select_c();
|
||||
bool isSelect();
|
||||
#if TARGET_PC
|
||||
bool isAnimeActive() { return mProcess < PROC_MAX_e; }
|
||||
#endif
|
||||
void setString(DUSK_CONST char*, DUSK_CONST char*, DUSK_CONST char*);
|
||||
void setRubyString(DUSK_CONST char*, DUSK_CONST char*, DUSK_CONST char*);
|
||||
void translate(f32, f32);
|
||||
void draw(f32, f32);
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
#endif
|
||||
void selAnimeInit(u8, u8, u8, f32, u8);
|
||||
bool selAnimeMove(u8, u8, bool);
|
||||
bool selAnimeEnd();
|
||||
@@ -101,6 +107,9 @@ public:
|
||||
/* 0x115 */ u8 mDPDPoint;
|
||||
/* 0x116 */ u8 field_0x116;
|
||||
/* 0x117 */ u8 field_0x117;
|
||||
#if TARGET_PC
|
||||
bool mPresenting;
|
||||
#endif
|
||||
}; // Size: 0x118
|
||||
|
||||
#endif /* MSG_SCRN_D_MSG_SCRN_3SELECT_H */
|
||||
|
||||
@@ -37,6 +37,10 @@ public:
|
||||
virtual void fukiAlpha(f32);
|
||||
virtual void fontAlpha(f32);
|
||||
virtual void fukiPosCalc(u8) {}
|
||||
#if TARGET_PC
|
||||
virtual void presentAnims();
|
||||
virtual bool isSelectAnimeActive() { return false; }
|
||||
#endif
|
||||
|
||||
f32 getSelTextBoxPosX(int idx) { return mSelTextBoxPosX[idx]; }
|
||||
f32 getSelTextBoxPosY(int idx) { return mSelTextBoxPosY[idx]; }
|
||||
|
||||
@@ -23,6 +23,9 @@ public:
|
||||
dMsgScrnExplain_c(STControl*, u8, bool, u8);
|
||||
void move();
|
||||
void draw(J2DOrthoGraph*);
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
#endif
|
||||
void wait_init();
|
||||
void wait_proc();
|
||||
void open_request_init();
|
||||
@@ -67,7 +70,7 @@ public:
|
||||
/* 0x50 */ f32 field_0x50;
|
||||
/* 0x54 */ u32 mOpenMsgId;
|
||||
/* 0x58 */ bool field_0x58;
|
||||
/* 0x5A */ s16 field_0x5a;
|
||||
/* 0x5A */ DUSK_IF_ELSE(f32, s16) field_0x5a;
|
||||
/* 0x5C */ s16 field_0x5c;
|
||||
/* 0x5E */ s16 mKeyWaitTimer;
|
||||
/* 0x60 */ u8 mStatus;
|
||||
|
||||
@@ -8,6 +8,9 @@ struct dMsgScrnHowl_c : public dMsgScrnBase_c {
|
||||
~dMsgScrnHowl_c();
|
||||
void exec();
|
||||
void drawSelf();
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
#endif
|
||||
void guide_on_init();
|
||||
void guide_on_proc();
|
||||
void guide_off_init();
|
||||
@@ -77,7 +80,7 @@ struct dMsgScrnHowl_c : public dMsgScrnBase_c {
|
||||
/* 0x1A18 */ f32 field_0x1a18[30];
|
||||
/* 0x1A90 */ f32 field_0x1a90[30];
|
||||
/* 0x1B08 */ f32 field_0x1b08[3];
|
||||
/* 0x1B14 */ s16 field_0x1b14[0x300];
|
||||
/* 0x1B14 */ DUSK_IF_ELSE(f32, s16) field_0x1b14[0x300];
|
||||
/* 0x2114 */ u32 field_0x2114;
|
||||
/* 0x2118 */ u32 field_0x2118;
|
||||
/* 0x211C */ u32 field_0x211c;
|
||||
@@ -113,6 +116,8 @@ struct dMsgScrnHowl_c : public dMsgScrnBase_c {
|
||||
|
||||
#if TARGET_PC
|
||||
u8 showCursor;
|
||||
f32 mSampleAcc;
|
||||
f32 mPulseFrame;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ struct dMsgScrnItem_c : public dMsgScrnBase_c {
|
||||
~dMsgScrnItem_c();
|
||||
void exec();
|
||||
void drawSelf();
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
#endif
|
||||
void arwAnimeInit();
|
||||
void arwAnimeMove();
|
||||
void dotAnimeInit();
|
||||
@@ -23,6 +26,9 @@ struct dMsgScrnItem_c : public dMsgScrnBase_c {
|
||||
void selectAnimeInit(u8, u8, f32, u8);
|
||||
bool selectAnimeMove(u8, u8, bool);
|
||||
bool selectAnimeEnd();
|
||||
#if TARGET_PC
|
||||
bool isSelectAnimeActive();
|
||||
#endif
|
||||
void fukiScale(f32);
|
||||
void fukiTrans(f32, f32);
|
||||
void fukiAlpha(f32);
|
||||
|
||||
@@ -13,6 +13,9 @@ struct dMsgScrnKanban_c : public dMsgScrnBase_c {
|
||||
~dMsgScrnKanban_c();
|
||||
void exec();
|
||||
void draw();
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
#endif
|
||||
void fukiAlpha(f32);
|
||||
void fukiScale(f32);
|
||||
void fukiTrans(f32, f32);
|
||||
|
||||
@@ -23,6 +23,10 @@ struct dMsgScrnTalk_c : public dMsgScrnBase_c {
|
||||
void selectAnimeInit(u8, u8, f32, u8);
|
||||
bool selectAnimeMove(u8, u8, bool);
|
||||
bool selectAnimeEnd();
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
bool isSelectAnimeActive();
|
||||
#endif
|
||||
void fukiScale(f32);
|
||||
void fukiTrans(f32, f32);
|
||||
void fukiAlpha(f32);
|
||||
@@ -42,7 +46,7 @@ struct dMsgScrnTalk_c : public dMsgScrnBase_c {
|
||||
/* 0x0F4 */ f32 field_0xf4;
|
||||
/* 0x0F8 */ f32 field_0xf8[150];
|
||||
/* 0x350 */ f32 field_0x350[3];
|
||||
/* 0x35C */ s16 field_0x35c[150];
|
||||
/* 0x35C */ DUSK_IF_ELSE(f32, s16) field_0x35c[150];
|
||||
/* 0x488 */ u8 field_0x488;
|
||||
};
|
||||
|
||||
|
||||
@@ -11,6 +11,9 @@ struct dMsgScrnTree_c : public dMsgScrnBase_c {
|
||||
virtual ~dMsgScrnTree_c();
|
||||
void exec();
|
||||
void draw();
|
||||
#if TARGET_PC
|
||||
void presentAnims();
|
||||
#endif
|
||||
void fukiAlpha(f32);
|
||||
void fukiScale(f32);
|
||||
void fukiTrans(f32, f32);
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "JSystem/JUtility/JUTFont.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/menu_pointer.h"
|
||||
#include "dusk/scope_guard.hpp"
|
||||
#include "dusk/version.hpp"
|
||||
@@ -907,6 +908,16 @@ bool jmessage_tReference::isLightEnd() {
|
||||
return false;
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void jmessage_tReference::addCharAlpha() {
|
||||
dusk::vdt::advance_toward_frame(mCharAlpha, 255.0f, mAddCharAlpha);
|
||||
}
|
||||
|
||||
void jmessage_tReference::addCharAllAlphaRate() {
|
||||
dusk::vdt::advance_toward_frame(mCharAllAlphaRate, 1.0f, mAddCharAllAlphaRate);
|
||||
}
|
||||
#endif
|
||||
|
||||
void jmessage_tReference::decideOutFontRupeeColor(int i_inputVal) {
|
||||
int price_diff = getObjectPtr()->getNowTotalPrice() - getObjectPtr()->getNowTotalPayment();
|
||||
|
||||
|
||||
+105
-12
@@ -30,9 +30,7 @@
|
||||
#include "m_Do/m_Do_lib.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <vector>
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/language.hpp"
|
||||
#include "dusk/logging.h"
|
||||
#include "dusk/menu_pointer.h"
|
||||
@@ -40,6 +38,10 @@
|
||||
#include "dusk/mods/svc/flow.hpp"
|
||||
#include "dusk/settings.h"
|
||||
#include "dusk/version.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <vector>
|
||||
#endif
|
||||
|
||||
static void dMsgObject_addFundRaising(s16 param_0);
|
||||
@@ -569,6 +571,97 @@ int dMsgObject_c::_draw() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgObject_c::presentAnims() {
|
||||
if (mpScrnDraw == NULL || mpOutFont == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
const u16 status = getStatusLocal();
|
||||
f32 target = 0.0f;
|
||||
if (status == 2) {
|
||||
if (isPlaceMessage() || isStaffMessage()) {
|
||||
target = g_MsgObject_HIO_c.mStageTitleFadeIn;
|
||||
} else if (isBossMessage()) {
|
||||
target = g_MsgObject_HIO_c.mBossNameFadeIn;
|
||||
} else if (isBookMessage()) {
|
||||
target = g_MsgObject_HIO_c.mBoxAppearFrame + g_MsgObject_HIO_c.mWaitFrame +
|
||||
g_MsgObject_HIO_c.mLightAppearFrame;
|
||||
} else {
|
||||
target = g_MsgObject_HIO_c.mBoxAppearFrame;
|
||||
}
|
||||
dusk::vdt::advance_toward_frame(field_0x16a, target, 1.0f);
|
||||
if (isKanbanMessage() || isPlaceMessage() || isStaffMessage() || isBossMessage()) {
|
||||
f32 ratio = dusk::vdt::clamped_fraction(field_0x16a, target);
|
||||
mpScrnDraw->fukiScale(ratio);
|
||||
mpScrnDraw->fukiAlpha(ratio);
|
||||
mpOutFont->setAlphaRatio(ratio);
|
||||
} else if (isBookMessage()) {
|
||||
if (field_0x16a <= g_MsgObject_HIO_c.mBoxAppearFrame) {
|
||||
f32 ratio = dusk::vdt::clamped_fraction(field_0x16a, g_MsgObject_HIO_c.mBoxAppearFrame);
|
||||
mpScrnDraw->fukiAlpha(ratio);
|
||||
mpOutFont->setAlphaRatio(ratio);
|
||||
} else {
|
||||
mpScrnDraw->fukiAlpha(1.0f);
|
||||
mpOutFont->setAlphaRatio(1.0f);
|
||||
}
|
||||
s16 waitEnd = g_MsgObject_HIO_c.mBoxAppearFrame + g_MsgObject_HIO_c.mWaitFrame;
|
||||
if (field_0x16a >= waitEnd &&
|
||||
field_0x16a <= waitEnd + g_MsgObject_HIO_c.mLightAppearFrame)
|
||||
{
|
||||
f32 scale = dusk::vdt::clamped_fraction(field_0x16a - waitEnd, g_MsgObject_HIO_c.mLightAppearFrame);
|
||||
mpScrnDraw->fukiScale(scale);
|
||||
}
|
||||
} else {
|
||||
f32 ratio = dusk::vdt::clamped_fraction(field_0x16a, target);
|
||||
mpScrnDraw->fukiScale(1.0f);
|
||||
mpScrnDraw->fukiAlpha(ratio);
|
||||
mpOutFont->setAlphaRatio(ratio);
|
||||
}
|
||||
} else if (status == 17) {
|
||||
if (isKanbanMessage() || isBookMessage()) {
|
||||
target = g_MsgObject_HIO_c.field_0x304;
|
||||
} else if (isPlaceMessage() || isStaffMessage()) {
|
||||
target = g_MsgObject_HIO_c.mStageTitleFadeOut;
|
||||
} else if (isBossMessage()) {
|
||||
target = g_MsgObject_HIO_c.mBossNameFadeOut;
|
||||
} else {
|
||||
target = 5.0f;
|
||||
}
|
||||
dusk::vdt::advance_toward_frame(field_0x16a, target, 1.0f);
|
||||
f32 ratio = dusk::vdt::clamped_fraction(field_0x16a, target);
|
||||
mpScrnDraw->fukiAlpha(1.0f - ratio);
|
||||
if (isBookMessage()) {
|
||||
mpScrnDraw->fukiScale(1.0f - ratio);
|
||||
}
|
||||
mpOutFont->setAlphaRatio(1.0f - ratio);
|
||||
} else if (status == 6) {
|
||||
if (isBookMessage() && field_0x16a > 0) {
|
||||
dusk::vdt::advance_toward_frame(field_0x16a, 0.0f, 1.0f);
|
||||
f32 alpha = (10 - field_0x16a) / 10.0f;
|
||||
mpScrnDraw->fontAlpha(alpha);
|
||||
mpOutFont->setAlphaRatio(alpha);
|
||||
}
|
||||
jmessage_tReference* pRef = (jmessage_tReference*)mpRenProc->getReference();
|
||||
if (pRef->getCharAllAlphaRate() < 1.0f) {
|
||||
pRef->addCharAllAlphaRate();
|
||||
f32 alpha = pRef->getCharAllAlphaRate();
|
||||
mpScrnDraw->setCharAlphaRate(alpha);
|
||||
mpOutFont->setAlphaRatio(alpha);
|
||||
}
|
||||
} else if (status == 5 && isBookMessage() &&
|
||||
(isSend() || field_0x16a > 0))
|
||||
{
|
||||
dusk::vdt::advance_toward_frame(field_0x16a, 10.0f, 1.0f);
|
||||
if (field_0x16a <= 10) {
|
||||
f32 alpha = (10 - field_0x16a) / 10.0f;
|
||||
mpScrnDraw->fontAlpha(alpha);
|
||||
mpOutFont->setAlphaRatio(alpha);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int dMsgObject_c::_delete() {
|
||||
mpResCont->destroyResource_all();
|
||||
if (mpScrnDraw != NULL) {
|
||||
@@ -961,7 +1054,7 @@ void dMsgObject_c::waitProc() {
|
||||
void dMsgObject_c::openProc() {
|
||||
if (isMidonaMessage()) {
|
||||
bool uVar12 = 0;
|
||||
if (field_0x16a == 0) {
|
||||
if (DUSK_IF_ELSE(!mpScrnDraw->isSelectAnimeActive(), field_0x16a == 0)) {
|
||||
jmessage_tReference* pRef = (jmessage_tReference*)mpRenProc->getReference();
|
||||
field_0x1a3 = 0;
|
||||
if (mpRefer->getMsgID() == 0x7fa) {
|
||||
@@ -995,7 +1088,7 @@ void dMsgObject_c::openProc() {
|
||||
}
|
||||
}
|
||||
}
|
||||
field_0x16a++;
|
||||
IF_NOT_DUSK(field_0x16a++);
|
||||
s16 sVar7;
|
||||
if (isKanbanMessage()) {
|
||||
sVar7 = g_MsgObject_HIO_c.mBoxAppearFrame;
|
||||
@@ -1062,12 +1155,12 @@ void dMsgObject_c::openProc() {
|
||||
|
||||
void dMsgObject_c::outnowProc() {
|
||||
mpRefer->shiftCharCountBuffer();
|
||||
if (isBookMessage() && field_0x16a > 0) {
|
||||
field_0x16a--;
|
||||
if (isBookMessage() && field_0x16a DUSK_IF_ELSE(>, !=) 0) {
|
||||
IF_NOT_DUSK(field_0x16a--);
|
||||
f32 alpha = (10 - field_0x16a) / 10.0f;
|
||||
mpScrnDraw->fontAlpha(alpha);
|
||||
mpOutFont->setAlphaRatio(alpha);
|
||||
if (field_0x16a > 0) {
|
||||
if (field_0x16a DUSK_IF_ELSE(>, !=) 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1077,7 +1170,7 @@ void dMsgObject_c::outnowProc() {
|
||||
if (mDoCPd_c::getTrigA(0)) {
|
||||
pRef->setCharAllAlphaRate(1.0f);
|
||||
} else {
|
||||
pRef->addCharAllAlphaRate();
|
||||
IF_NOT_DUSK(pRef->addCharAllAlphaRate());
|
||||
}
|
||||
f32 alpha = pRef->getCharAllAlphaRate();
|
||||
mpScrnDraw->setCharAlphaRate(alpha);
|
||||
@@ -1131,8 +1224,8 @@ void dMsgObject_c::outwaitProc() {
|
||||
(jmessage_tReference*)mpRenProc->getReference();
|
||||
mpScrnDraw->arwAnimeMove();
|
||||
if (isBookMessage()) {
|
||||
if (isSend() || field_0x16a > 0) {
|
||||
field_0x16a++;
|
||||
if (isSend() || field_0x16a DUSK_IF_ELSE(>, !=) 0) {
|
||||
IF_NOT_DUSK(field_0x16a++);
|
||||
if (field_0x16a <= 10) {
|
||||
f32 alpha = (10 - field_0x16a) / 10.0f;
|
||||
mpScrnDraw->fontAlpha(alpha);
|
||||
@@ -1413,7 +1506,7 @@ void dMsgObject_c::finishProc() {
|
||||
}
|
||||
|
||||
void dMsgObject_c::endProc() {
|
||||
field_0x16a++;
|
||||
IF_NOT_DUSK(field_0x16a++);
|
||||
s16 sVar4 = 5;
|
||||
if (isKanbanMessage() || isBookMessage()) {
|
||||
sVar4 = g_MsgObject_HIO_c.field_0x304;
|
||||
|
||||
+61
-28
@@ -8,7 +8,7 @@
|
||||
#include "f_op/f_op_msg_mng.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/frame_interpolation.h"
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/version.hpp"
|
||||
#endif
|
||||
|
||||
@@ -312,20 +312,12 @@ void COutFont_c::setAlphaRatio(f32 i_ratio) {
|
||||
}
|
||||
|
||||
void COutFont_c::draw(J2DTextBox* i_textbox, f32 param_1, f32 param_2, f32 param_3) {
|
||||
s16 sp256[70];
|
||||
DUSK_IF_ELSE(f32, s16) sp256[70];
|
||||
|
||||
for (int i = 0; i < 70; i++) {
|
||||
sp256[i] = field_0x1b4[i];
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
if (dusk::interp::get_ui_tick_pending()) {
|
||||
for (int i = 0; i < 70; i++) {
|
||||
sp256[i] = -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 35; i++) {
|
||||
u8 type = mpOfs[i]->getType();
|
||||
J2DTextBox* tbox = mpOfs[i]->getTextBoxPtr();
|
||||
@@ -413,11 +405,14 @@ void COutFont_c::draw(J2DTextBox* i_textbox, f32 param_1, f32 param_2, f32 param
|
||||
}
|
||||
case 9:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 80.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 80) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
|
||||
@@ -433,55 +428,70 @@ void COutFont_c::draw(J2DTextBox* i_textbox, f32 param_1, f32 param_2, f32 param
|
||||
break;
|
||||
case 14:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 20.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 20) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, true);
|
||||
break;
|
||||
case 15:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 20.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 20) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, true);
|
||||
break;
|
||||
case 16:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 20.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 20) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
|
||||
break;
|
||||
case 17:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 20.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 20) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, false);
|
||||
break;
|
||||
case 18:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 40.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 40) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
|
||||
@@ -493,11 +503,14 @@ void COutFont_c::draw(J2DTextBox* i_textbox, f32 param_1, f32 param_2, f32 param
|
||||
break;
|
||||
case 19:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 40.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 40) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
|
||||
@@ -528,24 +541,28 @@ void COutFont_c::draw(J2DTextBox* i_textbox, f32 param_1, f32 param_2, f32 param
|
||||
case 20:
|
||||
case 21:
|
||||
case 22:
|
||||
IF_DUSK_BLOCK(dusk::interp::get_ui_tick_pending())
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 28.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
if (field_0x1b4[type] >= 28) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
IF_DUSK_BLOCK_END
|
||||
|
||||
#endif
|
||||
mpPane[type]->rotate(0.5f * sizeX, 0.5f * sizeY, ROTATE_Z,
|
||||
(360.0f * (f32)field_0x1b4[type]) / 28.0f);
|
||||
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
|
||||
break;
|
||||
case 25: // some issues in here, 2020
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 18.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 18) {
|
||||
field_0x1b4[type] -= 18;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
f32 alpha;
|
||||
@@ -622,11 +639,14 @@ void COutFont_c::draw(J2DTextBox* i_textbox, f32 param_1, f32 param_2, f32 param
|
||||
case 67:
|
||||
case 68:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 40.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 40) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
|
||||
@@ -642,23 +662,28 @@ void COutFont_c::draw(J2DTextBox* i_textbox, f32 param_1, f32 param_2, f32 param
|
||||
case 59:
|
||||
case 60:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 40.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 40) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
#endif
|
||||
setBlendAnime(mpPane[type], field_0x1b4[type]);
|
||||
}
|
||||
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
|
||||
break;
|
||||
case 62:
|
||||
if (sp256[type] == field_0x1b4[type]) {
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(field_0x1b4[type], 1.0f, 10.0f);
|
||||
#else
|
||||
field_0x1b4[type]++;
|
||||
|
||||
if (field_0x1b4[type] >= 10) {
|
||||
field_0x1b4[type] = 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
if (field_0x1b4[type] < 5) {
|
||||
mpPane[type]->setBlendRatio(1.0f, 0.0f);
|
||||
} else {
|
||||
@@ -697,14 +722,22 @@ void COutFont_c::reset(J2DTextBox* i_textbox) {
|
||||
}
|
||||
}
|
||||
|
||||
void COutFont_c::setBlendAnime(J2DPicture* i_pic, s16 param_1) {
|
||||
void COutFont_c::setBlendAnime(J2DPicture* i_pic, DUSK_IF_ELSE(f32, s16) param_1) {
|
||||
#if TARGET_PC
|
||||
f32 i = fmodf(param_1, 20.0f);
|
||||
if (i < 0.0f) {
|
||||
i += 20.0f;
|
||||
}
|
||||
#else
|
||||
int i = param_1 % 20;
|
||||
#endif
|
||||
|
||||
if (i < 10) {
|
||||
f32 dVar6 = fopMsgM_valueIncrease(10, i, 0);
|
||||
f32 dVar6 = DUSK_IF_ELSE((i / 10.0f) * (i / 10.0f), fopMsgM_valueIncrease(10, i, 0));
|
||||
i_pic->setBlendRatio(1.0f - dVar6, dVar6);
|
||||
} else {
|
||||
f32 dVar6 = fopMsgM_valueIncrease(10, i - 10, 0);
|
||||
f32 dVar6 = DUSK_IF_ELSE(((i - 10.0f) / 10.0f) * ((i - 10.0f) / 10.0f),
|
||||
fopMsgM_valueIncrease(10, i - 10, 0));
|
||||
i_pic->setBlendRatio(dVar6, 1.0f - dVar6);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "d/d_pane_class.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/menu_pointer.h"
|
||||
#include "dusk/version.hpp"
|
||||
|
||||
@@ -315,6 +316,7 @@ dMsgScrn3Select_c::dMsgScrn3Select_c() {
|
||||
mDPDPoint = 0xFF;
|
||||
field_0x116 = 0xFF;
|
||||
field_0x117 = 0;
|
||||
IF_DUSK(mPresenting = false);
|
||||
|
||||
mSelMsgInactiveCol.set(0xFF, 0xFF, 0xFF, 0xFF);
|
||||
}
|
||||
@@ -441,6 +443,34 @@ void dMsgScrn3Select_c::translate(f32 i_x, f32 i_y) {
|
||||
mpParent->translate(i_x, i_y);
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrn3Select_c::presentAnims() {
|
||||
if (mProcess >= PROC_MAX_e) {
|
||||
return;
|
||||
}
|
||||
mPresenting = true;
|
||||
if (mProcess == PROC_OPEN2_e || mProcess == PROC_CHANGE_e || mProcess == PROC_CLOSE_e) {
|
||||
(this->*process[mProcess])();
|
||||
}
|
||||
dusk::vdt::present_looping(mBpkFrame, mpAnmBpk, 1.0f);
|
||||
dusk::vdt::present_looping(mBtkFrame, mpAnmBtk, 1.0f);
|
||||
mpScreen->animation();
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (i == mSelNo) {
|
||||
mpSelCld_c[i]->getPanePtr()->scale(1.0f, 1.0f);
|
||||
mpSelCldr_c[i]->getPanePtr()->scale(1.0f, 1.0f);
|
||||
} else {
|
||||
mpSelCld_c[i]->getPanePtr()->scale(0.0f, 0.0f);
|
||||
mpSelCldr_c[i]->getPanePtr()->scale(0.0f, 0.0f);
|
||||
}
|
||||
}
|
||||
selectTrans();
|
||||
|
||||
mPresenting = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrn3Select_c::draw(f32 i_xPos, f32 i_yPos) {
|
||||
J2DGrafContext* port = dComIfGp_getCurrentGrafPort();
|
||||
port->setup2D();
|
||||
@@ -574,10 +604,14 @@ bool dMsgScrn3Select_c::selAnimeMove(u8 i_selNum, u8 param_1, bool param_2) {
|
||||
field_0x108 = param_2;
|
||||
#if TARGET_PC
|
||||
pointerMove();
|
||||
if (mProcess >= PROC_MAX_e) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
(this->*process[mProcess])();
|
||||
|
||||
#if !TARGET_PC
|
||||
mBpkFrame++;
|
||||
if (mBpkFrame >= mpAnmBpk->getFrameMax()) {
|
||||
mBpkFrame -= mpAnmBpk->getFrameMax();
|
||||
@@ -603,6 +637,7 @@ bool dMsgScrn3Select_c::selAnimeMove(u8 i_selNum, u8 param_1, bool param_2) {
|
||||
}
|
||||
|
||||
selectTrans();
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (i == mSelNo) {
|
||||
@@ -689,6 +724,7 @@ bool dMsgScrn3Select_c::selAnimeEnd() {
|
||||
|
||||
(this->*process[mProcess])();
|
||||
|
||||
#if !TARGET_PC
|
||||
mBpkFrame++;
|
||||
if (mBpkFrame >= mpAnmBpk->getFrameMax()) {
|
||||
mBpkFrame -= mpAnmBpk->getFrameMax();
|
||||
@@ -702,6 +738,7 @@ bool dMsgScrn3Select_c::selAnimeEnd() {
|
||||
mpAnmBtk->setFrame(mBtkFrame);
|
||||
|
||||
mpScreen->animation();
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (i == mSelNo) {
|
||||
@@ -778,7 +815,13 @@ void dMsgScrn3Select_c::open1Proc() {
|
||||
void dMsgScrn3Select_c::open2Proc() {
|
||||
f32 sel_anm_frame[3] = {204.0f, 304.0f, 404.0f};
|
||||
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 199.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame++;
|
||||
#endif
|
||||
mpSelectCursor->setAlphaRate(1.0f);
|
||||
|
||||
if (mBckFrame >= 199.0f) {
|
||||
@@ -903,7 +946,13 @@ void dMsgScrn3Select_c::changeProc() {
|
||||
if (field_0x108 != 0) {
|
||||
mBckFrame = 303.0f;
|
||||
} else {
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 303.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame++;
|
||||
#endif
|
||||
}
|
||||
|
||||
selectAnimeTransform(0);
|
||||
@@ -915,7 +964,13 @@ void dMsgScrn3Select_c::changeProc() {
|
||||
if (field_0x108 != 0) {
|
||||
mBckFrame = 403.0f;
|
||||
} else {
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 403.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame++;
|
||||
#endif
|
||||
}
|
||||
|
||||
selectAnimeTransform(0);
|
||||
@@ -930,7 +985,13 @@ void dMsgScrn3Select_c::changeProc() {
|
||||
if (field_0x108 != 0) {
|
||||
mBckFrame = 300.0f;
|
||||
} else {
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 300.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame--;
|
||||
#endif
|
||||
}
|
||||
|
||||
selectAnimeTransform(1);
|
||||
@@ -942,7 +1003,13 @@ void dMsgScrn3Select_c::changeProc() {
|
||||
if (field_0x108 != 0) {
|
||||
mBckFrame = 403.0f;
|
||||
} else {
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 403.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame++;
|
||||
#endif
|
||||
}
|
||||
|
||||
selectAnimeTransform(1);
|
||||
@@ -957,7 +1024,13 @@ void dMsgScrn3Select_c::changeProc() {
|
||||
if (field_0x108 != 0) {
|
||||
mBckFrame = 400.0f;
|
||||
} else {
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 400.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame--;
|
||||
#endif
|
||||
}
|
||||
|
||||
selectAnimeTransform(2);
|
||||
@@ -969,7 +1042,13 @@ void dMsgScrn3Select_c::changeProc() {
|
||||
if (field_0x108 != 0) {
|
||||
mBckFrame = 300.0f;
|
||||
} else {
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 300.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame--;
|
||||
#endif
|
||||
}
|
||||
|
||||
selectAnimeTransform(2);
|
||||
@@ -985,7 +1064,13 @@ void dMsgScrn3Select_c::changeProc() {
|
||||
|
||||
void dMsgScrn3Select_c::closeProc() {
|
||||
mpSelectCursor->setAlphaRate(0.0f);
|
||||
#if TARGET_PC
|
||||
if (mPresenting) {
|
||||
dusk::vdt::advance_toward_frame(mBckFrame, 190.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
mBckFrame--;
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
f32 scale_x = mpSel_c[i]->getPanePtr()->getScaleX();
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "d/d_pane_class.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/settings.h"
|
||||
#endif
|
||||
|
||||
@@ -73,6 +74,14 @@ void dMsgScrnArrow_c::draw() {
|
||||
if (dusk::getSettings().game.recordingMode) {
|
||||
return;
|
||||
}
|
||||
if (mpArw_c->isVisible()) {
|
||||
dusk::vdt::present_looping(mBckFrame, mpBck, 1.0f);
|
||||
dusk::vdt::present_looping(mBpkFrame, mpBpk, 1.0f);
|
||||
mpScreen->animation();
|
||||
} else if (mpDot_c->isVisible()) {
|
||||
dusk::vdt::present_looping(mBpkFrame, mpBpk, 1.0f);
|
||||
mpScreen->animation();
|
||||
}
|
||||
#endif
|
||||
J2DGrafContext* graf_ctx = dComIfGp_getCurrentGrafPort();
|
||||
mpScreen->draw(0.0f, 0.0f, graf_ctx);
|
||||
@@ -103,6 +112,7 @@ void dMsgScrnArrow_c::arwAnimeMove() {
|
||||
mpDot_c->hide();
|
||||
}
|
||||
|
||||
#if !TARGET_PC
|
||||
mBckFrame += 1.0f;
|
||||
if (mBckFrame >= (f32)mpBck->getFrameMax()) {
|
||||
mBckFrame -= (f32)mpBck->getFrameMax();
|
||||
@@ -114,6 +124,7 @@ void dMsgScrnArrow_c::arwAnimeMove() {
|
||||
mBpkFrame -= (f32)mpBpk->getFrameMax();
|
||||
}
|
||||
mpBpk->setFrame(mBpkFrame);
|
||||
#endif
|
||||
|
||||
mpScreen->animation();
|
||||
}
|
||||
@@ -136,11 +147,14 @@ void dMsgScrnArrow_c::dotAnimeMove() {
|
||||
mpDot_c->show();
|
||||
}
|
||||
|
||||
#if !TARGET_PC
|
||||
mBpkFrame += 1.0f;
|
||||
if (mBpkFrame >= (f32)mpBpk->getFrameMax()) {
|
||||
mBpkFrame -= (f32)mpBpk->getFrameMax();
|
||||
}
|
||||
|
||||
mpBpk->setFrame(mBpkFrame);
|
||||
#endif
|
||||
|
||||
mpScreen->animation();
|
||||
}
|
||||
|
||||
@@ -71,8 +71,19 @@ void dMsgScrnBase_c::multiDraw() {
|
||||
}
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrnBase_c::presentAnims() {
|
||||
if (dMsgObject_c* msg = dMsgObject_getMsgObjectClass()) {
|
||||
if (msg->getScrnDrawPtrLocal() == this) {
|
||||
msg->presentAnims();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnBase_c::draw() {
|
||||
#if TARGET_PC
|
||||
presentAnims();
|
||||
if (dusk::getSettings().game.recordingMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <cstring>
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/version.hpp"
|
||||
#endif
|
||||
|
||||
@@ -326,6 +327,7 @@ dMsgScrnExplain_c::~dMsgScrnExplain_c() {
|
||||
void dMsgScrnExplain_c::move() {
|
||||
u8 currentStatus = mStatus;
|
||||
|
||||
#if !TARGET_PC
|
||||
f32 y_offset = 0.0f;
|
||||
if (field_0x66 == 2) {
|
||||
y_offset = -35.0f;
|
||||
@@ -335,6 +337,7 @@ void dMsgScrnExplain_c::move() {
|
||||
mpRoot_c[i]->paneTrans(field_0x48 + g_MsgObject_HIO_c.mChoicePos[0][6],
|
||||
field_0x4c + g_MsgObject_HIO_c.mBoxPos[0][6] + y_offset);
|
||||
}
|
||||
#endif
|
||||
|
||||
(this->*move_process[mStatus])();
|
||||
|
||||
@@ -346,7 +349,29 @@ void dMsgScrnExplain_c::move() {
|
||||
g_MsgObject_HIO_c.mBoxTalkScaleY);
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrnExplain_c::presentAnims() {
|
||||
if (mStatus == STATUS_OPEN_e || mStatus == STATUS_CLOSE_e) {
|
||||
dusk::vdt::advance_toward_frame(field_0x5a, mStatus == STATUS_OPEN_e ? 5.0f : 0.0f, 1.0f);
|
||||
field_0x48 = FB_WIDTH_BASE * getAlphaRatio();
|
||||
for (int i = 0; i < 2; i++) {
|
||||
mpRoot_c[i]->setAlphaRate(1.0f - getAlphaRatio());
|
||||
}
|
||||
if (mpBackTex != NULL) {
|
||||
mpBackTex->setAlpha((1.0f - getAlphaRatio()) * 150.0f);
|
||||
}
|
||||
}
|
||||
|
||||
const f32 y_offset = field_0x66 == 2 ? -35.0f : 0.0f;
|
||||
for (int i = 0; i < 2; i++) {
|
||||
mpRoot_c[i]->paneTrans(field_0x48 + g_MsgObject_HIO_c.mChoicePos[0][6],
|
||||
field_0x4c + g_MsgObject_HIO_c.mBoxPos[0][6] + y_offset);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnExplain_c::draw(J2DOrthoGraph* i_graf) {
|
||||
IF_DUSK(presentAnims());
|
||||
if (mStatus == STATUS_WAIT_e || mStatus == STATUS_OPEN_REQ_e) {
|
||||
return;
|
||||
}
|
||||
@@ -389,6 +414,7 @@ void dMsgScrnExplain_c::draw(J2DOrthoGraph* i_graf) {
|
||||
|
||||
mpSelect_c->translate(486.0f + g_MsgObject_HIO_c.mChoicePos[0][7],
|
||||
209.0f + g_MsgObject_HIO_c.mBoxPos[0][7] + y_offset);
|
||||
IF_DUSK(mpSelect_c->presentAnims());
|
||||
mpSelect_c->draw(0.0f, 0.0f);
|
||||
}
|
||||
|
||||
@@ -445,7 +471,7 @@ void dMsgScrnExplain_c::open_init() {
|
||||
}
|
||||
|
||||
void dMsgScrnExplain_c::open_proc() {
|
||||
field_0x5a++;
|
||||
IF_NOT_DUSK(field_0x5a++);
|
||||
if (field_0x5a >= 5) {
|
||||
field_0x5a = 5;
|
||||
if (field_0x64 == 1 || field_0x64 == 2) {
|
||||
@@ -627,7 +653,7 @@ void dMsgScrnExplain_c::close_proc() {
|
||||
iVar1 = true;
|
||||
}
|
||||
|
||||
field_0x5a--;
|
||||
IF_NOT_DUSK(field_0x5a--);
|
||||
if (field_0x5a <= 0) {
|
||||
field_0x5a = 0;
|
||||
if (iVar1) {
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
#include "m_Do/m_Do_graphic.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/frame_interpolation.h"
|
||||
#include "dusk/game_clock.h"
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#endif
|
||||
|
||||
// POSIX already defines a macro with this name, but we know that this specific name is
|
||||
@@ -147,6 +148,10 @@ dMsgScrnHowl_c::dMsgScrnHowl_c() {
|
||||
field_0x2124 = 0;
|
||||
field_0x2128 = 0;
|
||||
mPlotTime = 0;
|
||||
#if TARGET_PC
|
||||
mSampleAcc = 0.0f;
|
||||
mPulseFrame = 0.0f;
|
||||
#endif
|
||||
field_0x212c = 0;
|
||||
field_0x212e = 0;
|
||||
field_0x2126 = 0;
|
||||
@@ -288,18 +293,52 @@ dMsgScrnHowl_c::~dMsgScrnHowl_c() {
|
||||
dComIfGp_getMsgArchive(5)->removeResourceAll();;
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrnHowl_c::presentAnims() {
|
||||
dMsgScrnBase_c::presentAnims();
|
||||
for (int i = 0; i < 0x300; i++) {
|
||||
if (field_0x1b14[i] > 0) {
|
||||
dusk::vdt::advance_toward_frame(field_0x1b14[i], 0.0f, 1.0f);
|
||||
}
|
||||
}
|
||||
f32 alphaRate = mpPmP_c->getAlphaRate();
|
||||
f32 fVar1;
|
||||
f32 fVar2;
|
||||
if (field_0x2798 == 3) {
|
||||
fVar1 = 0.5f;
|
||||
fVar2 = 0.0f;
|
||||
} else {
|
||||
fVar1 = 1.0f;
|
||||
fVar2 = 1.0f;
|
||||
}
|
||||
if (field_0x1994 != fVar1) {
|
||||
dusk::vdt::present_addCalc2(&field_0x1994, fVar1, 0.2f, 1.0f, 0.1f);
|
||||
}
|
||||
if (field_0x1998 != fVar2) {
|
||||
dusk::vdt::present_addCalc2(&field_0x1998, fVar2, 0.2f, 1.0f, 0.1f);
|
||||
}
|
||||
mpButtonIcon[0]->setAlphaRate(field_0x1994 * alphaRate);
|
||||
mpButtonIcon[1]->setAlphaRate(field_0x1994 * alphaRate);
|
||||
mpButtonText[0]->setAlphaRate(field_0x1998 * alphaRate);
|
||||
mpButtonText[1]->setAlphaRate(field_0x1998 * alphaRate);
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnHowl_c::exec() {
|
||||
field_0x2799 = field_0x2798;
|
||||
(this->*process[field_0x2798])();
|
||||
#if !TARGET_PC
|
||||
for (int i = 0; i < 0x300; i++) {
|
||||
if (field_0x1b14[i] > 0) {
|
||||
field_0x1b14[i]--;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (field_0x2799 != field_0x2798) {
|
||||
(this->*init_proc[field_0x2798])();
|
||||
}
|
||||
|
||||
|
||||
#if !TARGET_PC
|
||||
f32 alphaRate = mpPmP_c->getAlphaRate();
|
||||
f32 fVar1;
|
||||
f32 fVar2;
|
||||
@@ -326,6 +365,7 @@ void dMsgScrnHowl_c::exec() {
|
||||
mpButtonIcon[1]->setAlphaRate(field_0x1994 * alphaRate);
|
||||
mpButtonText[0]->setAlphaRate(field_0x1998 * alphaRate);
|
||||
mpButtonText[1]->setAlphaRate(field_0x1998 * alphaRate);
|
||||
#endif
|
||||
|
||||
#if TARGET_PC
|
||||
showCursor = true;
|
||||
@@ -466,6 +506,7 @@ void dMsgScrnHowl_c::resetLine() {
|
||||
field_0x2195 = 0;
|
||||
field_0x2128 = 0;
|
||||
mPlotTime = 0;
|
||||
IF_DUSK(mSampleAcc = 0.0f);
|
||||
field_0x212c = 0;
|
||||
field_0x212e = 0;
|
||||
field_0x2124 = 0;
|
||||
@@ -502,7 +543,7 @@ void dMsgScrnHowl_c::drawWave() {
|
||||
if (local_80 < 0) {
|
||||
local_80 = 0;
|
||||
}
|
||||
s32 local_94 = 0;
|
||||
DUSK_IF_ELSE(f32, s32) local_94 = 0;
|
||||
Vec fVar12 = field_0x128;
|
||||
Vec this_02 = field_0x140;
|
||||
#if TARGET_PC // TODO: make this actually use the scissor
|
||||
@@ -540,7 +581,7 @@ void dMsgScrnHowl_c::drawWave() {
|
||||
for (int iVar10 = 0; iVar10 < field_0x2128 - 1; iVar10++) {
|
||||
f32 local_54 = local_e0;
|
||||
f32 local_c8 = field_0x180[sVar14];
|
||||
s32 sVar3 = field_0x1b14[sVar14];
|
||||
DUSK_IF_ELSE(f32, s32) sVar3 = field_0x1b14[sVar14];
|
||||
local_e0 += field_0x1980;
|
||||
local_68 += field_0x1984;
|
||||
if (local_68 > 255.0f) {
|
||||
@@ -548,7 +589,7 @@ void dMsgScrnHowl_c::drawWave() {
|
||||
}
|
||||
sVar14 = addCount(sVar14);
|
||||
f32 fVar2 = field_0x180[sVar14];
|
||||
s16 temp_r4 = field_0x1b14[sVar14];
|
||||
DUSK_IF_ELSE(f32, s16) temp_r4 = field_0x1b14[sVar14];
|
||||
if (iVar10 == field_0x2128 - 2) {
|
||||
local_60 = local_e0;
|
||||
local_64 = fVar2;
|
||||
@@ -595,17 +636,24 @@ void dMsgScrnHowl_c::drawWave() {
|
||||
f17 = local_60;
|
||||
f18 = local_64;
|
||||
} else {
|
||||
IF_DUSK_BLOCK(dusk::interp::get_ui_tick_pending())
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(mPulseFrame, 1.0f, 31.0f);
|
||||
if (mPulseFrame < 15.0f) {
|
||||
local_dc = mPulseFrame / 15.0f;
|
||||
} else {
|
||||
local_dc = (30.0f - mPulseFrame) / 15.0f;
|
||||
}
|
||||
#else
|
||||
field_0x2134++;
|
||||
if (field_0x2134 > 30) {
|
||||
field_0x2134 = 0;
|
||||
}
|
||||
IF_DUSK_BLOCK_END
|
||||
if (field_0x2134 < 15) {
|
||||
local_dc = field_0x2134 / 15.0f;
|
||||
} else {
|
||||
local_dc = (30.0f - field_0x2134) / 15.0f;
|
||||
}
|
||||
#endif
|
||||
f17 = f26;
|
||||
f18 = local_e4;
|
||||
}
|
||||
@@ -878,6 +926,19 @@ void dMsgScrnHowl_c::drawEffect() {
|
||||
}
|
||||
|
||||
void dMsgScrnHowl_c::calcMain() {
|
||||
#if TARGET_PC
|
||||
mSampleAcc += dusk::game_clock::original_frames();
|
||||
while (mSampleAcc >= 1.0f) {
|
||||
mSampleAcc -= 1.0f;
|
||||
if (mPlotTime < field_0x2138 + 380) {
|
||||
mPlotTime++;
|
||||
} else {
|
||||
field_0x212c--;
|
||||
}
|
||||
calcWave();
|
||||
calcGuide();
|
||||
}
|
||||
#else
|
||||
if (mPlotTime < field_0x2138 + 380) {
|
||||
mPlotTime++;
|
||||
} else {
|
||||
@@ -885,6 +946,7 @@ void dMsgScrnHowl_c::calcMain() {
|
||||
}
|
||||
calcWave();
|
||||
calcGuide();
|
||||
#endif
|
||||
}
|
||||
|
||||
void dMsgScrnHowl_c::calcWave() {
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <cstring>
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/version.hpp"
|
||||
#endif
|
||||
|
||||
@@ -396,6 +397,25 @@ dMsgScrnItem_c::~dMsgScrnItem_c() {
|
||||
dComIfGp_getMsgCommonArchive()->removeResourceAll();;
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrnItem_c::presentAnims() {
|
||||
dMsgScrnBase_c::presentAnims();
|
||||
mpSelect_c->presentAnims();
|
||||
for (int i = 0; i < 1; i++) {
|
||||
dusk::vdt::present_looping(field_0x140[i], field_0x118[i], g_MsgObject_HIO_c.mBoxItemAnmSpeed);
|
||||
}
|
||||
for (int i = 0; i < 2; i++) {
|
||||
dusk::vdt::present_looping(field_0x154[i], field_0x12c[i], g_MsgObject_HIO_c.mBoxItemAnmSpeed);
|
||||
}
|
||||
mpScreen->animation();
|
||||
if (isTalkNow()) {
|
||||
fukiAlpha(1.0f);
|
||||
} else {
|
||||
fukiAlpha(field_0x13c);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnItem_c::exec() {
|
||||
f32 dVar12 = field_0x13c;
|
||||
if (!field_0x19d) {
|
||||
@@ -404,6 +424,7 @@ void dMsgScrnItem_c::exec() {
|
||||
setBpk1Animation(field_0x12c[1]);
|
||||
field_0x19d = true;
|
||||
}
|
||||
#if !TARGET_PC
|
||||
for (int i = 0; i < 1; i++) {
|
||||
field_0x140[i] += g_MsgObject_HIO_c.mBoxItemAnmSpeed;
|
||||
if (field_0x140[i] >= field_0x118[i]->getFrameMax()) {
|
||||
@@ -425,7 +446,8 @@ void dMsgScrnItem_c::exec() {
|
||||
} else {
|
||||
fukiAlpha(dVar12);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
f32 yOffset;
|
||||
switch(field_0x19c) {
|
||||
case 1:
|
||||
@@ -578,6 +600,12 @@ bool dMsgScrnItem_c::selectAnimeEnd() {
|
||||
return mpSelect_c->selAnimeEnd();
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
bool dMsgScrnItem_c::isSelectAnimeActive() {
|
||||
return mpSelect_c != NULL && mpSelect_c->isAnimeActive();
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnItem_c::fukiScale(f32 param_0) {
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "d/d_pane_class.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/settings.h"
|
||||
#include "dusk/version.hpp"
|
||||
#endif
|
||||
@@ -204,7 +205,16 @@ dMsgScrnKanban_c::~dMsgScrnKanban_c() {
|
||||
dComIfGp_getMsgArchive(2)->removeResourceAll();
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrnKanban_c::presentAnims() {
|
||||
dMsgScrnBase_c::presentAnims();
|
||||
dusk::vdt::present_looping(field_0xd8, field_0xd0, 1.0f);
|
||||
mpScreen->animation();
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnKanban_c::exec() {
|
||||
#if !TARGET_PC
|
||||
field_0xd8 += 1.0f;
|
||||
if (field_0xd8 >= field_0xd0->getFrameMax()) {
|
||||
field_0xd8 -= field_0xd0->getFrameMax();
|
||||
@@ -212,6 +222,7 @@ void dMsgScrnKanban_c::exec() {
|
||||
|
||||
field_0xd0->setFrame(field_0xd8);
|
||||
mpScreen->animation();
|
||||
#endif
|
||||
|
||||
if (isTalkNow()) {
|
||||
fukiAlpha(1.0f);
|
||||
@@ -222,6 +233,7 @@ void dMsgScrnKanban_c::exec() {
|
||||
|
||||
void dMsgScrnKanban_c::draw() {
|
||||
#if TARGET_PC
|
||||
presentAnims();
|
||||
if (dusk::getSettings().game.recordingMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "d/d_pane_class.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/frame_interpolation.h"
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#endif
|
||||
|
||||
class dMsgScrnLight_HIO_c {
|
||||
@@ -206,12 +206,14 @@ void dMsgScrnLight_c::draw(f32* i_anmFrame, f32 i_posX, f32 i_posY, f32 i_scaleX
|
||||
}
|
||||
|
||||
if (mPlayAnim) {
|
||||
IF_DUSK_BLOCK(dusk::interp::get_ui_tick_pending())
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(*i_anmFrame, 1.0f, mpBck->getFrameMax());
|
||||
#else
|
||||
*i_anmFrame += 1.0f;
|
||||
if (*i_anmFrame >= mpBck->getFrameMax()) {
|
||||
*i_anmFrame = 0.0f;
|
||||
}
|
||||
IF_DUSK_BLOCK_END
|
||||
#endif
|
||||
|
||||
mBckFrame = *i_anmFrame;
|
||||
mBpkFrame = *i_anmFrame;
|
||||
@@ -226,13 +228,14 @@ void dMsgScrnLight_c::draw(f32* i_anmFrame, f32 i_posX, f32 i_posY, f32 i_scaleX
|
||||
mpParent_c->setBlackWhite(i_black, i_white);
|
||||
|
||||
if (mPlayAnim) {
|
||||
IF_DUSK_BLOCK(dusk::interp::get_ui_tick_pending())
|
||||
#if TARGET_PC
|
||||
dusk::vdt::advance_looping_frame(*i_anmFrame, i_anmRate, mpBck->getFrameMax());
|
||||
#else
|
||||
*i_anmFrame += i_anmRate;
|
||||
|
||||
if (*i_anmFrame >= mpBck->getFrameMax()) {
|
||||
*i_anmFrame = 0.0f;
|
||||
}
|
||||
IF_DUSK_BLOCK_END
|
||||
#endif
|
||||
|
||||
mBckFrame = *i_anmFrame;
|
||||
mBpkFrame = *i_anmFrame;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <cstring>
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/settings.h"
|
||||
#include "dusk/version.hpp"
|
||||
#endif
|
||||
@@ -373,6 +374,15 @@ void dMsgScrnTalk_c::exec() {
|
||||
}
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrnTalk_c::presentAnims() {
|
||||
dMsgScrnBase_c::presentAnims();
|
||||
if (mpSelect_c != NULL) {
|
||||
mpSelect_c->presentAnims();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnTalk_c::drawSelf() {
|
||||
#if TARGET_PC
|
||||
if (dusk::getSettings().game.recordingMode) {
|
||||
@@ -404,7 +414,7 @@ void dMsgScrnTalk_c::drawSelf() {
|
||||
}
|
||||
}
|
||||
if (field_0x35c[i] > 0) {
|
||||
field_0x35c[i]--;
|
||||
DUSK_IF_ELSE(dusk::vdt::advance_toward_frame(field_0x35c[i], 0.0f, 1.0f), field_0x35c[i]--);
|
||||
} else {
|
||||
mpLight_c->draw(
|
||||
&mCharInfoPtr[i].field_0x14, mCharInfoPtr[i].field_0x00, mCharInfoPtr[i].field_0x04,
|
||||
@@ -489,6 +499,12 @@ bool dMsgScrnTalk_c::selectAnimeEnd() {
|
||||
return false;
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
bool dMsgScrnTalk_c::isSelectAnimeActive() {
|
||||
return mpSelect_c != NULL && mpSelect_c->isAnimeActive();
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnTalk_c::fukiScale(f32 param_0) {
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "d/d_pane_class.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/interp/user_interface.h"
|
||||
#include "dusk/settings.h"
|
||||
#include "dusk/version.hpp"
|
||||
#endif
|
||||
@@ -216,7 +217,17 @@ dMsgScrnTree_c::~dMsgScrnTree_c() {
|
||||
dComIfGp_getMsgArchive(2)->removeResourceAll();
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void dMsgScrnTree_c::presentAnims() {
|
||||
dMsgScrnBase_c::presentAnims();
|
||||
dusk::vdt::present_looping(field_0xdc, field_0xd0, 1.0f);
|
||||
dusk::vdt::present_looping(field_0xe0, field_0xd4, 1.0f);
|
||||
mpScreen->animation();
|
||||
}
|
||||
#endif
|
||||
|
||||
void dMsgScrnTree_c::exec() {
|
||||
#if !TARGET_PC
|
||||
field_0xdc += 1.0f;
|
||||
if (field_0xdc >= field_0xd0->getFrameMax()) {
|
||||
field_0xdc -= field_0xd0->getFrameMax();
|
||||
@@ -229,6 +240,7 @@ void dMsgScrnTree_c::exec() {
|
||||
}
|
||||
field_0xd4->setFrame(field_0xe0);
|
||||
mpScreen->animation();
|
||||
#endif
|
||||
|
||||
if (isTalkNow()) {
|
||||
fukiAlpha(1.0f);
|
||||
@@ -246,6 +258,7 @@ void dMsgScrnTree_c::exec() {
|
||||
|
||||
void dMsgScrnTree_c::draw() {
|
||||
#if TARGET_PC
|
||||
presentAnims();
|
||||
if (dusk::getSettings().game.recordingMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user