diff --git a/src/d_clisrv.c b/src/d_clisrv.c index af60889b2..95fe919b2 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1179,6 +1179,8 @@ static const char *snake_backgrounds[] = { typedef struct snake_s { + boolean paused; + boolean pausepressed; tic_t time; tic_t nextupdate; boolean gameover; @@ -1200,6 +1202,8 @@ static void CL_InitialiseSnake(void) if (!snake) snake = malloc(sizeof(snake_t)); + snake->paused = false; + snake->pausepressed = false; snake->time = 0; snake->nextupdate = SNAKE_SPEED; snake->gameover = false; @@ -1221,6 +1225,26 @@ static void CL_HandleSnake(void) UINT8 oldx, oldy; UINT16 i; + // Handle retry + if (snake->gameover && (PLAYER1INPUTDOWN(gc_jump) || gamekeydown[KEY_ENTER])) + { + CL_InitialiseSnake(); + snake->pausepressed = true; // Avoid accidental pause on respawn + } + + // Handle pause + if (PLAYER1INPUTDOWN(gc_pause) || gamekeydown[KEY_ENTER]) + { + if (!snake->pausepressed) + snake->paused = !snake->paused; + snake->pausepressed = true; + } + else + snake->pausepressed = false; + + if (snake->paused) + return; + snake->time++; x = snake->snakex[0];