summaryrefslogtreecommitdiff
path: root/src/d/d_msg_scrn_tree.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2024-10-10 07:29:58 -0700
committerGitHub <noreply@github.com>2024-10-10 08:29:58 -0600
commit12eb254d769d84743b5cc6cd5424057c57eaf0ad (patch)
tree4509be332b2ccfc6fe939f47740d68f7746eca3e /src/d/d_msg_scrn_tree.cpp
parent2fd702c0ac170a789af879b8b92a82d4dcc9080c (diff)
switch to dtk setup (#2203)
* switch to dtk setup * some cleanup / fixes * cleanup d_a_alink literals * Restore doxygen, update CI & README.md (#1) * Fix build image ref (#2) --------- Co-authored-by: Luke Street <luke@street.dev>
Diffstat (limited to 'src/d/d_msg_scrn_tree.cpp')
-rw-r--r--src/d/d_msg_scrn_tree.cpp184
1 files changed, 184 insertions, 0 deletions
diff --git a/src/d/d_msg_scrn_tree.cpp b/src/d/d_msg_scrn_tree.cpp
new file mode 100644
index 0000000000..0e9058de13
--- /dev/null
+++ b/src/d/d_msg_scrn_tree.cpp
@@ -0,0 +1,184 @@
+#include "d/d_msg_scrn_tree.h"
+#include "JSystem/J2DGraph/J2DAnmLoader.h"
+#include "JSystem/J2DGraph/J2DGrafContext.h"
+#include "JSystem/J2DGraph/J2DScreen.h"
+#include "JSystem/JKernel/JKRExpHeap.h"
+#include "d/d_msg_object.h"
+#include "d/d_msg_out_font.h"
+#include "d/d_pane_class.h"
+
+extern dMsgObject_HIO_c g_MsgObject_HIO_c;
+
+/* 80248954-80248F14 243294 05C0+00 0/0 1/1 0/0 .text
+ * __ct__14dMsgScrnTree_cFP7JUTFontP10JKRExpHeap */
+dMsgScrnTree_c::dMsgScrnTree_c(JUTFont* param_0, JKRExpHeap* param_1) {
+ if (param_1 != NULL) {
+ field_0xd8 = param_1;
+ } else {
+ field_0xd8 = dComIfGp_getSubHeap2D(7);
+ }
+
+ field_0xd8->getTotalFreeSize();
+ init();
+
+ if (param_0 == NULL) {
+ field_0x54 = mDoExt_getMesgFont();
+ } else {
+ field_0x54 = param_0;
+ }
+
+ mpScreen = new J2DScreen();
+ mpScreen->setPriority("zelda_kanban_wood_a.blo", 0x1020000, dComIfGp_getMsgArchive(2));
+ dPaneClass_showNullPane(mpScreen);
+
+ OSInitFastCast();
+
+ field_0xcc = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(
+ JKRGetNameResource("zelda_kanban_wood_a.bck", dComIfGp_getMsgArchive(2)));
+
+ field_0xd0 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(
+ JKRGetNameResource("zelda_kanban_wood_a.btk", dComIfGp_getMsgArchive(2)));
+ field_0xd0->searchUpdateMaterialID(mpScreen);
+ field_0xdc = 0.0f;
+
+ field_0xd4 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(
+ JKRGetNameResource("zelda_kanban_wood_a_02.btk", dComIfGp_getMsgArchive(2)));
+ field_0xd4->searchUpdateMaterialID(mpScreen);
+ field_0xe0 = 0.0f;
+
+ mpPmP_c = new CPaneMgr(mpScreen, 'n_size', 2, NULL);
+ mpPmP_c->getPanePtr()->setAnimation(field_0xcc);
+ field_0xcc->setFrame(1.0f);
+ mpPmP_c->getPanePtr()->animationTransform();
+ mpPmP_c->getPanePtr()->setAnimation((J2DAnmTransform*)NULL);
+ mpPmP_c->scale(g_MsgObject_HIO_c.mBoxWoodScaleX, g_MsgObject_HIO_c.mBoxWoodScaleY);
+
+ field_0xc4 = new CPaneMgr(mpScreen, 'back_b', 0, NULL);
+ field_0xc8 = new CPaneMgr(mpScreen, 'spot00', 0, NULL);
+ field_0xc8->getPanePtr()->setAnimation(field_0xd0);
+
+ mpScreen->search('white_m')->setAnimation(field_0xd4);
+ for (int i = 0; i < 3; i++) {
+ static u64 const t_tag[3] = {'mg_e4lin', 'f4_w', 't4_s'};
+ mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL);
+ ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(field_0x54);
+ ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x200, "");
+ }
+
+ mpScreen->search('n_3line')->hide();
+ mpScreen->search('n_3fline')->hide();
+ mpScreen->search('n_e4line')->show();
+
+ ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getFontSize(mFontSize);
+ mTBoxWidth = mpTm_c[0]->getSizeX();
+ mTBoxHeight = mpTm_c[0]->getSizeY();
+ mLineSpace = ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getLineSpace();
+ mCharSpace = ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getCharSpace();
+
+ for (int i = 0; i < 3; i++) {
+ ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setLineSpace(mLineSpace);
+ mpTm_c[i]->resize(1.2f * mpTm_c[i]->getSizeX(), mpTm_c[i]->getSizeY());
+ }
+
+ mTextBoxPosX = mpTm_c[0]->getGlobalPosX();
+ mTextBoxPosY = mpTm_c[0]->getGlobalPosY();
+ mTextBoxPosOffsetY = 0.0f;
+
+ for (int i = 0; i < 3; i++) {
+ if (mpTmr_c[i] != 0) {
+ ((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setLineSpace(mLineSpace);
+ if (i == 0) {
+ J2DTextBox::TFontSize aTStack_38;
+ ((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getFontSize(aTStack_38);
+ mRubySize = aTStack_38.mSizeX;
+ mRubyCharSpace = ((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getCharSpace();
+ }
+ mpTmr_c[i]->resize(1.2f * mpTmr_c[i]->getSizeX(), mpTmr_c[i]->getSizeY());
+ }
+ }
+}
+
+/* 80248F14-80249118 243854 0204+00 1/0 0/0 0/0 .text __dt__14dMsgScrnTree_cFv */
+dMsgScrnTree_c::~dMsgScrnTree_c() {
+ delete mpScreen;
+ mpScreen = NULL;
+
+ delete field_0xcc;
+ field_0xcc = NULL;
+
+ delete field_0xd0;
+ field_0xd0 = NULL;
+
+ delete field_0xd4;
+ field_0xd4 = NULL;
+
+ delete mpPmP_c;
+ mpPmP_c = NULL;
+
+ delete field_0xc4;
+ field_0xc4 = NULL;
+
+ delete field_0xc8;
+ field_0xc8 = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ delete mpTm_c[i];
+ mpTm_c[i] = NULL;
+
+ if (mpTmr_c[i]) {
+ delete mpTmr_c[i];
+ mpTmr_c[i] = NULL;
+ }
+ }
+
+ dComIfGp_getMsgArchive(2)->removeResourceAll();
+}
+
+/* 80249118-80249270 243A58 0158+00 1/0 0/0 0/0 .text exec__14dMsgScrnTree_cFv */
+void dMsgScrnTree_c::exec() {
+ field_0xdc += 1.0f;
+ if (field_0xdc >= field_0xd0->getFrameMax()) {
+ field_0xdc -= field_0xd0->getFrameMax();
+ }
+ field_0xd0->setFrame(field_0xdc);
+
+ field_0xe0 += 1.0f;
+ if (field_0xe0 >= field_0xd4->getFrameMax()) {
+ field_0xe0 -= field_0xd4->getFrameMax();
+ }
+ field_0xd4->setFrame(field_0xe0);
+ mpScreen->animation();
+
+ if (isTalkNow()) {
+ fukiAlpha(1.0f);
+ }
+ mpPmP_c->scale(g_MsgObject_HIO_c.mBoxWoodScaleX, g_MsgObject_HIO_c.mBoxWoodScaleY);
+}
+
+/* 80249270-802492F8 243BB0 0088+00 1/0 0/0 0/0 .text draw__14dMsgScrnTree_cFv */
+void dMsgScrnTree_c::draw() {
+ J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort();
+ grafContext->setup2D();
+ mpScreen->draw(0.0f, 0.0f, grafContext);
+ mpOutFont->draw(NULL, 0.0f, 0.0f, 1.0f);
+}
+
+/* 802492F8-802493AC 243C38 00B4+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnTree_cFf */
+void dMsgScrnTree_c::fukiAlpha(f32 param_0) {
+ field_0xc4->setAlphaRate(param_0);
+ mpPmP_c->setAlphaRate(param_0 * g_MsgObject_HIO_c.mBoxWoodAlphaP);
+ field_0xc8->setAlphaRate(param_0);
+
+ for (int i = 0; i < 3; i++) {
+ mpTm_c[i]->setAlphaRate(param_0 * mCharAlphaRate);
+ if (mpTmr_c[i] != 0) {
+ mpTmr_c[i]->setAlphaRate(param_0 * mCharAlphaRate);
+ }
+ }
+}
+
+/* 802493AC-802493B0 243CEC 0004+00 1/0 0/0 0/0 .text fukiScale__14dMsgScrnTree_cFf */
+void dMsgScrnTree_c::fukiScale(f32 param_0) {}
+
+/* 802493B0-802493B4 243CF0 0004+00 1/0 0/0 0/0 .text fukiTrans__14dMsgScrnTree_cFff */
+void dMsgScrnTree_c::fukiTrans(f32 param_0, f32 param_1) {} \ No newline at end of file