mirror of
https://github.com/zeldaret/ss
synced 2026-08-18 21:47:41 -04:00
auto_caption, auto_explain largely matching
This commit is contained in:
@@ -407,12 +407,12 @@ void dTagProcessor_c::eventFlowTextProcessingRelated(
|
||||
}
|
||||
} else {
|
||||
if (textBox != nullptr) {
|
||||
if (c == 10) {
|
||||
if (c == '\n') {
|
||||
*writePtr = c;
|
||||
src++;
|
||||
writePtr++;
|
||||
mCommandInsert++;
|
||||
s32 i10 = getNumLines(field_0x90C);
|
||||
s32 i10 = getMaxNumLines(field_0x90C);
|
||||
if (mCommandInsert % i10 == 0) {
|
||||
float1 = fn_800B8040(0, field_0x90C);
|
||||
float1 *= textBox->getMyScale();
|
||||
@@ -628,11 +628,11 @@ void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext<w
|
||||
int arg = ptr[0];
|
||||
nw4r::lyt::Size textBoxSize = field_0x004->GetSize();
|
||||
nw4r::lyt::Size fontSize = field_0x004->GetFontSize();
|
||||
int i1 = getNumLines(field_0x90C);
|
||||
int i1 = getMaxNumLines(field_0x90C);
|
||||
if (arg % i1 == 0 && field_0x90C != 31 && field_0x90C != 8) {
|
||||
int u = 0;
|
||||
int v = 0;
|
||||
for (int i = arg; i < arg + getNumLines(field_0x90C) && i < 0x32; i++) {
|
||||
for (int i = arg; i < arg + getMaxNumLines(field_0x90C) && i < 0x32; i++) {
|
||||
f32 f6 = getFloat(i);
|
||||
if (f6 > 0.0f) {
|
||||
v++;
|
||||
@@ -650,7 +650,7 @@ void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext<w
|
||||
// completely hidden in the Ghidra decompiler, apparently
|
||||
// because the results aren't used?
|
||||
|
||||
if (u < getNumLines(field_0x90C)) {
|
||||
if (u < getMaxNumLines(field_0x90C)) {
|
||||
f32 w1 = fontSize.width * 0.5f;
|
||||
f32 h1 = fontSize.height * 0.5f;
|
||||
if (!(w1 < UnkTextThing::getField0x758())) {
|
||||
@@ -660,7 +660,7 @@ void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext<w
|
||||
h1 = UnkTextThing::getField0x758();
|
||||
}
|
||||
|
||||
f32 f7 = (fontSize.height + field_0x004->GetLineSpace()) * 0.5f * (getNumLines(field_0x90C) - v);
|
||||
f32 f7 = (fontSize.height + field_0x004->GetLineSpace()) * 0.5f * (getMaxNumLines(field_0x90C) - v);
|
||||
field_0x814 = ctx->writer->GetCursorY();
|
||||
field_0x818 = ctx->y;
|
||||
field_0xEE4 = 1;
|
||||
@@ -983,7 +983,7 @@ f32 dTagProcessor_c::fn_800B8040(s8 factor, u32 windowType) {
|
||||
}
|
||||
}
|
||||
|
||||
s32 dTagProcessor_c::getNumLines(s32 arg) {
|
||||
s32 dTagProcessor_c::getMaxNumLines(s32 arg) {
|
||||
if (arg >= 6 && arg < 8) {
|
||||
return 4;
|
||||
} else if (arg == 9) {
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
#include "d/lyt/d_lyt_auto_caption.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_tag_processor.h"
|
||||
#include "d/lyt/d2d.h"
|
||||
#include "d/lyt/d_textbox.h"
|
||||
#include "s/s_State.hpp"
|
||||
|
||||
STATE_DEFINE(dLytAutoCaption_c, Invisible);
|
||||
STATE_DEFINE(dLytAutoCaption_c, In);
|
||||
STATE_DEFINE(dLytAutoCaption_c, OutputText);
|
||||
STATE_DEFINE(dLytAutoCaption_c, Out);
|
||||
|
||||
static const d2d::LytBrlanMapping brlanMap[] = {
|
||||
{ "autoCaption_00_in.brlan", "G_inOut_00"},
|
||||
{ "autoCaption_00_out.brlan", "G_inOut_00"},
|
||||
{ "autoCaption_00_loop.brlan", "G_loop_00"},
|
||||
{"autoCaption_00_textLine.brlan", "G_textLine_00"},
|
||||
};
|
||||
|
||||
#define AUTO_CAPTION_ANIM_IN 0
|
||||
#define AUTO_CAPTION_ANIM_OUT 1
|
||||
#define AUTO_CAPTION_ANIM_LOOP 2
|
||||
#define AUTO_CAPTION_ANIM_TEXTLINE 3
|
||||
|
||||
#define AUTO_CAPTION_NUM_ANIMS 4
|
||||
|
||||
static const char *sPanes[] = {
|
||||
"N_inOutAll_00",
|
||||
};
|
||||
|
||||
static const char *sTextBoxes[] = {
|
||||
"T_textBox_00",
|
||||
"T_textBoxS_00",
|
||||
};
|
||||
|
||||
static const char *sGroupName = "G_ref_00";
|
||||
|
||||
void dLytAutoCaption_c::initializeState_Invisible() {}
|
||||
void dLytAutoCaption_c::executeState_Invisible() {
|
||||
if (mShouldBeOpen) {
|
||||
mStateMgr.changeState(StateID_In);
|
||||
}
|
||||
}
|
||||
void dLytAutoCaption_c::finalizeState_Invisible() {}
|
||||
|
||||
void dLytAutoCaption_c::initializeState_In() {
|
||||
s32 unk = mpTextboxes[0]->fn_800AF6B0(mpTextboxes[0]->GetString(), mpTagProcessor);
|
||||
f32 lineWidth = mpTextboxes[0]->GetLineWidth(nullptr);
|
||||
f32 frame = 0.0f;
|
||||
if (lineWidth <= 226.0f) {
|
||||
if (unk > 1) {
|
||||
frame = 1.0f;
|
||||
}
|
||||
} else if (unk > 1) {
|
||||
frame = 3.0f;
|
||||
} else {
|
||||
frame = 2.0f;
|
||||
}
|
||||
|
||||
mAnm[AUTO_CAPTION_ANIM_TEXTLINE].setAnimEnable(true);
|
||||
mAnm[AUTO_CAPTION_ANIM_TEXTLINE].setFrame(frame);
|
||||
mLyt.calc();
|
||||
mAnm[AUTO_CAPTION_ANIM_TEXTLINE].setAnimEnable(false);
|
||||
|
||||
mAnm[AUTO_CAPTION_ANIM_IN].setAnimEnable(true);
|
||||
mAnm[AUTO_CAPTION_ANIM_IN].setFrame(0.0f);
|
||||
}
|
||||
void dLytAutoCaption_c::executeState_In() {
|
||||
if (mAnm[AUTO_CAPTION_ANIM_IN].isEndReached()) {
|
||||
mAnm[AUTO_CAPTION_ANIM_IN].setAnimEnable(false);
|
||||
mStateMgr.changeState(StateID_OutputText);
|
||||
}
|
||||
}
|
||||
void dLytAutoCaption_c::finalizeState_In() {}
|
||||
|
||||
void dLytAutoCaption_c::initializeState_OutputText() {}
|
||||
void dLytAutoCaption_c::executeState_OutputText() {
|
||||
if (!mShouldBeOpen) {
|
||||
mStateMgr.changeState(StateID_Out);
|
||||
}
|
||||
}
|
||||
void dLytAutoCaption_c::finalizeState_OutputText() {}
|
||||
|
||||
void dLytAutoCaption_c::initializeState_Out() {
|
||||
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(true);
|
||||
mAnm[AUTO_CAPTION_ANIM_OUT].setFrame(0.0f);
|
||||
}
|
||||
void dLytAutoCaption_c::executeState_Out() {
|
||||
if (mAnm[AUTO_CAPTION_ANIM_OUT].isEndReached()) {
|
||||
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(false);
|
||||
mStateMgr.changeState(StateID_Invisible);
|
||||
}
|
||||
}
|
||||
void dLytAutoCaption_c::finalizeState_Out() {}
|
||||
|
||||
bool dLytAutoCaption_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
|
||||
mLyt.setResAcc(resAcc1);
|
||||
mLyt.build("autoCaption_00.brlyt", nullptr);
|
||||
mLyt.setPriority(0x8A);
|
||||
|
||||
for (int i = 0; i < AUTO_CAPTION_NUM_ANIMS; i++) {
|
||||
mAnm[i].init(brlanMap[i].mFile, resAcc1, mLyt.getLayout(), brlanMap[i].mName);
|
||||
mAnm[i].bind(false);
|
||||
mAnm[i].setAnimEnable(false);
|
||||
}
|
||||
|
||||
mpPane = mLyt.findPane(sPanes[0]);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
mpTextboxes[i] = mLyt.getTextBox(sTextBoxes[i]);
|
||||
}
|
||||
|
||||
mpTagProcessor = tagProcessor;
|
||||
mShouldBeOpen = false;
|
||||
|
||||
mAnm[AUTO_CAPTION_ANIM_LOOP].setAnimEnable(true);
|
||||
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(true);
|
||||
mAnm[AUTO_CAPTION_ANIM_OUT].setToEnd();
|
||||
mLyt.calc();
|
||||
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(false);
|
||||
|
||||
mStateMgr.changeState(StateID_Invisible);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytAutoCaption_c::remove() {
|
||||
for (int i = 0; i < AUTO_CAPTION_NUM_ANIMS; i++) {
|
||||
mAnm[i].remove();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytAutoCaption_c::execute() {
|
||||
mStateMgr.executeState();
|
||||
for (int i = 0; i < AUTO_CAPTION_NUM_ANIMS; i++) {
|
||||
if (mAnm[i].isEnabled()) {
|
||||
mAnm[i].play();
|
||||
}
|
||||
}
|
||||
mLyt.calc();
|
||||
return true;
|
||||
}
|
||||
|
||||
void dLytAutoCaption_c::draw() {
|
||||
mLyt.draw();
|
||||
}
|
||||
|
||||
void dLytAutoCaption_c::open() {
|
||||
mShouldBeOpen = true;
|
||||
}
|
||||
|
||||
bool dLytAutoCaption_c::isOpening() const {
|
||||
return !(*mStateMgr.getStateID() == StateID_In);
|
||||
}
|
||||
|
||||
void dLytAutoCaption_c::close() {
|
||||
mShouldBeOpen = false;
|
||||
}
|
||||
|
||||
bool dLytAutoCaption_c::isClosing() const {
|
||||
return !(*mStateMgr.getStateID() == StateID_Out);
|
||||
}
|
||||
|
||||
bool dLytAutoCaption_c::setText(const wchar_t *text) {
|
||||
mpTextboxes[0]->SetTagProcessor(mpTagProcessor);
|
||||
mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
|
||||
mpTextboxes[0]->fn_800AF930(text);
|
||||
mpTextboxes[1]->fn_800AF930(text);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytAutoCaption_c::checkSomethingMeter() {
|
||||
// TODO - too many dependencies on dLytMeter
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
#include "d/lyt/d_lyt_auto_explain.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_tag_processor.h"
|
||||
#include "d/lyt/d2d.h"
|
||||
#include "d/lyt/d_textbox.h"
|
||||
#include "s/s_State.hpp"
|
||||
|
||||
STATE_DEFINE(dLytAutoExplain_c, Invisible);
|
||||
STATE_DEFINE(dLytAutoExplain_c, In);
|
||||
STATE_DEFINE(dLytAutoExplain_c, OutputText);
|
||||
STATE_DEFINE(dLytAutoExplain_c, Out);
|
||||
|
||||
static const d2d::LytBrlanMapping brlanMap[] = {
|
||||
{ "autoMessage_00_in.brlan", "G_inOut_00"},
|
||||
{ "autoMessage_00_out.brlan", "G_inOut_00"},
|
||||
{"autoMessage_00_line.brlan", "G_line_00"},
|
||||
};
|
||||
|
||||
#define AUTO_EXPLAIN_ANIM_IN 0
|
||||
#define AUTO_EXPLAIN_ANIM_OUT 1
|
||||
#define AUTO_EXPLAIN_ANIM_TEXTLINE 2
|
||||
|
||||
#define AUTO_EXPLAIN_NUM_ANIMS 3
|
||||
|
||||
static const char *sPanes[] = {
|
||||
"N_inOutAll_00",
|
||||
};
|
||||
|
||||
static const char *sTextBoxes[] = {
|
||||
"T_autoMsg_00",
|
||||
"T_autoMsgS_00",
|
||||
};
|
||||
|
||||
static const char *sGroupName = "G_ref_00";
|
||||
|
||||
void dLytAutoExplain_c::initializeState_Invisible() {}
|
||||
void dLytAutoExplain_c::executeState_Invisible() {
|
||||
if (mShouldBeOpen) {
|
||||
mStateMgr.changeState(StateID_In);
|
||||
}
|
||||
}
|
||||
void dLytAutoExplain_c::finalizeState_Invisible() {}
|
||||
|
||||
extern "C" u8 fn_80054F30();
|
||||
|
||||
void dLytAutoExplain_c::initializeState_In() {
|
||||
int numLines = mpTagProcessor->getNumLinesMaybe() - 1;
|
||||
if (fn_80054F30() != 0 && numLines == 3) {
|
||||
numLines = 2;
|
||||
}
|
||||
|
||||
mAnm[AUTO_EXPLAIN_ANIM_TEXTLINE].setAnimEnable(true);
|
||||
mAnm[AUTO_EXPLAIN_ANIM_TEXTLINE].setFrame(numLines);
|
||||
mLyt.calc();
|
||||
mAnm[AUTO_EXPLAIN_ANIM_TEXTLINE].setAnimEnable(false);
|
||||
|
||||
mAnm[AUTO_EXPLAIN_ANIM_IN].setAnimEnable(true);
|
||||
mAnm[AUTO_EXPLAIN_ANIM_IN].setFrame(0.0f);
|
||||
}
|
||||
void dLytAutoExplain_c::executeState_In() {
|
||||
if (mAnm[AUTO_EXPLAIN_ANIM_IN].isEndReached()) {
|
||||
mAnm[AUTO_EXPLAIN_ANIM_IN].setAnimEnable(false);
|
||||
mStateMgr.changeState(StateID_OutputText);
|
||||
}
|
||||
}
|
||||
void dLytAutoExplain_c::finalizeState_In() {}
|
||||
|
||||
void dLytAutoExplain_c::initializeState_OutputText() {}
|
||||
void dLytAutoExplain_c::executeState_OutputText() {
|
||||
if (!mShouldBeOpen) {
|
||||
mStateMgr.changeState(StateID_Out);
|
||||
}
|
||||
}
|
||||
void dLytAutoExplain_c::finalizeState_OutputText() {}
|
||||
|
||||
void dLytAutoExplain_c::initializeState_Out() {
|
||||
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(true);
|
||||
mAnm[AUTO_EXPLAIN_ANIM_OUT].setFrame(0.0f);
|
||||
}
|
||||
void dLytAutoExplain_c::executeState_Out() {
|
||||
if (mAnm[AUTO_EXPLAIN_ANIM_OUT].isEndReached()) {
|
||||
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(false);
|
||||
mStateMgr.changeState(StateID_Invisible);
|
||||
}
|
||||
}
|
||||
void dLytAutoExplain_c::finalizeState_Out() {}
|
||||
|
||||
bool dLytAutoExplain_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
|
||||
mLyt.setResAcc(resAcc1);
|
||||
mLyt.build("autoMessage_00.brlyt", nullptr);
|
||||
mLyt.setPriority(0x8A);
|
||||
|
||||
for (int i = 0; i < AUTO_EXPLAIN_NUM_ANIMS; i++) {
|
||||
mAnm[i].init(brlanMap[i].mFile, resAcc1, mLyt.getLayout(), brlanMap[i].mName);
|
||||
mAnm[i].bind(false);
|
||||
mAnm[i].setAnimEnable(false);
|
||||
}
|
||||
|
||||
mpPane = mLyt.findPane(sPanes[0]);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
mpTextboxes[i] = mLyt.getTextBox(sTextBoxes[i]);
|
||||
mpTextboxes[i]->SetTextPositionH(0);
|
||||
// mpTextboxes[i]->SetTextPositionV(0);
|
||||
}
|
||||
|
||||
mpTagProcessor = tagProcessor;
|
||||
mShouldBeOpen = false;
|
||||
|
||||
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(true);
|
||||
mAnm[AUTO_EXPLAIN_ANIM_OUT].setToEnd();
|
||||
mLyt.calc();
|
||||
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(false);
|
||||
|
||||
mStateMgr.changeState(StateID_Invisible);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytAutoExplain_c::remove() {
|
||||
for (int i = 0; i < AUTO_EXPLAIN_NUM_ANIMS; i++) {
|
||||
mAnm[i].remove();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytAutoExplain_c::execute() {
|
||||
mStateMgr.executeState();
|
||||
for (int i = 0; i < AUTO_EXPLAIN_NUM_ANIMS; i++) {
|
||||
if (mAnm[i].isEnabled()) {
|
||||
mAnm[i].play();
|
||||
}
|
||||
}
|
||||
mLyt.calc();
|
||||
return true;
|
||||
}
|
||||
|
||||
void dLytAutoExplain_c::draw() {
|
||||
mLyt.draw();
|
||||
}
|
||||
|
||||
void dLytAutoExplain_c::open() {
|
||||
mShouldBeOpen = true;
|
||||
}
|
||||
|
||||
bool dLytAutoExplain_c::isOpening() const {
|
||||
return !(*mStateMgr.getStateID() == StateID_In);
|
||||
}
|
||||
|
||||
void dLytAutoExplain_c::close() {
|
||||
mShouldBeOpen = false;
|
||||
}
|
||||
|
||||
bool dLytAutoExplain_c::isClosing() const {
|
||||
return !(*mStateMgr.getStateID() == StateID_Out);
|
||||
}
|
||||
|
||||
bool dLytAutoExplain_c::setText(const wchar_t *text) {
|
||||
mpTextboxes[0]->SetTagProcessor(mpTagProcessor);
|
||||
mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
|
||||
mpTextboxes[0]->fn_800AF540(text, mpTagProcessor, 0);
|
||||
mpTextboxes[1]->fn_800AF540(text, mpTagProcessor, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytAutoExplain_c::checkSomethingMeter() {
|
||||
// TODO - too many dependencies on dLytMeter
|
||||
return false;
|
||||
}
|
||||
@@ -38,7 +38,7 @@ static const char *sTextBoxes[] = {
|
||||
|
||||
static const char *sGroupName = "G_ref_00";
|
||||
|
||||
bool dLytMsgWindowStone_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
|
||||
bool dLytMsgWindowStone_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
|
||||
mLyt.setResAcc(resAcc);
|
||||
mLyt.build("sekibanWindow_00.brlyt", nullptr);
|
||||
mLyt.setPriority(0x8A);
|
||||
@@ -69,8 +69,8 @@ bool dLytMsgWindowStone_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcess
|
||||
mpTextboxes[2]->set0x1F6(1);
|
||||
|
||||
for (int i = 0; i < 1; i++) {
|
||||
mNodes[i].mpLytPane = &mCommon;
|
||||
mCommon.build(resAcc);
|
||||
mNodes[i].mpLytPane = &mBtn;
|
||||
mBtn.build(resAcc);
|
||||
mSubpaneList.PushBack(&mNodes[i]);
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ bool dLytMsgWindowStone_c::remove() {
|
||||
for (int i = 0; i < 1; i++) {
|
||||
mNodes[i].mpLytPane->remove();
|
||||
}
|
||||
mCommon.remove();
|
||||
mBtn.remove();
|
||||
for (int i = 0; i < SEKIBAN_NUM_ANIMS; i++) {
|
||||
mAnm[i].remove();
|
||||
}
|
||||
@@ -109,7 +109,7 @@ bool dLytMsgWindowStone_c::remove() {
|
||||
}
|
||||
|
||||
void dLytMsgWindowStone_c::initializeState_Invisible() {
|
||||
mCommon.resetToInvisble();
|
||||
mBtn.resetToInvisble();
|
||||
}
|
||||
void dLytMsgWindowStone_c::executeState_Invisible() {
|
||||
if (mShouldBeOpen) {
|
||||
|
||||
@@ -37,7 +37,7 @@ static const char *sTextBoxes[] = {
|
||||
|
||||
static const char *sGroupName = "G_ref_00";
|
||||
|
||||
bool dLytMsgWindowWood_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
|
||||
bool dLytMsgWindowWood_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
|
||||
mLyt.setResAcc(resAcc);
|
||||
mLyt.build("kanbanWindow_00.brlyt", nullptr);
|
||||
mLyt.setPriority(0x8A);
|
||||
@@ -67,8 +67,8 @@ bool dLytMsgWindowWood_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcesso
|
||||
mpTextboxes[1]->set0x1F6(1);
|
||||
|
||||
for (int i = 0; i < 1; i++) {
|
||||
mNodes[i].mpLytPane = &mCommon;
|
||||
mCommon.build(resAcc);
|
||||
mNodes[i].mpLytPane = &mBtn;
|
||||
mBtn.build(resAcc);
|
||||
mSubpaneList.PushBack(&mNodes[i]);
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ bool dLytMsgWindowWood_c::remove() {
|
||||
for (int i = 0; i < 1; i++) {
|
||||
mNodes[i].mpLytPane->remove();
|
||||
}
|
||||
mCommon.remove();
|
||||
mBtn.remove();
|
||||
for (int i = 0; i < KANBAN_NUM_ANIMS; i++) {
|
||||
mAnm[i].remove();
|
||||
}
|
||||
@@ -107,7 +107,7 @@ bool dLytMsgWindowWood_c::remove() {
|
||||
}
|
||||
|
||||
void dLytMsgWindowWood_c::initializeState_Invisible() {
|
||||
mCommon.resetToInvisble();
|
||||
mBtn.resetToInvisble();
|
||||
}
|
||||
void dLytMsgWindowWood_c::executeState_Invisible() {
|
||||
if (mShouldBeOpen) {
|
||||
|
||||
Reference in New Issue
Block a user