static int status_id;
static int player_id;
-/* Create a layout for some demo info. If d is NULL, try to reserve enough
- * space. */
-
static int gui_demo_status(int id, const struct demo *d)
{
char noname[MAXNAM];
mode = mode_to_str(0, 0);
j = strlen(mode);
- /* FIXME
- *
- * This stuff should not require changes each time a mode is
- * added or removed.
- */
-
- for (i = 1; i <= MODE_PRACTICE; i++)
+ for (i = 1; i <= MODE_COUNT; i++)
{
k = strlen(mode_to_str(i, 0));
+
if (k > j)
{
j = k;
}
else
{
- gui_label(id, _("No Replays"), GUI_MED, GUI_ALL, 0,0);
- gui_filler(id);
- gui_start(id, _("Back"), GUI_SML, GUI_BACK, 0);
+ gui_label(id, _("No Replays"), GUI_MED, GUI_ALL, 0, 0);
gui_layout(id, 0, 0);
}
return id;
}
+static void demo_timer(int id, float dt)
+{
+ if (total == 0 && time_state() > 4.0f)
+ goto_state(&st_title);
+
+ gui_timer(id, dt);
+}
+
static void demo_point(int id, int x, int y, int dx, int dy)
{
int jd = shared_point_basic(id, x, y);
if (d)
{
if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
- return demo_action(gui_token(gui_click()));
+ return demo_action(total ? gui_token(gui_click()) : GUI_BACK);
if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
return demo_action(GUI_BACK);
}
/*---------------------------------------------------------------------------*/
-/* Play demo from command line. */
-static int simple_play;
-
+static int standalone;
static int demo_paused;
-void demo_play_goto(int simple)
+void demo_play_goto(int s)
{
- simple_play = simple;
+ standalone = s;
}
static int demo_play_enter(void)
hud_paint();
if (time_state() < 1.f)
- gui_paint(id, 0);
+ gui_paint(id);
}
static void demo_play_timer(int id, float dt)
game_step_fade(dt);
gui_timer(id, dt);
- audio_timer(dt);
global_time += dt;
hud_timer(dt);
{
if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
{
- if (! (SDL_GetModState() & (KMOD_SHIFT | KMOD_CTRL | KMOD_ALT | KMOD_META)))
+ if (!(SDL_GetModState() & KMOD_SHIFT))
demo_paused = 1;
return goto_state(&st_demo_end);
}
/*---------------------------------------------------------------------------*/
-#define DEMO_KEEP 0
-#define DEMO_DEL 1
-#define DEMO_QUIT 2
-#define DEMO_REPLAY 3
+#define DEMO_KEEP 0
+#define DEMO_DEL 1
+#define DEMO_QUIT 2
+#define DEMO_REPLAY 3
#define DEMO_CONTINUE 4
static int demo_end_action(int i)
switch (i)
{
case DEMO_DEL:
+ demo_paused = 0;
return goto_state(&st_demo_del);
case DEMO_KEEP:
+ demo_paused = 0;
demo_replay_stop(0);
return goto_state(&st_demo);
case DEMO_QUIT:
kd = gui_label(id, _("Replay Paused"), GUI_LRG, GUI_ALL,
gui_gry, gui_red);
else
- kd = gui_label(id, _("Replay Ends"), GUI_LRG, GUI_ALL,
+ kd = gui_label(id, _("Replay Ends"), GUI_LRG, GUI_ALL,
gui_gry, gui_red);
if ((jd = gui_harray(id)))
{
- if (demo_paused)
- gui_start(jd, _("Continue"), GUI_SML, DEMO_CONTINUE, 0);
- else
- gui_start(jd, _("Replay Again"), GUI_SML, DEMO_REPLAY, 0);
+ int start_id = 0;
- if (simple_play)
- gui_start(jd, _("OK"), GUI_SML, DEMO_QUIT, 1);
+ if (standalone)
+ {
+ start_id = gui_start(jd, _("Quit"), GUI_SML, DEMO_QUIT, 1);
+ }
else
{
- gui_start(jd, _("Keep"), GUI_SML, DEMO_KEEP, 1);
- gui_state(jd, _("Delete"), GUI_SML, DEMO_DEL, 0);
+ start_id = gui_start(jd, _("Keep"), GUI_SML, DEMO_KEEP, 1);
+ gui_state(jd, _("Delete"), GUI_SML, DEMO_DEL, 0);
}
- }
-
- gui_filler(id);
- if ((jd = gui_hstack(id)))
- {
- gui_filler(jd);
- gui_demo_status(jd, curr_demo_replay());
- gui_filler(jd);
+ if (demo_paused)
+ {
+ gui_start(jd, _("Continue"), GUI_SML, DEMO_CONTINUE, 1);
+ gui_toggle(start_id);
+ }
+ else
+ gui_state(jd, _("Repeat"), GUI_SML, DEMO_REPLAY, 0);
}
gui_pulse(kd, 1.2f);
static void demo_end_paint(int id, float st)
{
game_draw(0, st);
- gui_paint(id, 0);
+ gui_paint(id);
if (demo_paused)
hud_paint();
if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
return demo_end_action(gui_token(gui_click()));
if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
- return demo_end_action(demo_paused
- ? DEMO_CONTINUE
- : (simple_play ? DEMO_QUIT : DEMO_KEEP));
+ {
+ if (demo_paused)
+ return demo_end_action(DEMO_CONTINUE);
+ else
+ return demo_end_action(standalone ? DEMO_QUIT : DEMO_KEEP);
+ }
}
return 1;
}
demo_enter,
shared_leave,
shared_paint,
- shared_timer,
+ demo_timer,
demo_point,
demo_stick,
shared_click,