running: tweaks
[neverball] / ball / st_pause.c
index 662be4e..fd8c03b 100644 (file)
  * General Public License for more details.
  */
 
-#include <SDL_mixer.h>
-
 #include "gui.h"
 #include "config.h"
 #include "game.h"
-#include "levels.h"
+#include "progress.h"
 #include "level.h"
 #include "audio.h"
 #include "hud.h"
@@ -67,15 +65,18 @@ static int pause_action(int i)
         return goto_state(st_continue);
 
     case PAUSE_RESTART:
-        level_same();
-        clear_pause();
-        SDL_PauseAudio(0);
-        config_set_grab(1);
-        return goto_state(&st_play_ready);
+        if (progress_same())
+        {
+            clear_pause();
+            SDL_PauseAudio(0);
+            config_set_grab(1);
+            return goto_state(&st_play_ready);
+        }
+        break;
 
     case PAUSE_EXIT:
-        level_stat(GAME_NONE, curr_clock(), curr_coins());
-        level_stop();
+        progress_stat(GAME_NONE);
+        progress_stop();
         clear_pause();
         SDL_PauseAudio(0);
         audio_music_stop();
@@ -106,13 +107,8 @@ static int pause_enter(void)
         {
             gui_state(jd, _("Quit"), GUI_SML, PAUSE_EXIT, 0);
 
-            if (curr_lg()->mode != MODE_CHALLENGE)
+            if (progress_same_avail())
                 gui_state(jd, _("Restart"), GUI_SML, PAUSE_RESTART, 0);
-            else
-            {
-                int ld = gui_state(jd, _("Restart"), GUI_SML, 0, 0);
-                gui_set_color(ld, gui_gry, gui_gry);
-            }
 
             gui_start(jd, _("Continue"), GUI_SML, PAUSE_CONTINUE, 1);
         }
@@ -126,9 +122,9 @@ static int pause_enter(void)
     return id;
 }
 
-static void pause_paint(int id, float st)
+static void pause_paint(int id, float t)
 {
-    shared_paint(id, st);
+    shared_paint(id, t);
     hud_paint();
 }
 
@@ -145,8 +141,7 @@ static int pause_keybd(int c, int d)
         if (config_tst_d(CONFIG_KEY_PAUSE, c))
             return pause_action(PAUSE_CONTINUE);
 
-        if (config_tst_d(CONFIG_KEY_RESTART, c)
-            && curr_lg()->mode != MODE_CHALLENGE)
+        if (config_tst_d(CONFIG_KEY_RESTART, c) && progress_same_avail())
             return pause_action(PAUSE_RESTART);
     }
     return 1;
@@ -160,12 +155,7 @@ static int pause_buttn(int b, int d)
             return pause_action(gui_token(gui_click()));
 
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
-        {
-            if (SDL_GetModState() & KMOD_SHIFT)
-                return pause_action(PAUSE_EXIT);
-            else
-                return pause_action(PAUSE_CONTINUE);
-        }
+            return pause_action(PAUSE_CONTINUE);
     }
     return 1;
 }
@@ -179,6 +169,7 @@ struct state st_pause = {
     pause_timer,
     shared_point,
     shared_stick,
+    shared_angle,
     shared_click,
     pause_keybd,
     pause_buttn,