diff options
Diffstat (limited to '')
-rw-r--r-- | src/koopatlas/core.cpp | 114 |
1 files changed, 52 insertions, 62 deletions
diff --git a/src/koopatlas/core.cpp b/src/koopatlas/core.cpp index d4130c4..32576d2 100644 --- a/src/koopatlas/core.cpp +++ b/src/koopatlas/core.cpp @@ -89,16 +89,6 @@ dScKoopatlas_c::dScKoopatlas_c() : state(this) { #define CSMENU_UNK(csm) (*((bool*)(((u32)(csm))+0x273))) #define CSMENU_CURRENT(csm) (*((int*)(((u32)(csm))+0x268))) -#define YESNO_SETUP_DONE(ynw) (*((bool*)(((u32)(ynw))+0x294))) -#define YESNO_VISIBLE(ynw) (*((bool*)(((u32)(ynw))+0x295))) -#define YESNO_CLOSE(ynw) (*((bool*)(((u32)(ynw))+0x296))) -#define YESNO_OPENING(ynw) (*((bool*)(((u32)(ynw))+0x297))) -#define YESNO_REFUSED(ynw) (*((bool*)(((u32)(ynw))+0x298))) -#define YESNO_CANCELLED(ynw) (*((bool*)(((u32)(ynw))+0x299))) -#define YESNO_CANCELLED2(ynw) (*((bool*)(((u32)(ynw))+0x29A))) -#define YESNO_CURRENT(ynw) (*((int*)(((u32)(ynw))+0x284))) -#define YESNO_TYPE(ynw) (*((int*)(((u32)(ynw))+0x28C))) - #define NPCHG_SETUP_DONE(npc) (*((bool*)(((u32)(npc))+0x67C))) #define NPCHG_ACTIVE(npc) (*((bool*)(((u32)(npc))+0x67E))) #define NPCHG_HIDE_FOR_EASYP(npc) (*((bool*)(((u32)(npc))+0x67F))) @@ -206,7 +196,7 @@ bool WMInit_SetupWait(void *ptr) { success &= CSMENU_SETUP_DONE(wm->csMenu); success &= SELC_SETUP_DONE(wm->selectCursor); success &= NPCHG_SETUP_DONE(wm->numPeopleChange); - success &= YESNO_SETUP_DONE(wm->yesNoWindow); + success &= wm->yesNoWindow->layoutLoaded; success &= CONT_SETUP_DONE(wm->continueObj); success &= wm->stockItem->layoutLoaded; success &= wm->stockItemShadow->layoutLoaded; @@ -362,7 +352,7 @@ int dScKoopatlas_c::onCreate() { this->csMenu = CreateParentedObject(COURSE_SELECT_MENU, this, 0, 0); SpammyReport("yes no window\n"); - this->yesNoWindow = CreateParentedObject(YES_NO_WINDOW, this, 0, 0); + this->yesNoWindow = (dYesNoWindow_c*)CreateParentedObject(YES_NO_WINDOW, this, 0, 0); SpammyReport("number of people change\n"); this->numPeopleChange = CreateParentedObject(NUMBER_OF_PEOPLE_CHANGE, this, 0, 0); @@ -567,13 +557,13 @@ void dScKoopatlas_c::executeState_CSMenu() { MapReport("Save or Quick Save was pressed\n"); if (GetSaveFile()->GetBlock(-1)->bitfield & 2) { state.setState(&StateID_SaveOpen); - YESNO_TYPE(this->yesNoWindow) = 1; - YESNO_VISIBLE(this->yesNoWindow) = 1; + yesNoWindow->type = 1; + yesNoWindow->visible = true; } else { state.setState(&StateID_QuickSaveOpen); - YESNO_TYPE(this->yesNoWindow) = 15; - YESNO_VISIBLE(this->yesNoWindow) = 1; + yesNoWindow->type = 15; + yesNoWindow->visible = 1; } @@ -583,8 +573,8 @@ void dScKoopatlas_c::executeState_CSMenu() { // Title Screen MapReport("Title Screen was pressed\n"); state.setState(&StateID_TitleConfirmOpenWait); - YESNO_VISIBLE(this->yesNoWindow) = true; - YESNO_TYPE(this->yesNoWindow) = 10; + yesNoWindow->visible = true; + yesNoWindow->type = 10; break; } @@ -599,7 +589,7 @@ void dScKoopatlas_c::executeState_CSMenu() { void dScKoopatlas_c::executeState_TitleConfirmOpenWait() { // Waiting for the "Go to Title Screen" YesNoWindow to finish opening - if (!YESNO_OPENING(this->yesNoWindow)) { + if (!yesNoWindow->animationActive) { state.setState(&StateID_TitleConfirmSelect); } @@ -613,24 +603,24 @@ void dScKoopatlas_c::executeState_TitleConfirmSelect() { if (nowPressed & WPAD_LEFT) { // Select "OK!" - YESNO_CURRENT(this->yesNoWindow) = 1; + yesNoWindow->current = 1; } else if (nowPressed & WPAD_RIGHT) { // Select "Cancel" - YESNO_CURRENT(this->yesNoWindow) = 0; + yesNoWindow->current = 0; } else if (Wiimote_TestButtons(GetActiveWiimote(), WPAD_A | WPAD_TWO)) { // Pick the current option - YESNO_CLOSE(this->yesNoWindow) = true; - if (YESNO_CURRENT(this->yesNoWindow) != 1) - YESNO_REFUSED(this->yesNoWindow) = true; + yesNoWindow->close = true; + if (yesNoWindow->current != 1) + yesNoWindow->keepOpen = true; state.setState(&StateID_TitleConfirmHitWait); } else { // Cancel using B or 1 if (CheckIfMenuShouldBeCancelledForSpecifiedWiimote(0)) { - YESNO_CANCELLED(this->yesNoWindow) = true; - YESNO_CURRENT(this->yesNoWindow) = true; + yesNoWindow->cancelled = true; + yesNoWindow->current = true; state.setState(&StateID_TitleConfirmHitWait); } } @@ -643,8 +633,8 @@ void dScKoopatlas_c::executeState_TitleConfirmSelect() { // animation to be complete. void dScKoopatlas_c::executeState_TitleConfirmHitWait() { - if (!YESNO_OPENING(this->yesNoWindow)) { - if (YESNO_CURRENT(this->yesNoWindow) == 1) { + if (!yesNoWindow->animationActive) { + if (yesNoWindow->current == 1) { state.setState(&StateID_Normal); hud->unhideAll(); } else { @@ -761,7 +751,7 @@ void dScKoopatlas_c::executeState_CoinsWait() { // STATE_SaveOpen : Waiting for the "Save?" YesNoWindow to open void dScKoopatlas_c::executeState_SaveOpen() { - if (!YESNO_OPENING(this->yesNoWindow)) { + if (!yesNoWindow->animationActive) { state.setState(&StateID_SaveSelect); } @@ -775,25 +765,25 @@ void dScKoopatlas_c::executeState_SaveSelect() { if (nowPressed & WPAD_LEFT) { // Select "OK!" - YESNO_CURRENT(this->yesNoWindow) = 1; + yesNoWindow->current = 1; } else if (nowPressed & WPAD_RIGHT) { // Select "Cancel" - YESNO_CURRENT(this->yesNoWindow) = 0; + yesNoWindow->current = 0; } else if (Wiimote_TestButtons(GetActiveWiimote(), WPAD_A | WPAD_TWO)) { // Pick the current option - YESNO_CLOSE(this->yesNoWindow) = true; + yesNoWindow->close = true; - if (YESNO_CURRENT(this->yesNoWindow) != 1) - YESNO_CANCELLED2(this->yesNoWindow) = true; + if (yesNoWindow->current != 1) + yesNoWindow->hasBG = true; state.setState(&StateID_SaveWindowClose); } else { // Cancel using B or 1 if (CheckIfMenuShouldBeCancelledForSpecifiedWiimote(0)) { - YESNO_CANCELLED(this->yesNoWindow) = true; - YESNO_CURRENT(this->yesNoWindow) = 1; + yesNoWindow->cancelled = true; + yesNoWindow->current = 1; state.setState(&StateID_SaveWindowClose); } } @@ -805,8 +795,8 @@ void dScKoopatlas_c::executeState_SaveSelect() { // "Save?" YesNoWindow. Also, wait for the animation to be complete. void dScKoopatlas_c::executeState_SaveWindowClose() { - if (!YESNO_VISIBLE(this->yesNoWindow)) { - if (YESNO_CURRENT(this->yesNoWindow) == 1) { + if (!yesNoWindow->visible) { + if (yesNoWindow->current == 1) { state.setState(&StateID_Normal); hud->unhideAll(); } else { @@ -823,8 +813,8 @@ void dScKoopatlas_c::executeState_SaveDo() { if (!GetSaveFile()->CheckIfWriting()) { if (GetSaveHandler()->CurrentError == 0) { - YESNO_TYPE(this->yesNoWindow) = 2; - YESNO_VISIBLE(this->yesNoWindow) = true; + yesNoWindow->type = 2; + yesNoWindow->visible = true; state.setState(&StateID_SaveEndWindow); } else { state.setState(&StateID_SaveError); @@ -837,9 +827,9 @@ void dScKoopatlas_c::executeState_SaveDo() { // STATE_SaveEndWindow : Handle the Save End window. void dScKoopatlas_c::executeState_SaveEndWindow() { - if (!YESNO_OPENING(this->yesNoWindow)) { + if (!yesNoWindow->animationActive) { if (Wiimote_TestButtons(GetActiveWiimote(), WPAD_A | WPAD_TWO)) { - YESNO_CLOSE(this->yesNoWindow) = true; + yesNoWindow->close = true; state.setState(&StateID_SaveEndCloseWait); } } @@ -850,7 +840,7 @@ void dScKoopatlas_c::executeState_SaveEndWindow() { // STATE_SaveEndCloseWait : Wait for the Save End window to close. void dScKoopatlas_c::executeState_SaveEndCloseWait() { - if (!YESNO_OPENING(this->yesNoWindow)) { + if (!yesNoWindow->animationActive) { state.setState(&StateID_Normal); hud->unhideAll(); } @@ -861,7 +851,7 @@ void dScKoopatlas_c::executeState_SaveEndCloseWait() { // STATE_QuickSaveOpen : Waiting for the "Save?" YesNoWindow to open void dScKoopatlas_c::executeState_QuickSaveOpen() { - if (!YESNO_OPENING(this->yesNoWindow)) { + if (!yesNoWindow->animationActive) { state.setState(&StateID_QuickSaveSelect); } @@ -875,25 +865,25 @@ void dScKoopatlas_c::executeState_QuickSaveSelect() { if (nowPressed & WPAD_LEFT) { // Select "OK!" - YESNO_CURRENT(this->yesNoWindow) = 1; + yesNoWindow->current = 1; } else if (nowPressed & WPAD_RIGHT) { // Select "Cancel" - YESNO_CURRENT(this->yesNoWindow) = 0; + yesNoWindow->current = 0; } else if (Wiimote_TestButtons(GetActiveWiimote(), WPAD_A | WPAD_TWO)) { // Pick the current option - YESNO_CLOSE(this->yesNoWindow) = true; + yesNoWindow->close = true; - if (YESNO_CURRENT(this->yesNoWindow) != 1) - YESNO_CANCELLED2(this->yesNoWindow) = true; + if (yesNoWindow->current != 1) + yesNoWindow->hasBG = true; state.setState(&StateID_QuickSaveWindowClose); } else { // Cancel using B or 1 if (CheckIfMenuShouldBeCancelledForSpecifiedWiimote(0)) { - YESNO_CANCELLED(this->yesNoWindow) = true; - YESNO_CURRENT(this->yesNoWindow) = 1; + yesNoWindow->cancelled = true; + yesNoWindow->current = 1; state.setState(&StateID_QuickSaveWindowClose); } } @@ -905,8 +895,8 @@ void dScKoopatlas_c::executeState_QuickSaveSelect() { // the "Save?" YesNoWindow. Also, wait for the animation to be complete void dScKoopatlas_c::executeState_QuickSaveWindowClose() { - if (!YESNO_VISIBLE(this->yesNoWindow)) { - if (YESNO_CURRENT(this->yesNoWindow) == 1) { + if (!yesNoWindow->visible) { + if (yesNoWindow->current == 1) { state.setState(&StateID_Normal); hud->unhideAll(); } else { @@ -923,8 +913,8 @@ void dScKoopatlas_c::executeState_QuickSaveDo() { if (!GetSaveFile()->CheckIfWriting()) { if (GetSaveHandler()->CurrentError == 0) { - YESNO_TYPE(this->yesNoWindow) = 16; - YESNO_VISIBLE(this->yesNoWindow) = true; + yesNoWindow->type = 16; + yesNoWindow->visible = true; state.setState(&StateID_QuickSaveEndWindow); } else { state.setState(&StateID_SaveError); @@ -936,10 +926,10 @@ void dScKoopatlas_c::executeState_QuickSaveDo() { // STATE_QuickSaveEndWindow : Handle the Save End window. void dScKoopatlas_c::executeState_QuickSaveEndWindow() { - if (!YESNO_OPENING(this->yesNoWindow)) { + if (!yesNoWindow->animationActive) { if (Wiimote_TestButtons(GetActiveWiimote(), WPAD_A | WPAD_TWO)) { - YESNO_CLOSE(this->yesNoWindow) = true; - YESNO_REFUSED(this->yesNoWindow) = true; + yesNoWindow->close = true; + yesNoWindow->keepOpen = true; state.setState(&StateID_QuickSaveEndCloseWait); } } @@ -949,8 +939,8 @@ void dScKoopatlas_c::executeState_QuickSaveEndWindow() { void dScKoopatlas_c::executeState_QuickSaveEndCloseWait() { // Wait for Save End window to close - if (!YESNO_OPENING(this->yesNoWindow)) { - if (YESNO_CURRENT(this->yesNoWindow) == 1) { + if (!yesNoWindow->animationActive) { + if (yesNoWindow->current == 1) { state.setState(&StateID_Normal); hud->unhideAll(); } else { @@ -1057,8 +1047,8 @@ int dScKoopatlas_c::getIndexForMapName(const char *name) { void dScKoopatlas_c::showSaveWindow() { hud->hideAll(); state.setState(&StateID_SaveOpen); - YESNO_TYPE(yesNoWindow) = 1; - YESNO_VISIBLE(yesNoWindow) = 1; + yesNoWindow->type = 1; + yesNoWindow->visible = true; } |