diff options
| author | Dusan Durech <dusan.d@Centrum.sk> | 2009-08-19 21:04:42 +0200 |
|---|---|---|
| committer | Dusan Durech <dusan.d@Centrum.sk> | 2009-08-19 21:04:42 +0200 |
| commit | 56f11df16e2949cf1cd29ed9e0fa43424e2181c2 (patch) | |
| tree | a8a3a5e569c9640d6969f440785636998be0ab9a /src/client | |
| parent | 7e4da11ff95f2867f8032ebb0279e5698053a7eb (diff) | |
behaves use params and save and load net setting game
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/config.c | 39 | ||||
| -rw-r--r-- | src/client/config.h | 6 |
2 files changed, 41 insertions, 4 deletions
diff --git a/src/client/config.c b/src/client/config.c index 1be1f1a..be95fb0 100644 --- a/src/client/config.c +++ b/src/client/config.c @@ -46,9 +46,15 @@ static config_t config_list[] = { .key=CFG_BONUS_TELEPORT, .var="BONUS_TELEPORT", .param="--bonus-teleport", .type=CONFIG_TYPE_INT, .value_int=1 }, { .key=CFG_BONUS_GHOST, .var="BONUS_GHOST", .param="--bonus-ghost", .type=CONFIG_TYPE_INT, .value_int=1 }, { .key=CFG_BONUS_4X, .var="BONUS_4X", .param="--bonus-4x", .type=CONFIG_TYPE_INT, .value_int=1 }, - { .key=CFG_BONUS_HIDDEN, .var="BONUS_HIDDEN", .param="--bonus-hidden", .type=CONFIG_TYPE_INT, .value_int=1 } + { .key=CFG_BONUS_HIDDEN, .var="BONUS_HIDDEN", .param="--bonus-hidden", .type=CONFIG_TYPE_INT, .value_int=1 }, + + { .key=CFG_GAME_TYPE, .var="GAME_TYPE", .param="--game-type", .type=CONFIG_TYPE_STR, .value_str="none" }, + { .key=CFG_NET_IP, .var="NET_IP", .param="--ip", .type=CONFIG_TYPE_STR, .value_str="127.0.0.1" }, + { .key=CFG_NET_PORT, .var="NET_PORT", .param="--port", .type=CONFIG_TYPE_STR, .value_str="6800" } }; +static textFile_t *config_file; + static config_t* find_config(int key) { int i; @@ -62,11 +68,34 @@ static config_t* find_config(int key) return NULL; } -static textFile_t *config_file; +static void check_param() +{ + int i; + + for (i = 0; i < CONFIG_LIST_COUNT; i++) { + char *str; + + str = getParam(config_list[i].param); + + if (str != NULL) { + if (config_list[i].type == CONFIG_TYPE_INT) { + config_list[i].value_int = atoi(str); + } else { + if (config_list[i].value_str != NULL) { + free(config_list[i].value_str); + } + + config_list[i].value_str = strdup(str); + } + } + } +} int config_init() { config_load(); + check_param(); + return 0; } @@ -126,7 +155,6 @@ void config_save() } text_file_save(config_file); - text_file_destroy(config_file); } int config_get_int_value(int key) @@ -184,5 +212,10 @@ void config_set_str_value(int key, char *str) int config_quit() { config_save(); + + if (config_file != NULL) { + text_file_destroy(config_file); + } + return 0; } diff --git a/src/client/config.h b/src/client/config.h index c56c537..ae84a76 100644 --- a/src/client/config.h +++ b/src/client/config.h @@ -24,7 +24,11 @@ #define CFG_BONUS_4X 18 #define CFG_BONUS_HIDDEN 19 -#define CONFIG_LIST_COUNT 19 +#define CFG_GAME_TYPE 20 +#define CFG_NET_IP 21 +#define CFG_NET_PORT 22 + +#define CONFIG_LIST_COUNT 22 extern int config_init(); extern void config_load(); |