SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
IconAButton.cpp
1#include "Game/Screen/IconAButton.hpp"
2#include "Game/Util.hpp"
3#include <cstdio>
4
5IconAButton::IconAButton(bool connectToScene, bool connectToPause) : LayoutActor("Aボタンアイコン", true) {
6 mFollowPos.x = 0.0f;
7 mFollowPos.y = 0.0f;
8 mFollowActor = nullptr;
9
10 if (connectToScene) {
11 if (connectToPause) {
12 MR::connectToSceneLayoutOnPause(this);
13 }
14 else {
15 MR::connectToSceneTalkLayout(this);
16 }
17 }
18
19 mFollowPane[0] = 0;
20}
21
22void IconAButton::init(const JMapInfoIter &rIter) {
23 initLayoutManager("IconAButton", 1);
24 initNerve(&NrvIconAButton::IconAButtonNrvOpen::sInstance);
25 MR::startAnim(this, "Appear", 0);
26 MR::setAnimFrameAndStop(this, 0.0f, 0);
27 kill();
28}
29
30void IconAButton::setFollowActorPane(LayoutActor *pActor, const char *pName) {
31 mFollowActor = pActor;
32 snprintf(mFollowPane, sizeof(mFollowPane), "%s", pName);
33 MR::setFollowPos(mFollowPos, this, nullptr);
34}
35
36bool IconAButton::isOpen() {
37 return MR::isDead(this) == false;
38}
39
40bool IconAButton::isWait() {
41 return isNerve(&NrvIconAButton::IconAButtonNrvWait::sInstance);
42}
43
44void IconAButton::openWithTalk() {
45 appear();
46 updateFollowPos();
47 MR::showPane(this, "PicPlate");
48 setNerve(&NrvIconAButton::IconAButtonNrvOpen::sInstance);
49 MR::setTextBoxLayoutMessageRecursive(this, "IconAButton", "Layout_SystemTalk");
50}
51
52void IconAButton::openWithRead() {
53 appear();
54 updateFollowPos();
55 MR::showPane(this, "PicPlate");
56 setNerve(&NrvIconAButton::IconAButtonNrvOpen::sInstance);
57 MR::setTextBoxLayoutMessageRecursive(this, "IconAButton", "Layout_SystemRead");
58}
59
60void IconAButton::openWithTurn() {
61 appear();
62 updateFollowPos();
63 MR::showPane(this, "PicPlate");
64 setNerve(&NrvIconAButton::IconAButtonNrvOpen::sInstance);
65 MR::setTextBoxLayoutMessageRecursive(this, "IconAButton", "Layout_SystemTurn");
66}
67
68void IconAButton::openWithoutMessage() {
69 appear();
70 updateFollowPos();
71 MR::showPane(this, "PicPlate");
72 setNerve(&NrvIconAButton::IconAButtonNrvOpen::sInstance);
73 MR::hidePane(this, "PicPlate");
74 MR::clearTextBoxMessageRecursive(this, "IconAButton");
75}
76
77// IconAButton::term
78
79void IconAButton::exeOpen() {
80 if (MR::isFirstStep(this)) {
81 MR::startAnim(this, "Appear", 0);
82 }
83
84 if (MR::isAnimStopped(this, 0)) {
85 setNerve(&NrvIconAButton::IconAButtonNrvWait::sInstance);
86 }
87}
88
89void IconAButton::exeTerm() {
90 if (MR::isFirstStep(this)) {
91 MR::startAnim(this, "End", 0);
92 }
93
94 if (MR::isAnimStopped(this, 0)) {
95 kill();
96 }
97}
98
99void IconAButton::control() {
100 updateFollowPos();
101}
102
103void IconAButton::updateFollowPos() {
104 if (mFollowActor != nullptr) {
105 MR::copyPaneTrans(&mFollowPos, mFollowActor, mFollowPane);
106 }
107}
108
109IconAButton::~IconAButton() {
110
111}
112
113namespace NrvIconAButton {
114 INIT_NERVE(IconAButtonNrvOpen);
115 INIT_NERVE(IconAButtonNrvWait);
116 INIT_NERVE(IconAButtonNrvTerm);
117};
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.