summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt4
-rwxr-xr-xsrc/base/list.c4
-rw-r--r--src/client/game.c5
-rw-r--r--src/client/keytable.c136
-rw-r--r--src/screen/screen_setting.c17
-rw-r--r--src/screen/screen_setting.h2
-rw-r--r--src/screen/screen_settingKeys.c321
-rw-r--r--src/screen/screen_settingKeys.h (renamed from src/client/keytable.h)57
-rw-r--r--src/screen/screen_world.c2
9 files changed, 373 insertions, 175 deletions
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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#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/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 <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#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/client/keytable.h b/src/screen/screen_settingKeys.h
index 80ca258..a58aacc 100644
--- a/src/client/keytable.h
+++ b/src/screen/screen_settingKeys.h
@@ -1,27 +1,30 @@
-
-#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
-
-
+
+#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"