diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index 6fa03ddd..c7618481 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -60,7 +60,6 @@ enum MeterFlag_e { METER_BTN_Z = 0x800, METER_BTN_0x1000 = 0x1000, - METER_BTN_CROSS = METER_BTN_CROSS_UP | METER_BTN_CROSS_DOWN | METER_BTN_CROSS_LEFT | METER_BTN_CROSS_RIGHT, }; @@ -68,6 +67,11 @@ class dLytMeterMain_c { friend class dLytMeter_c; public: + enum BasicPosition_e { + POSITION_NORMAL = 0, + POSITION_MAP = 1, + }; + dLytMeterMain_c(); virtual ~dLytMeterMain_c() {} @@ -169,8 +173,8 @@ private: /* 0x136DC */ mVec3_c mRupyPositions[7]; /* 0x13730 */ mVec3_c mShieldPos; /* 0x1373C */ mVec3_c mRupyPos; - /* 0x13748 */ s32 field_0x13748; - /* 0x1374C */ s32 field_0x1374C; + /* 0x13748 */ s32 mBasicPosition; + /* 0x1374C */ s32 mSavedBasicPosition; /* 0x13750 */ s32 field_0x13750; /* 0x13754 */ s32 field_0x13754; /* 0x13758 */ s32 mShieldPosIndex; @@ -264,6 +268,14 @@ public: return mMain.field_0x13770; } + bool getMeterField_0x13773() const { + return mMain.field_0x13773; + } + + void setMeterField_0x13773(bool value) { + mMain.field_0x13773 = value; + } + bool getMeterField_0x13774() const { return mMain.field_0x13774; } @@ -450,6 +462,14 @@ public: } } + dLytMeterMain_c::BasicPosition_e getBasicPosition() const { + return (dLytMeterMain_c::BasicPosition_e)mMain.mBasicPosition; + } + + void setBasicPosition(dLytMeterMain_c::BasicPosition_e pos) { + mMain.mBasicPosition = pos; + } + private: /* 0x00004 */ d2d::ResAccIf_c mResAcc; /* 0x00374 */ dLytMeterEventSkip_c *mpEventSkip; diff --git a/include/d/lyt/msg_window/d_lyt_msg_window.h b/include/d/lyt/msg_window/d_lyt_msg_window.h index c454767b..a11113e6 100644 --- a/include/d/lyt/msg_window/d_lyt_msg_window.h +++ b/include/d/lyt/msg_window/d_lyt_msg_window.h @@ -25,6 +25,34 @@ struct dLytMsgWindowCharData; class dLytMsgWindow_c { public: + enum MsgWindow_e { + MSG_WINDOW_0 = 0, + MSG_WINDOW_1 = 1, + + MSG_WINDOW_SWORD_FI = 2, + MSG_WINDOW_SWORD_GHIRAHIM = 3, + MSG_WINDOW_SWORD_LASTBOSS = 4, + MSG_WINDOW_GET = 5, + MSG_WINDOW_WOOD = 6, + MSG_WINDOW_STONE = 7, + + MSG_WINDOW_8 = 8, + + MSG_WINDOW_LINK = 9, + + MSG_WINDOW_10 = 10, + + MSG_WINDOW_22 = 22, + + MSG_WINDOW_DEMO = 30, + MSG_WINDOW_31 = 31, + + MSG_WINDOW_34 = 34, + + // Maybe none + MSG_WINDOW_36 = 36, + }; + dLytMsgWindow_c() : mStateMgr(*this) {} virtual ~dLytMsgWindow_c() {} diff --git a/include/d/lyt/msg_window/d_lyt_msg_window_select_btn.h b/include/d/lyt/msg_window/d_lyt_msg_window_select_btn.h index 43a0b409..3cdfd756 100644 --- a/include/d/lyt/msg_window/d_lyt_msg_window_select_btn.h +++ b/include/d/lyt/msg_window/d_lyt_msg_window_select_btn.h @@ -124,7 +124,7 @@ public: return *mStateMgr.getStateID() == StateID_Wait; } -private: +protected: s32 fn_8011FE50(); STATE_FUNC_DECLARE(dLytMsgWindowSelectBtn_c, Wait); diff --git a/src/d/d_tag_processor.cpp b/src/d/d_tag_processor.cpp index 0ef8892a..7da58f43 100644 --- a/src/d/d_tag_processor.cpp +++ b/src/d/d_tag_processor.cpp @@ -5,6 +5,7 @@ #include "d/d_message.h" #include "d/d_textunk.h" #include "d/d_textwindow_unk.h" +#include "d/lyt/msg_window/d_lyt_msg_window.h" #include "nw4r/lyt/lyt_types.h" #include "nw4r/ut/ut_CharWriter.h" #include "nw4r/ut/ut_Color.h" @@ -206,7 +207,7 @@ dTagProcessor_c::dTagProcessor_c() { field_0xEE3 = 0; field_0xEE4 = 0; field_0x004 = nullptr; - mMsgWindowSubtype = 0x24; + mMsgWindowSubtype = dLytMsgWindow_c::MSG_WINDOW_36; field_0x90D = 4; field_0xEF0 = 0; field_0xEF1 = 0; @@ -497,7 +498,9 @@ beginning: if (lineNum / getMaxNumLines(mMsgWindowSubtype) == unkArg) { nw4r::lyt::Size fontSize = field_0x004->GetFontSize(); posX = fn_800B8560(lineNum); - if ((mMsgWindowSubtype < 6 || mMsgWindowSubtype >= 10) && mMsgWindowSubtype != 30) { + if ((mMsgWindowSubtype < dLytMsgWindow_c::MSG_WINDOW_WOOD || + mMsgWindowSubtype >= dLytMsgWindow_c::MSG_WINDOW_10) && + mMsgWindowSubtype != dLytMsgWindow_c::MSG_WINDOW_DEMO) { posX = 0.0f; } @@ -513,7 +516,7 @@ beginning: if (textBox != nullptr) { currScale *= textBox->getMyScale(); } - if (mMsgWindowSubtype == 30) { + if (mMsgWindowSubtype == dLytMsgWindow_c::MSG_WINDOW_DEMO) { tmp3 = -2.0f; } else { tmp3 = 3.0f; @@ -804,12 +807,14 @@ nw4r::ut::Operation dTagProcessor_c::ProcessTags(nw4r::ut::Rect *rect, u16 ch, n } void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext *ctx, u8 cmdLen, wchar_t *ptr) { - if (mMsgWindowSubtype != 22 && mMsgWindowSubtype != 30 && field_0xEE0 != 0) { + if (mMsgWindowSubtype != dLytMsgWindow_c::MSG_WINDOW_22 && mMsgWindowSubtype != dLytMsgWindow_c::MSG_WINDOW_DEMO && + field_0xEE0 != 0) { int arg = ptr[0]; nw4r::lyt::Size textBoxSize = field_0x004->GetSize(); nw4r::lyt::Size fontSize = field_0x004->GetFontSize(); int i1 = getMaxNumLines(mMsgWindowSubtype); - if (arg % i1 == 0 && mMsgWindowSubtype != 31 && mMsgWindowSubtype != 8) { + if (arg % i1 == 0 && mMsgWindowSubtype != dLytMsgWindow_c::MSG_WINDOW_31 && + mMsgWindowSubtype != dLytMsgWindow_c::MSG_WINDOW_8) { int u = 0; int v = 0; for (int i = arg; i < arg + getMaxNumLines(mMsgWindowSubtype) && i < 0x32; i++) { @@ -854,7 +859,9 @@ void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext= 9) && mMsgWindowSubtype != 30) { + if ((mMsgWindowSubtype < dLytMsgWindow_c::MSG_WINDOW_WOOD || + mMsgWindowSubtype >= dLytMsgWindow_c::MSG_WINDOW_LINK) && + mMsgWindowSubtype != 30) { margin = 0.0f; } if (margin > 0.0f) { @@ -872,14 +879,14 @@ void dTagProcessor_c::setColor(nw4r::ut::Rect *rect, nw4r::ut::PrintContext= 2 && mMsgWindowSubtype < 5) { + } else if (cmd == 3 && mMsgWindowSubtype >= dLytMsgWindow_c::MSG_WINDOW_SWORD_FI && + mMsgWindowSubtype < dLytMsgWindow_c::MSG_WINDOW_SWORD_FI + 3) { c1.r = 0x50; c1.g = 0xE6; c1.b = 0xFA; @@ -1261,23 +1269,23 @@ void dTagProcessor_c::setStringArg(const wchar_t *arg, s32 index) { f32 dTagProcessor_c::fn_800B8040(s8 factor, u32 windowType) { // Fun little recursion here f32 f1 = UnkTextThing::getFn800B1F70(); - if (windowType == 6) { + if (windowType == dLytMsgWindow_c::MSG_WINDOW_WOOD) { f32 f2 = fn_800B8040(0, 0); f32 f3 = fn_800B8040(factor, 0); return f1 * ((f3 / f2) * 0.93f); - } else if (windowType == 7) { + } else if (windowType == dLytMsgWindow_c::MSG_WINDOW_STONE) { f32 f2 = fn_800B8040(0, 0); f32 f3 = fn_800B8040(factor, 0); return f1 * ((f3 / f2) * 0.9f); - } else if (windowType == 9) { + } else if (windowType == dLytMsgWindow_c::MSG_WINDOW_LINK) { f32 f2 = fn_800B8040(0, 0); f32 f3 = fn_800B8040(factor, 0); return f1 * ((f3 / f2) * 0.68f); - } else if (windowType == 30) { + } else if (windowType == dLytMsgWindow_c::MSG_WINDOW_DEMO) { f32 f2 = fn_800B8040(0, 0); f32 f3 = fn_800B8040(factor, 0); return f1 * ((f3 / f2) * 0.9f); - } else if (windowType == 34) { + } else if (windowType == dLytMsgWindow_c::MSG_WINDOW_34) { f32 f2 = fn_800B8040(0, 0); f32 f3 = fn_800B8040(factor, 0); return f1 * ((f3 / f2) * 0.86f); @@ -1296,11 +1304,11 @@ f32 dTagProcessor_c::fn_800B8040(s8 factor, u32 windowType) { } s32 dTagProcessor_c::getMaxNumLines(s32 arg) { - if (arg >= 6 && arg < 8) { + if (arg >= dLytMsgWindow_c::MSG_WINDOW_WOOD && arg < dLytMsgWindow_c::MSG_WINDOW_WOOD + 2) { return 4; - } else if (arg == 9) { + } else if (arg == dLytMsgWindow_c::MSG_WINDOW_LINK) { return 2; - } else if (arg == 30) { + } else if (arg == dLytMsgWindow_c::MSG_WINDOW_DEMO) { return 2; } return 4; diff --git a/src/d/lyt/d_textbox.cpp b/src/d/lyt/d_textbox.cpp index 6bf867fb..8d97b56d 100644 --- a/src/d/lyt/d_textbox.cpp +++ b/src/d/lyt/d_textbox.cpp @@ -5,6 +5,7 @@ #include "d/d_message.h" #include "d/d_tag_processor.h" #include "d/d_textunk.h" +#include "d/lyt/msg_window/d_lyt_msg_window.h" #include "libms/msgfile.h" #include "m/m_color.h" #include "nw4r/lyt/lyt_common.h" @@ -500,7 +501,7 @@ void dTextBox_c::init() { SetFontSize(sz); mMyTextScale = sz; mMyScale = 1.0f; - mWindowSubtype = 0x24; + mWindowSubtype = dLytMsgWindow_c::MSG_WINDOW_36; field_0x201 = true; } diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 35842b0f..00789d34 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -849,8 +849,8 @@ bool dLytMeterMain_c::build(d2d::ResAccIf_c *resAcc) { } s32 zero = 0; - field_0x1374C = 0; - field_0x13748 = 0; + mSavedBasicPosition = 0; + mBasicPosition = POSITION_NORMAL; field_0x13750 = 4; field_0x13770 = 3; field_0x13774 = 0; @@ -1005,7 +1005,7 @@ void dLytMeterMain_c::fn_800D5290() { } bool dLytMeterMain_c::fn_800D5350() { - if (field_0x13748 == 1 && dMessage_c::getInstance()->getField_0x328()) { + if (mBasicPosition == POSITION_MAP && dMessage_c::getInstance()->getField_0x328()) { return true; } return false; @@ -1519,7 +1519,7 @@ bool dLytMeterMain_c::execute() { meter->clearFlags(METER_BTN_PLUS); } - if (field_0x13750 != 0 && field_0x13748 == 1) { + if (field_0x13750 != 0 && mBasicPosition == POSITION_MAP) { fn_800D5290(); } @@ -1606,9 +1606,9 @@ bool dLytMeterMain_c::execute() { mNodes[METER_SHIELD].mpPane->SetTranslate(mShieldPos); } - if (field_0x13748 != field_0x1374C) { - field_0x1374C = field_0x13748; - mAnmGroups[METER_ANIM_POSITION].setFrame(field_0x13748); + if (mBasicPosition != mSavedBasicPosition) { + mSavedBasicPosition = mBasicPosition; + mAnmGroups[METER_ANIM_POSITION].setFrame(mBasicPosition); mAnmGroups[METER_ANIM_POSITION].setAnimEnable(true); } diff --git a/src/d/lyt/msg_window/d_lyt_msg_window.cpp b/src/d/lyt/msg_window/d_lyt_msg_window.cpp index 6317e712..3f935e28 100644 --- a/src/d/lyt/msg_window/d_lyt_msg_window.cpp +++ b/src/d/lyt/msg_window/d_lyt_msg_window.cpp @@ -14,6 +14,7 @@ // clang-format off // vtable order +#include "d/lyt/meter/d_lyt_meter.h" #include "d/lyt/msg_window/d_lyt_msg_window_common.h" #include "d/lyt/msg_window/d_lyt_msg_window_talk.h" #include "d/lyt/msg_window/d_lyt_msg_window_link.h" @@ -167,6 +168,9 @@ bool dLytMsgWindow_c::remove() { void dLytMsgWindow_c::initializeState_Invisible() {} void dLytMsgWindow_c::executeState_Invisible() { + if (!EventManager::isInEvent() && dLytMeter_c::GetInstance()->getMeterField_0x13773()) { + dLytMeter_c::GetInstance()->setMeterField_0x13773(false); + } if (dMessage_c::getInstance()->getField_0x329()) { mStateMgr.changeState(StateID_MapOpen); } else if (dMessage_c::getInstance()->getField_0x32A()) { @@ -179,7 +183,7 @@ void dLytMsgWindow_c::executeState_Invisible() { if (field_0x1220 == 0) { if (field_0x80D != 0) { - if (mpTagProcessor->getMsgWindowSubtype() == 0x16) { + if (mpTagProcessor->getMsgWindowSubtype() == MSG_WINDOW_22) { mpAutoCaption = new dLytAutoCaption_c(); mpAutoCaption->build(&mResAcc1, &mResAcc2, mpTagProcessor); mpCurrentSubtype = mpAutoCaption; @@ -200,29 +204,29 @@ void dLytMsgWindow_c::executeState_Invisible() { createSubMsgManager(mpTagProcessor->getMsgWindowSubtype()); field_0x828 = nullptr; mSpecialFiMenuValue = FiContext::KEN8_Nevermind; - if (mpTagProcessor->getMsgWindowSubtype() == 6) { + if (mpTagProcessor->getMsgWindowSubtype() == MSG_WINDOW_WOOD) { mpCurrentSubtype = mpWindowWood; dTextBox_c *box = mpCurrentSubtype->getTextBox(); mpMsgWindowUnk->fn_800B2130(mNameCopy, box, nullptr, true); mpMsgWindowUnk->textAdvancingRelated(true, true); setTextToDisplay(mpMsgWindowUnk->getProcessedText()); - } else if (mpTagProcessor->getMsgWindowSubtype() == 7) { + } else if (mpTagProcessor->getMsgWindowSubtype() == MSG_WINDOW_STONE) { mpCurrentSubtype = mpWindowStone; dTextBox_c *box = mpCurrentSubtype->getTextBox(); mpMsgWindowUnk->fn_800B2130(mNameCopy, box, nullptr, true); mpMsgWindowUnk->textAdvancingRelated(true, true); setTextToDisplay(mpMsgWindowUnk->getProcessedText()); - } else if (mpTagProcessor->getMsgWindowSubtype() >= 2 && - mpTagProcessor->getMsgWindowSubtype() < 5) { + } else if (mpTagProcessor->getMsgWindowSubtype() >= MSG_WINDOW_SWORD_FI && + mpTagProcessor->getMsgWindowSubtype() < MSG_WINDOW_SWORD_FI + 3) { mpCurrentSubtype = mpWindowSword; field_0x828 = mpWindowSword->getCharData(); - } else if (mpTagProcessor->getMsgWindowSubtype() == 9) { + } else if (mpTagProcessor->getMsgWindowSubtype() == MSG_WINDOW_LINK) { mpCurrentSubtype = mpWindowLink; field_0x828 = mpWindowLink->getCharData(); - } else if (mpTagProcessor->getMsgWindowSubtype() == 5) { + } else if (mpTagProcessor->getMsgWindowSubtype() == MSG_WINDOW_GET) { mpCurrentSubtype = mpWindowGet; field_0x828 = mpWindowGet->getCharData(); - } else if (mpTagProcessor->getMsgWindowSubtype() == 30) { + } else if (mpTagProcessor->getMsgWindowSubtype() == MSG_WINDOW_DEMO) { mpCurrentSubtype = mpWindowDemo; field_0x828 = mpWindowDemo->getCharData(); dTextBox_c *box = mpCurrentSubtype->getTextBox(); @@ -298,9 +302,10 @@ void dLytMsgWindow_c::executeState_OutputText() { } } - if (mpTagProcessor->getMsgWindowSubtype() >= 2 && mpTagProcessor->getMsgWindowSubtype() < 5) { + if (mpTagProcessor->getMsgWindowSubtype() >= MSG_WINDOW_SWORD_FI && + mpTagProcessor->getMsgWindowSubtype() < MSG_WINDOW_SWORD_FI + 3) { fn_803998A0(lbl_80575DE0, mpMsgWindowUnk->getField_0x147A(), mpMsgWindowUnk->getField_0x147C()); - } else if (mpTagProcessor->getMsgWindowSubtype() <= 1 && oldValue != mpMsgWindowUnk->getField_0x147A()) { + } else if (mpTagProcessor->getMsgWindowSubtype() <= MSG_WINDOW_1 && oldValue != mpMsgWindowUnk->getField_0x147A()) { u16 a = mpMsgWindowUnk->getField_0x147C(); f32 b = (dTagProcessor_c::fn_800B8040(0, 0) * 100.0f); SmallSoundManager::GetInstance()->playButtonPressSoundWhenAdvancingTextBoxes(a / b); @@ -362,7 +367,8 @@ void dLytMsgWindow_c::executeState_WaitKeyChangePage0() { mStateMgr.changeState(StateID_WaitKeyChangePage1); } else { mpMsgWindowUnk->fn_800B2AA0(); - if (mpTagProcessor->getMsgWindowSubtype() >= 6 && mpTagProcessor->getMsgWindowSubtype() < 8) { + if (mpTagProcessor->getMsgWindowSubtype() >= MSG_WINDOW_WOOD && + mpTagProcessor->getMsgWindowSubtype() < MSG_WINDOW_WOOD + 2) { mpMsgWindowUnk->textAdvancingRelated(true, true); } setTextToDisplay(mpMsgWindowUnk->getProcessedText()); @@ -377,7 +383,8 @@ void dLytMsgWindow_c::executeState_WaitKeyChangePage1() { if (mpCurrentSubtype->startDecide(false)) { field_0x817 = 0; mpMsgWindowUnk->fn_800B2AA0(); - if (mpTagProcessor->getMsgWindowSubtype() >= 6 && mpTagProcessor->getMsgWindowSubtype() < 8) { + if (mpTagProcessor->getMsgWindowSubtype() >= MSG_WINDOW_WOOD && + mpTagProcessor->getMsgWindowSubtype() < MSG_WINDOW_WOOD + 2) { mpMsgWindowUnk->textAdvancingRelated(true, true); } setTextToDisplay(mpMsgWindowUnk->getProcessedText()); @@ -487,18 +494,15 @@ void dLytMsgWindow_c::initializeState_WaitKeySelectQuestion() { mSelectBtn.setField_0x990(tmp); mSelectBtn.setTagProcessor(mpTagProcessor); - wchar_t **buf = sBufs; - - buf[0] = mpTagProcessor->getBuf(0); - buf[1] = mpTagProcessor->getBuf(1); - buf[2] = mpTagProcessor->getBuf(2); - buf[3] = mpTagProcessor->getBuf(3); + for (s32 i = 0; i < 4; i++) { + sBufs[i] = mpTagProcessor->getBuf(i); + } mSelectBtn.fn_8011E5D0(field_0x824, true); - for (int i = 0; i < field_0x824; i++) { - for (int j = 0; j < 2; j++) { - mSelectBtn.getSelectTextBox(i, j)->setTextWithGlobalTextProcessor(buf[i]); + for (s32 i = 0, option = 0; i < field_0x824; option++, i++) { + for (s32 j = 0; j < 2; j++) { + mSelectBtn.getSelectTextBox(option, j)->setTextWithGlobalTextProcessor(sBufs[i]); } } } @@ -558,7 +562,13 @@ void dLytMsgWindow_c::executeState_WaitKeyMapClose() { void dLytMsgWindow_c::finalizeState_WaitKeyMapClose() {} void dLytMsgWindow_c::initializeState_MapClose() {} -void dLytMsgWindow_c::executeState_MapClose() {} +void dLytMsgWindow_c::executeState_MapClose() { + if (dLytMeter_c::GetInstance()->getBasicPosition() == dLytMeterMain_c::POSITION_NORMAL) { + dMessage_c::getInstance()->setField_0x32A(false); + dMessage_c::getInstance()->clearLightPillarRelatedArgs(); + mStateMgr.changeState(StateID_Invisible); + } +} void dLytMsgWindow_c::finalizeState_MapClose() {} void dLytMsgWindow_c::initializeState_Out() { @@ -745,46 +755,42 @@ void dLytMsgWindow_c::setCurrentFlowFilename(const char *name) { void dLytMsgWindow_c::createSubMsgManager(u8 type) { switch (type) { - case 6: + case MSG_WINDOW_WOOD: mpWindowWood = new dLytMsgWindowWood_c(); mpWindowWood->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; - case 7: + case MSG_WINDOW_STONE: mpWindowStone = new dLytMsgWindowStone_c(); mpWindowStone->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; - case 2: + case MSG_WINDOW_SWORD_FI: mpWindowSword = new dLytMsgWindowSword_c(); mpWindowSword->setSwordType(dLytTextSword::FI); mpWindowSword->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; - case 3: + case MSG_WINDOW_SWORD_GHIRAHIM: mpWindowSword = new dLytMsgWindowSword_c(); mpWindowSword->setSwordType(dLytTextSword::GHIRAHIM); mpWindowSword->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; - case 4: + case MSG_WINDOW_SWORD_LASTBOSS: mpWindowSword = new dLytMsgWindowSword_c(); mpWindowSword->setSwordType(dLytTextSword::LASTBOSS); mpWindowSword->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; - case 9: - // TODO Link + case MSG_WINDOW_LINK: mpWindowLink = new dLytMsgWindowLink_c(); mpWindowLink->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; - case 5: - // TODO Get + case MSG_WINDOW_GET: mpWindowGet = new dLytMsgWindowGet_c(); mpWindowGet->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; - case 30: - // TODO Demo + case MSG_WINDOW_DEMO: mpWindowDemo = new dLytMsgWindowDemo_c(); mpWindowDemo->build(&mResAcc1, &mResAcc2, mpTagProcessor); break; default: - // TODO talk mpWindowTalk = new dLytMsgWindowTalk_c(); mpWindowTalk->build(&mResAcc1, &mResAcc2, mpTagProcessor); break;