Skip to content

Commit 7bda1dd

Browse files
committed
TEST!!! ITS FUCKED!!!
1 parent 081b350 commit 7bda1dd

14 files changed

Lines changed: 357 additions & 20 deletions

File tree

code/controllers/subsystem/ticker.dm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -559,17 +559,17 @@ SUBSYSTEM_DEF(ticker)
559559
SSquirks.AssignQuirks(new_player_living, new_player_mob.client)
560560
else // clear any personalities the prefs added since our job clearly does not want them
561561
new_player_living.clear_personalities()
562+
563+
if(ishuman(new_player_living))
564+
SEND_SIGNAL(new_player_living, COMSIG_HUMAN_CHARACTER_SETUP_FINISHED)
562565
//MASSMETA ADDTIION
563566
if(ishuman(new_player_living))
564-
var/list/loadout = loadout_list_to_datums(new_player_mob.client?.prefs?.read_preference(/datum/preference/loadout))
567+
var/list/loadout = new_player_living.client?.get_loadout_datums()
565568
for(var/datum/loadout_item/item as anything in loadout)
566569
if (item.restricted_roles && length(item.restricted_roles) && !(player_assigned_role.title in item.restricted_roles))
567570
continue
568571
item.post_equip_item(new_player_mob.client?.prefs, new_player_living)
569572
//MASSMETA ADDITION END
570-
571-
if(ishuman(new_player_living))
572-
SEND_SIGNAL(new_player_living, COMSIG_HUMAN_CHARACTER_SETUP_FINISHED)
573573
CHECK_TICK
574574

575575
if(captainless)

code/modules/client/preferences_savefile.dm

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
5252
//This only really meant to avoid annoying frequent players
5353
//if your savefile is 3 months out of date, then 'tough shit'.
5454

55-
/datum/preferences/proc/update_preferences(current_version, datum/json_savefile/S)
55+
/datum/preferences/proc/update_preferences(current_version, datum/json_savefile/S, list/save_data) //MASSMETA EDIT ORIGINAL: /datum/preferences/proc/update_preferences(current_version, datum/json_savefile/S)
56+
//MASSMETA ADDITION
57+
if(current_version < 12)
58+
write_preference(GLOB.preference_entries[/datum/preference/loadout], list("Default" = save_data["loadout_list"]))
59+
//MASSMETA ADDITION END
60+
5661
if(current_version < 34)
5762
write_preference(/datum/preference/toggle/auto_fit_viewport, TRUE)
5863

code/modules/loadout/loadout_helpers.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
CRASH("Invalid outfit passed to equip_outfit_and_loadout ([outfit])")
2929

3030
var/list/item_details = preference_source.read_preference(/datum/preference/loadout)
31-
var/list/loadout_datums = loadout_list_to_datums(item_details)
31+
var/list/loadout_datums = loadout_list_to_datums(item_details[preference_source.read_preference(/datum/preference/loadout_index)]) //MASSMETA EDIT ORIGINAL: var/list/loadout_datums = loadout_list_to_datums(item_details)
3232
// Slap our things into the outfit given
3333
for(var/datum/loadout_item/item as anything in loadout_datums)
3434
if(!item.is_equippable(src, item_details?[item.item_path] || list()))

code/modules/loadout/loadout_items.dm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories())
130130
if(manager.menu)
131131
return FALSE
132132

133-
var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
133+
var/list/loadout = manager.get_current_loadout() //MASSMETA EDIT ORIGINAL: var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
134134
var/list/allowed_configs = list()
135135
if(initial(item_path.greyscale_config))
136136
allowed_configs += "[initial(item_path.greyscale_config)]"
@@ -160,7 +160,7 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories())
160160
if(!istype(open_menu))
161161
CRASH("set_slot_greyscale called without a greyscale menu!")
162162

163-
var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
163+
var/list/loadout = manager.get_current_loadout() //MASSMETA EDIT ORIGINAL: var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
164164
if(!loadout?[item_path])
165165
return FALSE
166166

@@ -174,7 +174,7 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories())
174174

175175
/// Sets the name of the item.
176176
/datum/loadout_item/proc/set_name(datum/preference_middleware/loadout/manager, mob/user)
177-
var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
177+
var/list/loadout = manager.get_current_loadout() //MASSMETA EDIT ORIGINAL: var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
178178
var/input_name = tgui_input_text(
179179
user = user,
180180
message = "What name do you want to give the [name]? Leave blank to clear.",
@@ -200,7 +200,7 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories())
200200
/// Used for reskinning an item to an alt skin.
201201
/datum/loadout_item/proc/set_skin(datum/preference_middleware/loadout/manager, mob/user, params)
202202
var/reskin_to = params["skin"] // sanity checking isn't necessary because it's all checked when equipped anyways
203-
var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
203+
var/list/loadout = manager.get_current_loadout() //MASSMETA EDIT ORIGINAL: var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
204204
if(!loadout?[item_path])
205205
return FALSE
206206

code/modules/loadout/loadout_menu.dm

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@
2828
select_item(interacted_item)
2929
return TRUE
3030

31+
/* MASSMETA REMOVAL
3132
/datum/preference_middleware/loadout/proc/action_clear_all(list/params, mob/user)
3233
PRIVATE_PROC(TRUE)
3334
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], null)
3435
return TRUE
36+
*/
3537

3638
/datum/preference_middleware/loadout/proc/action_toggle_job_outfit(list/params, mob/user)
3739
PRIVATE_PROC(TRUE)
@@ -72,13 +74,13 @@
7274
return
7375

7476
LAZYSET(loadout, selected_item.item_path, list())
75-
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout)
77+
save_current_loadout(loadout) //MASSMETA EDIT ORIGINAL: preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout)
7678

7779
/// Deselect [deselected_item].
7880
/datum/preference_middleware/loadout/proc/deselect_item(datum/loadout_item/deselected_item)
79-
var/list/loadout = preferences.read_preference(/datum/preference/loadout)
81+
var/list/loadout = get_current_loadout() //MASSMETA EDIT ORIGINAL: var/list/loadout = manager.preferences.read_preference(/datum/preference/loadout)
8082
LAZYREMOVE(loadout, deselected_item.item_path)
81-
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout)
83+
save_current_loadout(loadout) //MASSMETA EDIT ORIGINAL: preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout)
8284

8385
/datum/preference_middleware/loadout/proc/register_greyscale_menu(datum/greyscale_modify_menu/open_menu)
8486
src.menu = open_menu
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
///Fetches the current loadout list from prefs and formats it via loadout_list_to_datums().
2+
/client/proc/get_loadout_datums()
3+
RETURN_TYPE(/list)
4+
5+
if(isnull(prefs))
6+
return list()
7+
var/list/loadout_entries = prefs.read_preference(/datum/preference/loadout)
8+
var/list/loadout_list = loadout_entries[prefs.read_preference(/datum/preference/loadout_index)]
9+
return loadout_list_to_datums(loadout_list)
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/datum/preference_middleware/loadout/New(datum/preferences)
2+
. = ..()
3+
action_delegations += list(
4+
"add_loadout_preset" = PROC_REF(add_loadout_preset),
5+
"remove_loadout_preset" = PROC_REF(remove_loadout_preset),
6+
"set_loadout_preset" = PROC_REF(set_loadout_preset),
7+
"rename_loadout_preset" = PROC_REF(rename_loadout_preset),
8+
)
9+
10+
/datum/preference_middleware/loadout/proc/add_loadout_preset(list/params, mob/user)
11+
PRIVATE_PROC(TRUE)
12+
var/list/loadout_entries = preferences.read_preference(/datum/preference/loadout)
13+
14+
if (loadout_entries.len >= 12)
15+
return TRUE
16+
17+
var/loadout_name = params["name"]
18+
if (!istext(loadout_name) || length(loadout_name) > 24 || length(loadout_name) < 1)
19+
return TRUE
20+
21+
if (islist(loadout_entries[loadout_name]))
22+
return TRUE
23+
24+
loadout_entries[loadout_name] = list()
25+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout_entries)
26+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout_index], loadout_name)
27+
return TRUE
28+
29+
/datum/preference_middleware/loadout/proc/remove_loadout_preset(list/params, mob/user)
30+
PRIVATE_PROC(TRUE)
31+
32+
var/loadout_name = preferences.read_preference(/datum/preference/loadout_index)
33+
if(loadout_name == "Default")
34+
return TRUE
35+
36+
var/list/loadout_entries = preferences.read_preference(/datum/preference/loadout)
37+
38+
if (loadout_entries.len <= 1)
39+
return TRUE
40+
41+
loadout_entries.Remove(loadout_name)
42+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout_entries)
43+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout_index], "Default")
44+
return TRUE
45+
46+
/datum/preference_middleware/loadout/proc/set_loadout_preset(list/params, mob/user)
47+
PRIVATE_PROC(TRUE)
48+
49+
var/loadout_name = params["name"]
50+
if(!istext(loadout_name))
51+
return TRUE
52+
53+
var/list/loadout_entries = preferences.read_preference(/datum/preference/loadout)
54+
55+
if (loadout_name in loadout_entries)
56+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout_index], loadout_name)
57+
58+
return TRUE
59+
60+
/datum/preference_middleware/loadout/proc/rename_loadout_preset(list/params, mob/user)
61+
PRIVATE_PROC(TRUE)
62+
63+
var/loadout_name = preferences.read_preference(/datum/preference/loadout_index)
64+
var/new_loadout_name = params["name"]
65+
if(!istext(new_loadout_name) || loadout_name == "Default")
66+
return TRUE
67+
68+
var/list/loadout_entries = preferences.read_preference(/datum/preference/loadout)
69+
70+
if(new_loadout_name in loadout_entries)
71+
return TRUE
72+
73+
loadout_entries[new_loadout_name] = loadout_entries[loadout_name]
74+
loadout_entries.Remove(loadout_name)
75+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout_entries)
76+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout_index], new_loadout_name)
77+
return TRUE
78+
79+
/datum/preference_middleware/loadout/proc/get_current_loadout()
80+
var/list/loadout_entries = preferences.read_preference(/datum/preference/loadout)
81+
return loadout_entries[preferences.read_preference(/datum/preference/loadout_index)]
82+
83+
/datum/preference_middleware/loadout/proc/save_current_loadout(list/loadout)
84+
var/list/loadout_entries = preferences.read_preference(/datum/preference/loadout)
85+
loadout_entries[preferences.read_preference(/datum/preference/loadout_index)] = loadout
86+
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout_entries)
87+
88+
/datum/preference_middleware/loadout/proc/action_clear_all(list/params, mob/user)
89+
save_current_loadout(list())
90+
return TRUE
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Oh, I'm sorry, you were looking for GOOD code? Turn around and leave.
2+
3+
/datum/preference/loadout_index
4+
savefile_key = "loadout_index"
5+
savefile_identifier = PREFERENCE_CHARACTER
6+
can_randomize = FALSE
7+
8+
/datum/preference/loadout_index/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
9+
return
10+
11+
/datum/preference/loadout_index/create_informed_default_value(datum/preferences/preferences)
12+
var/list/loadouts = preferences.read_preference(/datum/preference/loadout)
13+
if(length(loadouts))
14+
return loadouts[1]
15+
16+
/datum/preference/loadout_index/deserialize(input, datum/preferences/preferences)
17+
if (istext(input))
18+
return input
19+
20+
return create_informed_default_value(preferences)
21+
22+
/datum/preference/loadout_index/is_valid(value)
23+
return istext(value)
24+
25+
/datum/preference/loadout
26+
savefile_key = "loadout_lists" // Change the savefile key to avoid data corruption if this goes COMPLETELY WRONG during a test merge.
27+
28+
// I'm going to flex my cursed modular knowledge now.
29+
/datum/preference/loadout/deserialize(list/input, datum/preferences/preferences)
30+
for (var/name in input)
31+
input[name] = ..(input[name], preferences) // ULTIMATE MODULARITY BULLSHIT GO
32+
33+
return input
34+
35+
/datum/preference/loadout/create_default_value(datum/preferences/preferences)
36+
return list("Default" = list())
37+
38+
/datum/preference/loadout/compile_ui_data(mob/user, value)
39+
var/list/data = ..()
40+
var/list/loadout_list = list()
41+
for(var/key in data)
42+
loadout_list += key
43+
data = list("loadout" = data[user?.client?.prefs.read_preference(/datum/preference/loadout_index)] || "Default") // Fail nicely and hopefully avoid runtiming, though this is client bullshit we're on about
44+
data["loadouts"] = loadout_list
45+
return data

modular_meta/features/metaloadouts/code/ui/loadout_outfit.dm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141

4242
var/override_preference = preference_source.read_preference(/datum/preference/choiced/loadout_override_preference)
4343

44-
var/list/loadout_list = preference_source?.read_preference(/datum/preference/loadout)
44+
var/list/loadout_entries = preference_source.read_preference(/datum/preference/loadout)
45+
var/list/loadout_list = loadout_entries[preference_source.read_preference(/datum/preference/loadout_index)]
4546
var/list/loadout_datums = loadout_list_to_datums(loadout_list)
4647
var/obj/item/storage/briefcase/empty/briefcase
4748
if(override_preference == LOADOUT_OVERRIDE_CASE && !visuals_only)
@@ -109,7 +110,8 @@
109110
* equipping_job - The job that's being applied.
110111
*/
111112
/mob/living/silicon/robot/proc/equip_outfit_and_loadout(datum/outfit/outfit, datum/preferences/preference_source = GLOB.preference_entries_by_key[ckey], visuals_only = FALSE, datum/job/equipping_job)
112-
var/list/loadout_datums = loadout_list_to_datums(preference_source?.read_preference(/datum/preference/loadout))
113+
var/list/loadout_entries = preference_source.read_preference(/datum/preference/loadout)
114+
var/list/loadout_datums = loadout_list_to_datums(loadout_entries[preference_source.read_preference(/datum/preference/loadout_index)])
113115
for (var/datum/loadout_item/head/item in loadout_datums)
114116
if (!item.can_be_applied_to(src, preference_source, equipping_job))
115117
continue

modular_meta/features/metaloadouts/includes.dm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#include "code\loadout_preference.dm"
2+
#include "code\loadout_menu.dm"
3+
#include "code\loadout_helpers.dm"
14
#include "code\loadout_items.dm"
25
#include "code\client\loadout_override_preference.dm"
36
#include "code\items\accessories.dm"

0 commit comments

Comments
 (0)