1212extern " C" void DisplayDebugText (int , void *, int , int , const char *);
1313extern " C" void DisplayDebugTextF (int , void *, int , int , const char *, ...);
1414
15- static void ExecuteLevitate ();
16- static void ExecutePause ();
17- static void ExecuteFrameAdvance ();
18- static void ExecutePrevPosition ();
19- static void ExecuteNextPosition ();
20- static void ExecuteSavePosition ();
21- static void ExecuteLoadPosition ();
22- static void ExecuteVoidOut ();
23- static void ExecuteTurbo ();
24-
25- // commands with default button combos
15+ static void ExecuteLevitate (u32 params );
16+ static void ExecutePause (u32 params );
17+ static void ExecuteFrameAdvance (u32 params );
18+ static void ExecutePrevPosition (u32 params );
19+ static void ExecuteNextPosition (u32 params );
20+ static void ExecuteSavePosition (u32 params );
21+ static void ExecuteLoadPosition (u32 params );
22+ static void ExecuteVoidOut (u32 params );
23+ static void ExecuteTurbo (u32 params );
24+
25+ // commands with default button combos, assigning the held btn to none means it's not required (and vice versa)
2626static GZCmdItem sCommands [] = {
2727 {ButtonCombo (" Levitate" , BTN_X , BTN_NONE ), ExecuteLevitate},
2828 {ButtonCombo (" Pause/Unpause" , BTN_NONE , BTN_DDOWN ), ExecutePause},
@@ -35,19 +35,19 @@ static GZCmdItem sCommands[] = {
3535 {ButtonCombo (" Turbo" , BTN_R , BTN_B ), ExecuteTurbo},
3636};
3737
38- static void ExecuteLevitate () { data_027e0478.mPlayer .mVel .y = FLOAT_TO_Q20 (0 .334375f ); }
38+ static void ExecuteLevitate (u32 params ) { data_027e0478.mPlayer .mVel .y = FLOAT_TO_Q20 (0 .334375f ); }
3939
40- static void ExecutePause () {
40+ static void ExecutePause (u32 params ) {
4141 if (!gGZ .mState .isPaused ) {
4242 gGZ .mState .isPaused = true ;
4343 } else {
4444 gGZ .mState .isPaused = false ;
4545 }
4646}
4747
48- static void ExecuteFrameAdvance () { gGZ .mState .requestedFrames ++; }
48+ static void ExecuteFrameAdvance (u32 params ) { gGZ .mState .requestedFrames ++; }
4949
50- static void ExecutePrevPosition () {
50+ static void ExecutePrevPosition (u32 params ) {
5151 GZProfile* pProfile = gSettings .GetProfile ();
5252
5353 pProfile->mPositionIndex --;
@@ -57,7 +57,7 @@ static void ExecutePrevPosition() {
5757 }
5858}
5959
60- static void ExecuteNextPosition () {
60+ static void ExecuteNextPosition (u32 params ) {
6161 GZProfile* pProfile = gSettings .GetProfile ();
6262
6363 pProfile->mPositionIndex ++;
@@ -67,31 +67,42 @@ static void ExecuteNextPosition() {
6767 }
6868}
6969
70- static void ExecuteSavePosition () {
70+ static void ExecuteSavePosition (u32 params ) {
7171 GZProfile* pProfile = gSettings .GetProfile ();
7272 Vec3p* pPosArray = gSettings .GetPosArray ();
7373 pPosArray[pProfile->mPositionIndex ] = data_027e0478.mPlayer .mPos ;
7474}
7575
76- static void ExecuteLoadPosition () {
76+ static void ExecuteLoadPosition (u32 params ) {
7777 GZProfile* pProfile = gSettings .GetProfile ();
7878 Vec3p* pPosArray = gSettings .GetPosArray ();
7979 data_027e0478.mPlayer .mPos = pPosArray[pProfile->mPositionIndex ];
8080}
8181
82- static void ExecuteVoidOut () {
82+ static void ExecuteVoidOut (u32 params ) {
8383 if (gGZ .IsOnLand ()) {
8484 data_027e0478.mPlayer .mPos .y = FLOAT_TO_Q20 (-4000 .0f );
8585 }
8686}
8787
88- static void ExecuteTurbo () {}
88+ static void ExecuteTurbo (u32 params ) {}
8989
9090GZCommandManager gCommandManager ;
9191
9292GZCommandManager::GZCommandManager () {
9393 this ->mpButtons = &gGZ .mButtons ;
9494 this ->mpCommands = sCommands ;
95+ this ->CreateMenuItems ();
96+ }
97+
98+ void GZCommandManager::CreateMenuItems () {
99+ this ->mMenu .entries = new GZMenuItem[ARRAY_LEN (sCommands )];
100+
101+ for (int i = 0 ; i < ARRAY_LEN (sCommands ); i++) {
102+ this ->mMenu .entries [i].name = sCommands [i].btnCombo .name ;
103+ this ->mMenu .entries [i].action = sCommands [i].actionCallback ;
104+ this ->mMenu .entries [i].submenu = NULL ;
105+ }
95106}
96107
97108void GZCommandManager::Update () {
@@ -104,7 +115,7 @@ void GZCommandManager::Update() {
104115
105116 if (pCmd->btnCombo .Executed (this ->mpButtons )) {
106117 if (pCmd->actionCallback != NULL ) {
107- pCmd->actionCallback ();
118+ pCmd->actionCallback (0 );
108119 }
109120 }
110121 }
@@ -118,7 +129,7 @@ void GZCommandManager::Draw(Vec2b* pPos) {
118129 bool selected = i + 1 == gMenuManager .mState .itemIndex ;
119130
120131 pCmd->btnCombo .SetComboString ();
121- DisplayDebugText (0 , &elemPos, 0 , selected, pCmd->btnCombo .fullName );
132+ DisplayDebugText (DRAW_TO_TOP_SCREEN , &elemPos, 0 , selected, pCmd->btnCombo .fullName );
122133 elemPos.y ++;
123134 }
124135}
0 commit comments