2 --------------------------------------------------------
4 --------------------------------------------------------
5 Sistema de menu de Kraptor (al estilo de Unre*l)
6 Tiene el menu principal, y algunos otros menues cools (sonido, etc)
8 NOTAS: TODOS LOS TEXTOS DEL MENU ESTAN EN *INGLES*
9 PARA PODER TRADUCIRLOS AUTOMATICAMENTE
10 CON EL ENGINE DE TRADUCCION.
11 USAR MENUES Y DIALOGOS *LOCALES* PARA QUE AL
12 ENTRAR/SALIR DE SCOPE, (CADA VEZ QUE SE LLAMA LA FUNCION)
13 SE TRADUZCAN AUTOMATICAMENTE AL LENGUAJE ORIGINAL.
14 --------------------------------------------------------
32 /* Accion seleccionada en el menu, ver los #define en menu.h */
33 static int menu_seleccionado
= 0;
35 BITMAP
*bmp_menu_main
= NULL
; /* bitmap de fondo */
36 PALETTE pal_menu_main
; /* paleta del menu */
38 /* puntero a la ayuda del juego */
39 char *texto_ayuda_juego
= NULL
;
40 char *texto_acerca_de_juego
= NULL
; /* acerca de... */
41 BITMAP
*acerca_de_bmp
= NULL
; /* bitmap acerca de... */
43 /* boton 'especial' que se usa para configurar el teclado
44 cuando se da click, muestra un mensaje, espera por
45 una tecla, y la almacena en la variable que apunta dp3
46 dp3 debe ser un *int (ej: &jugador.arr)
47 si dp3 es NULL, llama a la funcion que resetea el teclado
49 Muestra el nombre de la tecla asignada en dp3 (readkey() >> 8)
51 static int keybutton_proc(int msg
, DIALOG
*d
, int c
)
54 /* nombres de teclas, extraido del ejemplo de Allegro, exkeys.c
55 y modificado para simplificar el display */
58 "(None)", "A", "B", "C",
67 "9", "0 Pad", "1 Pad", "2 Pad",
68 "3 Pad", "4 Pad", "5 Pad", "6 Pad",
69 "7 Pad", "8 Pad", "9 Pad", "F1",
70 "F2", "F3", "F4", "F5",
71 "F6", "F7", "F8", "F9",
72 "F10", "F11", "F12", "Esc",
73 "`", "-", "=", "Backspace",
74 "Tab", "[", "]", "Enter",
76 ",", ".", "/", "Space",
77 "Insert", "Del", "Home", "End",
78 "Pgup", "Pgdn", "Left", "Right",
79 "Up", "Down", "/ Pad", "*",
80 "- Pad", "+ Pad", "Del Pad", "Enter Pad",
81 "Prtscr", "Pause", "Abnt_C1", "Yen",
82 "Kana", "Convert", "Noconvert", "At",
83 "Circumflex", "Colon2", "Kanji",
84 "Lshift", "Rshift", "Lcontrol", "Rcontrol",
85 "Alt", "Altgr", "Lwin", "Rwin",
86 "Menu", "Scrlock", "Numlock", "Capslock",
90 /* si selecciona, pedir tecla... */
91 if (msg
== MSG_CLICK
|| msg
== MSG_KEY
)
93 /* pone un ??? en el caption */
94 int p
= (d
->flags
& D_SELECTED
) ? 1 : 0;
95 int style
= ((p
) ? F_IN
: 0) | ((d
->flags
& D_GOTFOCUS
) ? F_LIGHT
: 0);
99 gui_rect(screen
, d
->x
, d
->y
, d
->w
, d
->h
, style
);
100 rectfill(screen
, d
->x
+1, d
->y
+1, d
->x
+d
->w
-2, d
->y
+d
->h
-2, (d
->flags
& D_GOTFOCUS
) ? gui_light_color
: gui_back_color
);
103 gui_textout(screen
, "???", d
->x
+p
+ d
->w
/2, d
->y
+p
+ (d
->h
-text_height(font
))/2, (d
->flags
& D_DISABLED
) ? gui_dark_color
: gui_text_color
, 1);
110 set_teclado_default();
111 alert(get_config_text("Default keyboard"), NULL
, NULL
, get_config_text("OK"), NULL
, 0, 0);
116 *((int *)d
->dp3
) = readkey() >> 8; /* leer tecla */
124 if(msg
== MSG_DRAW
&& d
->dp3
!= NULL
) /* al dibujar, setear el nombre de la tecla al actual */
126 if ( *((int *)d
->dp3
) > -1 && *((int *)d
->dp3
) < 114) /* limitar rango */
127 d
->dp
= (void *)get_config_text(key_names
[*((int *)d
->dp3
)]); /* poner tecla en el caption, traducida y todo... */
129 d
->dp
= (void *)get_config_text("Unknown");
132 return xbutton_proc(msg
, d
, c
); /* sobrecarga la funcion base */
142 Esta funcion fabrica el menu principal
143 tiene un monton de mierdas propias
144 dentro del mismo scope
146 static void hacer_el_menu_principal_helper()
148 // comenzar un nuevo juego
149 static int nuevo_juego_mnu()
151 DIALOG skill_select_dlg
[] =
153 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
154 { xbox_proc
, 0, 0, 160, 128, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
155 { xbutton_proc
, 8, 32, 144, 24, 0, 0, 0, D_EXIT
, 0, 0, "Easy", NULL
, NULL
},
156 { xbutton_proc
, 8, 64, 144, 24, 0, 0, 0, D_EXIT
, 0, 0, "Medium", NULL
, NULL
},
157 { xbutton_proc
, 8, 96, 144, 24, 0, 0, 0, D_EXIT
, 0, 0, "Hard", NULL
, NULL
},
158 { xtext_proc
, 8, 8, 144, 16, 0, 0, 0, 0, 0, 0, "Skill", NULL
, NULL
},
159 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
162 /* nivel de dificultad, */
163 menu_seleccionado
= MNU_S_NEW_GAME
;
165 traducir_DIALOG_dp(skill_select_dlg
);
166 centre_dialog(skill_select_dlg
);
167 set_dialog_color(skill_select_dlg
, makecol(0,0,0), makecol(255,255,255));
169 nivel_de_dificultad
= do_dialog(skill_select_dlg
, 2) - 1;
170 if (nivel_de_dificultad
< 0 || nivel_de_dificultad
> 2) nivel_de_dificultad
= 1;
176 static int cargar_mnu()
178 menu_seleccionado
= MNU_S_LOAD_GAME
;
183 static int salir_mnu()
185 menu_seleccionado
= MNU_S_QUIT_GAME
;
190 /* Permite seleccionar un nuevo modo de video */
191 static int choose_video_mnu()
193 int card
= 0, w
= SCREEN_W
, h
= SCREEN_H
;
195 /* permitir elegir el modo de video */
196 if (!gfx_mode_select(&card
, &w
, &h
)) return D_REDRAW
;
198 set_color_depth(8); /* setear a 8bpp, en otros modos, no ANDA! */
199 // DEBUG: FALTA INFORMAR SI FALLA EL MODO DE VIDEO
200 if (set_gfx_mode(card
, w
, h
, 0, 0))
201 if (set_gfx_mode(GFX_SAFE
, 640, 480, 0, 0))
202 if (set_gfx_mode(GFX_SAFE
, 320, 200, 0, 0))
203 levantar_error("ERROR: imposible utilizar algun modo grafico de 8bpp!");
209 static int acercade_proggy_mnu()
211 DIALOG acerca_de_dlg
[] =
213 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
214 { xbox_proc
, 0, 0, 320, 200, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
215 { xtextbox_proc
, 4, 20, 152, 160, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
216 { xbutton_proc
, 300, 4, 16, 12, 0, 0, 0, D_EXIT
, 0, 0, "X", NULL
, NULL
},
217 { xbox_proc
, 164, 20, 152, 176, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
218 { xtext_proc
, 4, 4, 100, 12, 0, 0, 0, 0, 0, 0, "About", NULL
, NULL
},
219 { xbitmap_proc
, 168, 24, 144, 168, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
220 { xtext_proc
, 4, 184, 100, 12, 0, 0, 0, 0, 0, 0, "Version x.x.x", NULL
, NULL
},
221 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
224 if (texto_acerca_de_juego
== NULL
|| acerca_de_bmp
== NULL
)
226 alert("ERROR:", "No hay informacion disponible!", NULL
, "Aceptar", NULL
, 0, 0);
230 /* DEBUG: alterar los indices [x] si cambia el dialogo! */
231 acerca_de_dlg
[1].dp
= texto_acerca_de_juego
; /* setear el texto de ayuda de disco */
232 acerca_de_dlg
[4].dp
= (void *)get_config_text("About"); /* traducir el caption */
233 acerca_de_dlg
[5].dp
= acerca_de_bmp
;
234 acerca_de_dlg
[6].dp
= KRAPTOR_VERSION_STR
;
236 centre_dialog(acerca_de_dlg
);
237 set_dialog_color(acerca_de_dlg
, makecol(0,0,0), makecol(255,255,255));
238 popup_dialog(acerca_de_dlg
, 0);
243 /* idioma -> espa¤ol */
244 static int cambia_espanol(void)
246 menu_seleccionado
= MNU_S_CFG_SPANISH
;
250 /* idioma -> ingles */
251 static int cambia_ingles(void)
253 menu_seleccionado
= MNU_S_CFG_ENGLISH
;
260 // text proc , child , flags, dp
261 { "New game", nuevo_juego_mnu
, NULL
, 0, NULL
},
262 { "Load game", cargar_mnu
, NULL
, 0, NULL
},
263 { "", NULL
, NULL
, 0, NULL
},
264 { "Exit game", salir_mnu
, NULL
, 0, NULL
},
265 { NULL
, NULL
, NULL
, 0, NULL
}
269 /* Menu Configuracion */
272 // text proc , child , flags, dp
273 { "Sound", modificar_sonido_mnu
, NULL
, 0, NULL
},
274 { "Controls", mod_teclado_jugar
, NULL
, 0, NULL
},
275 { "Details", mod_detalle_mnu
, NULL
, 0, NULL
},
276 { "", NULL
, NULL
, 0, NULL
},
277 { "Video", choose_video_mnu
, NULL
, 0, NULL
},
278 { "", NULL
, NULL
, 0, NULL
},
279 { "Spanish", cambia_espanol
, NULL
, 0, NULL
},
280 { "English", cambia_ingles
, NULL
, 0, NULL
},
281 { NULL
, NULL
, NULL
, 0, NULL
}
287 // text proc , child , flags, dp
288 { "Help", ayuda_proggy_mnu
, NULL
, 0, NULL
},
289 { "About", acercade_proggy_mnu
,NULL
, 0, NULL
},
290 { NULL
, NULL
, NULL
, 0, NULL
}
297 // text proc , child , flags, dp
298 { "&Game", NULL
, menu_juego
, 0, NULL
},
299 { "&Configuration", NULL
, menu_cfg
, 0, NULL
},
300 { "&Help", NULL
, menu_ayuda
, 0, NULL
},
301 { NULL
, NULL
, NULL
, 0, NULL
}
305 /* Dialogo principal */
308 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
309 { d_menu_proc
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, menu_top
, NULL
, NULL
},
310 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
313 /* traducir menus 'al vuelo' */
314 traducir_MENU_text(menu_juego
);
315 traducir_MENU_text(menu_cfg
);
316 traducir_MENU_text(menu_ayuda
);
317 traducir_MENU_text(menu_top
);
319 menu_seleccionado
= 0;
320 do_dialog(main_dlg
, -1);
326 Funcion que muestra el menu principal
327 y actual en consecuencia */
328 void realizar_menu_principal()
330 menu_seleccionado
= 0;
332 while (menu_seleccionado
!= MNU_S_QUIT_GAME
)
334 set_palette(pal_menu_main
);
341 set_mouse_sprite(NULL
); /* acomoda puntero del mouse para que se ajuste a los colores */
343 stretch_blit(bmp_menu_main
,
353 hacer_el_menu_principal_helper();
355 switch (menu_seleccionado
)
357 case MNU_S_NEW_GAME
: // comenzar juego nuevo
358 comenzar_juego(FALSE
); /* Rock 'n roll! */
361 case MNU_S_LOAD_GAME
: // cargar un juego
362 if (cargar_juego_menu())
363 comenzar_juego(TRUE
); // comenzar el juego, pero sin alterar las vars cargadas
366 case MNU_S_QUIT_GAME
: /* Salir, confirmar primero */
367 if (alert(get_config_text("Exit game"),
370 get_config_text("Yes"),
371 get_config_text("No"),
374 menu_seleccionado
= 0;
378 case MNU_S_CFG_SPANISH
: // cambiar a espa~ol
379 reload_config_texts("es");
385 case MNU_S_CFG_ENGLISH
: // cambiar a ingles
386 reload_config_texts("en");
403 Menu para modificar parametros de sonido y musica
404 SE PUEDE LLAMAR DESDE OTROS LADOS (ej: desde game.c)
406 int modificar_sonido_mnu(void)
408 DIALOG sonido_dlg
[] =
410 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
411 { xbox_proc
, 0, 0, 150, 92, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
412 { xcheck_proc
, 4, 4, 140, 12, 0, 0, 0, 0, 1, 0, "Sound", NULL
, NULL
},
413 { xslider_proc
, 4, 20, 140, 12, 0, 0, 0, 0, 255, 255, NULL
, NULL
, NULL
},
414 { xcheck_proc
, 4, 36, 140, 12, 0, 0, 0, 0, 1, 0, "Music", NULL
, NULL
},
415 { xslider_proc
, 4, 52, 140, 12, 0, 0, 0, 0, 255, 255, NULL
, NULL
, NULL
},
416 { xbutton_proc
, 35, 72, 80, 16, 0, 0, 0, D_EXIT
, 0, 0, "OK", NULL
, NULL
},
417 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
421 traducir_DIALOG_dp(sonido_dlg
);
422 centre_dialog(sonido_dlg
);
423 set_dialog_color(sonido_dlg
, makecol(0,0,0), makecol(255,255,255));
426 /* setear parametros actuales */
427 sonido_dlg
[1].flags
|= (quiere_snd
) ? D_SELECTED
: 0 ;
428 sonido_dlg
[2].d2
= volumen_sonido
;
429 sonido_dlg
[3].flags
|= (quiere_musica
) ? D_SELECTED
: 0 ;
430 sonido_dlg
[4].d2
= volumen_musica
;
432 popup_dialog(sonido_dlg
, 0); /* mostrar dialogo */
434 /* ajustar nuevos parametros */
435 if (sonido_dlg
[1].flags
& D_SELECTED
)
440 volumen_sonido
= sonido_dlg
[2].d2
;
442 if (sonido_dlg
[3].flags
& D_SELECTED
)
443 quiere_musica
= TRUE
;
445 quiere_musica
= FALSE
;
447 volumen_musica
= sonido_dlg
[4].d2
;
452 /* Esto permite configurar el teclado solamente */
453 int configurar_el_teclado_solo(void)
455 /* dialogo de configuracion */
456 DIALOG dlg_teclado_config
[] =
458 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
459 { xbox_proc
, 0, 0, 248, 184, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
460 { xtext_proc
, 8, 8, 188, 12, 0, 0, 0, 0, 0, 0, "Controls", NULL
, NULL
},
461 { xbutton_proc
, 8, 152, 72, 24, 0, 0, 0, D_EXIT
, 0, 0, "OK", NULL
, NULL
},
462 { keybutton_proc
, 80, 24, 88, 24, 0, 0, 0, 0, 0, 0, "Up", NULL
, NULL
},
463 { keybutton_proc
, 8, 56, 88, 24, 0, 0, 0, 0, 0, 0, "Left", NULL
, NULL
},
464 { keybutton_proc
, 80, 88, 88, 24, 0, 0, 0, 0, 0, 0, "Down", NULL
, NULL
},
465 { keybutton_proc
, 152, 56, 88, 24, 0, 0, 0, 0, 0, 0, "Right", NULL
, NULL
},
466 { keybutton_proc
, 8, 120, 72, 24, 0, 0, 0, 0, 0, 0, "Shoot", NULL
, NULL
},
467 { keybutton_proc
, 88, 120, 72, 24, 0, 0, 0, 0, 0, 0, "Weapon", NULL
, NULL
},
468 { keybutton_proc
, 168, 120, 72, 24, 0, 0, 0, 0, 0, 0, "Special", NULL
, NULL
},
469 { keybutton_proc
, 168, 152, 72, 24, 0, 0, 0, 0, 0, 0, "Default", NULL
, NULL
},
470 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
473 /* inicializo el dialogo (el compilador no permite inicializarlo arriba) */
474 dlg_teclado_config
[3].dp3
= &teclado_jug
.arr
;
475 dlg_teclado_config
[4].dp3
= &teclado_jug
.izq
;
476 dlg_teclado_config
[5].dp3
= &teclado_jug
.abj
;
477 dlg_teclado_config
[6].dp3
= &teclado_jug
.der
;
478 dlg_teclado_config
[7].dp3
= &teclado_jug
.sht
;
479 dlg_teclado_config
[8].dp3
= &teclado_jug
.wpn
;
480 dlg_teclado_config
[9].dp3
= &teclado_jug
.bmb
;
482 traducir_DIALOG_dp(dlg_teclado_config
);
483 centre_dialog(dlg_teclado_config
);
484 set_dialog_color(dlg_teclado_config
, makecol(0,0,0), makecol(255,255,255));
486 popup_dialog(dlg_teclado_config
, 0); /* mostrar dialogo */
491 /* permite configurar el mouse */
492 int configurar_el_mouse(void)
494 DIALOG mouse_cfg_dlg
[] =
496 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
497 { xbox_proc
, 0, 0, 140, 128, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
498 { xtext_proc
, 4, 4, 132, 16, 0, 0, 0, 0, 0, 0, "Mouse", NULL
, NULL
},
499 { xcheck_proc
, 4, 28, 132, 16, 0, 0, 0, 0, 1, 0, "Enable", NULL
, NULL
},
500 { xtext_proc
, 4, 56, 128, 16, 0, 0, 0, 0, 0, 0, "Speed", NULL
, NULL
},
501 { xslider_proc
, 4, 72, 132, 16, 0, 0, 0, 0, 32, 0, NULL
, NULL
, NULL
},
502 { xbutton_proc
, 20, 100, 100, 20, 0, 0, 0, D_EXIT
, 0, 0, "OK", NULL
, NULL
},
503 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
506 traducir_DIALOG_dp(mouse_cfg_dlg
);
507 centre_dialog(mouse_cfg_dlg
);
508 set_dialog_color(mouse_cfg_dlg
, makecol(0,0,0), makecol(255,255,255));
510 mouse_cfg_dlg
[2].flags
= (quiere_usar_mouse
) ? D_SELECTED
: 0 ;
511 mouse_cfg_dlg
[4].d2
= mouse_velocidad
;
513 popup_dialog(mouse_cfg_dlg
, 0); /* mostrar dialogo */
515 if (mouse_cfg_dlg
[2].flags
& D_SELECTED
)
516 { quiere_usar_mouse
= TRUE
; }
518 { quiere_usar_mouse
= FALSE
; }
520 mouse_velocidad
= mouse_cfg_dlg
[4].d2
;
527 Permite configurar los controles, entre ellos, teclado, mouse, joystick
528 DEBUG: esta sin terminar
529 Puede ser llamado desde otros lados, ej: game.c
531 int mod_teclado_jugar(void)
534 DIALOG controls_config_dlg
[] =
536 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
537 { xbox_proc
, 0, 0, 200, 168, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
538 { xtext_proc
, 8, 4, 184, 16, 0, 0, 0, 0, 0, 0, "Controls", NULL
, NULL
},
539 { xbutton_proc
, 8, 24, 184, 32, 0, 0, 0, D_EXIT
, 0, 0, "Keyboard config", NULL
, NULL
},
540 { xbutton_proc
, 8, 60, 184, 32, 0, 0, 0, D_EXIT
, 0, 0, "Mouse config", NULL
, NULL
},
541 { xbutton_proc
, 8, 96, 184, 32, 0, 0, 0, D_EXIT
, 0, 0, "Joystick config", NULL
, NULL
},
542 { xbutton_proc
, 50, 136, 100, 24, 0, 0, 0, D_EXIT
, 0, 0, "OK", NULL
, NULL
},
543 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
546 traducir_DIALOG_dp(controls_config_dlg
);
547 centre_dialog(controls_config_dlg
);
548 set_dialog_color(controls_config_dlg
, makecol(0,0,0), makecol(255,255,255));
552 ret
= popup_dialog(controls_config_dlg
, 0); /* mostrar dialogo */
554 if (ret
== 2) configurar_el_teclado_solo();
556 if (ret
== 3) configurar_el_mouse();
558 if (ret
== 4) joystick_configuration_menu();
564 Permite configurar los detalles
565 Puede ser llamado desde otros lados, ej: game.c
567 int mod_detalle_mnu(void)
569 DIALOG detalle_dlg
[] =
571 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
572 { xbox_proc
, 0, 0, 150, 96, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
573 { xtext_proc
, 4, 4, 140, 12, 0, 0, 0, 0, 0, 0, "Detail level", NULL
, NULL
},
574 { xslider_proc
, 4, 18, 140, 14, 0, 0, 0, 0, 10, 10, NULL
, NULL
, NULL
},
575 { xbutton_proc
, 32, 76, 80, 16, 0, 0, 0, D_EXIT
, 0, 0, "OK", NULL
, NULL
},
576 { xcheck_proc
, 4, 36, 140, 12, 0, 0, 0, 0, 1, 0, "Auto adjust", NULL
, NULL
},
577 { xcheck_proc
, 4, 56, 140, 12, 0, 0, 0, 0, 1, 0, "Play videos", NULL
, NULL
},
578 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
582 traducir_DIALOG_dp(detalle_dlg
);
583 centre_dialog(detalle_dlg
);
584 set_dialog_color(detalle_dlg
, makecol(0,0,0), makecol(255,255,255));
586 /* setear parametros actuales */
587 detalle_dlg
[2].d2
= nivel_detalle
;
588 detalle_dlg
[4].flags
|= (detalle_automatico
) ? D_SELECTED
: 0 ;
589 detalle_dlg
[5].flags
|= (quiere_videos
) ? D_SELECTED
: 0;
591 popup_dialog(detalle_dlg
, 0); /* mostrar dialogo */
593 nivel_detalle
= detalle_dlg
[2].d2
;
595 if (detalle_dlg
[4].flags
& D_SELECTED
)
596 detalle_automatico
= TRUE
;
598 detalle_automatico
= FALSE
;
600 if (detalle_dlg
[5].flags
& D_SELECTED
)
601 quiere_videos
= TRUE
;
603 quiere_videos
= FALSE
;
609 Este menu generico es para ser llamado
610 desde game.c, presenta la configuracion 'al vuelo'
611 de sonido, teclado y detalles
613 int menu_configuracion_al_vuelo(void)
615 DIALOG configurar_dlg
[] =
617 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
618 { xbox_proc
, 0, 0, 128, 152, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
619 { xtext_proc
, 8, 8, 112, 8, 0, 0, 0, 0, 0, 0, "Configuration", NULL
, NULL
},
620 { xbutton_proc
, 8, 24, 112, 24, 0, 0, 0, D_EXIT
, 0, 0, "Sound", modificar_sonido_mnu
, NULL
},
621 { xbutton_proc
, 8, 56, 112, 24, 0, 0, 0, D_EXIT
, 0, 0, "Controls", mod_teclado_jugar
, NULL
},
622 { xbutton_proc
, 8, 88, 112, 24, 0, 0, 0, D_EXIT
, 0, 0, "Details", mod_detalle_mnu
, NULL
},
623 { xbutton_proc
, 8, 128, 112, 16, 0, 0, 0, D_EXIT
, 0, 0, "OK", NULL
, NULL
},
624 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
627 traducir_DIALOG_dp(configurar_dlg
);
628 centre_dialog(configurar_dlg
);
629 set_dialog_color(configurar_dlg
, makecol(0,0,0), makecol(255,255,255));
631 /* setear parametros actuales */
633 popup_dialog(configurar_dlg
, 0); /* mostrar dialogo */
638 /* Ayuda del programa
639 Puede ser llamado desde otros lados, ej: game.c
641 int ayuda_proggy_mnu()
643 /* dialogo que muestra la ayuda */
646 /* (proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
647 { xbox_proc
, 0, 0, 320, 200, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
648 { xtextbox_proc
, 4, 20, 312, 176, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
},
649 { xbutton_proc
, 300, 4, 16, 12, 0, 0, 0, D_EXIT
, 0, 0, "X", NULL
, NULL
},
650 { xtext_proc
, 4, 4, 100, 12, 0, 0, 0, 0, 0, 0, "Help", NULL
, NULL
},
651 { NULL
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
}
654 if (texto_ayuda_juego
== NULL
)
656 alert("ERROR:", "No hay ayuda disponible!", NULL
, "Aceptar", NULL
, 0, 0);
660 /* DEBUG: alterar los indices [x] si cambia el dialogo! */
661 ayuda_dlg
[1].dp
= texto_ayuda_juego
; /* setear el texto de ayuda de disco */
662 ayuda_dlg
[3].dp
= (void *)get_config_text("Help"); /* traducir el caption */
664 centre_dialog(ayuda_dlg
);
665 set_dialog_color(ayuda_dlg
, makecol(0,0,0), makecol(255,255,255));
666 popup_dialog(ayuda_dlg
, 0);