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.
19 #include "st_shared.h"
24 /*---------------------------------------------------------------------------*/
33 extern struct state st_help2;
34 extern struct state st_help3;
35 extern struct state st_help4;
36 extern struct state st_help5;
38 static int help_action(int i)
40 audio_play(AUD_MENU, 1.0f);
44 case HELP_BACK: return goto_state(&st_title);
45 case HELP_RULE: return goto_state(&st_help);
46 case HELP_CONT: return goto_state(&st_help2);
47 case HELP_MODE: return goto_state(&st_help3);
48 case HELP_SECR: return goto_state(&st_help4);
49 case HELP_CRED: return goto_state(&st_help5);
54 static int help_button(int id, const char *text, int token, int atoken)
56 int kd = gui_state(id, text, GUI_SML, token, token == atoken);
62 static int help_menu(int id, int i)
66 if ((jd = gui_harray(id)))
68 help_button(jd, _("Credits"), HELP_CRED, i);
69 help_button(jd, _("Secrets"), HELP_SECR, i);
70 help_button(jd, _("Modes"), HELP_MODE, i);
71 help_button(jd, _("Controls"), HELP_CONT, i);
72 help_button(jd, _("Rules"), HELP_RULE, i);
73 help_button(jd, _("Back"), HELP_BACK, i);
79 static int help1_enter(void)
82 "Move the mouse or joystick\\"
83 "or use keyboard arrows to\\"
84 "tilt the floor causing the\\"
87 "Roll over coins to collect\\"
88 "them. Collect coins to\\"
89 "unlock the goal and finish\\"
92 int w = config_get_d(CONFIG_WIDTH);
93 int h = config_get_d(CONFIG_HEIGHT);
97 if ((id = gui_vstack(0)))
99 help_menu(id, HELP_RULE);
101 if ((jd = gui_hstack(id)))
103 gui_image(jd, "gui/help1.jpg", 6 * w / 16, 6 * h / 16);
104 gui_multi(jd, s0, GUI_SML, GUI_ALL, gui_wht, gui_wht);
108 if ((jd = gui_hstack(id)))
111 gui_multi(jd, s1, GUI_SML, GUI_ALL, gui_wht, gui_wht);
112 gui_image(jd, "gui/help2.jpg", 6 * w / 16, 6 * h / 16);
114 gui_layout(id, 0, +1);
119 static int help2_enter(void)
121 const char *s4 = _("Left and right mouse buttons rotate the view.");
122 const char *s5 = _("Hold Shift for faster view rotation.");
123 const char *s6 = _("Pause / Release Pointer");
124 const char *s7 = _("Exit / Cancel Menu");
125 const char *s8 = _("Chase View");
126 const char *s9 = _("Lazy View");
127 const char *sA = _("Manual View");
128 const char *sB = _("Show FPS");
129 const char *sC = _("Screenshot");
130 const char *sD = _("Toggle Fullscreen");
132 const char *k0 = _("Spacebar");
133 const char *k1 = _("Escape");
134 const char *k2 = SDL_GetKeyName(config_get_d(CONFIG_KEY_CAMERA_1));
135 const char *k3 = SDL_GetKeyName(config_get_d(CONFIG_KEY_CAMERA_2));
136 const char *k4 = SDL_GetKeyName(config_get_d(CONFIG_KEY_CAMERA_3));
137 const char *k5 = SDL_GetKeyName(SDLK_F9);
138 const char *k6 = SDL_GetKeyName(SDLK_F10);
139 const char *k7 = SDL_GetKeyName(SDLK_F11);
143 if ((id = gui_vstack(0)))
145 help_menu(id, HELP_CONT);
147 if ((jd = gui_harray(id)))
149 gui_label(jd, s6, GUI_SML, GUI_NE, gui_wht, gui_wht);
150 gui_label(jd, k0, GUI_SML, GUI_NW, gui_yel, gui_yel);
152 if ((jd = gui_harray(id)))
154 gui_label(jd, s7, GUI_SML, 0, gui_wht, gui_wht);
155 gui_label(jd, k1, GUI_SML, 0, gui_yel, gui_yel);
157 if ((jd = gui_harray(id)))
159 gui_label(jd, s8, GUI_SML, 0, gui_wht, gui_wht);
160 gui_label(jd, k2, GUI_SML, 0, gui_yel, gui_yel);
162 if ((jd = gui_harray(id)))
164 gui_label(jd, s9, GUI_SML, 0, gui_wht, gui_wht);
165 gui_label(jd, k3, GUI_SML, 0, gui_yel, gui_yel);
167 if ((jd = gui_harray(id)))
169 gui_label(jd, sA, GUI_SML, GUI_SE, gui_wht, gui_wht);
170 gui_label(jd, k4, GUI_SML, GUI_SW, gui_yel, gui_yel);
172 if ((jd = gui_harray(id)))
174 gui_label(jd, sB, GUI_SML, GUI_SE, gui_wht, gui_wht);
175 gui_label(jd, k5, GUI_SML, GUI_SW, gui_yel, gui_yel);
177 if ((jd = gui_harray(id)))
179 gui_label(jd, sC, GUI_SML, GUI_SE, gui_wht, gui_wht);
180 gui_label(jd, k6, GUI_SML, GUI_SW, gui_yel, gui_yel);
182 if ((jd = gui_harray(id)))
184 gui_label(jd, sD, GUI_SML, GUI_SE, gui_wht, gui_wht);
185 gui_label(jd, k7, GUI_SML, GUI_SW, gui_yel, gui_yel);
189 gui_label(id, s4, GUI_SML, GUI_TOP, gui_wht, gui_wht);
190 gui_label(id, s5, GUI_SML, GUI_BOT, gui_wht, gui_wht);
192 gui_layout(id, 0, +1);
197 static int help3_enter(void)
201 if ((id = gui_vstack(0)))
203 help_menu(id, HELP_MODE);
205 gui_label(id, _("Normal"), GUI_SML, GUI_TOP, 0, 0);
207 "Finish a level before the time run out.\\"
208 "You need to collect coins in order to open the goal.",
209 GUI_SML, GUI_BOT, gui_wht, gui_wht);
213 gui_label(id, _("Practice"), GUI_SML, GUI_TOP, 0, 0);
215 "Play a level without time or coin constraint.",
216 GUI_SML, GUI_BOT, gui_wht, gui_wht);
220 gui_label(id, _("Challenge"), GUI_SML, GUI_TOP, 0, 0);
222 "Start playing from the first level of the level set.\\"
223 "You start with only four balls, do not lose them.\\"
224 "Earn an extra ball for each 100 coins collected.",
225 GUI_SML, GUI_BOT, gui_wht, gui_wht);
227 gui_layout(id, 0, +1);
233 static int help4_enter(void)
246 int w = config_get_d(CONFIG_WIDTH);
247 int h = config_get_d(CONFIG_HEIGHT);
251 if ((id = gui_vstack(0)))
253 help_menu(id, HELP_SECR);
255 if ((jd = gui_hstack(id)))
258 gui_multi(jd, s0, GUI_SML, GUI_ALL, gui_wht, gui_wht);
259 gui_image(jd, "gui/help3.jpg", 6 * w / 16, 6 * h / 16);
262 if ((jd = gui_hstack(id)))
264 gui_image(jd, "gui/help4.jpg", 6 * w / 16, 6 * h / 16);
265 gui_multi(jd, s1, GUI_SML, GUI_ALL, gui_wht, gui_wht);
268 gui_layout(id, 0, +1);
273 static int help5_enter(void)
277 if ((id = gui_vstack(0)))
279 help_menu(id, HELP_CRED);
281 gui_label(id, _("Lead Maintainer"), GUI_SML, GUI_TOP, 0, 0);
282 gui_label(id, "Robert Kooima <robert.kooima@gmail.com>", GUI_SML, GUI_BOT , gui_wht, gui_wht);
286 gui_label(id, _("Developers"), GUI_SML, GUI_TOP, 0, 0);
287 gui_label(id, "Robert Kooima, Jean Privat", GUI_SML, GUI_BOT , gui_wht, gui_wht);
291 gui_label(id, _("Level Contribution"), GUI_SML, GUI_TOP, 0, 0);
292 gui_multi(id, "Robert Kooima, Jean Privat, Jānis Rūcis,\\Paul Tompkins, Mehdi Yousfi-Monod", GUI_SML, GUI_BOT , gui_wht, gui_wht);
296 gui_label(id, _("Translation"), GUI_SML, GUI_TOP, 0, 0);
297 gui_multi(id, "French: Jean Privat, Mehdi Yousfi-Monod;\\"
298 "German: Georg Wachter; Latvian: Jānis Rūcis", GUI_SML, GUI_BOT , gui_wht, gui_wht);
300 gui_layout(id, 0, +1);
305 static int help_buttn(int b, int d)
309 if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
310 return help_action(gui_token(gui_click()));
311 if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
312 return help_action(HELP_BACK);
317 /*---------------------------------------------------------------------------*/
319 struct state st_help = {
332 struct state st_help2 = {
345 struct state st_help3 = {
358 struct state st_help4 = {
371 struct state st_help5 = {