Merge pull request #16102 from SandPoot/this-is-a-feature-but-was-left-in-an-unusable-state

Enables the feature for having multiple loadout slots
This commit is contained in:
deathride58
2024-10-23 19:20:45 -04:00
committed by GitHub
2 changed files with 22 additions and 4 deletions

View File

@@ -229,7 +229,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
///loadout stuff
var/gear_points = 10
var/list/gear_categories
var/list/loadout_data = list()
var/list/loadout_data
var/list/unlockable_loadout_data = list()
var/loadout_slot = 1 //goes from 1 to MAXIMUM_LOADOUT_SAVES
var/gear_category
@@ -367,7 +367,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
//calculate your gear points from the chosen item
gear_points = CONFIG_GET(number/initial_gear_points)
var/list/chosen_gear = loadout_data["SAVE_[loadout_slot]"]
if(chosen_gear)
if(islist(chosen_gear))
loadout_errors = 0
for(var/loadout_item in chosen_gear)
var/loadout_item_path = loadout_item[LOADOUT_ITEM]
@@ -910,6 +910,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "</tr></table>"
if(LOADOUT_CHAR_TAB)
dat += "<table align='center' width='100%'>"
dat += "<tr><td colspan=4><center><b>Loadout slot</b></center></td></tr>"
dat += "<tr><td colspan=4><center>"
for(var/iteration in 1 to MAXIMUM_LOADOUT_SAVES)
dat += "<a [loadout_slot == iteration ? "class='linkOn'" : "href='?_src_=prefs;preference=gear;select_slot=[iteration]'"]>[iteration]</a>"
dat += "</center></td></tr>"
dat += "<tr><td colspan=4><center><i style=\"color: grey;\">You can only choose one item per category, unless it's an item that spawns in your backpack or hands.</center></td></tr>"
dat += "<tr><td colspan=4><center><b>"
@@ -3240,6 +3245,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
preferences_tab = text2num(href_list["tab"])
if(href_list["preference"] == "gear")
if(href_list["select_slot"])
var/chosen = text2num(href_list["select_slot"])
if(!chosen)
return
chosen = floor(chosen)
if(chosen > MAXIMUM_LOADOUT_SAVES || chosen < 1)
return
loadout_slot = chosen
if(href_list["clear_loadout"])
loadout_data["SAVE_[loadout_slot]"] = list()
save_preferences()

View File

@@ -911,10 +911,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
belly_prefs = json_from_file["belly_prefs"]
//gear loadout
if(S["loadout"])
if(istext(S["loadout"]))
loadout_data = safe_json_decode(S["loadout"])
else
loadout_data = list()
//let's remember their last used slot, i'm sure "oops i brought the wrong stuff" will be an issue now
S["loadout_slot"] >> loadout_slot
//try to fix any outdated data if necessary
//preference updating will handle saving the updated data for us.
@@ -1094,6 +1096,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
vore_smell = copytext(vore_smell, 1, MAX_TASTE_LEN)
belly_prefs = SANITIZE_LIST(belly_prefs)
loadout_slot = sanitize_num_clamp(loadout_slot, 1, MAXIMUM_LOADOUT_SAVES, 1, TRUE)
cit_character_pref_load(S)
return TRUE
@@ -1278,10 +1282,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//gear loadout
if(length(loadout_data))
if(islist(loadout_data))
S["loadout"] << safe_json_encode(loadout_data)
else
S["loadout"] << safe_json_encode(list())
WRITE_FILE(S["loadout_slot"], loadout_slot)
if(length(tcg_cards))
S["tcg_cards"] << safe_json_encode(tcg_cards)