1#include <game/bases/d_CourseSelectGuide.hpp>
2#include <game/bases/d_a_player_com.hpp>
3#include <game/bases/d_a_player_manager.hpp>
4#include <game/bases/d_game_display.hpp>
5#include <game/bases/d_game_com.hpp>
6#include <game/bases/d_game_key.hpp>
7#include <game/bases/d_save_mng.hpp>
8#include <game/mLib/m_video.hpp>
73 static const char *AnmNameTbl[ANIM_NAME_COUNT] = {
74 "corseSelectUIGuide_37_inInfo.brlan",
75 "corseSelectUIGuide_37_loopInfo.brlan",
76 "corseSelectUIGuide_37_outInfo.brlan",
77 "corseSelectUIGuide_37_inMapArrow.brlan",
78 "corseSelectUIGuide_37_loopArrow.brlan",
79 "corseSelectUIGuide_37_outMapArrow.brlan",
80 "corseSelectUIGuide_37_inShadow.brlan",
81 "corseSelectUIGuide_37_outShadow.brlan"
84 static const char *GROUP_NAME_DT[ANIM_COUNT] = {
85 "A00_underGuide",
"A01_zanki",
"A02_courseInfo",
86 "A00_underGuide",
"A01_zanki",
"A02_courseInfo",
87 "A00_underGuide",
"A01_zanki",
"A02_courseInfo",
88 "B00_ArrowRight",
"B01_ArrowLeft",
"B02_ArrowUp",
"B03_ArrowUnder",
89 "B00_ArrowRight",
"B01_ArrowLeft",
"B02_ArrowUp",
"B03_ArrowUnder",
90 "B00_ArrowRight",
"B01_ArrowLeft",
"B02_ArrowUp",
"B03_ArrowUnder",
95 static const int ANIME_INDEX_TBL[ANIM_COUNT] = {
96 inInfo, inInfo, inInfo,
97 loopInfo, loopInfo, loopInfo,
98 outInfo, outInfo, outInfo,
99 inMapArrow, inMapArrow, inMapArrow, inMapArrow,
100 loopArrow, loopArrow, loopArrow, loopArrow,
101 outMapArrow, outMapArrow, outMapArrow, outMapArrow,
106 static const char *NPANE_NAME_DT[N_COUNT] = {
107 "N_IconPos1P_00",
"N_IconPos2P_00",
"N_IconPos3P_00",
"N_IconPos4P_00",
109 "N_proportionL_00",
"N_proportionR_00",
"N_proportionC_00",
110 "N_guideViewC_00",
"N_guideViewR_01",
114 static const char *T_PANE_NAME_TBL[T_COUNT] = {
116 "T_cSelect_00",
"T_cSelect_pic",
117 "T_lifeNumber_00",
"T_lifeNumber_01",
"T_lifeNumber_02",
"T_lifeNumber_03",
118 "T_guideViewLS_00",
"T_guideViewL_01"
121 static const int MESSAGE_DATA_TBL[T_FIXED_COUNT] = {
126 static const char *T_PANE_FIXED_NAME_TBL[T_FIXED_COUNT] = {
132 static const char *P_PANE_NAME_TBL[P_COUNT] = {
150 if (!
mLayout.ReadResource(
"corseSelectUIGuide/corseSelectUIGuide.arc",
false)) {
153 mLayout.build(
"corseSelectUIGuide_37.brlyt", 0);
154 mLayout.AnimeResRegister(AnmNameTbl, ANIM_NAME_COUNT);
155 mLayout.GroupRegister(GROUP_NAME_DT, ANIME_INDEX_TBL, ANIM_COUNT);
159 mLayout.TPaneNameRegister(T_PANE_FIXED_NAME_TBL, MESSAGE_DATA_TBL, BMG_CATEGORY_COURSE_SELECT_GUIDE, T_FIXED_COUNT);
167 for (
int i = 0; i < ARRAY_SIZE(
mRest); i++) {
220 mLayout.ReverseAnimeStartSetup(ANIM_OUT_UNDER,
false);
221 mLayout.ReverseAnimeStartSetup(ANIM_OUT_ZANKI,
false);
222 mLayout.ReverseAnimeStartSetup(ANIM_OUT_COURSE_INFO,
false);
226 mLayout.ReverseAnimeStartSetup(ANIM_IN_SHADOW,
false);
227 mLayout.ReverseAnimeStartSetup(ANIM_IN_UNDER,
false);
228 mLayout.ReverseAnimeStartSetup(ANIM_IN_ZANKI,
false);
229 mLayout.ReverseAnimeStartSetup(ANIM_IN_COURSE_INFO,
false);
234 dGameCom::DispSizeScale(scale);
246 scissorMask.mPos.x = 0.0f;
247 scissorMask.mPos.y = 0.0f;
248 scissorMask.mSize.x = 0.0f;
249 scissorMask.mSize.y = 0.0f;
250 scissorMask.mEnabled =
false;
251 if (dGameCom::GetAspectRatio() == 0) {
252 scissorMask.mPos.y = mVideo::getSmth(330.0f);
253 scissorMask.mSize.x = 640.0f;
254 scissorMask.mSize.y = 330.0f;
255 scissorMask.mEnabled =
true;
257 mLayout.mScissorMask = scissorMask;
261 static const int picPaneNums[PLAYER_COUNT] = { P_marioFace_00, P_luigiFace_00, P_BkinoFace_00, P_YkinoFace_00 };
263 for (
int i = 0; i < PLAYER_COUNT; i++) {
267 int currPane = N_IconPos1P_00;
268 int playerCount = -1;
269 for (
int i = 0; i < PLAYER_COUNT; i++) {
272 if (dGameCom::PlayerEnterCheck(playerIndex)) {
282 for (
int i = 0; i < PLAYER_COUNT; i++) {
283 mpNullPanes[N_IconPos1P_00 + i]->SetVisible(
false);
285 mpNullPanes[N_IconPos1P_00 + playerCount]->SetVisible(
true);
289 static const int textBoxIdxs[PLAYER_COUNT] = { T_lifeNumber_00, T_lifeNumber_01, T_lifeNumber_03, T_lifeNumber_02 };
291 for (
int i = 0; i < PLAYER_COUNT; i++) {
294 int rest = daPyMng_c::getRest(playerType);
295 if (
mRest[i] != rest) {
297 int textIdx = textBoxIdxs[i];
299 dGameCom::LayoutDispNumber(rest, dGameDisplay_c::c_PLAYNUM_DIGIT, textBox,
true);
322 for (
int i = 0; i < PLAYER_COUNT; i++) {
349 !
mLayout.isAnime(ANIM_OUT_ARROW_U) || !
mLayout.isAnime(ANIM_OUT_ARROW_D) ||
350 !
mLayout.isAnime(ANIM_OUT_ARROW_L) || !
mLayout.isAnime(ANIM_OUT_ARROW_R)
378 static const int sc_startPointIcons[WORLD_USED_COUNT] = {
379 MSG_CS_ICON_START_RIGHT,
380 MSG_CS_ICON_START_UP,
381 MSG_CS_ICON_START_RIGHT,
382 MSG_CS_ICON_START_UP,
383 MSG_CS_ICON_START_RIGHT,
384 MSG_CS_ICON_START_UP,
385 MSG_CS_ICON_START_RIGHT,
386 MSG_CS_ICON_START_UP,
387 MSG_CS_ICON_START_UP,
389 dInfo_c *info = dInfo_c::m_instance;
390 MsgRes_c *msgRes = dMessage_c::getMesRes();
393 if (type == dWmLib::POINT_TYPE_PATH) {
396 }
else if (type == dWmLib::POINT_TYPE_REGULAR_COURSE || type == dWmLib::POINT_TYPE_OTHER) {
398 }
else if (type == dWmLib::POINT_TYPE_START_NODE) {
403 info->mDisplayCourseWorld = actualWNo;
404 mpTextBoxes[T_worldNum_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_CURR_WORLD, 0);
409 info->mDisplayCourseNum = actualLevelNo;
410 mpTextBoxes[T_cSelect_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_COURSE_NUM, 0);
414 case dWmLib::COURSE_TYPE_GHOST: messageID = MSG_CS_ICON_GHOST_HOUSE;
break;
415 case dWmLib::COURSE_TYPE_TOWER: messageID = MSG_CS_ICON_TOWER;
break;
416 case dWmLib::COURSE_TYPE_CASTLE:
418 messageID = MSG_CS_ICON_CASTLE;
420 messageID = MSG_CS_ICON_W8_CASTLE;
423 case dWmLib::COURSE_TYPE_KINOKO:
424 if (dScWMap_c::IsCourseType(
mWorldNo,
mCourseNo, dScWMap_c::COURSE_TYPE_KINOKO_HOUSE_1UP)) {
425 messageID = MSG_CS_ICON_KINOKO_HOUSE_1UP;
426 }
else if (dScWMap_c::IsCourseType(
mWorldNo,
mCourseNo, dScWMap_c::COURSE_TYPE_KINOKO_HOUSE_STAR)) {
427 messageID = MSG_CS_ICON_KINOKO_HOUSE_STAR;
429 messageID = MSG_CS_ICON_KINOKO_HOUSE_RED;
432 case dWmLib::COURSE_TYPE_JUNCTION: messageID = MSG_CS_ICON_JUNCTION;
break;
433 case dWmLib::COURSE_TYPE_CANNON: messageID = MSG_CS_ICON_CANNON;
break;
434 case dWmLib::COURSE_TYPE_KOOPA_SHIP:
435 if (dWmLib::isKoopaShipAnchor()) {
436 messageID = MSG_CS_ICON_ANCHOR;
438 messageID = MSG_CS_ICON_AIRSHIP;
441 case dWmLib::COURSE_TYPE_PEACH_CASTLE:
443 messageID = MSG_CS_ICON_PEACH_CASTLE;
445 case dWmLib::COURSE_TYPE_INVALID:
447 messageID = sc_startPointIcons[
mWorldNo];
450 if (dWmLib::isStartPointKinokoHouseStar()) {
451 messageID = MSG_CS_ICON_KINOKO_HOUSE_STAR;
452 }
else if (dWmLib::isStartPointKinokoHouseRed()) {
453 messageID = MSG_CS_ICON_KINOKO_HOUSE_RED;
455 messageID = MSG_CS_ICON_KINOKO_HOUSE_1UP;
459 mpTextBoxes[T_cSelect_pic]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, messageID, 0);
465 dMj2dGame_c *saveGame = dSaveMng_c::m_instance->getSaveGame(-1);
466 dCyuukan_c *checkpoint = dInfo_c::m_instance->getCyuukan();
475 if (collectCoin != 0) {
480 && checkpoint->mCoinCollection[i] != 4
493 static const u8 flags[] = {
502void dCourseSelectGuide_c::initializeState_WorldCourseOnStageWait() {}
503void dCourseSelectGuide_c::executeState_WorldCourseOnStageWait() {
518void dCourseSelectGuide_c::finalizeState_WorldCourseOnStageWait() {}
520void dCourseSelectGuide_c::initializeState_WorldCourseOnStageAnimeEndCheck() {
525void dCourseSelectGuide_c::executeState_WorldCourseOnStageAnimeEndCheck() {
527 mLayout.AnimeEndSetup(ANIM_IN_COURSE_INFO);
529 }
else if (!
mLayout.isAnime(ANIM_IN_COURSE_INFO)) {
533void dCourseSelectGuide_c::finalizeState_WorldCourseOnStageAnimeEndCheck() {
537void dCourseSelectGuide_c::initializeState_WorldCourseDisp() {
538 mLayout.LoopAnimeStartSetup(ANIM_LOOP_COURSE_INFO);
540void dCourseSelectGuide_c::executeState_WorldCourseDisp() {
549void dCourseSelectGuide_c::finalizeState_WorldCourseDisp() {}
551void dCourseSelectGuide_c::initializeState_WorldCourseExitAnimeEndCheck() {
554 mLayout.AnimeEndSetup(ANIM_LOOP_COURSE_INFO);
555 mLayout.AnimeStartSetup(ANIM_OUT_COURSE_INFO,
false);
557void dCourseSelectGuide_c::executeState_WorldCourseExitAnimeEndCheck() {
559 mLayout.AnimeEndSetup(ANIM_OUT_COURSE_INFO);
561 }
else if (!
mLayout.isAnime(ANIM_OUT_COURSE_INFO)) {
566void dCourseSelectGuide_c::finalizeState_WorldCourseExitAnimeEndCheck() {
570void dCourseSelectGuide_c::initializeState_GuideOnStageWait() {}
571void dCourseSelectGuide_c::executeState_GuideOnStageWait() {
586void dCourseSelectGuide_c::finalizeState_GuideOnStageWait() {
590void dCourseSelectGuide_c::initializeState_GuideOnStageAnimeEndCheck() {
595void dCourseSelectGuide_c::executeState_GuideOnStageAnimeEndCheck() {
597 mLayout.AnimeEndSetup(ANIM_IN_UNDER);
598 mLayout.AnimeEndSetup(ANIM_IN_ZANKI);
601 if (
mLayout.isAnime(ANIM_IN_UNDER) ||
mLayout.isAnime(ANIM_IN_ZANKI)) {
607void dCourseSelectGuide_c::finalizeState_GuideOnStageAnimeEndCheck() {}
609void dCourseSelectGuide_c::initializeState_GuideDisp() {
610 mLayout.LoopAnimeStartSetup(ANIM_LOOP_UNDER);
611 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ZANKI);
613void dCourseSelectGuide_c::executeState_GuideDisp() {
621void dCourseSelectGuide_c::finalizeState_GuideDisp() {}
623void dCourseSelectGuide_c::initializeState_GuideExitAnimeEndCheck() {
625 mLayout.AnimeEndSetup(ANIM_LOOP_UNDER);
626 mLayout.AnimeEndSetup(ANIM_LOOP_ZANKI);
627 mLayout.AnimeStartSetup(ANIM_OUT_UNDER,
false);
628 mLayout.AnimeStartSetup(ANIM_OUT_ZANKI,
false);
630void dCourseSelectGuide_c::executeState_GuideExitAnimeEndCheck() {
632 mLayout.AnimeEndSetup(ANIM_OUT_UNDER);
633 mLayout.AnimeEndSetup(ANIM_OUT_ZANKI);
636 if (
mLayout.isAnime(ANIM_OUT_UNDER) ||
mLayout.isAnime(ANIM_OUT_ZANKI)) {
643void dCourseSelectGuide_c::finalizeState_GuideExitAnimeEndCheck() {}
645void dCourseSelectGuide_c::initializeState_UpOnStageWait() {}
646void dCourseSelectGuide_c::executeState_UpOnStageWait() {
648 mStateMgrUp.changeState(StateID_UpOnStageAnimeEndCheck);
651void dCourseSelectGuide_c::finalizeState_UpOnStageWait() {}
653void dCourseSelectGuide_c::initializeState_UpOnStageAnimeEndCheck() {
655 mLayout.AnimeStartSetup(ANIM_IN_ARROW_U,
false);
657void dCourseSelectGuide_c::executeState_UpOnStageAnimeEndCheck() {
659 mLayout.AnimeEndSetup(ANIM_IN_ARROW_U);
660 mStateMgrUp.changeState(StateID_UpExitAnimeEndCheck);
662 if (
mLayout.isAnime(ANIM_IN_ARROW_U) ||
mLayout.isAnime(ANIM_IN_UNDER)) {
668void dCourseSelectGuide_c::finalizeState_UpOnStageAnimeEndCheck() {
672void dCourseSelectGuide_c::initializeState_UpDisp() {
673 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_U);
675void dCourseSelectGuide_c::executeState_UpDisp() {
677 mStateMgrUp.changeState(StateID_UpExitAnimeEndCheck);
680void dCourseSelectGuide_c::finalizeState_UpDisp() {}
682void dCourseSelectGuide_c::initializeState_UpExitAnimeEndCheck() {
684 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_U);
685 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_U,
false);
687void dCourseSelectGuide_c::executeState_UpExitAnimeEndCheck() {
689 mStateMgrUp.changeState(StateID_UpOnStageAnimeEndCheck);
690 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_U)) {
694void dCourseSelectGuide_c::finalizeState_UpExitAnimeEndCheck() {
698void dCourseSelectGuide_c::initializeState_DownOnStageWait() {}
699void dCourseSelectGuide_c::executeState_DownOnStageWait() {
704void dCourseSelectGuide_c::finalizeState_DownOnStageWait() {}
706void dCourseSelectGuide_c::initializeState_DownOnStageAnimeEndCheck() {
708 mLayout.AnimeStartSetup(ANIM_IN_ARROW_D,
false);
710void dCourseSelectGuide_c::executeState_DownOnStageAnimeEndCheck() {
712 mLayout.AnimeEndSetup(ANIM_IN_ARROW_D);
714 }
else if (!
mLayout.isAnime(ANIM_IN_ARROW_D)) {
718void dCourseSelectGuide_c::finalizeState_DownOnStageAnimeEndCheck() {
722void dCourseSelectGuide_c::initializeState_DownDisp() {
723 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_D);
725void dCourseSelectGuide_c::executeState_DownDisp() {
730void dCourseSelectGuide_c::finalizeState_DownDisp() {}
732void dCourseSelectGuide_c::initializeState_DownExitAnimeEndCheck() {
734 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_D);
735 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_D,
false);
737void dCourseSelectGuide_c::executeState_DownExitAnimeEndCheck() {
740 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_D)) {
744void dCourseSelectGuide_c::finalizeState_DownExitAnimeEndCheck() {
748void dCourseSelectGuide_c::initializeState_LeftOnStageWait() {}
749void dCourseSelectGuide_c::executeState_LeftOnStageWait() {
754void dCourseSelectGuide_c::finalizeState_LeftOnStageWait() {}
756void dCourseSelectGuide_c::initializeState_LeftOnStageAnimeEndCheck() {
758 mLayout.AnimeStartSetup(ANIM_IN_ARROW_L,
false);
760void dCourseSelectGuide_c::executeState_LeftOnStageAnimeEndCheck() {
762 mLayout.AnimeEndSetup(ANIM_IN_ARROW_L);
764 }
else if (!
mLayout.isAnime(ANIM_IN_ARROW_L)) {
768void dCourseSelectGuide_c::finalizeState_LeftOnStageAnimeEndCheck() {
772void dCourseSelectGuide_c::initializeState_LeftDisp() {
773 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_L);
775void dCourseSelectGuide_c::executeState_LeftDisp() {
780void dCourseSelectGuide_c::finalizeState_LeftDisp() {}
782void dCourseSelectGuide_c::initializeState_LeftExitAnimeEndCheck() {
784 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_L);
785 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_L,
false);
787void dCourseSelectGuide_c::executeState_LeftExitAnimeEndCheck() {
790 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_L)) {
794void dCourseSelectGuide_c::finalizeState_LeftExitAnimeEndCheck() {
798void dCourseSelectGuide_c::initializeState_RightOnStageWait() {}
799void dCourseSelectGuide_c::executeState_RightOnStageWait() {
804void dCourseSelectGuide_c::finalizeState_RightOnStageWait() {}
806void dCourseSelectGuide_c::initializeState_RightOnStageAnimeEndCheck() {
808 mLayout.AnimeStartSetup(ANIM_IN_ARROW_R,
false);
810void dCourseSelectGuide_c::executeState_RightOnStageAnimeEndCheck() {
812 mLayout.AnimeEndSetup(ANIM_IN_ARROW_R);
814 }
else if (!
mLayout.isAnime(ANIM_IN_ARROW_R)) {
818void dCourseSelectGuide_c::finalizeState_RightOnStageAnimeEndCheck() {
822void dCourseSelectGuide_c::initializeState_RightDisp() {
823 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_R);
825void dCourseSelectGuide_c::executeState_RightDisp() {
830void dCourseSelectGuide_c::finalizeState_RightDisp() {}
832void dCourseSelectGuide_c::initializeState_RightExitAnimeEndCheck() {
834 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_R);
835 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_R,
false);
837void dCourseSelectGuide_c::executeState_RightExitAnimeEndCheck() {
840 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_R)) {
844void dCourseSelectGuide_c::finalizeState_RightExitAnimeEndCheck() {
848void dCourseSelectGuide_c::initializeState_ShadowOnStageWait() {}
849void dCourseSelectGuide_c::executeState_ShadowOnStageWait() {
854void dCourseSelectGuide_c::finalizeState_ShadowOnStageWait() {
858void dCourseSelectGuide_c::initializeState_ShadowOnStageAnimeEndCheck() {
859 mLayout.AnimeStartSetup(ANIM_IN_SHADOW,
false);
861void dCourseSelectGuide_c::executeState_ShadowOnStageAnimeEndCheck() {
866void dCourseSelectGuide_c::finalizeState_ShadowOnStageAnimeEndCheck() {}
868void dCourseSelectGuide_c::initializeState_ShadowDisp() {}
869void dCourseSelectGuide_c::executeState_ShadowDisp() {
874void dCourseSelectGuide_c::finalizeState_ShadowDisp() {
878void dCourseSelectGuide_c::initializeState_ShadowExitAnimeEndCheck() {
879 mLayout.AnimeStartSetup(ANIM_OUT_SHADOW,
false);
881void dCourseSelectGuide_c::executeState_ShadowExitAnimeEndCheck() {
886void dCourseSelectGuide_c::finalizeState_ShadowExitAnimeEndCheck() {}
888void dCourseSelectGuide_c::initializeState_ScrollGuideOnStageWait() {
891void dCourseSelectGuide_c::executeState_ScrollGuideOnStageWait() {
897#if (defined(VERSION_K) || defined(VERSION_W))
907void dCourseSelectGuide_c::finalizeState_ScrollGuideOnStageWait() {
911void dCourseSelectGuide_c::initializeState_ScrollGuideOnStageAnimeEndCheck() {
917 mLayout.AnimeStartSetup(ANIM_IN_UNDER,
false);
920void dCourseSelectGuide_c::executeState_ScrollGuideOnStageAnimeEndCheck() {
922 mLayout.AnimeEndSetup(ANIM_IN_UNDER);
924 }
else if (!
mLayout.isAnime(-1)) {
930void dCourseSelectGuide_c::finalizeState_ScrollGuideOnStageAnimeEndCheck() {}
932void dCourseSelectGuide_c::initializeState_ScrollGuideDisp() {
933 mLayout.LoopAnimeStartSetup(ANIM_LOOP_UNDER);
935void dCourseSelectGuide_c::executeState_ScrollGuideDisp() {
940void dCourseSelectGuide_c::finalizeState_ScrollGuideDisp() {}
942void dCourseSelectGuide_c::initializeState_ScrollGuideExitAnimeEndCheck() {
944 mLayout.AnimeEndSetup(ANIM_LOOP_UNDER);
945 mLayout.AnimeStartSetup(ANIM_OUT_UNDER,
false);
947void dCourseSelectGuide_c::executeState_ScrollGuideExitAnimeEndCheck() {
952void dCourseSelectGuide_c::finalizeState_ScrollGuideExitAnimeEndCheck() {
965 mCourseType = dWmLib::GetCourseTypeFromCourseNo(courseNo);
968 if (type != dWmLib::POINT_TYPE_PATH) {
971 dInfo_c *info = dInfo_c::m_instance;
977 if (checkpoint->isCyuukanStart(i, wNo, cNo)) {
989 MsgRes_c *msgRes = dMessage_c::getMesRes();
990 bool attached =
true;
994 dInfo_c::m_instance->mExtensionAttached = attached;
996 mpTextBoxes[T_guideViewLS_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_BACK_TO_MARIO, 0);
998 mpTextBoxes[T_guideViewLS_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_VIEW_MAP, 0);
1000 mpTextBoxes[T_guideViewL_01]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_ITEMS, 0);
A text box class with BMG message support.
@ EXTENSION_NONE
No Wii remote extension is connected.
@ EXTENSION_UNKNOWN
It has not been checked yet whether an extension is connected.
bool mLeftAnim
Whether the left arrow is in an animation.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrUp
The state manager for the up arrow for the map view.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrGuide
The state manager for the button legends and remaining lives display.
bool mHideCourseInfo
Set this to true to hide the course info.
bool mShowScrollGuide
Set this to true to show the button legends for the map view mode.
bool mShowRestNumber
Whether to update the remaining lives count.
bool mHideShadow
Set this to true to remove the darkening of the world map view.
bool mInMapView
Whether the HUD is in the map view mode.
void CollectionCoinSet()
Updates the star coin icons.
bool mEndScrollGuide
Set this to true to hide the button legends for the map view mode.
int mRestAlphaTarget
The target transparency for mRestAlpha.
void ScissorMaskSet()
Clips the layout to the maximum allowed size.
bool mNoAnimCourseInfoIn
Whether the course info should simply appear instead of sliding in.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrDown
The state manager for the down arrow for the map view.
bool mHideHUD
Set this to true to hide the entire HUD.
bool mShowCourseInfo
Set this to true to show the course info.
bool mUpAnim
Whether the up arrow is in an animation.
int mCourseNo
The current course number. Set to a negative value if it's a course with an icon.
Remocon::EXTENSION_TYPE_e mExtension
The currently attached Wii remote extension.
bool mEnableAllArrows
Whether to show all map view arrows. Gets reset after 1 frame.
bool mEndGuide
Set this to true to hide the remaining guide.
int mWorldNo
The current world number.
LytBase_c mLayout
The layout for the window.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrLeft
The state manager for the left arrow for the map view.
int mWorldCourseOnStageTimer
Cooldown for showing the course info.
int mRest[PLAYER_COUNT]
The remaining lives for each player.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrWorldCourse
The state manager for the course info (world / course name).
bool mDownAnim
Whether the down arrow is in an animation.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrShadow
The state manager for darkening the course view. [Unused?].
bool mShowShadow
Set this to true to darken the world map view.
bool mDisableArrows
Whether to stop updating the map view arrows.
void UpdateGuide(short courseNo, dWmLib::PointType_e type)
Updates the course-related parts of the course info guide.
void RestAlphaDisp()
Sets the opacity of the remaining lives count.
void doDelete()
Prepares the view for deletion.
nw4r::lyt::Pane * mpNullPanes[N_COUNT]
The null panes of the view.
void ControllerConnectCheck()
Checks for attached controller extensions and updates the button hints with the correct icon.
static const int c_DISP_WAIT_TIMER
The speed at which the opacity of the remaining lives counter is changed.
nw4r::lyt::Picture * mpPicturePanes[P_COUNT]
The picture panes of the view.
static dCourseSelectGuide_c * m_instance
The instance of the view.
int mCourseType
The current course type.
bool mEnabled
Controls whether the HUD is updated every frame.
bool IsDirectionAllowed(int dir)
Returns whether the arrow for direction dir should be shown.
bool mIsCourseInfoOutAnime
Automatically set to false after the course info has been hidden.
bool mMapView
Whether the HUD should process the map view elements.
LytTextBox_c * mpTextBoxes[T_COUNT]
The textboxes of the view.
bool createLayout()
Creates the layout and initializes the class state.
void CourseSelectSet(dWmLib::PointType_e type)
Updates the textbox that displays the current course.
void draw()
Draws the view.
bool mInitialized
Whether the layout has been fully initialized.
void RestNumberDisp()
Fills in the text boxes showing the remaining lives count.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrRight
The state manager for the right arrow for the map view.
dCourseSelectGuide_c()
Constructs a new course select guide instance.
bool mRightAnim
Whether the right arrow is in an animation.
virtual ~dCourseSelectGuide_c()
Destroys the instance.
sFStateMgr_c< dCourseSelectGuide_c, sStateMethodUsr_FI_c > mStateMgrScrollGuide
The state manager for the button legends during the map view.
bool mCourseInfoAnim
Whether the course information is in an animation.
bool mBeginGuide
Set this to true to show the remaining guide.
bool mNoHUDAppearAnim
Whether the HUD should be shown without an animation.
int mGuideOnStageTimer
Cooldown for showing the remaining guide HUD.
nw4r::lyt::Pane * mpRootPane
The root pane of the view.
void PlayerIconSet()
Updates the player icons in the remaining lives info to the active player.
u8 mMoveDirection
A bitmask describing which arrows should be shown in the free move view.
void execute()
The main loop of the view.
Represents the slot-specific save data for the game.
u8 isCollectCoin(int world, int level, int coin) const
Checks if the given Star Coin has been obtained in the given world/level.
static int getPlayerIndex(PLAYER_CHARACTER_e)
A two-dimensional floating point vector.
A three-dimensional floating point vector.
static T::GlobalData_t mData
PLAYER_CHARACTER_e
The identifiers for each character.
#define STAR_COIN_COUNT
The amount of Star Coins per level.
#define CHECKPOINT_COUNT
The maximum number of checkpoints supported.
@ STAGE_START_KINOKO_HOUSE
The toad house on the starting node of each world.
static const PLAYER_CHARACTER_e sc_PLAYER_ORDER[]
#define STATE_DEFINE(class, name)
Defines a state.
Stores clipping settings for a layout.