summaryrefslogtreecommitdiff
path: root/src/client/config.c
diff options
context:
space:
mode:
authorDusan Durech <dusan.d@Centrum.sk>2009-08-19 21:04:42 +0200
committerDusan Durech <dusan.d@Centrum.sk>2009-08-19 21:04:42 +0200
commit56f11df16e2949cf1cd29ed9e0fa43424e2181c2 (patch)
treea8a3a5e569c9640d6969f440785636998be0ab9a /src/client/config.c
parent7e4da11ff95f2867f8032ebb0279e5698053a7eb (diff)
behaves use params and save and load net setting game
Diffstat (limited to 'src/client/config.c')
-rw-r--r--src/client/config.c39
1 files changed, 36 insertions, 3 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;
}