diff --git a/src/m_menu.c b/src/m_menu.c index 63b345692e69d0f8568aed3658f42031fd5ef014..b4b5409b0c96367b8b2af82d06800377ba551318 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -11999,6 +11999,8 @@ static void M_HandleConnectIP(INT32 choice) static fixed_t multi_tics; static UINT8 multi_frame; static UINT8 multi_spr2; +static UINT8 multi_angle; +static boolean multi_paused; // this is set before entering the MultiPlayer setup menu, // for either player 1 or 2 @@ -12066,7 +12068,7 @@ static void M_DrawSetupMultiPlayerMenu(void) // anim the player in the box multi_tics -= renderdeltatics; - while (multi_tics <= 0) + while (!multi_paused && multi_tics <= 0) { multi_frame++; multi_tics += 4*FRACUNIT; @@ -12089,8 +12091,8 @@ static void M_DrawSetupMultiPlayerMenu(void) multi_frame = 0; sprframe = &sprdef->spriteframes[multi_frame]; - patch = W_CachePatchNum(sprframe->lumppat[0], PU_PATCH); - if (sprframe->flip & 1) // Only for first sprite + patch = W_CachePatchNum(sprframe->lumppat[multi_angle], PU_PATCH); + if (sprframe->flip & 1 || multi_angle >= 5) // Only for first sprite flags |= V_FLIP; // This sprite is left/right flipped! #define chary (y+64) @@ -12408,6 +12410,20 @@ static void M_HandleSetupMultiPlayer(INT32 choice) } break; + case KEY_KEYPAD5: + multi_paused = !multi_paused; + break; + + case KEY_KEYPAD4: + if (multi_angle <= 0) multi_angle = 7; + else multi_angle--; + break; + + case KEY_KEYPAD6: + if (multi_angle >= 7) multi_angle = 0; + else multi_angle++; + break; + default: if (itemOn != 0 || choice < 32 || choice > 127) break; @@ -12447,6 +12463,7 @@ static void M_SetupMultiPlayer(INT32 choice) multi_frame = 0; multi_tics = 4*FRACUNIT; + multi_angle = 0; strcpy(setupm_name, cv_playername.string); // set for player 1 @@ -12491,6 +12508,7 @@ static void M_SetupMultiPlayer2(INT32 choice) multi_frame = 0; multi_tics = 4*FRACUNIT; + multi_angle = 0; strcpy (setupm_name, cv_playername2.string); // set for splitscreen secondary player