From bbb0d34aba557e433b836fb9368815a5fac7ab42 Mon Sep 17 00:00:00 2001 From: scarab Date: Sun, 27 Jul 2008 21:01:34 +0000 Subject: - uvod do nastaveni klaves, nekde je tam nejakej leak ale na vistach nemam gdb takze to spravim pozdejs takhle to proste pri vypnuti spadne - zbejva moznost nastavit klavesu, prenastaveni ukladani konfigu, ikonky :] - pridany nektere nove veci do lang + obvykla varka prepsani hlasek z SK -> EN git-svn-id: http://opensvn.csie.org/tuxanci_ng@173 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- README | 4 +- data/lang/cs.lang | 12 ++ data/lang/en.lang | 11 ++ src/CMakeLists.txt | 4 +- src/base/list.c | 4 +- src/client/game.c | 5 +- src/client/keytable.c | 136 ----------------- src/client/keytable.h | 27 ---- src/screen/screen_setting.c | 17 ++- src/screen/screen_setting.h | 2 - src/screen/screen_settingKeys.c | 321 ++++++++++++++++++++++++++++++++++++++++ src/screen/screen_settingKeys.h | 30 ++++ src/screen/screen_world.c | 2 +- 13 files changed, 398 insertions(+), 177 deletions(-) delete mode 100644 src/client/keytable.c delete mode 100644 src/client/keytable.h create mode 100644 src/screen/screen_settingKeys.c create mode 100644 src/screen/screen_settingKeys.h diff --git a/README b/README index b203e16..ad85bc5 100644 --- a/README +++ b/README @@ -117,8 +117,8 @@ GAME USAGE Player one ~~~~~~~~~~ movement: cursor arows - fire: zero or rctrl - change weapon: one or rshift + fire: zero [ 0 ] NumPad + change weapon: one [ 1 ] NumPad Player two ~~~~~~~~~~ movement: W(u) S(d) A(l) D(r) diff --git a/data/lang/cs.lang b/data/lang/cs.lang index 85b9564..e559ed8 100644 --- a/data/lang/cs.lang +++ b/data/lang/cs.lang @@ -42,6 +42,18 @@ NAME_PLAYER1 Hráč 1: NAME_PLAYER2 Hráč 2: MUSIC Hudba: SOUND Zvuky: +CONTROLS Ovládání + +#setting keys - menu +TUXLEFT Hráč 2 +TUXRIGHT Hráč 1 +KEY_UP Nahoru: +KEY_DOWN Dolu: +KEY_LEFT Doleva: +KEY_RIGHT Doprava: +KEY_FIRE Střelba: +KEY_SWITCH Přepnutí zb.: +#setting keys - menu # settings - game type NONE Lokální hra diff --git a/data/lang/en.lang b/data/lang/en.lang index 0ab7420..ca7f89b 100644 --- a/data/lang/en.lang +++ b/data/lang/en.lang @@ -42,6 +42,17 @@ NAME_PLAYER1 Player 1: NAME_PLAYER2 Player 2: MUSIC Music: SOUND Sound: +CONTROLS Controls + +#setting keys - menu +TUXLEFT Player 2 +TUXRIGHT Player 1 +KEY_UP Up: +KEY_DOWN Down: +KEY_LEFT Left: +KEY_RIGHT Right: +KEY_FIRE Fire weapon: +KEY_SWITCH Switch weapon: # settings - game type NONE Local game diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b89bd8d..fddd268 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,9 +9,9 @@ ${WORKDIR}/net/udp ${WORKDIR}/net/dns ) SET ( SRC_client -${WORKDIR}/client/layer ${WORKDIR}/client/term ${WORKDIR}/client/screen ${WORKDIR}/client/interface ${WORKDIR}/client/client ${WORKDIR}/client/chat ${WORKDIR}/client/configFile ${WORKDIR}/client/language ${WORKDIR}/client/keytable ${WORKDIR}/client/font ${WORKDIR}/client/game ${WORKDIR}/client/radar ${WORKDIR}/client/panel ${WORKDIR}/client/image +${WORKDIR}/client/layer ${WORKDIR}/client/term ${WORKDIR}/client/screen ${WORKDIR}/client/interface ${WORKDIR}/client/client ${WORKDIR}/client/chat ${WORKDIR}/client/configFile ${WORKDIR}/client/language ${WORKDIR}/client/font ${WORKDIR}/client/game ${WORKDIR}/client/radar ${WORKDIR}/client/panel ${WORKDIR}/client/image -${WORKDIR}/screen/screen_choiceArena ${WORKDIR}/screen/screen_table ${WORKDIR}/screen/screen_setting ${WORKDIR}/screen/screen_credits ${WORKDIR}/screen/screen_world ${WORKDIR}/screen/screen_analyze ${WORKDIR}/screen/screen_mainMenu ${WORKDIR}/screen/screen_browser ${WORKDIR}/screen/screen_gameType +${WORKDIR}/screen/screen_choiceArena ${WORKDIR}/screen/screen_settingKeys ${WORKDIR}/screen/screen_table ${WORKDIR}/screen/screen_setting ${WORKDIR}/screen/screen_credits ${WORKDIR}/screen/screen_world ${WORKDIR}/screen/screen_analyze ${WORKDIR}/screen/screen_mainMenu ${WORKDIR}/screen/screen_browser ${WORKDIR}/screen/screen_gameType ${WORKDIR}/widget/widget_check ${WORKDIR}/widget/widget_button ${WORKDIR}/widget/widget_textfield ${WORKDIR}/widget/widget_label ${WORKDIR}/widget/widget_buttonimage ${WORKDIR}/widget/widget_image ${WORKDIR}/widget/widget_select ${WORKDIR}/widget/widget_catchkey ) diff --git a/src/base/list.c b/src/base/list.c index 27b0ed8..39b3962 100755 --- a/src/base/list.c +++ b/src/base/list.c @@ -80,7 +80,7 @@ void addList(list_t *p, void *item) void **new; #ifdef DEBUG_LIST - printf("realokujem z %d na %d (count=%d)\n", + printf("realocating from %d to %d (count=%d)\n", p->alloc, p->alloc+LIST_ALLOC_LIMIT, p->count); #endif @@ -143,7 +143,7 @@ void delList(list_t *p, int n) void **new; #ifdef DEBUG_LIST - printf("realokujem z %d na %d (count=%d)\n", + printf("realocating from %d to %d (count=%d)\n", p->alloc, p->alloc-LIST_ALLOC_LIMIT, p->count); #endif diff --git a/src/client/game.c b/src/client/game.c index 7eaab20..8cc1a3b 100644 --- a/src/client/game.c +++ b/src/client/game.c @@ -20,7 +20,7 @@ #include "interface.h" #include "screen.h" #include "font.h" -#include "keytable.h" +#include "screen_settingKeys.h" #include "language.h" #include "panel.h" #include "radar.h" @@ -35,6 +35,7 @@ #include "screen_mainMenu.h" #include "screen_analyze.h" #include "screen_setting.h" +#include "screen_settingKeys.h" #include "screen_gameType.h" #include "screen_choiceArena.h" #include "screen_table.h" @@ -72,6 +73,7 @@ static void initGame() initScreenMainMenu(); initScreenAnalyze(); initScreenSetting(); + initScreenSettingKeys(); initScreenGameType(); initScreenChoiceArena(); initScreenCredits(); @@ -102,6 +104,7 @@ void quitGame() quitScreenMainMenu(); quitScreenAnalyze(); quitScreenSetting(); + quitScreenSettingKeys(); quitScreenGameType(); quitScreenChoiceArena(); quitScreenCredits(); diff --git a/src/client/keytable.c b/src/client/keytable.c deleted file mode 100644 index 672148b..0000000 --- a/src/client/keytable.c +++ /dev/null @@ -1,136 +0,0 @@ - -#include -#include -#include -#include - -#include "main.h" -#include "list.h" -#include "homeDirector.h" -#include "textFile.h" - -#include "keytable.h" -#include "configFile.h" - -static textFile_t *keytableFile; -static textFile_t *keycontrolFile; -static int keytable[KEY_LENGTH]; - -static int getKeyCode(char *s) -{ - char str[STR_SIZE]; - char *find; - int i; - - sprintf(str, "keycode %s = ", s); - - for( i = 0 ; i < keytableFile->text->count ; i++ ) - { - char *line; - line = (char *) (keytableFile->text->list[i]); - - if( ( find = strstr(line, str) ) != NULL ) - { - int ret; - ret = atoi( strchr(line, '=')+1 ); - return ret; - } - } - - return -1; -} - -void initKeyTable() -{ - char path[STR_PATH_SIZE]; - char val[STR_SIZE]; -/* - int i; -*/ - sprintf(path, PATH_CONFIG "keytable.conf"); - keytableFile = loadTextFile(path); - - if( keytableFile == NULL ) - { - fprintf(stderr, "Don't load %s\n", path); - return; - } - - sprintf(path, "%s/keycontrol.conf", getHomeDirector()); - keycontrolFile = loadTextFile(path); - - if( keycontrolFile == NULL ) - { - fprintf(stderr, "Don't load %s\n", path); - fprintf(stderr, "I create %s\n", path); - - keycontrolFile = newTextFile(path); - } - - if( keycontrolFile == NULL ) - { - fprintf(stderr, "Don't create %s\n", path); - return; - } - - loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_UP", val, STR_SIZE, "SDLK_UP"); - keytable[ KEY_TUX_RIGHT_MOVE_UP ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_RIGHT", val, STR_SIZE, "SDLK_RIGHT"); - keytable[ KEY_TUX_RIGHT_MOVE_RIGHT ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_LEFT", val, STR_SIZE, "SDLK_LEFT"); - keytable[ KEY_TUX_RIGHT_MOVE_LEFT ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_DOWN", val, STR_SIZE, "SDLK_DOWN"); - keytable[ KEY_TUX_RIGHT_MOVE_DOWN ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_SHOOT", val, STR_SIZE, "SDLK_KP0"); - keytable[ KEY_TUX_RIGHT_SHOOT ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_SWITCH_WEAPON", val, STR_SIZE, "SDLK_KP1"); - keytable[ KEY_TUX_RIGHT_SWITCH_WEAPON] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_UP", val, STR_SIZE, "SDLK_w"); - keytable[ KEY_TUX_LEFT_MOVE_UP ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_RIGHT", val, STR_SIZE, "SDLK_d"); - keytable[ KEY_TUX_LEFT_MOVE_RIGHT ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_LEFT", val, STR_SIZE, "SDLK_a"); - keytable[ KEY_TUX_LEFT_MOVE_LEFT ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_DOWN", val, STR_SIZE, "SDLK_s"); - keytable[ KEY_TUX_LEFT_MOVE_DOWN ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_SHOOT", val, STR_SIZE, "SDLK_q"); - keytable[ KEY_TUX_LEFT_SHOOT ] = getKeyCode(val); - - loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_SWITCH_WEAPON", val, STR_SIZE, "SDLK_TAB"); - keytable[ KEY_TUX_LEFT_SWITCH_WEAPON ] = getKeyCode(val); - -/* - for( i = 0 ; i < KEY_LENGTH ; i++) - { - printf("keytable[%d] = %d\n", i, keytable[i]); - } -*/ - - saveTextFile(keycontrolFile); -} - -int getKey(int n) -{ - assert( n >= 0 && n < KEY_LENGTH ); -/* - printf("keytable[n] = %d\n", keytable[n]); -*/ - return keytable[n]; -} - -void quitKeyTable() -{ - destroyTextFile(keycontrolFile); - destroyTextFile(keytableFile); -} - diff --git a/src/client/keytable.h b/src/client/keytable.h deleted file mode 100644 index 80ca258..0000000 --- a/src/client/keytable.h +++ /dev/null @@ -1,27 +0,0 @@ - -#ifndef KEYTABLE_H - -#define KEYTABLE_H - -#define KEY_LENGTH 12 - -#define KEY_TUX_RIGHT_MOVE_UP 0 -#define KEY_TUX_RIGHT_MOVE_RIGHT 1 -#define KEY_TUX_RIGHT_MOVE_LEFT 2 -#define KEY_TUX_RIGHT_MOVE_DOWN 3 -#define KEY_TUX_RIGHT_SHOOT 4 -#define KEY_TUX_RIGHT_SWITCH_WEAPON 5 -#define KEY_TUX_LEFT_MOVE_UP 6 -#define KEY_TUX_LEFT_MOVE_RIGHT 7 -#define KEY_TUX_LEFT_MOVE_LEFT 8 -#define KEY_TUX_LEFT_MOVE_DOWN 9 -#define KEY_TUX_LEFT_SHOOT 10 -#define KEY_TUX_LEFT_SWITCH_WEAPON 11 - -extern void initKeyTable(); -extern int getKey(int n); -extern void quitKeyTable(); - -#endif - - diff --git a/src/screen/screen_setting.c b/src/screen/screen_setting.c index 350788d..8115842 100644 --- a/src/screen/screen_setting.c +++ b/src/screen/screen_setting.c @@ -23,6 +23,7 @@ #include "screen_mainMenu.h" #include "screen_setting.h" +#include "screen_settingKeys.h" #include "widget_label.h" #include "widget_button.h" @@ -34,6 +35,7 @@ static widget_image_t *image_backgorund; static widget_button_t *button_back; +static widget_button_t *button_keys; // setting of keycontrols static widget_label_t *label_count_round; static widget_label_t *label_name_player1; @@ -136,6 +138,7 @@ void drawScreenSetting() drawWidgetCheck(check_ai); drawWidgetButton(button_back); + drawWidgetButton(button_keys); } void eventScreenSetting() @@ -168,6 +171,7 @@ void eventScreenSetting() eventWidgetCheck(check_ai); eventWidgetButton(button_back); + eventWidgetButton(button_keys); } void stopScreenSetting() @@ -186,6 +190,10 @@ static void eventWidget(void *p) { setScreen("mainMenu"); } + if( button == button_keys ) + { + setScreen("settingKeys"); + } #ifndef NO_SOUND if( check == check_music ) @@ -319,7 +327,8 @@ void initScreenSetting() image = getImage(IMAGE_GROUP_BASE, "screen_main"); image_backgorund = newWidgetImage(0, 0, image); - button_back = newWidgetButton(getMyText("BACK"), WINDOW_SIZE_X-200, WINDOW_SIZE_Y-100, eventWidget); + button_back = newWidgetButton(getMyText("BACK"), WINDOW_SIZE_X - 200, WINDOW_SIZE_Y - 100, eventWidget); + button_keys = newWidgetButton(getMyText("CONTROLS"), WINDOW_SIZE_X - 200, button_back->y - WIDGET_BUTTON_HEIGHT - 10, eventWidget); #ifndef NO_SOUND label_music = newWidgetLabel(getMyText("MUSIC"), 100, WINDOW_SIZE_Y-85, WIDGET_LABEL_LEFT); @@ -349,13 +358,13 @@ void initScreenSetting() textfield_name_player1 = newWidgetTextfield( getParamElse("--name1", NAME_PLAYER_RIGHT), WIDGET_TEXTFIELD_FILTER_ALPHANUM, - 110+label_name_player1->w, + 110+label_count_round->w, WINDOW_SIZE_Y-160); textfield_name_player2 = newWidgetTextfield( getParamElse("--name2", NAME_PLAYER_LEFT), WIDGET_TEXTFIELD_FILTER_ALPHANUM, - 110+label_name_player2->w, + 110+label_count_round->w, WINDOW_SIZE_Y-120); for( i = GUN_DUAL_SIMPLE ; i <= GUN_BOMBBALL ; i++ ) @@ -532,5 +541,5 @@ void quitScreenSetting() } destroyWidgetButton(button_back); + destroyWidgetButton(button_keys); } - diff --git a/src/screen/screen_setting.h b/src/screen/screen_setting.h index 2dfb897..d6e6b09 100644 --- a/src/screen/screen_setting.h +++ b/src/screen/screen_setting.h @@ -19,6 +19,4 @@ extern bool_t isSettingAI(); extern bool_t isSettingAnyItem(); extern bool_t isSettingItem(int item); extern void quitScreenSetting(); - #endif - diff --git a/src/screen/screen_settingKeys.c b/src/screen/screen_settingKeys.c new file mode 100644 index 0000000..aff367c --- /dev/null +++ b/src/screen/screen_settingKeys.c @@ -0,0 +1,321 @@ + +#include +#include +#include + +#include "main.h" +#include "list.h" +#include "tux.h" +#include "textFile.h" +#include "director.h" +#include "homeDirector.h" +#include "configFile.h" +#include "language.h" +#include "interface.h" +#include "screen.h" +#include "image.h" +#ifndef NO_SOUND +#include "music.h" +#include "sound.h" +#endif +#include "screen_mainMenu.h" +#include "screen_setting.h" +#include "screen_settingKeys.h" +#include "widget_button.h" +#include "widget_image.h" +#include "widget_label.h" + +static int keytable[KEY_LENGTH]; +static char keynametable[KEY_LENGTH][STR_SIZE]={}; +static textFile_t *keytableFile; +static textFile_t *keycontrolFile; + +static widget_image_t *image_backgorund; + +static widget_button_t *button_back; + +// key names +static widget_label_t *tux_right; +static widget_label_t *tux_right_keyup; +static widget_label_t *tux_right_keydown; +static widget_label_t *tux_right_keyleft; +static widget_label_t *tux_right_keyright; +static widget_label_t *tux_right_keyswitch; +static widget_label_t *tux_right_keyfire; +static widget_label_t *tux_left; +static widget_label_t *tux_left_keyup; +static widget_label_t *tux_left_keydown; +static widget_label_t *tux_left_keyleft; +static widget_label_t *tux_left_keyright; +static widget_label_t *tux_left_keyswitch; +static widget_label_t *tux_left_keyfire; +// key values +static widget_label_t *tux_right_keyup_val; +static widget_label_t *tux_right_keydown_val; +static widget_label_t *tux_right_keyleft_val; +static widget_label_t *tux_right_keyright_val; +static widget_label_t *tux_right_keyswitch_val; +static widget_label_t *tux_right_keyfire_val; +static widget_label_t *tux_left_keyup_val; +static widget_label_t *tux_left_keydown_val; +static widget_label_t *tux_left_keyleft_val; +static widget_label_t *tux_left_keyright_val; +static widget_label_t *tux_left_keyswitch_val; +static widget_label_t *tux_left_keyfire_val; +// todo add key images +// possible variant will be reusing widget_image for current widget_label so there wont +// be key names but only images + +void startScreenSettingKeys() +{ +#ifndef NO_SOUND + playMusic("menu", MUSIC_GROUP_BASE); +#endif +} +static int getKeyCode(char *s) +{ + char str[STR_SIZE]; + char *find; + int i; + + sprintf(str, "keycode %s = ", s); + + for(i = 0 ; i < keytableFile->text->count ; i++) { + char *line; + line = (char *) (keytableFile->text->list[i]); + if((find = strstr(line, str)) != NULL) { + int ret; + ret = atoi( strchr(line, '=')+1 ); + return ret; + } + } + + return -1; +} + +void initKeyTable() +{ + char path[STR_PATH_SIZE]; + char val[STR_SIZE]; +/* + int i; +*/ + sprintf(path, PATH_CONFIG "keytable.conf"); + keytableFile = loadTextFile(path); + + if(keytableFile == NULL) { + fprintf(stderr, "Don't load %s\n", path); + return; + } + + sprintf(path, "%s/keycontrol.conf", getHomeDirector()); + keycontrolFile = loadTextFile(path); + + if(keycontrolFile == NULL) { + fprintf(stderr, "Don't load %s\n", path); + fprintf(stderr, "I create %s\n", path); + keycontrolFile = newTextFile(path); + } + + if(keycontrolFile == NULL) { + fprintf(stderr, "Don't create %s\n", path); + return; + } + + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_UP", val, STR_SIZE, "SDLK_UP"); + keytable[ KEY_TUX_RIGHT_MOVE_UP ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_RIGHT_MOVE_UP ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_RIGHT", val, STR_SIZE, "SDLK_RIGHT"); + keytable[ KEY_TUX_RIGHT_MOVE_RIGHT ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_RIGHT_MOVE_RIGHT ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_LEFT", val, STR_SIZE, "SDLK_LEFT"); + keytable[ KEY_TUX_RIGHT_MOVE_LEFT ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_RIGHT_MOVE_LEFT ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_DOWN", val, STR_SIZE, "SDLK_DOWN"); + keytable[ KEY_TUX_RIGHT_MOVE_DOWN ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_RIGHT_MOVE_DOWN ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_SHOOT", val, STR_SIZE, "SDLK_KP0"); + keytable[ KEY_TUX_RIGHT_SHOOT ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_RIGHT_SHOOT ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_SWITCH_WEAPON", val, STR_SIZE, "SDLK_KP1"); + keytable[ KEY_TUX_RIGHT_SWITCH_WEAPON] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_RIGHT_SWITCH_WEAPON ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_UP", val, STR_SIZE, "SDLK_w"); + keytable[ KEY_TUX_LEFT_MOVE_UP ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_LEFT_MOVE_UP ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_RIGHT", val, STR_SIZE, "SDLK_d"); + keytable[ KEY_TUX_LEFT_MOVE_RIGHT ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_LEFT_MOVE_RIGHT ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_LEFT", val, STR_SIZE, "SDLK_a"); + keytable[ KEY_TUX_LEFT_MOVE_LEFT ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_LEFT_MOVE_LEFT ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_DOWN", val, STR_SIZE, "SDLK_s"); + keytable[ KEY_TUX_LEFT_MOVE_DOWN ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_LEFT_MOVE_DOWN ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_SHOOT", val, STR_SIZE, "SDLK_q"); + keytable[ KEY_TUX_LEFT_SHOOT ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_LEFT_SHOOT ], "%s", val); + + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_SWITCH_WEAPON", val, STR_SIZE, "SDLK_TAB"); + keytable[ KEY_TUX_LEFT_SWITCH_WEAPON ] = getKeyCode(val); + sprintf(keynametable[ KEY_TUX_LEFT_SWITCH_WEAPON ], "%s", val); + +/* + for( i = 0 ; i < KEY_LENGTH ; i++) + { + printf("keytable[%d] = %d\n", i, keytable[i]); + } +*/ + saveTextFile(keycontrolFile); +} +int getKey(int n) +{ + assert( n >= 0 && n < KEY_LENGTH ); + +// printf("keytable[n] = %d\n", keytable[n]); + + return keytable[n]; +} +void drawScreenSettingKeys() +{ + drawWidgetImage(image_backgorund); + drawWidgetButton(button_back); + // key names + drawWidgetLabel(tux_right); + drawWidgetLabel(tux_left); + drawWidgetLabel(tux_right_keyup); + drawWidgetLabel(tux_right_keydown); + drawWidgetLabel(tux_right_keyleft); + drawWidgetLabel(tux_right_keyright); + drawWidgetLabel(tux_right_keyswitch); + drawWidgetLabel(tux_right_keyfire); + drawWidgetLabel(tux_left_keyup); + drawWidgetLabel(tux_left_keydown); + drawWidgetLabel(tux_left_keyleft); + drawWidgetLabel(tux_left_keyright); + drawWidgetLabel(tux_left_keyswitch); + drawWidgetLabel(tux_left_keyfire); + // key values + drawWidgetLabel(tux_right_keyup_val); + drawWidgetLabel(tux_right_keydown_val); + drawWidgetLabel(tux_right_keyleft_val); + drawWidgetLabel(tux_right_keyright_val); + drawWidgetLabel(tux_right_keyswitch_val); + drawWidgetLabel(tux_right_keyfire_val); + drawWidgetLabel(tux_left_keyup_val); + drawWidgetLabel(tux_left_keydown_val); + drawWidgetLabel(tux_left_keyleft_val); + drawWidgetLabel(tux_left_keyright_val); + drawWidgetLabel(tux_left_keyswitch_val); + drawWidgetLabel(tux_left_keyfire_val); +} +static void eventWidget(void *p) +{ + widget_button_t *button; + widget_label_t *label; + + button = (widget_button_t *)(p); + label = (widget_label_t *)(p); + + if(button == button_back) { + setScreen("setting"); + } +} +void eventScreenSettingKeys() +{ + eventWidgetButton(button_back); +} +void stopScreenSettingKeys() +{ +} +void initScreenSettingKeys() +{ + initKeyTable(); + image_t *image; + image = getImage(IMAGE_GROUP_BASE, "screen_main"); + image_backgorund = newWidgetImage(0, 0, image); + + button_back = newWidgetButton(getMyText("BACK"), WINDOW_SIZE_X - 200, WINDOW_SIZE_Y - 100, eventWidget); + + tux_left = newWidgetLabel(getMyText("TUXLEFT"), WINDOW_SIZE_X/4, 150, WIDGET_LABEL_CENTER); + tux_left_keyup = newWidgetLabel(getMyText("KEY_UP"), 50, tux_left->y+50, WIDGET_LABEL_LEFT); + tux_left_keydown = newWidgetLabel(getMyText("KEY_DOWN"), tux_left_keyup->x, tux_left_keyup->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyleft = newWidgetLabel(getMyText("KEY_LEFT"), tux_left_keyup->x, tux_left_keydown->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyright = newWidgetLabel(getMyText("KEY_RIGHT"), tux_left_keyup->x, tux_left_keyleft->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyfire = newWidgetLabel(getMyText("KEY_FIRE"), tux_left_keyup->x, tux_left_keyright->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyswitch = newWidgetLabel(getMyText("KEY_SWITCH"), tux_left_keyup->x, tux_left_keyfire->y + 20, WIDGET_LABEL_LEFT); + + tux_right = newWidgetLabel(getMyText("TUXRIGHT"), WINDOW_SIZE_X/2 + WINDOW_SIZE_X/4, tux_left->y, WIDGET_LABEL_CENTER); + tux_right_keyup = newWidgetLabel(getMyText("KEY_UP"), WINDOW_SIZE_X/2 + tux_left_keyup->x, tux_left->y+50, WIDGET_LABEL_LEFT); + tux_right_keydown = newWidgetLabel(getMyText("KEY_DOWN"), WINDOW_SIZE_X/2 + tux_left_keyup->x, tux_left_keyup->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyleft = newWidgetLabel(getMyText("KEY_LEFT"), WINDOW_SIZE_X/2 + tux_left_keyup->x, tux_right_keydown->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyright = newWidgetLabel(getMyText("KEY_RIGHT"), WINDOW_SIZE_X/2 + tux_left_keyup->x, tux_right_keyleft->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyfire = newWidgetLabel(getMyText("KEY_FIRE"), WINDOW_SIZE_X/2 + tux_left_keyup->x, tux_left_keyright->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyswitch = newWidgetLabel(getMyText("KEY_SWITCH"), WINDOW_SIZE_X/2 + tux_left_keyup->x, tux_left_keyfire->y + 20, WIDGET_LABEL_LEFT); + + tux_left_keyup_val = newWidgetLabel(keynametable[6], tux_left_keyup->x+200, tux_left->y+50, WIDGET_LABEL_LEFT); + tux_left_keydown_val = newWidgetLabel(keynametable[9], tux_left_keyup_val->x, tux_left_keyup->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyleft_val = newWidgetLabel(keynametable[8], tux_left_keyup_val->x, tux_left_keydown->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyright_val = newWidgetLabel(keynametable[7], tux_left_keyup_val->x, tux_left_keyleft->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyfire_val = newWidgetLabel(keynametable[10], tux_left_keyup_val->x, tux_left_keyright->y + 20, WIDGET_LABEL_LEFT); + tux_left_keyswitch_val = newWidgetLabel(keynametable[11], tux_left_keyup_val->x, tux_left_keyfire->y + 20, WIDGET_LABEL_LEFT); + + tux_right_keyup_val = newWidgetLabel(keynametable[0], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left->y+50, WIDGET_LABEL_LEFT); + tux_right_keydown_val = newWidgetLabel(keynametable[3], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left_keyup->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyleft_val = newWidgetLabel(keynametable[2], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_right_keydown->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyright_val = newWidgetLabel(keynametable[1], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_right_keyleft->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyfire_val = newWidgetLabel(keynametable[4], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left_keyright->y + 20, WIDGET_LABEL_LEFT); + tux_right_keyswitch_val = newWidgetLabel(keynametable[5], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left_keyfire->y + 20, WIDGET_LABEL_LEFT); + + registerScreen( newScreen("settingKeys", startScreenSettingKeys, eventScreenSettingKeys, + drawScreenSettingKeys, stopScreenSettingKeys) ); +} +void quitKeyTable() { + destroyTextFile(keycontrolFile); + destroyTextFile(keytableFile); +} +void quitScreenSettingKeys() +{ + // key names + destroyWidgetImage(image_backgorund); + destroyWidgetLabel(tux_right); + destroyWidgetLabel(tux_left); + destroyWidgetLabel(tux_right_keyup); + destroyWidgetLabel(tux_right_keydown); + destroyWidgetLabel(tux_right_keyleft); + destroyWidgetLabel(tux_right_keyright); + destroyWidgetLabel(tux_right_keyswitch); + destroyWidgetLabel(tux_right_keyfire); + destroyWidgetLabel(tux_left_keyup); + destroyWidgetLabel(tux_left_keydown); + destroyWidgetLabel(tux_left_keyright); + destroyWidgetLabel(tux_left_keyswitch); + destroyWidgetLabel(tux_left_keyfire); + // key values + destroyWidgetLabel(tux_right_keyup_val); + destroyWidgetLabel(tux_right_keydown_val); + destroyWidgetLabel(tux_right_keyleft_val); + destroyWidgetLabel(tux_right_keyright_val); + destroyWidgetLabel(tux_right_keyswitch_val); + destroyWidgetLabel(tux_right_keyfire_val); + destroyWidgetLabel(tux_left_keyup_val); + destroyWidgetLabel(tux_left_keydown_val); + destroyWidgetLabel(tux_left_keyleft_val); + destroyWidgetLabel(tux_left_keyright_val); + destroyWidgetLabel(tux_left_keyswitch_val); + destroyWidgetLabel(tux_left_keyfire_val); + + quitKeyTable(); + + destroyWidgetButton(button_back); +} diff --git a/src/screen/screen_settingKeys.h b/src/screen/screen_settingKeys.h new file mode 100644 index 0000000..a58aacc --- /dev/null +++ b/src/screen/screen_settingKeys.h @@ -0,0 +1,30 @@ + +#ifndef SCREEN_SETTING_KEYS + +#define SCREEN_SETTING_KEYS + +#include "main.h" +extern void initScreenSettingKeys(); +extern void drawScreenSettingKeys(); +extern void eventScreenSettingKeys(); +extern void quitScreenSettingKeys(); + +#define KEY_LENGTH 12 + +#define KEY_TUX_RIGHT_MOVE_UP 0 +#define KEY_TUX_RIGHT_MOVE_RIGHT 1 +#define KEY_TUX_RIGHT_MOVE_LEFT 2 +#define KEY_TUX_RIGHT_MOVE_DOWN 3 +#define KEY_TUX_RIGHT_SHOOT 4 +#define KEY_TUX_RIGHT_SWITCH_WEAPON 5 +#define KEY_TUX_LEFT_MOVE_UP 6 +#define KEY_TUX_LEFT_MOVE_RIGHT 7 +#define KEY_TUX_LEFT_MOVE_LEFT 8 +#define KEY_TUX_LEFT_MOVE_DOWN 9 +#define KEY_TUX_LEFT_SHOOT 10 +#define KEY_TUX_LEFT_SWITCH_WEAPON 11 + +extern void initKeyTable(); +extern int getKey(int n); +extern void quitKeyTable(); +#endif diff --git a/src/screen/screen_world.c b/src/screen/screen_world.c index 045adc2..b253565 100644 --- a/src/screen/screen_world.c +++ b/src/screen/screen_world.c @@ -17,7 +17,7 @@ #include "idManager.h" #include "interface.h" -#include "keytable.h" +#include "screen_settingKeys.h" #include "layer.h" #include "image.h" #include "font.h" -- cgit v1.2.3