73 flib_weaponset *flib_weaponset_from_ini(const char *filename) { |
72 flib_weaponset *flib_weaponset_from_ini(const char *filename) { |
74 flib_weaponset *result = NULL; |
73 flib_weaponset *result = NULL; |
75 if(!filename) { |
74 if(!filename) { |
76 flib_log_e("null parameter in flib_weaponset_from_ini"); |
75 flib_log_e("null parameter in flib_weaponset_from_ini"); |
77 } else { |
76 } else { |
78 dictionary *settingfile = iniparser_load(filename); |
77 flib_ini *ini = flib_ini_load(filename); |
79 if(!settingfile) { |
78 if(!ini) { |
80 flib_log_e("Error loading weapon scheme file %s", filename); |
79 flib_log_e("Error loading weapon scheme file %s", filename); |
81 } else { |
80 } else if(!flib_ini_enter_section(ini, "weaponset")) { |
82 bool error = false; |
81 bool error = false; |
83 char *name = inihelper_getstring(settingfile, &error, "weaponset", "name"); |
82 char *name = NULL, *loadout = NULL, *crateprob = NULL, *crateammo = NULL, *delay = NULL; |
84 char *loadout = inihelper_getstring(settingfile, &error, "weaponset", "loadout"); |
83 error |= flib_ini_get_str(ini, &name, "name"); |
85 char *crateprob = inihelper_getstring(settingfile, &error, "weaponset", "crateprob"); |
84 error |= flib_ini_get_str(ini, &loadout, "loadout"); |
86 char *crateammo = inihelper_getstring(settingfile, &error, "weaponset", "crateammo"); |
85 error |= flib_ini_get_str(ini, &crateprob, "crateprob"); |
87 char *delay = inihelper_getstring(settingfile, &error, "weaponset", "delay"); |
86 error |= flib_ini_get_str(ini, &crateammo, "crateammo"); |
|
87 error |= flib_ini_get_str(ini, &delay, "delay"); |
|
88 |
88 if(error) { |
89 if(error) { |
89 flib_log_e("Missing key in weapon scheme file %s", filename); |
90 flib_log_e("Missing key in weapon scheme file %s", filename); |
90 } else { |
91 } else { |
91 result = flib_weaponset_create_str(name, loadout, crateprob, crateammo, delay); |
92 result = flib_weaponset_create_str(name, loadout, crateprob, crateammo, delay); |
92 } |
93 } |
|
94 free(name); |
|
95 free(loadout); |
|
96 free(crateprob); |
|
97 free(crateammo); |
|
98 free(delay); |
93 } |
99 } |
94 iniparser_freedict(settingfile); |
100 flib_ini_destroy(ini); |
95 } |
101 } |
96 return result; |
102 return result; |
97 } |
103 } |
98 |
104 |
99 int flib_weaponset_to_ini(const char *filename, const flib_weaponset *set) { |
105 int flib_weaponset_to_ini(const char *filename, const flib_weaponset *set) { |
100 int result = -1; |
106 int result = -1; |
101 if(!filename || !set) { |
107 if(!filename || !set) { |
102 flib_log_e("null parameter in flib_weaponset_to_ini"); |
108 flib_log_e("null parameter in flib_weaponset_to_ini"); |
103 } else { |
109 } else { |
104 dictionary *dict = iniparser_load(filename); |
110 flib_ini *ini = flib_ini_create(filename); |
105 if(!dict) { |
111 if(!flib_ini_create_section(ini, "weaponset")) { |
106 dict = dictionary_new(0); |
112 bool error = false; |
|
113 error |= flib_ini_set_str(ini, "name", set->name); |
|
114 error |= flib_ini_set_str(ini, "loadout", set->loadout); |
|
115 error |= flib_ini_set_str(ini, "crateprob", set->crateprob); |
|
116 error |= flib_ini_set_str(ini, "crateammo", set->crateammo); |
|
117 error |= flib_ini_set_str(ini, "delay", set->delay); |
|
118 if(!error) { |
|
119 result = flib_ini_save(ini, filename); |
|
120 } |
107 } |
121 } |
108 if(dict) { |
122 flib_ini_destroy(ini); |
109 bool error = false; |
|
110 // Add the sections |
|
111 error |= iniparser_set(dict, "weaponset", NULL); |
|
112 |
|
113 // Add the values |
|
114 error |= inihelper_setstr(dict, "weaponset", "name", set->name); |
|
115 error |= inihelper_setstr(dict, "weaponset", "loadout", set->loadout); |
|
116 error |= inihelper_setstr(dict, "weaponset", "crateprob", set->crateprob); |
|
117 error |= inihelper_setstr(dict, "weaponset", "crateammo", set->crateammo); |
|
118 error |= inihelper_setstr(dict, "weaponset", "delay", set->delay); |
|
119 if(!error) { |
|
120 FILE *inifile = fopen(filename, "wb"); |
|
121 if(inifile) { |
|
122 iniparser_dump_ini(dict, inifile); |
|
123 fclose(inifile); |
|
124 result = 0; |
|
125 } |
|
126 } |
|
127 dictionary_del(dict); |
|
128 } |
|
129 } |
123 } |
130 return result; |
124 return result; |
131 } |
125 } |