2 * Copyright (C) 2003 Robert Kooima
4 * NEVERBALL is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published
6 * by the Free Software Foundation; either version 2 of the License,
7 * or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
21 #include "st_shared.h"
27 /*---------------------------------------------------------------------------*/
31 static int level_enter(void)
35 const struct level_game *lg = curr_lg();
37 const float *textcol1, *textcol2;
40 level_ok = level_play_go();
42 if ((id = gui_vstack(0)))
44 if ((jd = gui_hstack(id)))
47 b = lg->level->is_bonus;
48 textcol1 = b ? gui_wht : 0;
49 textcol2 = b ? gui_grn : 0;
53 if ((kd = gui_vstack(jd)))
55 gui_label(kd, _(curr_set()->name), GUI_SML,
56 GUI_ALL, gui_wht, gui_wht);
59 if ((ld = gui_hstack(kd)))
61 gui_label(ld, ln, GUI_LRG, GUI_NE,
63 gui_label(ld, _("Level "), GUI_LRG, GUI_NW,
67 gui_label(kd, mode_to_str(lg->mode, 1), GUI_SML, GUI_BOT,
76 gui_label(id, _("Cannot load the level file."), GUI_SML, GUI_ALL,
78 else if (lg->level->message[0] != '\0')
79 gui_multi(id, _(lg->level->message), GUI_SML, GUI_ALL, gui_wht,
90 static void level_timer(int id, float dt)
96 static int level_click(int b, int d)
102 return goto_state(&st_play_ready);
106 level_stop(GAME_NONE, curr_clock(), curr_coins());
107 return goto_end_level();
113 static int level_keybd(int c, int d)
115 if (d && c == SDLK_F12)
116 return goto_state(&st_poser);
120 static int level_buttn(int b, int d)
124 if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
128 return goto_state(&st_play_ready);
132 level_stop(GAME_NONE, curr_clock(), curr_coins());
133 return goto_end_level();
136 if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
138 level_stop(GAME_NONE, curr_clock(), curr_coins());
139 return goto_end_level();
145 /*---------------------------------------------------------------------------*/
147 static void poser_paint(int id, float st)
152 static int poser_buttn(int c, int d)
154 if (d && config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, c))
155 return goto_state(&st_level);
160 /*---------------------------------------------------------------------------*/
162 struct state st_level = {
175 struct state st_poser = {