Fix Save ops order (#1367)

And fix field nulling if the database doesn't return anything.
This commit is contained in:
skull132
2017-01-02 00:44:46 +02:00
committed by GitHub
parent b2e7c73668
commit a79808984e
5 changed files with 31 additions and 15 deletions

View File

@@ -62,12 +62,25 @@
var/list/jobs = params2list(pref.unsanitized_jobs)
for (var/preference in jobs)
try
pref.vars[preference] = text2num(jobs[preference])
catch(var/exception/e)
log_debug("LOADING: Bad job preference key: [preference].")
log_debug(e.desc)
// In case we return 0 data from the database.
if (!jobs || !jobs.len)
pref.alternate_option = 0
pref.job_civilian_high = 0
pref.job_civilian_med = 0
pref.job_civilian_low = 0
pref.job_medsci_high = 0
pref.job_medsci_med = 0
pref.job_medsci_low = 0
pref.job_engsec_high = 0
pref.job_engsec_med = 0
pref.job_engsec_low = 0
else
for (var/preference in jobs)
try
pref.vars[preference] = text2num(jobs[preference])
catch(var/exception/e)
log_debug("LOADING: Bad job preference key: [preference].")
log_debug(e.desc)
pref.alternate_option = sanitize_integer(text2num(pref.alternate_option), 0, 2, initial(pref.alternate_option))
pref.job_civilian_high = sanitize_integer(text2num(pref.job_civilian_high), 0, 65535, initial(pref.job_civilian_high))

View File

@@ -151,7 +151,7 @@
else
if (modified)
// No save here, because this is only called from the menu and needs to save /everything/.
handle_sql_saving(SQL_PREFERENCES|SQL_CHARACTER)
handle_sql_saving(SQL_CHARACTER)
modified = 0
/datum/category_group/player_setup_category/proc/load_preferences(var/savefile/S)

View File

@@ -32,8 +32,11 @@
if (sql_load)
pref.skills = params2list(pref.skills)
for (var/skill in pref.skills)
pref.skills[skill] = text2num(pref.skills[skill])
if (!pref.skills || !islist(pref.skills) || !pref.skills.len)
pref.ZeroSkills()
else
for (var/skill in pref.skills)
pref.skills[skill] = text2num(pref.skills[skill])
pref.CalculateSkillPoints()
if (!pref.skills.len)

View File

@@ -149,12 +149,12 @@ datum/preferences
save_character()
/datum/preferences/proc/getMinAge()
var/datum/species/mob_species = all_species[species]
return mob_species.age_min
var/datum/species/mob_species = all_species[species]
return mob_species.age_min
/datum/preferences/proc/getMaxAge()
var/datum/species/mob_species = all_species[species]
return mob_species.age_max
var/datum/species/mob_species = all_species[species]
return mob_species.age_max
/datum/preferences/proc/ZeroSkills(var/forced = 0)
for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V])
@@ -249,8 +249,8 @@ datum/preferences
return 1
if(href_list["save"])
save_preferences()
save_character()
save_preferences()
else if(href_list["reload"])
load_preferences()
load_character()