From eb71aa0d04d91d3463981e6ff304282c6f482087 Mon Sep 17 00:00:00 2001 From: scarab Date: Mon, 28 Jul 2008 21:54:04 +0000 Subject: - nove nastaveni pro klavesy (not yet complete), smazte keyconfig - par uprav pro win32 (ve stejnem stavu jako predchozi) git-svn-id: http://opensvn.csie.org/tuxanci_ng@177 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- CMakeLists.txt | 3 +- config.h | 2 +- data/conf/keytable.conf | 273 --------------------------- src/base/exportFunction.c | 1 - src/base/exportFunction.h | 1 + src/base/modules.c | 4 +- src/base/modules.h | 8 + src/modules/modMove.c | 4 +- src/screen/screen_settingKeys.c | 399 ++++++++++++++-------------------------- src/screen/screen_world.c | 11 +- src/widget/widget_catchkey.c | 2 +- src/widget/widget_catchkey.h | 2 +- 12 files changed, 155 insertions(+), 555 deletions(-) delete mode 100755 data/conf/keytable.conf diff --git a/CMakeLists.txt b/CMakeLists.txt index f752740..75c9a4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,7 @@ PROJECT ( tuxanci ) IF ( Debug ) SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -Wall -pipe") SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -Wall -pipe") - SET ( CMAKE_VERBOSE_MAKEFILE on ) + #SET ( CMAKE_VERBOSE_MAKEFILE on ) ENDIF ( Debug) MESSAGE ( "EXTRA Cflags:${CMAKE_C_FLAGS}" ) MESSAGE ( "EXTRA CXXflags:${CMAKE_CXX_FLAGS}" ) @@ -99,7 +99,6 @@ ELSE ( Server ) IF ( NOT Win ) INSTALL ( FILES ${CMAKE_SOURCE_DIR}/data/tuxanci.ico DESTINATION ${CMAKE_INSTALL_DATADIR}/${APPNAME}/doc/) ENDIF ( NOT Win ) - INSTALL ( FILES ${CMAKE_SOURCE_DIR}/data/conf/keytable.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/${APPNAME}/conf/ ) FILE ( GLOB files "${CMAKE_SOURCE_DIR}/data/font/*.ttf" ) INSTALL ( FILES ${files} DESTINATION ${CMAKE_INSTALL_DATADIR}/${APPNAME}/font/ ) FILE ( GLOB files "${CMAKE_SOURCE_DIR}/data/image/*.png" ) diff --git a/config.h b/config.h index b9f91a7..ba1d8fd 100644 --- a/config.h +++ b/config.h @@ -1 +1 @@ -#define TUXANCI_NG_VERSION "svn176" +#define TUXANCI_NG_VERSION "svn178" diff --git a/data/conf/keytable.conf b/data/conf/keytable.conf deleted file mode 100755 index 236b72c..0000000 --- a/data/conf/keytable.conf +++ /dev/null @@ -1,273 +0,0 @@ - -#******************************************** - -# -# Key table : -# - -#******************************************** - -keycode SDLK_FIRST = 0 -keycode SDLK_BACKSPACE = 8 -keycode SDLK_TAB = 9 -keycode SDLK_CLEAR = 12 -keycode SDLK_RETURN = 13 -keycode SDLK_PAUSE = 19 -keycode SDLK_ESCAPE = 27 -keycode SDLK_SPACE = 32 -keycode SDLK_EXCLAIM = 33 -keycode SDLK_QUOTEDBL = 34 -keycode SDLK_HASH = 35 -keycode SDLK_DOLLAR = 36 -keycode SDLK_AMPERSAND = 38 -keycode SDLK_QUOTE = 39 -keycode SDLK_LEFTPAREN = 40 -keycode SDLK_RIGHTPAREN = 41 -keycode SDLK_ASTERISK = 42 -keycode SDLK_PLUS = 43 -keycode SDLK_COMMA = 44 -keycode SDLK_MINUS = 45 -keycode SDLK_PERIOD = 46 -keycode SDLK_SLASH = 47 - -#******************************************** - -keycode SDLK_0 = 48 -keycode SDLK_1 = 49 -keycode SDLK_2 = 50 -keycode SDLK_3 = 51 -keycode SDLK_4 = 52 -keycode SDLK_5 = 53 -keycode SDLK_6 = 54 -keycode SDLK_7 = 55 -keycode SDLK_8 = 56 -keycode SDLK_9 = 57 - -#******************************************** - -keycode SDLK_COLON = 58 -keycode SDLK_SEMICOLON = 59 -keycode SDLK_LESS = 60 -keycode SDLK_EQUALS = 61 -keycode SDLK_GREATER = 62 -keycode SDLK_QUESTION = 63 -keycode SDLK_AT = 64 - -#******************************************** - -keycode SDLK_LEFTBRACKET = 91 -keycode SDLK_BACKSLASH = 92 -keycode SDLK_RIGHTBRACKET = 93 -keycode SDLK_CARET = 94 -keycode SDLK_UNDERSCORE = 95 -keycode SDLK_BACKQUOTE = 96 - -#******************************************** - -keycode SDLK_a = 97 -keycode SDLK_b = 98 -keycode SDLK_c = 99 -keycode SDLK_d = 100 -keycode SDLK_e = 101 -keycode SDLK_f = 102 -keycode SDLK_g = 103 -keycode SDLK_h = 104 -keycode SDLK_i = 105 -keycode SDLK_j = 106 -keycode SDLK_k = 107 -keycode SDLK_l = 108 -keycode SDLK_m = 1 -keycode SDLK_n = 110 -keycode SDLK_o = 111 -keycode SDLK_p = 112 -keycode SDLK_q = 113 -keycode SDLK_r = 114 -keycode SDLK_s = 115 -keycode SDLK_t = 116 -keycode SDLK_u = 117 -keycode SDLK_v = 118 -keycode SDLK_w = 119 -keycode SDLK_x = 120 -keycode SDLK_y = 121 -keycode SDLK_z = 122 -keycode SDLK_DELETE = 127 - -#******************************************** - -keycode SDLK_WORLD_0 = 160 -keycode SDLK_WORLD_1 = 161 -keycode SDLK_WORLD_2 = 162 -keycode SDLK_WORLD_3 = 163 -keycode SDLK_WORLD_4 = 164 -keycode SDLK_WORLD_5 = 165 -keycode SDLK_WORLD_6 = 166 -keycode SDLK_WORLD_7 = 167 -keycode SDLK_WORLD_8 = 168 -keycode SDLK_WORLD_9 = 169 -keycode SDLK_WORLD_10 = 170 -keycode SDLK_WORLD_11 = 171 -keycode SDLK_WORLD_12 = 172 -keycode SDLK_WORLD_13 = 173 -keycode SDLK_WORLD_14 = 174 -keycode SDLK_WORLD_15 = 175 -keycode SDLK_WORLD_16 = 176 -keycode SDLK_WORLD_17 = 177 -keycode SDLK_WORLD_18 = 178 -keycode SDLK_WORLD_19 = 179 -keycode SDLK_WORLD_20 = 180 -keycode SDLK_WORLD_21 = 181 -keycode SDLK_WORLD_22 = 182 -keycode SDLK_WORLD_23 = 183 -keycode SDLK_WORLD_24 = 184 -keycode SDLK_WORLD_25 = 185 -keycode SDLK_WORLD_26 = 186 -keycode SDLK_WORLD_27 = 187 -keycode SDLK_WORLD_28 = 188 -keycode SDLK_WORLD_29 = 189 -keycode SDLK_WORLD_30 = 190 -keycode SDLK_WORLD_31 = 191 -keycode SDLK_WORLD_32 = 192 -keycode SDLK_WORLD_33 = 193 -keycode SDLK_WORLD_34 = 194 -keycode SDLK_WORLD_35 = 195 -keycode SDLK_WORLD_36 = 196 -keycode SDLK_WORLD_37 = 197 -keycode SDLK_WORLD_38 = 198 -keycode SDLK_WORLD_39 = 199 -keycode SDLK_WORLD_40 = 200 -keycode SDLK_WORLD_41 = 201 -keycode SDLK_WORLD_42 = 202 -keycode SDLK_WORLD_43 = 203 -keycode SDLK_WORLD_44 = 204 -keycode SDLK_WORLD_45 = 205 -keycode SDLK_WORLD_46 = 206 -keycode SDLK_WORLD_47 = 207 -keycode SDLK_WORLD_48 = 208 -keycode SDLK_WORLD_49 = 2 -keycode SDLK_WORLD_50 = 210 -keycode SDLK_WORLD_51 = 211 -keycode SDLK_WORLD_52 = 212 -keycode SDLK_WORLD_53 = 213 -keycode SDLK_WORLD_54 = 214 -keycode SDLK_WORLD_55 = 215 -keycode SDLK_WORLD_56 = 216 -keycode SDLK_WORLD_57 = 217 -keycode SDLK_WORLD_58 = 218 -keycode SDLK_WORLD_59 = 219 -keycode SDLK_WORLD_60 = 220 -keycode SDLK_WORLD_61 = 221 -keycode SDLK_WORLD_62 = 222 -keycode SDLK_WORLD_63 = 223 -keycode SDLK_WORLD_64 = 224 -keycode SDLK_WORLD_65 = 225 -keycode SDLK_WORLD_66 = 226 -keycode SDLK_WORLD_67 = 227 -keycode SDLK_WORLD_68 = 228 -keycode SDLK_WORLD_69 = 229 -keycode SDLK_WORLD_70 = 230 -keycode SDLK_WORLD_71 = 231 -keycode SDLK_WORLD_72 = 232 -keycode SDLK_WORLD_73 = 233 -keycode SDLK_WORLD_74 = 234 -keycode SDLK_WORLD_75 = 235 -keycode SDLK_WORLD_76 = 236 -keycode SDLK_WORLD_77 = 237 -keycode SDLK_WORLD_78 = 238 -keycode SDLK_WORLD_79 = 239 -keycode SDLK_WORLD_80 = 240 -keycode SDLK_WORLD_81 = 241 -keycode SDLK_WORLD_82 = 242 -keycode SDLK_WORLD_83 = 243 -keycode SDLK_WORLD_84 = 244 -keycode SDLK_WORLD_85 = 245 -keycode SDLK_WORLD_86 = 246 -keycode SDLK_WORLD_87 = 247 -keycode SDLK_WORLD_88 = 248 -keycode SDLK_WORLD_89 = 249 -keycode SDLK_WORLD_90 = 250 -keycode SDLK_WORLD_91 = 251 -keycode SDLK_WORLD_92 = 252 -keycode SDLK_WORLD_93 = 253 -keycode SDLK_WORLD_94 = 254 -keycode SDLK_WORLD_95 = 255 - -#******************************************** - -keycode SDLK_KP0 = 256 -keycode SDLK_KP1 = 257 -keycode SDLK_KP2 = 258 -keycode SDLK_KP3 = 259 -keycode SDLK_KP4 = 260 -keycode SDLK_KP5 = 261 -keycode SDLK_KP6 = 262 -keycode SDLK_KP7 = 263 -keycode SDLK_KP8 = 264 -keycode SDLK_KP9 = 265 -keycode SDLK_KP_PERIOD = 266 -keycode SDLK_KP_DIVIDE = 267 -keycode SDLK_KP_MULTIPLY = 268 -keycode SDLK_KP_MINUS = 269 -keycode SDLK_KP_PLUS = 270 -keycode SDLK_KP_ENTER = 271 -keycode SDLK_KP_EQUALS = 272 - -#******************************************** - -keycode SDLK_UP = 273 -keycode SDLK_DOWN = 274 -keycode SDLK_RIGHT = 275 -keycode SDLK_LEFT = 276 -keycode SDLK_INSERT = 277 -keycode SDLK_HOME = 278 -keycode SDLK_END = 279 -keycode SDLK_PAGEUP = 280 -keycode SDLK_PAGEDOWN = 281 - -#******************************************** - -keycode SDLK_F1 = 282 -keycode SDLK_F2 = 283 -keycode SDLK_F3 = 284 -keycode SDLK_F4 = 285 -keycode SDLK_F5 = 286 -keycode SDLK_F6 = 287 -keycode SDLK_F7 = 288 -keycode SDLK_F8 = 289 -keycode SDLK_F9 = 290 -keycode SDLK_F10 = 291 -keycode SDLK_F11 = 292 -keycode SDLK_F12 = 293 -keycode SDLK_F13 = 294 -keycode SDLK_F14 = 295 -keycode SDLK_F15 = 296 - -#******************************************** - -keycode SDLK_NUMLOCK = 300 -keycode SDLK_CAPSLOCK = 301 -keycode SDLK_SCROLLOCK = 302 -keycode SDLK_RSHIFT = 303 -keycode SDLK_LSHIFT = 304 -keycode SDLK_RCTRL = 305 -keycode SDLK_LCTRL = 306 -keycode SDLK_RALT = 307 -keycode SDLK_LALT = 308 -keycode SDLK_RMETA = 3 -keycode SDLK_LMETA = 310 -keycode SDLK_LSUPER = 311 -keycode SDLK_RSUPER = 312 -keycode SDLK_MODE = 313 -keycode SDLK_COMPOSE = 314 - -#******************************************** - -keycode SDLK_HELP = 315 -keycode SDLK_PRINT = 316 -keycode SDLK_SYSREQ = 317 -keycode SDLK_BREAK = 318 -keycode SDLK_MENU = 319 -keycode SDLK_POWER = 320 -keycode SDLK_EURO = 321 -keycode SDLK_UNDO = 322 - -#******************************************** diff --git a/src/base/exportFunction.c b/src/base/exportFunction.c index 955c0e1..550e4ec 100644 --- a/src/base/exportFunction.c +++ b/src/base/exportFunction.c @@ -37,7 +37,6 @@ void initExortFunction() { listExportFce = newList(); } - void addToExportFce(char *name, void *function) { printf("add to export function %s\n", name); diff --git a/src/base/exportFunction.h b/src/base/exportFunction.h index 5f3f1d0..8e01fc9 100644 --- a/src/base/exportFunction.h +++ b/src/base/exportFunction.h @@ -5,6 +5,7 @@ extern void initExortFunction(); extern void addToExportFce(char *name, void *function); + extern void* getExportFce(char *name); extern void quitExportFunction(); diff --git a/src/base/modules.c b/src/base/modules.c index e84cd30..13b0ff2 100755 --- a/src/base/modules.c +++ b/src/base/modules.c @@ -88,9 +88,8 @@ static void* getFce(module_t *p, char *s) static void* mapImage(char *name) { - void *image; - #ifndef __WIN32__ + void *image; image = dlopen (name, RTLD_LAZY); if( image == NULL ) @@ -118,7 +117,6 @@ static void* mapImage(char *name) ); fputs(msg, stderr); free(msg); - free(ret); FreeLibrary(image); return NULL; } diff --git a/src/base/modules.h b/src/base/modules.h index 8036a6a..5ad0287 100644 --- a/src/base/modules.h +++ b/src/base/modules.h @@ -31,7 +31,11 @@ typedef struct export_fce_s int (*fce_getNetTypeGame)(); int (*fce_loadDepModule)(void *name); +#ifndef __WIN32__ void (*fce_addToExportFce)(char *name, void *function); +#else + void (*fce_addToExportFce)(char *name, HINSTANCE *function); +#endif void* (*fce_getExportFce)(char *name); void (*fce_getTuxProportion)(tux_t *tux, int *x,int *y, int *w, int *h); @@ -56,7 +60,11 @@ typedef struct export_fce_s typedef struct module_s { char *name; +#ifndef __WIN32__ void *image; +#else + HINSTANCE *image; +#endif int (*fce_init)(export_fce_t *p); #ifndef PUBLIC_SERVER diff --git a/src/modules/modMove.c b/src/modules/modMove.c index 3b8d09c..f4ac84e 100755 --- a/src/modules/modMove.c +++ b/src/modules/modMove.c @@ -223,8 +223,8 @@ int init(export_fce_t *p) { export_fce = p; - export_fce->fce_addToExportFce("move_tux", move_tux); - export_fce->fce_addToExportFce("move_shot", move_shot); + export_fce->fce_addToExportFce("move_tux", (void *)move_tux); + export_fce->fce_addToExportFce("move_shot", (void *)move_shot); return 0; } diff --git a/src/screen/screen_settingKeys.c b/src/screen/screen_settingKeys.c index 2a6539a..4825a2f 100644 --- a/src/screen/screen_settingKeys.c +++ b/src/screen/screen_settingKeys.c @@ -23,11 +23,10 @@ #include "screen_settingKeys.h" #include "widget_button.h" #include "widget_image.h" +#include "widget_catchkey.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; @@ -50,20 +49,20 @@ 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; +static widget_catchkey_t *tux_right_keyup_val; +static widget_catchkey_t *tux_right_keydown_val; +static widget_catchkey_t *tux_right_keyleft_val; +static widget_catchkey_t *tux_right_keyright_val; +static widget_catchkey_t *tux_right_keyswitch_val; +static widget_catchkey_t *tux_right_keyfire_val; +static widget_catchkey_t *tux_left_keyup_val; +static widget_catchkey_t *tux_left_keydown_val; +static widget_catchkey_t *tux_left_keyleft_val; +static widget_catchkey_t *tux_left_keyright_val; +static widget_catchkey_t *tux_left_keyswitch_val; +static widget_catchkey_t *tux_left_keyfire_val; -static widget_catcgkey_t *catcher; +//static widget_catchkey_t *catcher; // todo add key images // possible variant will be reusing widget_image for current widget_label so there wont // be key names but only images @@ -74,27 +73,6 @@ void startScreenSettingKeys() 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]; @@ -102,14 +80,6 @@ void initKeyTable() /* 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); @@ -123,54 +93,30 @@ void initKeyTable() 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); + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_UP", val, STR_SIZE, "273"); + keytable[ KEY_TUX_RIGHT_MOVE_UP ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_RIGHT", val, STR_SIZE, "275"); + keytable[ KEY_TUX_RIGHT_MOVE_RIGHT ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_LEFT", val, STR_SIZE, "276"); + keytable[ KEY_TUX_RIGHT_MOVE_LEFT ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_DOWN", val, STR_SIZE, "274"); + keytable[ KEY_TUX_RIGHT_MOVE_DOWN ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_SHOOT", val, STR_SIZE, "48"); + keytable[ KEY_TUX_RIGHT_SHOOT ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_RIGHT_SWITCH_WEAPON", val, STR_SIZE, "49"); + keytable[ KEY_TUX_RIGHT_SWITCH_WEAPON ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_UP", val, STR_SIZE, "119"); + keytable[ KEY_TUX_LEFT_MOVE_UP ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_RIGHT", val, STR_SIZE, "100"); + keytable[ KEY_TUX_LEFT_MOVE_RIGHT ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_LEFT", val, STR_SIZE, "97"); + keytable[ KEY_TUX_LEFT_MOVE_LEFT ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_MOVE_DOWN", val, STR_SIZE, "115"); + keytable[ KEY_TUX_LEFT_MOVE_DOWN ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_SHOOT", val, STR_SIZE, "113"); + keytable[ KEY_TUX_LEFT_SHOOT ] = atoi(val); + loadValueFromConfigFile(keycontrolFile, "TUX_LEFT_SWITCH_WEAPON", val, STR_SIZE, "9"); + keytable[ KEY_TUX_LEFT_SWITCH_WEAPON ] = atoi(val); /* for( i = 0 ; i < KEY_LENGTH ; i++) @@ -208,167 +154,62 @@ void drawScreenSettingKeys() 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); -} -void createNewKey() { - // create catchkey - // redraw keyval - // update config file + drawWidgetCatchkey(tux_right_keyup_val); + drawWidgetCatchkey(tux_right_keydown_val); + drawWidgetCatchkey(tux_right_keyleft_val); + drawWidgetCatchkey(tux_right_keyright_val); + drawWidgetCatchkey(tux_right_keyswitch_val); + drawWidgetCatchkey(tux_right_keyfire_val); + drawWidgetCatchkey(tux_left_keyup_val); + drawWidgetCatchkey(tux_left_keydown_val); + drawWidgetCatchkey(tux_left_keyleft_val); + drawWidgetCatchkey(tux_left_keyright_val); + drawWidgetCatchkey(tux_left_keyswitch_val); + drawWidgetCatchkey(tux_left_keyfire_val); } static void eventWidget(void *p) { widget_button_t *button; - widget_label_t *label; + widget_catchkey_t *catcher; button = (widget_button_t *)(p); - label = (widget_label_t *)(p); - + catcher = (widget_catchkey_t *)(p); if(button == button_back) { setScreen("setting"); } - //events on picture/text - if(label == tux_left_keyup) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keydown) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyleft) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyright) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyfire) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyswitch) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyup) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keydown) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyleft) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyright) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyswitch) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyfire) { - //call load of new value - //call change to config + redraw of value - } //events on value - if(label == tux_left_keyup_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keydown_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyleft_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyright_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyfire_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_left_keyswitch_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyup_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keydown_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyleft_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyright_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyswitch_val) { - //call load of new value - //call change to config + redraw of value - } - if(label == tux_right_keyfire_val) { - //call load of new value - //call change to config + redraw of value + if( (catcher == tux_left_keyup_val) || + (catcher == tux_left_keydown_val) || + (catcher == tux_left_keyleft_val) || + (catcher == tux_left_keyright_val) || + (catcher == tux_left_keyfire_val) || + (catcher == tux_left_keyswitch_val) || + (catcher == tux_right_keyup_val) || + (catcher == tux_right_keydown_val) || + (catcher == tux_right_keyleft_val) || + (catcher == tux_right_keyright_val) || + (catcher == tux_right_keyswitch_val) || + (catcher == tux_right_keyfire_val) ) { + // draw press any key picture + // check if there is no other key with new value (what to revert if yes?) + // allow ony one key per time change HOW THE HELL IS THIS EVEN POSSIBLE } } void eventScreenSettingKeys() { eventWidgetButton(button_back); - // text/image - eventWidgetLabel(tux_right); - eventWidgetLabel(tux_left); - eventWidgetLabel(tux_right_keyup); - eventWidgetLabel(tux_right_keydown); - eventWidgetLabel(tux_right_keyleft); - eventWidgetLabel(tux_right_keyright); - eventWidgetLabel(tux_right_keyswitch); - eventWidgetLabel(tux_right_keyfire); - eventWidgetLabel(tux_left_keyup); - eventWidgetLabel(tux_left_keydown); - eventWidgetLabel(tux_left_keyleft); - eventWidgetLabel(tux_left_keyright); - eventWidgetLabel(tux_left_keyswitch); - eventWidgetLabel(tux_left_keyfire); - // value - eventWidgetLabel(tux_right_val); - eventWidgetLabel(tux_left_val); - eventWidgetLabel(tux_right_keyup_val); - eventWidgetLabel(tux_right_keydown_val); - eventWidgetLabel(tux_right_keyleft_val); - eventWidgetLabel(tux_right_keyright_val); - eventWidgetLabel(tux_right_keyswitch_val); - eventWidgetLabel(tux_right_keyfire_val); - eventWidgetLabel(tux_left_keyup_val); - eventWidgetLabel(tux_left_keydown_val); - eventWidgetLabel(tux_left_keyleft_val); - eventWidgetLabel(tux_left_keyright_val); - eventWidgetLabel(tux_left_keyswitch_val); - eventWidgetLabel(tux_left_keyfire_val); + eventWidgetCatchkey(tux_right_keyup_val); + eventWidgetCatchkey(tux_right_keydown_val); + eventWidgetCatchkey(tux_right_keyleft_val); + eventWidgetCatchkey(tux_right_keyright_val); + eventWidgetCatchkey(tux_right_keyswitch_val); + eventWidgetCatchkey(tux_right_keyfire_val); + eventWidgetCatchkey(tux_left_keyup_val); + eventWidgetCatchkey(tux_left_keydown_val); + eventWidgetCatchkey(tux_left_keyleft_val); + eventWidgetCatchkey(tux_left_keyright_val); + eventWidgetCatchkey(tux_left_keyswitch_val); + eventWidgetCatchkey(tux_left_keyfire_val); } void stopScreenSettingKeys() { @@ -398,31 +239,61 @@ void initScreenSettingKeys() 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_left_keyup_val = newWidgetCatchkey(keytable[6], tux_left_keyup->x+200, tux_left->y+50); + tux_left_keydown_val = newWidgetCatchkey(keytable[9], tux_left_keyup_val->x, tux_left_keyup->y + 20); + tux_left_keyleft_val = newWidgetCatchkey(keytable[8], tux_left_keyup_val->x, tux_left_keydown->y + 20); + tux_left_keyright_val = newWidgetCatchkey(keytable[7], tux_left_keyup_val->x, tux_left_keyleft->y + 20); + tux_left_keyfire_val = newWidgetCatchkey(keytable[10], tux_left_keyup_val->x, tux_left_keyright->y + 20); + tux_left_keyswitch_val = newWidgetCatchkey(keytable[11], tux_left_keyup_val->x, tux_left_keyfire->y + 20); - 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); + tux_right_keyup_val = newWidgetCatchkey(keytable[0], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left->y+50); + tux_right_keydown_val = newWidgetCatchkey(keytable[3], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left_keyup->y + 20); + tux_right_keyleft_val = newWidgetCatchkey(keytable[2], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_right_keydown->y + 20); + tux_right_keyright_val = newWidgetCatchkey(keytable[1], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_right_keyleft->y + 20); + tux_right_keyfire_val = newWidgetCatchkey(keytable[4], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left_keyright->y + 20); + tux_right_keyswitch_val = newWidgetCatchkey(keytable[5], WINDOW_SIZE_X/2 + tux_left_keyup_val->x, tux_left_keyfire->y + 20); registerScreen( newScreen("settingKeys", startScreenSettingKeys, eventScreenSettingKeys, drawScreenSettingKeys, stopScreenSettingKeys) ); } void quitKeyTable() { - //printf("quitKeyTable\n"); destroyTextFile(keycontrolFile); - destroyTextFile(keytableFile); +} +void saveKeyTable() { + char str[STR_SIZE]; + sprintf(str,"%d",tux_left_keyup_val->key); + setValueInConfigFile(keycontrolFile, "TUX_LEFT_MOVE_UP", str); + sprintf(str,"%d",tux_left_keydown_val->key); + setValueInConfigFile(keycontrolFile, "TUX_LEFT_MOVE_DOWN", str); + sprintf(str,"%d",tux_left_keyleft_val->key); + setValueInConfigFile(keycontrolFile, "TUX_LEFT_MOVE_LEFT", str); + sprintf(str,"%d",tux_left_keyright_val->key); + setValueInConfigFile(keycontrolFile, "TUX_LEFT_MOVE_RIGHT", str); + sprintf(str,"%d",tux_left_keyfire_val->key); + setValueInConfigFile(keycontrolFile, "TUX_LEFT_MOVE_SHOOT", str); + sprintf(str,"%d",tux_left_keyswitch_val->key); + setValueInConfigFile(keycontrolFile, "TUX_LEFT_MOVE_SWITCH_WEAPON ", str); + + sprintf(str,"%d",tux_right_keyup_val->key); + setValueInConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_UP", str); + sprintf(str,"%d",tux_right_keydown_val->key); + setValueInConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_DOWN", str); + sprintf(str,"%d",tux_right_keyleft_val->key); + setValueInConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_LEFT", str); + sprintf(str,"%d",tux_right_keyright_val->key); + setValueInConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_RIGHT", str); + sprintf(str,"%d",tux_right_keyfire_val->key); + setValueInConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_SHOOT", str); + sprintf(str,"%d",tux_right_keyswitch_val->key); + setValueInConfigFile(keycontrolFile, "TUX_RIGHT_MOVE_SWITCH_WEAPON ", str); + + saveTextFile(keycontrolFile); } void quitScreenSettingKeys() { + saveKeyTable(); + quitKeyTable(); // key names destroyWidgetImage(image_backgorund); destroyWidgetLabel(tux_right); @@ -439,18 +310,18 @@ void quitScreenSettingKeys() 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); + destroyWidgetCatchkey(tux_right_keyup_val); + destroyWidgetCatchkey(tux_right_keydown_val); + destroyWidgetCatchkey(tux_right_keyleft_val); + destroyWidgetCatchkey(tux_right_keyright_val); + destroyWidgetCatchkey(tux_right_keyswitch_val); + destroyWidgetCatchkey(tux_right_keyfire_val); + destroyWidgetCatchkey(tux_left_keyup_val); + destroyWidgetCatchkey(tux_left_keydown_val); + destroyWidgetCatchkey(tux_left_keyleft_val); + destroyWidgetCatchkey(tux_left_keyright_val); + destroyWidgetCatchkey(tux_left_keyswitch_val); + destroyWidgetCatchkey(tux_left_keyfire_val); destroyWidgetButton(button_back); } diff --git a/src/screen/screen_world.c b/src/screen/screen_world.c index b253565..9e686b8 100644 --- a/src/screen/screen_world.c +++ b/src/screen/screen_world.c @@ -217,14 +217,11 @@ static void control_keyboard_right(tux_t *tux) if( mapa[(SDLKey)getKey(KEY_TUX_RIGHT_MOVE_LEFT)] == SDL_PRESSED )countKey++; if( mapa[(SDLKey)getKey(KEY_TUX_RIGHT_MOVE_DOWN)] == SDL_PRESSED )countKey++; - if( mapa[(SDLKey)getKey(KEY_TUX_RIGHT_SWITCH_WEAPON)] == SDL_PRESSED ) + if( mapa[(SDLKey)getKey(KEY_TUX_RIGHT_SWITCH_WEAPON)] == SDL_PRESSED && tux->isCanSwitchGun == TRUE ) { - if( tux->isCanSwitchGun == TRUE ) - { - netAction(tux, TUX_SWITCH_GUN); - actionTux(tux, TUX_SWITCH_GUN); - return; - } + netAction(tux, TUX_SWITCH_GUN); + actionTux(tux, TUX_SWITCH_GUN); + return; } if( mapa[(SDLKey)getKey(KEY_TUX_RIGHT_SHOOT)] == SDL_PRESSED && tux->isCanShot == TRUE ) diff --git a/src/widget/widget_catchkey.c b/src/widget/widget_catchkey.c index 7443358..afdac23 100644 --- a/src/widget/widget_catchkey.c +++ b/src/widget/widget_catchkey.c @@ -6,7 +6,7 @@ #include "font.h" #include "widget_catchkey.h" -widget_catchkey_t* newWidgetCatchkey(int x, int y, int key) +widget_catchkey_t* newWidgetCatchkey(int key, int x, int y) { widget_catchkey_t *new; diff --git a/src/widget/widget_catchkey.h b/src/widget/widget_catchkey.h index ab95bbd..0b8b080 100644 --- a/src/widget/widget_catchkey.h +++ b/src/widget/widget_catchkey.h @@ -18,7 +18,7 @@ typedef struct widget_catchkey_struct bool_t active; } widget_catchkey_t; -extern widget_catchkey_t* newWidgetCatchkey(int x, int y, int key); +extern widget_catchkey_t* newWidgetCatchkey(int key, int x, int y); extern int getWidgetCatchKey(widget_catchkey_t *p); extern void setWidgetCatchKey(widget_catchkey_t *p, int key); extern void drawWidgetCatchkey(widget_catchkey_t *p); -- cgit v1.2.3