From d2e26bbc86536b8c4bc634775ebbcc5bce8d3fe5 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sat, 4 Dec 2021 17:58:23 -0500 Subject: [PATCH] Finish menu input for char select TODO: - Menu delay shouldn't be a static value and work closer to how it did before (likely requires a more complicated system than just calling G_PlayerInputDown ... menu ticcmds? lol) - Create a sdl function to determine if any of the possible joysticks' buttons are being pressed & return the joystick number & set usejoystick to that number ... for the PRESS START prompt. Already tired of this code, I'm good --- src/k_menu.h | 2 +- src/k_menufunc.c | 144 ++++++++++++++++++++++++----------------------- 2 files changed, 75 insertions(+), 71 deletions(-) diff --git a/src/k_menu.h b/src/k_menu.h index af0162610..e4b825e5b 100644 --- a/src/k_menu.h +++ b/src/k_menu.h @@ -335,7 +335,7 @@ extern INT16 skullAnimCounter; // skull animation counter extern INT32 menuKey; // keyboard key pressed for menu -#define MENUDELAYTIME 5 +#define MENUDELAYTIME 3 // TODO: recreate how old input holding worked extern INT16 menuInputDelay; extern struct menutransition_s { diff --git a/src/k_menufunc.c b/src/k_menufunc.c index 1abc38270..cb7f2aaf3 100644 --- a/src/k_menufunc.c +++ b/src/k_menufunc.c @@ -1875,7 +1875,7 @@ static void M_HandleCharacterGrid(setup_player_t *p, UINT8 num) if (p->gridy > 8) p->gridy = 0; S_StartSound(NULL, sfx_s3k5b); - menuInputDelay = MENUDELAYTIME; + p->delay = MENUDELAYTIME; } else if (G_PlayerInputDown(num, gc_up, true) == true) { @@ -1883,7 +1883,7 @@ static void M_HandleCharacterGrid(setup_player_t *p, UINT8 num) if (p->gridy < 0) p->gridy = 8; S_StartSound(NULL, sfx_s3k5b); - menuInputDelay = MENUDELAYTIME; + p->delay = MENUDELAYTIME; } else if (G_PlayerInputDown(num, gc_right, true) == true) { @@ -1891,7 +1891,7 @@ static void M_HandleCharacterGrid(setup_player_t *p, UINT8 num) if (p->gridx > 8) p->gridx = 0; S_StartSound(NULL, sfx_s3k5b); - menuInputDelay = MENUDELAYTIME; + p->delay = MENUDELAYTIME; } else if (G_PlayerInputDown(num, gc_left, true) == true) { @@ -1899,7 +1899,7 @@ static void M_HandleCharacterGrid(setup_player_t *p, UINT8 num) if (p->gridx < 0) p->gridx = 8; S_StartSound(NULL, sfx_s3k5b); - menuInputDelay = MENUDELAYTIME; + p->delay = MENUDELAYTIME; } else if (G_PlayerInputDown(num, gc_a, true) == true || G_PlayerInputDown(num, gc_start, true) == true) { @@ -1917,7 +1917,7 @@ static void M_HandleCharacterGrid(setup_player_t *p, UINT8 num) S_StartSound(NULL, sfx_s3k63); } - menuInputDelay = MENUDELAYTIME; + p->delay = MENUDELAYTIME; } else if (G_PlayerInputDown(num, gc_b, true) == true) { @@ -1931,80 +1931,81 @@ static void M_HandleCharacterGrid(setup_player_t *p, UINT8 num) S_StartSound(NULL, sfx_s3kb2); } - menuInputDelay = MENUDELAYTIME; + p->delay = MENUDELAYTIME; } } -static void M_HandleCharRotate(INT32 choice, setup_player_t *p) +static void M_HandleCharRotate(setup_player_t *p, UINT8 num) { UINT8 numclones = setup_chargrid[p->gridx][p->gridy].numskins; - switch (choice) + if (G_PlayerInputDown(num, gc_right, true) == true) { - case KEY_RIGHTARROW: - p->clonenum++; - if (p->clonenum >= numclones) - p->clonenum = 0; - p->rotate = CSROTATETICS; - p->delay = CSROTATETICS; - S_StartSound(NULL, sfx_s3kc3s); - break; - case KEY_LEFTARROW: - p->clonenum--; - if (p->clonenum < 0) - p->clonenum = numclones-1; - p->rotate = -CSROTATETICS; - p->delay = CSROTATETICS; - S_StartSound(NULL, sfx_s3kc3s); - break; - case KEY_ENTER: - p->mdepth = CSSTEP_COLORS; - S_StartSound(NULL, sfx_s3k63); - break; - case KEY_ESCAPE: - p->mdepth = CSSTEP_CHARS; - S_StartSound(NULL, sfx_s3k5b); - break; - default: - break; + p->clonenum++; + if (p->clonenum >= numclones) + p->clonenum = 0; + p->rotate = CSROTATETICS; + p->delay = CSROTATETICS; + S_StartSound(NULL, sfx_s3kc3s); + } + else if (G_PlayerInputDown(num, gc_left, true) == true) + { + p->clonenum--; + if (p->clonenum < 0) + p->clonenum = numclones-1; + p->rotate = -CSROTATETICS; + p->delay = CSROTATETICS; + S_StartSound(NULL, sfx_s3kc3s); + } + else if (G_PlayerInputDown(num, gc_a, true) == true || G_PlayerInputDown(num, gc_start, true) == true) + { + p->mdepth = CSSTEP_COLORS; + S_StartSound(NULL, sfx_s3k63); + p->delay = MENUDELAYTIME; + } + else if (G_PlayerInputDown(num, gc_b, true) == true) + { + p->mdepth = CSSTEP_CHARS; + S_StartSound(NULL, sfx_s3k5b); + p->delay = MENUDELAYTIME; } } -static void M_HandleColorRotate(INT32 choice, setup_player_t *p) +static void M_HandleColorRotate(setup_player_t *p, UINT8 num) { - switch (choice) + if (G_PlayerInputDown(num, gc_right, true) == true) { - case KEY_RIGHTARROW: - p->color++; - if (p->color >= numskincolors) - p->color = 1; - p->rotate = CSROTATETICS; - //p->delay = CSROTATETICS; - S_StartSound(NULL, sfx_s3k5b); //sfx_s3kc3s - break; - case KEY_LEFTARROW: - p->color--; - if (p->color < 1) - p->color = numskincolors-1; - p->rotate = -CSROTATETICS; - //p->delay = CSROTATETICS; - S_StartSound(NULL, sfx_s3k5b); //sfx_s3kc3s - break; - case KEY_ENTER: - p->mdepth = CSSTEP_READY; - p->delay = TICRATE; - M_SetupReadyExplosions(p); - S_StartSound(NULL, sfx_s3k4e); - break; - case KEY_ESCAPE: - if (setup_chargrid[p->gridx][p->gridy].numskins == 1) - p->mdepth = CSSTEP_CHARS; // Skip clones menu - else - p->mdepth = CSSTEP_ALTS; - S_StartSound(NULL, sfx_s3k5b); - break; - default: - break; + p->color++; + if (p->color >= numskincolors) + p->color = 1; + p->rotate = CSROTATETICS; + p->delay = MENUDELAYTIME; //CSROTATETICS + S_StartSound(NULL, sfx_s3k5b); //sfx_s3kc3s + } + else if (G_PlayerInputDown(num, gc_left, true) == true) + { + p->color--; + if (p->color < 1) + p->color = numskincolors-1; + p->rotate = -CSROTATETICS; + p->delay = MENUDELAYTIME; //CSROTATETICS + S_StartSound(NULL, sfx_s3k5b); //sfx_s3kc3s + } + else if (G_PlayerInputDown(num, gc_a, true) == true || G_PlayerInputDown(num, gc_start, true) == true) + { + p->mdepth = CSSTEP_READY; + p->delay = TICRATE; + M_SetupReadyExplosions(p); + S_StartSound(NULL, sfx_s3k4e); + } + else if (G_PlayerInputDown(num, gc_b, true) == true) + { + if (setup_chargrid[p->gridx][p->gridy].numskins == 1) + p->mdepth = CSSTEP_CHARS; // Skip clones menu + else + p->mdepth = CSSTEP_ALTS; + S_StartSound(NULL, sfx_s3k5b); + p->delay = MENUDELAYTIME; } } @@ -2012,6 +2013,8 @@ boolean M_CharacterSelectHandler(INT32 choice) { UINT8 i; + (void)choice; + for (i = 0; i < MAXSPLITSCREENPLAYERS; i++) { setup_player_t *p = &setup_player[i]; @@ -2036,17 +2039,18 @@ boolean M_CharacterSelectHandler(INT32 choice) M_HandleCharacterGrid(p, i); break; case CSSTEP_ALTS: // Select clone - M_HandleCharRotate(choice, p); + M_HandleCharRotate(p, i); break; case CSSTEP_COLORS: // Select color - M_HandleColorRotate(choice, p); + M_HandleColorRotate(p, i); break; case CSSTEP_READY: default: // Unready - if (choice == KEY_ESCAPE) + if (G_PlayerInputDown(i, gc_b, true) == true) { p->mdepth = CSSTEP_COLORS; S_StartSound(NULL, sfx_s3k5b); + p->delay = MENUDELAYTIME; } break; }