working on the keymenu

origin
stpohle 22 years ago
parent 4357930b24
commit a34ab4b442

@ -147,7 +147,8 @@ module.source.files=\
help.c\ help.c\
menuimages.c\ menuimages.c\
playerinput.c\ playerinput.c\
keyb.c keyb.c\
playermenu.c
module.pixmap.name=pixmaps module.pixmap.name=pixmaps
module.pixmap.type= module.pixmap.type=

@ -22,6 +22,12 @@ struct __font {
_point size; _point size;
} typedef _font; } typedef _font;
struct _key_codes {
int code;
char *text;
};
extern _point font_lastsize; extern _point font_lastsize;
extern _font font[3]; extern _font font[3];

@ -37,6 +37,7 @@ extern BCGameKeys keyb_gamekeys;
extern void keyb_config (); extern void keyb_config ();
extern void keyb_configreset (); extern void keyb_configreset ();
extern void keyb_config_createkeymenu (int key, int x, int y, int menu_nr);
extern void keyb_init (); extern void keyb_init ();
extern void keyb_loop (SDL_Event *event); extern void keyb_loop (SDL_Event *event);

@ -42,6 +42,7 @@ bomberclone_SOURCES = \
flyingitems.c\ flyingitems.c\
help.c\ help.c\
playerinput.c\ playerinput.c\
keyb.c keyb.c\
playermenu.c
## bomberclone_LDADD = ## bomberclone_LDADD =

@ -1,4 +1,4 @@
/* $Id: configuration.c,v 1.53 2004/04/03 14:48:42 stpohle Exp $ /* $Id: configuration.c,v 1.54 2004/04/03 15:47:13 stpohle Exp $
* configuration */ * configuration */
#include <SDL.h> #include <SDL.h>
@ -12,6 +12,7 @@
#include "sound.h" #include "sound.h"
#include "menu.h" #include "menu.h"
#include "keyb.h" #include "keyb.h"
#include "player.h"
void void
config_init (int argc, char **argv) config_init (int argc, char **argv)
@ -90,14 +91,14 @@ config_init (int argc, char **argv)
draw_logo (); draw_logo ();
bman.playername[LEN_PLAYERNAME - 1] = 0; bman.playername[LEN_PLAYERNAME - 1] = 0;
bman.playername[0] = 0; bman.playername[0] = 0;
config_menu (); player_menu ();
} }
else { else {
ReadPrgArgs (argc, argv); ReadPrgArgs (argc, argv);
gfx_init (); gfx_init ();
draw_logo (); draw_logo ();
if (bman.askplayername) if (bman.askplayername)
config_menu (); player_menu ();
} }
snd_init (); snd_init ();
@ -496,15 +497,16 @@ config_menu ()
while (menuselect != -1 && bman.state != GS_quit) { while (menuselect != -1 && bman.state != GS_quit) {
menu_new ("Configuration", 400, 300); menu_new ("Configuration", 400, 300);
menu_create_label ("General Option", -1, 50, 1, COLOR_brown); menu_create_label ("General Option", -1, 50, 1, COLOR_brown);
menu_create_entry ("Name", -1, 85, 200, bman.playername, LEN_PLAYERNAME, MENU_entrytext, 1); menu_create_button ("Playermenu", 25, 85, 150, 1);
menu_create_button ("Video Setup", -1, 120, 200, 2); menu_create_button ("Keyboard", 225, 85, 150, 2);
menu_create_button ("Video Setup", -1, 120, 200, 3);
menu_create_label ("Sound", 25, 154, 0, COLOR_brown); menu_create_label ("Sound", 25, 154, 0, COLOR_brown);
menu_create_bool ("ON", 100, 150, 50, &snd.playsound, 3); menu_create_bool ("ON", 100, 150, 50, &snd.playsound, 4);
menu_create_label ("Music", 250, 154, 0, COLOR_brown); menu_create_label ("Music", 250, 154, 0, COLOR_brown);
menu_create_bool ("ON", 325, 150, 50, &snd.playmusic, 4); menu_create_bool ("ON", 325, 150, 50, &snd.playmusic, 5);
menu_create_label ("Extended Option", -1, 200, 1, COLOR_brown); menu_create_label ("Extended Option", -1, 200, 1, COLOR_brown);
menu_create_bool ("Debug", 25, 230, 150, &debug, 5); menu_create_bool ("Debug", 25, 230, 150, &debug, 6);
menu_create_bool ("Ask Playername", 250, 230, 150, &bman.askplayername, 6); menu_create_bool ("Ask Playername", 250, 230, 150, &bman.askplayername, 7);
menu_create_button ("Ok", -1, 270, 150, 0); menu_create_button ("Ok", -1, 270, 150, 0);
if (bman.playername[0] == '\0') if (bman.playername[0] == '\0')
menu_focus_id (1); menu_focus_id (1);
@ -522,7 +524,13 @@ config_menu ()
else else
menuselect = -1; menuselect = -1;
break; break;
case (2): // Screen Options case (1): // player screen
player_menu ();
break;
case (2): // keyboard settings
keyb_config ();
break;
case (3): // Screen Options
config_video (); config_video ();
break; break;
} }

@ -1,12 +1,38 @@
/* $Id: keyb.c,v 1.1 2004/04/03 13:55:30 stpohle Exp $ /* $Id: keyb.c,v 1.2 2004/04/03 15:47:13 stpohle Exp $
* keyb.c * keyb.c
*/ */
#include "bomberclone.h" #include "bomberclone.h"
#include "keyb.h" #include "keyb.h"
#include "menu.h"
BCGameKeys keyb_gamekeys; BCGameKeys keyb_gamekeys;
const struct _key_codes key_codetab [] = {
{ SDLK_RSHIFT, "RSHIFT" },
{ SDLK_LSHIFT, "LSHIFT" },
{ SDLK_RCTRL, "RCTRL" },
{ SDLK_LCTRL, "RCTRL" },
{ SDLK_UP, "CurUP" },
{ SDLK_DOWN, "CurDOWN" },
{ SDLK_LEFT, "CurLEFT" },
{ SDLK_RIGHT, "CurRIGHT" },
{ SDLK_F1, "F1" },
{ SDLK_F2, "F2" },
{ SDLK_F3, "F3" },
{ SDLK_F4, "F4" },
{ SDLK_F5, "F5" },
{ SDLK_F6, "F6" },
{ SDLK_F7, "F7" },
{ SDLK_F8, "F8" },
{ SDLK_F9, "F9" },
{ SDLK_F10, "F10" },
{ SDLK_F11, "F11" },
{ SDLK_F12, "F12" },
{ ' ', "SPACE" },
{ -1, "" }
};
/* /*
* set the default keyboard settings * set the default keyboard settings
@ -53,10 +79,94 @@ void keyb_print () {
}; };
/*
* convert a keycode to a text
*/
void keyb_code2text (int keycode, char *keytext) {
int i;
for (i = 0; (key_codetab [i].code != -1 && key_codetab[i].code != keycode); i++);
if (key_codetab[i].code == keycode)
strcpy (keytext, key_codetab[i].text);
else if ((keycode >= 'a' && keycode <= 'z')
|| (keycode >= 'Z' && keycode <= 'Z')
|| (keycode >= '0' && keycode <= '9'))
sprintf (keytext, "%c", keycode);
else
sprintf (keytext, "%x", keycode);
};
/*
* create a small menu with all informations
*/
void keyb_config_createkeymenu (int key, int x, int y, int menu_nr) {
int key_id;
char keyname [32];
char keytext [50];
if (key >= BCPK_max && key < BCPK_max * 2)
key_id = key - BCPK_max;
else key_id = key;
switch (key_id) {
case (BCPK_up):
strcpy (keyname, "Up");
break;
case (BCPK_down):
strcpy (keyname, "Down");
break;
case (BCPK_left):
strcpy (keyname, "Left");
break;
case (BCPK_right):
strcpy (keyname, "Right");
break;
case (BCPK_drop):
strcpy (keyname, "Drop");
break;
case (BCPK_special):
strcpy (keyname, "Special");
break;
case (BCK_chat):
strcpy (keyname, "Chat");
break;
case (BCK_fullscreen):
strcpy (keyname, "Fullscreen");
break;
case (BCK_help):
strcpy (keyname, "Help");
break;
case (BCK_mapmenu):
strcpy (keyname, "Mapmenu");
break;
case (BCK_playermenu):
strcpy (keyname, "Playermenu");
break;
case (BCK_pause):
strcpy (keyname, "Pause/Start");
break;
}
menu_create_label ("UP", x, y + 2, 0, COLOR_brown);
keyb_code2text (keyb_gamekeys.keycode[key], keytext);
menu_create_button (keytext, x + 50, y, 100, menu_nr);
}
/* /*
* keyboard configuration screen * keyboard configuration screen
*/ */
void keyb_config () { void keyb_config () {
menu_new ("Keyboard Config", 420, 400);
menu_create_label ("Player 1", 100, 50, 2, COLOR_brown);
keyb_config_createkeymenu (BCPK_up, 25, 90, 1);
keyb_config_createkeymenu (BCPK_down, 25, 120, 2);
keyb_config_createkeymenu (BCPK_left, 25, 150, 3);
keyb_config_createkeymenu (BCPK_right, 25, 180, 4);
menu_loop ();
menu_delete ();
}; };

@ -0,0 +1,12 @@
/* $Id: playermenu.c,v 1.1 2004/04/03 15:47:13 stpohle Exp $
*
*/
#include "bomberclone.h"
#include "menu.h"
void player_menu () {
menu_new ("Playermenu", 420, 400);
menu_loop ();
menu_delete ();
};
Loading…
Cancel
Save