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);
214 gui_multi(id, "Play a level without time or coin constraint.",
215 GUI_SML, GUI_BOT, gui_wht, gui_wht);
219 gui_label(id, _("Challenge"), GUI_SML, GUI_TOP, 0, 0);
221 "Start playing from the first level of the level set.\\"
222 "You start with only four balls, do not lose them.\\"
223 "Earn an extra ball for each 100 coins collected.",
224 GUI_SML, GUI_BOT, gui_wht, gui_wht);
226 gui_layout(id, 0, +1);
232 static int help4_enter(void)
245 int w = config_get_d(CONFIG_WIDTH);
246 int h = config_get_d(CONFIG_HEIGHT);
250 if ((id = gui_vstack(0)))
252 help_menu(id, HELP_SECR);
254 if ((jd = gui_hstack(id)))
257 gui_multi(jd, s0, GUI_SML, GUI_ALL, gui_wht, gui_wht);
258 gui_image(jd, "gui/help3.jpg", 6 * w / 16, 6 * h / 16);
261 if ((jd = gui_hstack(id)))
263 gui_image(jd, "gui/help4.jpg", 6 * w / 16, 6 * h / 16);
264 gui_multi(jd, s1, GUI_SML, GUI_ALL, gui_wht, gui_wht);
267 gui_layout(id, 0, +1);
272 static int help5_enter(void)
276 if ((id = gui_vstack(0)))
278 help_menu(id, HELP_CRED);
280 gui_label(id, _("Lead Maintainer"), GUI_SML, GUI_TOP, 0, 0);
281 gui_label(id, "Robert Kooima <robert.kooima@gmail.com>",
282 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",
288 GUI_SML, GUI_BOT , gui_wht, gui_wht);
292 gui_label(id, _("Level Contribution"), GUI_SML, GUI_TOP, 0, 0);
294 "Robert Kooima, Jean Privat, Jānis Rūcis,\\"
295 "Paul Tompkins, Mehdi Yousfi-Monod",
296 GUI_SML, GUI_BOT , gui_wht, gui_wht);
300 gui_label(id, _("Translation"), GUI_SML, GUI_TOP, 0, 0);
302 "French: Jean Privat, Mehdi Yousfi-Monod;\\"
303 "German: Georg Wachter; Latvian: Jānis Rūcis",
304 GUI_SML, GUI_BOT , gui_wht, gui_wht);
306 gui_layout(id, 0, +1);
311 static int help_buttn(int b, int d)
315 if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
316 return help_action(gui_token(gui_click()));
317 if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
318 return help_action(HELP_BACK);
323 /*---------------------------------------------------------------------------*/
325 struct state st_help = {
338 struct state st_help2 = {
351 struct state st_help3 = {
364 struct state st_help4 = {
377 struct state st_help5 = {