add infos in Modes and Secrets tabs
[neverball] / ball / st_title.c
index a4e7860..70d85bd 100644 (file)
@@ -1,4 +1,4 @@
-/*   
+/*
  * Copyright (C) 2003 Robert Kooima
  *
  * NEVERBALL is  free software; you can redistribute  it and/or modify
 
 #include "gui.h"
 #include "vec3.h"
-#include "back.h"
 #include "demo.h"
 #include "game.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_title.h"
+#include "st_help.h"
 #include "st_demo.h"
 #include "st_conf.h"
 #include "st_set.h"
@@ -45,12 +46,14 @@ static int title_action(int i)
 
     switch (i)
     {
-    case TITLE_PLAY: 
-       config_get_s(CONFIG_PLAYER, player, MAXNAM);
-       if (player[0] == '\0')
-           return goto_name(&st_set, &st_title);
-       else
-           return goto_state(&st_set);
+    case TITLE_PLAY:
+        config_get_s(CONFIG_PLAYER, player, MAXNAM);
+
+        if (player[0] == '\0')
+            return goto_name(&st_set, &st_title);
+        else
+            return goto_state(&st_set);
+
     case TITLE_HELP: return goto_state(&st_help);
     case TITLE_DEMO: return goto_state(&st_demo);
     case TITLE_CONF: return goto_state(&st_conf);
@@ -59,6 +62,8 @@ static int title_action(int i)
     return 1;
 }
 
+static struct level title_level;
+
 static int title_enter(void)
 {
     int id, jd, kd;
@@ -67,7 +72,7 @@ static int title_enter(void)
 
     if ((id = gui_vstack(0)))
     {
-        gui_label(id, _("Neverball"), GUI_LRG, GUI_ALL, 0, 0);
+        gui_label(id, "Neverball", GUI_LRG, GUI_ALL, 0, 0);
         gui_space(id);
 
         if ((jd = gui_harray(id)))
@@ -93,9 +98,8 @@ static int title_enter(void)
     audio_music_fade_to(0.5f, "bgm/title.ogg");
 
     /* Initialize the first level of the first set for display. */
-
-    game_init("map-rlk/title.sol",
-              "map-back/jupiter.sol", "png/space.png", 0, 1);
+    level_load("map-rlk/title.sol", &title_level);
+    game_init(&title_level, 0, 0);
 
     real_time = 0.0f;
     demo_time = 0.0f;
@@ -110,12 +114,6 @@ static void title_leave(int id)
     gui_delete(id);
 }
 
-static void title_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static void title_timer(int id, float dt)
 {
     static const char *demo = NULL;
@@ -143,7 +141,7 @@ static void title_timer(int id, float dt)
         {
             if ((demo = demo_pick()))
             {
-                demo_replay_init(demo, NULL, NULL, NULL, NULL, NULL);
+                demo_replay_init(demo, NULL);
                 demo_time = 0.0f;
                 real_time = 0.0f;
                 mode = 2;
@@ -163,7 +161,7 @@ static void title_timer(int id, float dt)
             if (demo_replay_step(&t))
                 demo_time += t;
             else
-            { 
+            {
                 demo_replay_stop(0);
                 game_fade(+1.0f);
                 real_time = 0.0f;
@@ -175,8 +173,7 @@ static void title_timer(int id, float dt)
 
         if (real_time > 1.0f)
         {
-            game_init("map-rlk/title.sol",
-                      "map-back/jupiter.sol", "png/space.png", 0, 1);
+            game_init(&title_level, 0, 0);
             real_time = 0.0f;
             mode = 0;
         }
@@ -188,33 +185,13 @@ static void title_timer(int id, float dt)
     game_step_fade(dt);
 }
 
-static void title_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void title_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int title_click(int b, int d)
-{
-    if (d && b < 0)
-        return title_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int title_keybd(int c, int d)
 {
     if (d && c == SDLK_c && ALLOW_CHEAT)
-       config_tgl_d(CONFIG_CHEAT);
-    return 1; 
+        config_tgl_d(CONFIG_CHEAT);
+    return 1;
 }
-       
+
 static int title_buttn(int b, int d)
 {
     if (d)
@@ -229,131 +206,16 @@ static int title_buttn(int b, int d)
 
 /*---------------------------------------------------------------------------*/
 
-static int help_enter(void)
-{
-    const char *s0 =
-        _("Move the mouse or joystick to tilt the floor\\"
-        "causing the ball to roll.  Roll over coins to\\"
-        "collect them.  Collect coins to unlock the goal\\"
-        "and finish the level.  Earn an extra ball for\\"
-        "each 100 coins collected.\\");
-
-    const char *s4 = _("Left and right mouse buttons rotate the view.");
-    const char *s5 = _("Hold Shift for faster view rotation.");
-    const char *s6 = _("Pause / Release Pointer");
-    const char *s7 = _("Exit / Cancel Menu");
-    const char *s8 = _("Chase View");
-    const char *s9 = _("Lazy View");
-    const char *sA = _("Manual View");
-    const char *sB = _("Comments?  Problems?  robert.kooima@gmail.com");
-
-    const char *k0 = _("Spacebar");
-    const char *k1 = _("Escape");
-    const char *k2 = SDL_GetKeyName(config_get_d(CONFIG_KEY_CAMERA_1));
-    const char *k3 = SDL_GetKeyName(config_get_d(CONFIG_KEY_CAMERA_2));
-    const char *k4 = SDL_GetKeyName(config_get_d(CONFIG_KEY_CAMERA_3));
-
-    int id, jd;
-
-    if ((id = gui_vstack(0)))
-    {
-        gui_multi(id, s0, GUI_SML, GUI_ALL, gui_wht, gui_wht);
-        gui_space(id);
-
-        if ((jd = gui_harray(id)))
-        {
-            gui_label(jd, s6, GUI_SML, GUI_NE, gui_wht, gui_wht);
-            gui_label(jd, k0, GUI_SML, GUI_NW, gui_yel, gui_yel);
-        }
-        if ((jd = gui_harray(id)))
-        {
-            gui_label(jd, s7, GUI_SML, 0,      gui_wht, gui_wht);
-            gui_label(jd, k1, GUI_SML, 0,      gui_yel, gui_yel);
-        }
-        if ((jd = gui_harray(id)))
-        {
-            gui_label(jd, s8, GUI_SML, 0,      gui_wht, gui_wht);
-            gui_label(jd, k2, GUI_SML, 0,      gui_yel, gui_yel);
-        }
-        if ((jd = gui_harray(id)))
-        {
-            gui_label(jd, s9, GUI_SML, 0,      gui_wht, gui_wht);
-            gui_label(jd, k3, GUI_SML, 0,      gui_yel, gui_yel);
-        }
-        if ((jd = gui_harray(id)))
-        {
-            gui_label(jd, sA, GUI_SML, GUI_SE, gui_wht, gui_wht);
-            gui_label(jd, k4, GUI_SML, GUI_SW, gui_yel, gui_yel);
-        }
-
-        gui_space(id);
-        gui_label(id, s4, GUI_SML, GUI_TOP, gui_wht, gui_wht);
-        gui_label(id, s5, GUI_SML, GUI_BOT, gui_wht, gui_wht);
-        gui_space(id);
-        gui_label(id, sB, GUI_SML, GUI_ALL, gui_wht, gui_wht);
-
-        gui_layout(id, 0, 0);
-    }
-    return id;
-}
-
-static void help_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void help_paint(int id, float st)
-{
-    game_draw(0, st);
-    config_pop_matrix();
-    gui_paint(id);
-}
-
-static void help_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static int help_click(int b, int d)
-{
-    return d ? goto_state(&st_title) : 1;
-}
-
-static int help_keybd(int c, int d)
-{
-    return d ? goto_state(&st_title) : 1;
-}
-
-static int help_buttn(int b, int d)
-{
-    return d ? goto_state(&st_title) : 1;
-}
-
-/*---------------------------------------------------------------------------*/
-
 struct state st_title = {
     title_enter,
     title_leave,
-    title_paint,
+    shared_paint,
     title_timer,
-    title_point,
-    title_stick,
-    title_click,
+    shared_point,
+    shared_stick,
+    shared_click,
     title_keybd,
     title_buttn,
     1, 0
 };
 
-struct state st_help = {
-    help_enter,
-    help_leave,
-    help_paint,
-    help_timer,
-    NULL,
-    NULL,
-    help_click,
-    help_keybd,
-    help_buttn,
-    1, 0
-};