57 field[WEAPONS_COUNT] = 0; |
57 field[WEAPONS_COUNT] = 0; |
58 } |
58 } |
59 |
59 |
60 flib_weaponset *flib_weaponset_create(const char *name) { |
60 flib_weaponset *flib_weaponset_create(const char *name) { |
61 flib_weaponset *result = NULL; |
61 flib_weaponset *result = NULL; |
62 if(!name) { |
62 if(!log_badargs_if(name==NULL)) { |
63 flib_log_e("null parameter in flib_weaponset_create_str"); |
|
64 } else { |
|
65 flib_weaponset *newSet = flib_weaponset_retain(flib_calloc(1, sizeof(flib_weaponset))); |
63 flib_weaponset *newSet = flib_weaponset_retain(flib_calloc(1, sizeof(flib_weaponset))); |
66 if(newSet) { |
64 if(newSet) { |
67 newSet->name = flib_strdupnull(name); |
65 newSet->name = flib_strdupnull(name); |
68 if(newSet->name) { |
66 if(newSet->name) { |
69 setField(newSet->loadout, "", 0, false); |
67 setField(newSet->loadout, "", 0, false); |
117 } |
115 } |
118 } |
116 } |
119 |
117 |
120 flib_weaponset *flib_weaponset_from_ammostring(const char *name, const char *ammostring) { |
118 flib_weaponset *flib_weaponset_from_ammostring(const char *name, const char *ammostring) { |
121 flib_weaponset *result = NULL; |
119 flib_weaponset *result = NULL; |
122 if(!name || !ammostring) { |
120 if(!log_badargs_if2(name==NULL, ammostring==NULL)) { |
123 flib_log_e("null parameter in flib_weaponset_from_ammostring"); |
|
124 } else { |
|
125 result = flib_weaponset_create(name); |
121 result = flib_weaponset_create(name); |
126 if(result) { |
122 if(result) { |
127 int fieldlen = strlen(ammostring)/4; |
123 int fieldlen = strlen(ammostring)/4; |
128 setField(result->loadout, ammostring, fieldlen, false); |
124 setField(result->loadout, ammostring, fieldlen, false); |
129 setField(result->crateprob, ammostring + fieldlen, fieldlen, true); |
125 setField(result->crateprob, ammostring + fieldlen, fieldlen, true); |
162 return error; |
158 return error; |
163 } |
159 } |
164 |
160 |
165 flib_weaponsetlist *flib_weaponsetlist_from_ini(const char *filename) { |
161 flib_weaponsetlist *flib_weaponsetlist_from_ini(const char *filename) { |
166 flib_weaponsetlist *result = NULL; |
162 flib_weaponsetlist *result = NULL; |
167 if(!filename) { |
163 if(!log_badargs_if(filename==NULL)) { |
168 flib_log_e("null parameter in flib_weaponsetlist_from_ini"); |
|
169 } else { |
|
170 flib_ini *ini = flib_ini_load(filename); |
164 flib_ini *ini = flib_ini_load(filename); |
171 if(!ini) { |
165 if(!ini) { |
172 flib_log_e("Missing file %s.", filename); |
166 flib_log_e("Missing file %s.", filename); |
173 } else if(flib_ini_enter_section(ini, "General")) { |
167 } else if(flib_ini_enter_section(ini, "General")) { |
174 flib_log_e("Missing section \"General\" in file %s.", filename); |
168 flib_log_e("Missing section \"General\" in file %s.", filename); |
188 |
182 |
189 static bool needsEscape(char c) { |
183 static bool needsEscape(char c) { |
190 return !((c>='0' && c<='9') || (c>='a' && c <='z')); |
184 return !((c>='0' && c<='9') || (c>='a' && c <='z')); |
191 } |
185 } |
192 |
186 |
193 |
|
194 static int writeWeaponsetToIni(flib_ini *ini, flib_weaponset *set) { |
187 static int writeWeaponsetToIni(flib_ini *ini, flib_weaponset *set) { |
195 int result = -1; |
188 int result = -1; |
196 char weaponstring[WEAPONS_COUNT*4+1]; |
189 char weaponstring[WEAPONS_COUNT*4+1]; |
197 strcpy(weaponstring, set->loadout); |
190 strcpy(weaponstring, set->loadout); |
198 strcat(weaponstring, set->crateprob); |
191 strcat(weaponstring, set->crateprob); |
207 return result; |
200 return result; |
208 } |
201 } |
209 |
202 |
210 int flib_weaponsetlist_to_ini(const char *filename, const flib_weaponsetlist *list) { |
203 int flib_weaponsetlist_to_ini(const char *filename, const flib_weaponsetlist *list) { |
211 int result = -1; |
204 int result = -1; |
212 if(!filename || !list) { |
205 if(!log_badargs_if2(filename==NULL, list==NULL)) { |
213 flib_log_e("null parameter in flib_weaponsetlist_to_ini"); |
|
214 } else { |
|
215 flib_ini *ini = flib_ini_create(NULL); |
206 flib_ini *ini = flib_ini_create(NULL); |
216 if(ini && !flib_ini_create_section(ini, "General")) { |
207 if(ini && !flib_ini_create_section(ini, "General")) { |
217 bool error = false; |
208 bool error = false; |
218 for(int i=0; i<list->weaponsetCount && !error; i++) { |
209 for(int i=0; i<list->weaponsetCount && !error; i++) { |
219 error |= writeWeaponsetToIni(ini, list->weaponsets[i]); |
210 error |= writeWeaponsetToIni(ini, list->weaponsets[i]); |
234 |
225 |
235 GENERATE_STATIC_LIST_INSERT(insertWeaponset, flib_weaponset*) |
226 GENERATE_STATIC_LIST_INSERT(insertWeaponset, flib_weaponset*) |
236 GENERATE_STATIC_LIST_DELETE(deleteWeaponset, flib_weaponset*) |
227 GENERATE_STATIC_LIST_DELETE(deleteWeaponset, flib_weaponset*) |
237 |
228 |
238 int flib_weaponsetlist_insert(flib_weaponsetlist *list, flib_weaponset *set, int pos) { |
229 int flib_weaponsetlist_insert(flib_weaponsetlist *list, flib_weaponset *set, int pos) { |
239 if(!list) { |
230 if(!log_badargs_if2(list==NULL, set==NULL) |
240 flib_log_e("Invalid parameter in flib_weaponsetlist_insert"); |
231 && !insertWeaponset(&list->weaponsets, &list->weaponsetCount, set, pos)) { |
241 } else if(!insertWeaponset(&list->weaponsets, &list->weaponsetCount, set, pos)) { |
|
242 flib_weaponset_retain(set); |
232 flib_weaponset_retain(set); |
243 return 0; |
233 return 0; |
244 } |
234 } |
245 return -1; |
235 return -1; |
246 } |
236 } |
247 |
237 |
248 int flib_weaponsetlist_delete(flib_weaponsetlist *list, int pos) { |
238 int flib_weaponsetlist_delete(flib_weaponsetlist *list, int pos) { |
249 if(!list) { |
239 if(!log_badargs_if(list==NULL)) { |
250 flib_log_e("Invalid parameter in flib_weaponsetlist_delete"); |
|
251 } else { |
|
252 flib_weaponset *elem = list->weaponsets[pos]; |
240 flib_weaponset *elem = list->weaponsets[pos]; |
253 if(!deleteWeaponset(&list->weaponsets, &list->weaponsetCount, pos)) { |
241 if(!deleteWeaponset(&list->weaponsets, &list->weaponsetCount, pos)) { |
254 flib_weaponset_release(elem); |
242 flib_weaponset_release(elem); |
255 return 0; |
243 return 0; |
256 } |
244 } |