project_files/frontlib/model/weapon.c
changeset 7227 1c859f572d72
parent 7224 5143861c83bd
child 7230 240620f46dd7
equal deleted inserted replaced
7224:5143861c83bd 7227:1c859f572d72
     1 #include "weapon.h"
     1 #include "weapon.h"
     2 
     2 
     3 #include "../iniparser/iniparser.h"
       
     4 #include "../util/inihelper.h"
     3 #include "../util/inihelper.h"
     5 #include "../util/logging.h"
     4 #include "../util/logging.h"
     6 #include "../util/util.h"
     5 #include "../util/util.h"
     7 
     6 
     8 #include <stdlib.h>
     7 #include <stdlib.h>
    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 }