Delta time msg

This commit is contained in:
Irastris
2026-08-18 19:14:00 -04:00
parent 8e844cf93b
commit 81a33e27ea
24 changed files with 518 additions and 63 deletions
+8
View File
@@ -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;
+4 -1
View File
@@ -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;
+2 -2
View File
@@ -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;
+9
View File
@@ -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 */
+4
View File
@@ -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]; }
+4 -1
View File
@@ -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;
+6 -1
View File
@@ -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
};
+6
View File
@@ -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);
+3
View File
@@ -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);
+5 -1
View File
@@ -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;
};
+3
View File
@@ -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);
+11
View File
@@ -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
View File
@@ -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
View File
@@ -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);
}
}
+85
View File
@@ -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();
+14
View File
@@ -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();
}
+11
View File
@@ -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;
}
+28 -2
View File
@@ -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) {
+69 -7
View File
@@ -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() {
+29 -1
View File
@@ -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) {
}
+12
View File
@@ -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;
}
+9 -6
View File
@@ -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;
+17 -1
View File
@@ -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) {
}
+13
View File
@@ -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;
}