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 if (dGameCom::GetAspectRatio() == 0) {
247 clipSettings.mPos.y = mVideo::getSmth(330.0f);
248 clipSettings.mSize.x = 640.0f;
249 clipSettings.mSize.y = 330.0f;
250 clipSettings.mEnabled =
true;
252 mLayout.mClipSettings = clipSettings;
256 static const int picPaneNums[PLAYER_COUNT] = { P_marioFace_00, P_luigiFace_00, P_BkinoFace_00, P_YkinoFace_00 };
258 for (
int i = 0; i < PLAYER_COUNT; i++) {
262 int currPane = N_IconPos1P_00;
263 int playerCount = -1;
264 for (
int i = 0; i < PLAYER_COUNT; i++) {
267 if (dGameCom::PlayerEnterCheck(playerIndex)) {
277 for (
int i = 0; i < PLAYER_COUNT; i++) {
278 mpNullPanes[N_IconPos1P_00 + i]->setVisible(
false);
280 mpNullPanes[N_IconPos1P_00 + playerCount]->setVisible(
true);
284 static const int textBoxIdxs[PLAYER_COUNT] = { T_lifeNumber_00, T_lifeNumber_01, T_lifeNumber_03, T_lifeNumber_02 };
286 for (
int i = 0; i < PLAYER_COUNT; i++) {
289 int rest = daPyMng_c::getRest(playerType);
290 if (
mRest[i] != rest) {
292 int textIdx = textBoxIdxs[i];
294 dGameCom::LayoutDispNumber(rest, dGameDisplay_c::c_PLAYNUM_DIGIT, textBox,
true);
317 for (
int i = 0; i < PLAYER_COUNT; i++) {
344 !
mLayout.isAnime(ANIM_OUT_ARROW_U) || !
mLayout.isAnime(ANIM_OUT_ARROW_D) ||
345 !
mLayout.isAnime(ANIM_OUT_ARROW_L) || !
mLayout.isAnime(ANIM_OUT_ARROW_R)
373 static const int sc_startPointIcons[WORLD_USED_COUNT] = {
374 MSG_CS_ICON_START_RIGHT,
375 MSG_CS_ICON_START_UP,
376 MSG_CS_ICON_START_RIGHT,
377 MSG_CS_ICON_START_UP,
378 MSG_CS_ICON_START_RIGHT,
379 MSG_CS_ICON_START_UP,
380 MSG_CS_ICON_START_RIGHT,
381 MSG_CS_ICON_START_UP,
382 MSG_CS_ICON_START_UP,
384 dInfo_c *info = dInfo_c::m_instance;
385 MsgRes_c *msgRes = dMessage_c::getMesRes();
388 if (type == dWmLib::POINT_TYPE_PATH) {
391 }
else if (type == dWmLib::POINT_TYPE_REGULAR_COURSE || type == dWmLib::POINT_TYPE_OTHER) {
393 }
else if (type == dWmLib::POINT_TYPE_START_NODE) {
398 info->mDisplayCourseWorld = actualWNo;
399 mpTextBoxes[T_worldNum_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_CURR_WORLD, 0);
404 info->mDisplayCourseNum = actualLevelNo;
405 mpTextBoxes[T_cSelect_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_COURSE_NUM, 0);
409 case dWmLib::COURSE_TYPE_GHOST: messageID = MSG_CS_ICON_GHOST_HOUSE;
break;
410 case dWmLib::COURSE_TYPE_TOWER: messageID = MSG_CS_ICON_TOWER;
break;
411 case dWmLib::COURSE_TYPE_CASTLE:
413 messageID = MSG_CS_ICON_CASTLE;
415 messageID = MSG_CS_ICON_W8_CASTLE;
418 case dWmLib::COURSE_TYPE_KINOKO:
419 if (dScWMap_c::IsCourseType(
mWorldNo,
mCourseNo, dScWMap_c::COURSE_TYPE_KINOKO_HOUSE_1UP)) {
420 messageID = MSG_CS_ICON_KINOKO_HOUSE_1UP;
421 }
else if (dScWMap_c::IsCourseType(
mWorldNo,
mCourseNo, dScWMap_c::COURSE_TYPE_KINOKO_HOUSE_STAR)) {
422 messageID = MSG_CS_ICON_KINOKO_HOUSE_STAR;
424 messageID = MSG_CS_ICON_KINOKO_HOUSE_RED;
427 case dWmLib::COURSE_TYPE_JUNCTION: messageID = MSG_CS_ICON_JUNCTION;
break;
428 case dWmLib::COURSE_TYPE_CANNON: messageID = MSG_CS_ICON_CANNON;
break;
429 case dWmLib::COURSE_TYPE_KOOPA_SHIP:
430 if (dWmLib::isKoopaShipAnchor()) {
431 messageID = MSG_CS_ICON_ANCHOR;
433 messageID = MSG_CS_ICON_AIRSHIP;
436 case dWmLib::COURSE_TYPE_PEACH_CASTLE:
438 messageID = MSG_CS_ICON_PEACH_CASTLE;
440 case dWmLib::COURSE_TYPE_INVALID:
442 messageID = sc_startPointIcons[
mWorldNo];
445 if (dWmLib::isStartPointKinokoHouseStar()) {
446 messageID = MSG_CS_ICON_KINOKO_HOUSE_STAR;
447 }
else if (dWmLib::isStartPointKinokoHouseRed()) {
448 messageID = MSG_CS_ICON_KINOKO_HOUSE_RED;
450 messageID = MSG_CS_ICON_KINOKO_HOUSE_1UP;
454 mpTextBoxes[T_cSelect_pic]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, messageID, 0);
460 dMj2dGame_c *saveGame = dSaveMng_c::m_instance->getSaveGame(-1);
461 dCyuukan_c *checkpoint = dInfo_c::m_instance->getCyuukan();
470 if (collectCoin != 0) {
475 && checkpoint->mCoinCollection[i] != 4
488 static const u8 flags[] = {
497void dCourseSelectGuide_c::initializeState_WorldCourseOnStageWait() {}
498void dCourseSelectGuide_c::executeState_WorldCourseOnStageWait() {
513void dCourseSelectGuide_c::finalizeState_WorldCourseOnStageWait() {}
515void dCourseSelectGuide_c::initializeState_WorldCourseOnStageAnimeEndCheck() {
520void dCourseSelectGuide_c::executeState_WorldCourseOnStageAnimeEndCheck() {
522 mLayout.AnimeEndSetup(ANIM_IN_COURSE_INFO);
524 }
else if (!
mLayout.isAnime(ANIM_IN_COURSE_INFO)) {
528void dCourseSelectGuide_c::finalizeState_WorldCourseOnStageAnimeEndCheck() {
532void dCourseSelectGuide_c::initializeState_WorldCourseDisp() {
533 mLayout.LoopAnimeStartSetup(ANIM_LOOP_COURSE_INFO);
535void dCourseSelectGuide_c::executeState_WorldCourseDisp() {
544void dCourseSelectGuide_c::finalizeState_WorldCourseDisp() {}
546void dCourseSelectGuide_c::initializeState_WorldCourseExitAnimeEndCheck() {
549 mLayout.AnimeEndSetup(ANIM_LOOP_COURSE_INFO);
550 mLayout.AnimeStartSetup(ANIM_OUT_COURSE_INFO,
false);
552void dCourseSelectGuide_c::executeState_WorldCourseExitAnimeEndCheck() {
554 mLayout.AnimeEndSetup(ANIM_OUT_COURSE_INFO);
556 }
else if (!
mLayout.isAnime(ANIM_OUT_COURSE_INFO)) {
561void dCourseSelectGuide_c::finalizeState_WorldCourseExitAnimeEndCheck() {
565void dCourseSelectGuide_c::initializeState_GuideOnStageWait() {}
566void dCourseSelectGuide_c::executeState_GuideOnStageWait() {
581void dCourseSelectGuide_c::finalizeState_GuideOnStageWait() {
585void dCourseSelectGuide_c::initializeState_GuideOnStageAnimeEndCheck() {
590void dCourseSelectGuide_c::executeState_GuideOnStageAnimeEndCheck() {
592 mLayout.AnimeEndSetup(ANIM_IN_UNDER);
593 mLayout.AnimeEndSetup(ANIM_IN_ZANKI);
596 if (
mLayout.isAnime(ANIM_IN_UNDER) ||
mLayout.isAnime(ANIM_IN_ZANKI)) {
602void dCourseSelectGuide_c::finalizeState_GuideOnStageAnimeEndCheck() {}
604void dCourseSelectGuide_c::initializeState_GuideDisp() {
605 mLayout.LoopAnimeStartSetup(ANIM_LOOP_UNDER);
606 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ZANKI);
608void dCourseSelectGuide_c::executeState_GuideDisp() {
616void dCourseSelectGuide_c::finalizeState_GuideDisp() {}
618void dCourseSelectGuide_c::initializeState_GuideExitAnimeEndCheck() {
620 mLayout.AnimeEndSetup(ANIM_LOOP_UNDER);
621 mLayout.AnimeEndSetup(ANIM_LOOP_ZANKI);
622 mLayout.AnimeStartSetup(ANIM_OUT_UNDER,
false);
623 mLayout.AnimeStartSetup(ANIM_OUT_ZANKI,
false);
625void dCourseSelectGuide_c::executeState_GuideExitAnimeEndCheck() {
627 mLayout.AnimeEndSetup(ANIM_OUT_UNDER);
628 mLayout.AnimeEndSetup(ANIM_OUT_ZANKI);
631 if (
mLayout.isAnime(ANIM_OUT_UNDER) ||
mLayout.isAnime(ANIM_OUT_ZANKI)) {
638void dCourseSelectGuide_c::finalizeState_GuideExitAnimeEndCheck() {}
640void dCourseSelectGuide_c::initializeState_UpOnStageWait() {}
641void dCourseSelectGuide_c::executeState_UpOnStageWait() {
643 mStateMgrUp.changeState(StateID_UpOnStageAnimeEndCheck);
646void dCourseSelectGuide_c::finalizeState_UpOnStageWait() {}
648void dCourseSelectGuide_c::initializeState_UpOnStageAnimeEndCheck() {
650 mLayout.AnimeStartSetup(ANIM_IN_ARROW_U,
false);
652void dCourseSelectGuide_c::executeState_UpOnStageAnimeEndCheck() {
654 mLayout.AnimeEndSetup(ANIM_IN_ARROW_U);
655 mStateMgrUp.changeState(StateID_UpExitAnimeEndCheck);
657 if (
mLayout.isAnime(ANIM_IN_ARROW_U) ||
mLayout.isAnime(ANIM_IN_UNDER)) {
663void dCourseSelectGuide_c::finalizeState_UpOnStageAnimeEndCheck() {
667void dCourseSelectGuide_c::initializeState_UpDisp() {
668 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_U);
670void dCourseSelectGuide_c::executeState_UpDisp() {
672 mStateMgrUp.changeState(StateID_UpExitAnimeEndCheck);
675void dCourseSelectGuide_c::finalizeState_UpDisp() {}
677void dCourseSelectGuide_c::initializeState_UpExitAnimeEndCheck() {
679 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_U);
680 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_U,
false);
682void dCourseSelectGuide_c::executeState_UpExitAnimeEndCheck() {
684 mStateMgrUp.changeState(StateID_UpOnStageAnimeEndCheck);
685 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_U)) {
689void dCourseSelectGuide_c::finalizeState_UpExitAnimeEndCheck() {
693void dCourseSelectGuide_c::initializeState_DownOnStageWait() {}
694void dCourseSelectGuide_c::executeState_DownOnStageWait() {
699void dCourseSelectGuide_c::finalizeState_DownOnStageWait() {}
701void dCourseSelectGuide_c::initializeState_DownOnStageAnimeEndCheck() {
703 mLayout.AnimeStartSetup(ANIM_IN_ARROW_D,
false);
705void dCourseSelectGuide_c::executeState_DownOnStageAnimeEndCheck() {
707 mLayout.AnimeEndSetup(ANIM_IN_ARROW_D);
709 }
else if (!
mLayout.isAnime(ANIM_IN_ARROW_D)) {
713void dCourseSelectGuide_c::finalizeState_DownOnStageAnimeEndCheck() {
717void dCourseSelectGuide_c::initializeState_DownDisp() {
718 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_D);
720void dCourseSelectGuide_c::executeState_DownDisp() {
725void dCourseSelectGuide_c::finalizeState_DownDisp() {}
727void dCourseSelectGuide_c::initializeState_DownExitAnimeEndCheck() {
729 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_D);
730 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_D,
false);
732void dCourseSelectGuide_c::executeState_DownExitAnimeEndCheck() {
735 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_D)) {
739void dCourseSelectGuide_c::finalizeState_DownExitAnimeEndCheck() {
743void dCourseSelectGuide_c::initializeState_LeftOnStageWait() {}
744void dCourseSelectGuide_c::executeState_LeftOnStageWait() {
749void dCourseSelectGuide_c::finalizeState_LeftOnStageWait() {}
751void dCourseSelectGuide_c::initializeState_LeftOnStageAnimeEndCheck() {
753 mLayout.AnimeStartSetup(ANIM_IN_ARROW_L,
false);
755void dCourseSelectGuide_c::executeState_LeftOnStageAnimeEndCheck() {
757 mLayout.AnimeEndSetup(ANIM_IN_ARROW_L);
759 }
else if (!
mLayout.isAnime(ANIM_IN_ARROW_L)) {
763void dCourseSelectGuide_c::finalizeState_LeftOnStageAnimeEndCheck() {
767void dCourseSelectGuide_c::initializeState_LeftDisp() {
768 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_L);
770void dCourseSelectGuide_c::executeState_LeftDisp() {
775void dCourseSelectGuide_c::finalizeState_LeftDisp() {}
777void dCourseSelectGuide_c::initializeState_LeftExitAnimeEndCheck() {
779 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_L);
780 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_L,
false);
782void dCourseSelectGuide_c::executeState_LeftExitAnimeEndCheck() {
785 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_L)) {
789void dCourseSelectGuide_c::finalizeState_LeftExitAnimeEndCheck() {
793void dCourseSelectGuide_c::initializeState_RightOnStageWait() {}
794void dCourseSelectGuide_c::executeState_RightOnStageWait() {
799void dCourseSelectGuide_c::finalizeState_RightOnStageWait() {}
801void dCourseSelectGuide_c::initializeState_RightOnStageAnimeEndCheck() {
803 mLayout.AnimeStartSetup(ANIM_IN_ARROW_R,
false);
805void dCourseSelectGuide_c::executeState_RightOnStageAnimeEndCheck() {
807 mLayout.AnimeEndSetup(ANIM_IN_ARROW_R);
809 }
else if (!
mLayout.isAnime(ANIM_IN_ARROW_R)) {
813void dCourseSelectGuide_c::finalizeState_RightOnStageAnimeEndCheck() {
817void dCourseSelectGuide_c::initializeState_RightDisp() {
818 mLayout.LoopAnimeStartSetup(ANIM_LOOP_ARROW_R);
820void dCourseSelectGuide_c::executeState_RightDisp() {
825void dCourseSelectGuide_c::finalizeState_RightDisp() {}
827void dCourseSelectGuide_c::initializeState_RightExitAnimeEndCheck() {
829 mLayout.AnimeEndSetup(ANIM_LOOP_ARROW_R);
830 mLayout.AnimeStartSetup(ANIM_OUT_ARROW_R,
false);
832void dCourseSelectGuide_c::executeState_RightExitAnimeEndCheck() {
835 }
else if (!
mLayout.isAnime(ANIM_OUT_ARROW_R)) {
839void dCourseSelectGuide_c::finalizeState_RightExitAnimeEndCheck() {
843void dCourseSelectGuide_c::initializeState_ShadowOnStageWait() {}
844void dCourseSelectGuide_c::executeState_ShadowOnStageWait() {
849void dCourseSelectGuide_c::finalizeState_ShadowOnStageWait() {
853void dCourseSelectGuide_c::initializeState_ShadowOnStageAnimeEndCheck() {
854 mLayout.AnimeStartSetup(ANIM_IN_SHADOW,
false);
856void dCourseSelectGuide_c::executeState_ShadowOnStageAnimeEndCheck() {
861void dCourseSelectGuide_c::finalizeState_ShadowOnStageAnimeEndCheck() {}
863void dCourseSelectGuide_c::initializeState_ShadowDisp() {}
864void dCourseSelectGuide_c::executeState_ShadowDisp() {
869void dCourseSelectGuide_c::finalizeState_ShadowDisp() {
873void dCourseSelectGuide_c::initializeState_ShadowExitAnimeEndCheck() {
874 mLayout.AnimeStartSetup(ANIM_OUT_SHADOW,
false);
876void dCourseSelectGuide_c::executeState_ShadowExitAnimeEndCheck() {
881void dCourseSelectGuide_c::finalizeState_ShadowExitAnimeEndCheck() {}
883void dCourseSelectGuide_c::initializeState_ScrollGuideOnStageWait() {
886void dCourseSelectGuide_c::executeState_ScrollGuideOnStageWait() {
892#if (defined(VERSION_K) || defined(VERSION_W))
902void dCourseSelectGuide_c::finalizeState_ScrollGuideOnStageWait() {
906void dCourseSelectGuide_c::initializeState_ScrollGuideOnStageAnimeEndCheck() {
912 mLayout.AnimeStartSetup(ANIM_IN_UNDER,
false);
915void dCourseSelectGuide_c::executeState_ScrollGuideOnStageAnimeEndCheck() {
917 mLayout.AnimeEndSetup(ANIM_IN_UNDER);
919 }
else if (!
mLayout.isAnime(-1)) {
925void dCourseSelectGuide_c::finalizeState_ScrollGuideOnStageAnimeEndCheck() {}
927void dCourseSelectGuide_c::initializeState_ScrollGuideDisp() {
928 mLayout.LoopAnimeStartSetup(ANIM_LOOP_UNDER);
930void dCourseSelectGuide_c::executeState_ScrollGuideDisp() {
935void dCourseSelectGuide_c::finalizeState_ScrollGuideDisp() {}
937void dCourseSelectGuide_c::initializeState_ScrollGuideExitAnimeEndCheck() {
939 mLayout.AnimeEndSetup(ANIM_LOOP_UNDER);
940 mLayout.AnimeStartSetup(ANIM_OUT_UNDER,
false);
942void dCourseSelectGuide_c::executeState_ScrollGuideExitAnimeEndCheck() {
947void dCourseSelectGuide_c::finalizeState_ScrollGuideExitAnimeEndCheck() {
960 mCourseType = dWmLib::GetCourseTypeFromCourseNo(courseNo);
963 if (type != dWmLib::POINT_TYPE_PATH) {
966 dInfo_c *info = dInfo_c::m_instance;
972 if (checkpoint->isCyuukanStart(i, wNo, cNo)) {
984 MsgRes_c *msgRes = dMessage_c::getMesRes();
985 bool attached =
true;
989 dInfo_c::m_instance->mExtensionAttached = attached;
991 mpTextBoxes[T_guideViewLS_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_BACK_TO_MARIO, 0);
993 mpTextBoxes[T_guideViewLS_00]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_VIEW_MAP, 0);
995 mpTextBoxes[T_guideViewL_01]->setMessage(msgRes, BMG_CATEGORY_COURSE_SELECT_GUIDE, MSG_CS_ITEMS, 0);
@ 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.