Changes the character setup update flow.

Changes the way savefile version upgrades are done, letting each sub-setting handle it own upgrade path, while also making it easier to transfer settings between preferences and individual characters save slots.
This commit is contained in:
PsiOmegaDelta
2015-12-05 10:54:22 +01:00
parent eb06bc74af
commit fefa400604
3 changed files with 37 additions and 41 deletions

View File

@@ -109,6 +109,8 @@ datum/preferences
var/client/client = null
var/savefile/loaded_preferences
var/savefile/loaded_character
var/datum/category_collection/player_setup_collection/player_setup
/datum/preferences/New(client/C)
@@ -123,9 +125,14 @@ datum/preferences
client = C
if(!IsGuestKey(C.key))
load_path(C.ckey)
if(load_preferences())
if(load_character())
return
load_preferences()
load_and_update_character()
/datum/preferences/proc/load_and_update_character(var/slot)
load_character(slot)
if(update_setup(loaded_preferences, loaded_character))
save_preferences()
save_character()
/datum/preferences/proc/ZeroSkills(var/forced = 0)
for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V])
@@ -219,7 +226,7 @@ datum/preferences
if("reload")
load_preferences()
load_character()
load_and_update_character()
if("open_load_dialog")
if(!IsGuestKey(user.key))
@@ -227,7 +234,7 @@ datum/preferences
return 1
if("changeslot")
load_character(text2num(href_list["num"]))
load_and_update_character(text2num(href_list["num"]))
close_load_dialog(user)
ShowChoices(user)