running: tweaks
[neverball] / ball / st_title.c
index 0473f3b..cb581b2 100644 (file)
@@ -12,6 +12,8 @@
  * General Public License for more details.
  */
 
+#include <string.h>
+
 #include "gui.h"
 #include "vec3.h"
 #include "demo.h"
@@ -30,7 +32,6 @@
 /*---------------------------------------------------------------------------*/
 
 static float real_time = 0.0f;
-static float demo_time = 0.0f;
 static int   mode      = 0;
 
 static int play_id = 0;
@@ -109,8 +110,6 @@ static int title_action(int i)
     return 1;
 }
 
-static struct level title_level;
-
 static int title_enter(void)
 {
     int id, jd, kd;
@@ -152,11 +151,10 @@ static int title_enter(void)
     audio_music_fade_to(0.5f, "bgm/title.ogg");
 
     /* Initialize the title level for display. */
-    level_load("map-medium/title.sol", &title_level);
-    game_init(&title_level, 0, 0);
+
+    game_init("map-medium/title.sol", 0, 1);
 
     real_time = 0.0f;
-    demo_time = 0.0f;
     mode = 0;
 
     SDL_EnableUNICODE(1);
@@ -174,7 +172,6 @@ static void title_leave(int id)
 static void title_timer(int id, float dt)
 {
     static const char *demo = NULL;
-    float t;
 
     real_time += dt;
 
@@ -198,8 +195,8 @@ static void title_timer(int id, float dt)
         {
             if ((demo = demo_pick()))
             {
-                demo_replay_init(demo, NULL);
-                demo_time = 0.0f;
+                demo_replay_init(demo, NULL, NULL, NULL, NULL, NULL);
+                game_set_fly(0.0f);
                 real_time = 0.0f;
                 mode = 2;
             }
@@ -214,23 +211,21 @@ static void title_timer(int id, float dt)
 
     case 2: /* Mode 2: Run demo. */
 
-        while (demo_time < real_time)
-            if (demo_replay_step(&t))
-                demo_time += t;
-            else
-            {
-                demo_replay_stop(0);
-                game_fade(+1.0f);
-                real_time = 0.0f;
-                mode = 3;
-            }
+        if (!demo_replay_step(dt))
+        {
+            demo_replay_stop(0);
+            game_fade(+1.0f);
+            real_time = 0.0f;
+            mode = 3;
+        }
         break;
 
     case 3: /* Mode 3: Fade out.  Load title level. */
 
         if (real_time > 1.0f)
         {
-            game_init(&title_level, 0, 0);
+            game_init("map-medium/title.sol", 0, 1);
+
             real_time = 0.0f;
             mode = 0;
         }
@@ -269,6 +264,7 @@ struct state st_title = {
     title_timer,
     shared_point,
     shared_stick,
+    shared_angle,
     shared_click,
     title_keybd,
     title_buttn,