mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-10 15:45:05 +01:00
00ccf0c6b5
# Conflicts: # .github/CODEOWNERS # .github/workflows/compile_changelogs.yml # .github/workflows/stale.yml # SQL/database_changelog.md # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/__DEFINES/atom_hud.dm # code/__DEFINES/inventory.dm # code/__DEFINES/mobs.dm # code/__DEFINES/species_clothing_paths.dm # code/__DEFINES/subsystems.dm # code/__DEFINES/surgery.dm # code/__HELPERS/global_lists.dm # code/_globalvars/lists/maintenance_loot.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/minor_mapping.dm # code/controllers/subsystem/processing/quirks.dm # code/controllers/subsystem/shuttle.dm # code/datums/components/palette.dm # code/datums/components/surgery_initiator.dm # code/datums/diseases/advance/advance.dm # code/datums/hud.dm # code/datums/mood.dm # code/datums/mutations/chameleon.dm # code/datums/quirks/negative_quirks/nyctophobia.dm # code/datums/status_effects/debuffs/debuffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/slime/slime_leech.dm # code/datums/weather/weather.dm # code/game/data_huds.dm # code/game/objects/items.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/frog_statue.dm # code/game/objects/items/rcd/RLD.dm # code/game/objects/items/robot/items/hypo.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/items/stacks/wrap.dm # code/game/objects/items/storage/garment.dm # code/game/objects/items/tools/medical/defib.dm # code/game/objects/items/weaponry.dm # code/game/objects/items/weaponry/melee/misc.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/game/objects/structures/curtains.dm # code/game/objects/structures/dresser.dm # code/game/objects/structures/girders.dm # code/game/objects/structures/maintenance.dm # code/game/objects/structures/mirror.dm # code/modules/admin/greyscale_modify_menu.dm # code/modules/admin/verbs/light_debug.dm # code/modules/antagonists/ashwalker/ashwalker.dm # code/modules/antagonists/heretic/knowledge/starting_lore.dm # code/modules/antagonists/ninja/ninjaDrainAct.dm # code/modules/art/paintings.dm # code/modules/client/preferences.dm # code/modules/client/verbs/ooc.dm # code/modules/clothing/head/wig.dm # code/modules/events/disease_outbreak.dm # code/modules/holodeck/holo_effect.dm # code/modules/jobs/job_types/head_of_security.dm # code/modules/jobs/job_types/security_officer.dm # code/modules/library/skill_learning/generic_skillchips/point.dm # code/modules/mining/lavaland/ash_flora.dm # code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/basic/guardian/guardian.dm # code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm # code/modules/mob/living/carbon/carbon.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_defines.dm # code/modules/mob/living/carbon/life.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/mob.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mod/mod_control.dm # code/modules/mod/modules/modules_general.dm # code/modules/modular_computers/computers/item/computer_ui.dm # code/modules/paperwork/paper.dm # code/modules/paperwork/paperbin.dm # code/modules/power/lighting/light.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/projectiles/projectile.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/food_reagents.dm # code/modules/reagents/chemistry/reagents/other_reagents.dm # code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm # code/modules/research/xenobiology/crossbreeding/_clothing.dm # code/modules/research/xenobiology/crossbreeding/prismatic.dm # code/modules/surgery/advanced/brainwashing.dm # code/modules/surgery/advanced/lobotomy.dm # code/modules/surgery/amputation.dm # code/modules/surgery/blood_filter.dm # code/modules/surgery/bodyparts/_bodyparts.dm # code/modules/surgery/brain_surgery.dm # code/modules/surgery/cavity_implant.dm # code/modules/surgery/coronary_bypass.dm # code/modules/surgery/gastrectomy.dm # code/modules/surgery/healing.dm # code/modules/surgery/limb_augmentation.dm # code/modules/surgery/organ_manipulation.dm # code/modules/surgery/revival.dm # code/modules/surgery/sleeper_protocol.dm # code/modules/surgery/surgery_helpers.dm # code/modules/surgery/surgery_step.dm # code/modules/unit_tests/_unit_tests.dm # code/modules/unit_tests/designs.dm # code/modules/unit_tests/icon_state_worn.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png # code/modules/unit_tests/screenshots/screenshot_husk_body.png # code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png # icons/map_icons/clothing/head/_head.dmi # icons/map_icons/clothing/shoes.dmi # icons/map_icons/items/_item.dmi # icons/mob/huds/hud.dmi # icons/mob/inhands/64x64_lefthand.dmi # icons/mob/inhands/64x64_righthand.dmi # icons/obj/machines/computer.dmi # tgui/packages/tgui/interfaces/OperatingComputer.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/types.ts # tgui/packages/tgui/interfaces/SurgeryInitiator.tsx # tools/icon_cutter/check.py
130 lines
5.6 KiB
Plaintext
130 lines
5.6 KiB
Plaintext
/datum/preference_middleware/loadout
|
|
action_delegations = list(
|
|
"clear_all_items" = PROC_REF(action_clear_all),
|
|
"pass_to_loadout_item" = PROC_REF(action_pass_to_loadout_item),
|
|
"rotate_dummy" = PROC_REF(action_rotate_model_dir),
|
|
"select_item" = PROC_REF(action_select_item),
|
|
"toggle_job_clothes" = PROC_REF(action_toggle_job_outfit),
|
|
"close_greyscale_menu" = PROC_REF(force_close_greyscale_menu),
|
|
)
|
|
/// Our currently open greyscaling menu.
|
|
VAR_FINAL/datum/greyscale_modify_menu/menu
|
|
|
|
/datum/preference_middleware/loadout/Destroy(force, ...)
|
|
QDEL_NULL(menu)
|
|
return ..()
|
|
|
|
/datum/preference_middleware/loadout/proc/action_select_item(list/params, mob/user)
|
|
PRIVATE_PROC(TRUE)
|
|
var/path_to_use = text2path(params["path"])
|
|
var/datum/loadout_item/interacted_item = GLOB.all_loadout_datums[path_to_use]
|
|
if(!istype(interacted_item))
|
|
stack_trace("Failed to locate desired loadout item (path: [params["path"]]) in the global list of loadout datums!")
|
|
return TRUE // update
|
|
|
|
if(params["deselect"])
|
|
deselect_item(interacted_item)
|
|
else if(!interacted_item.is_disabled())
|
|
select_item(interacted_item)
|
|
return TRUE
|
|
|
|
/* BUBBER EDIT REMOVAL: Multiple loadout presets: Handled in the modular file.
|
|
/datum/preference_middleware/loadout/proc/action_clear_all(list/params, mob/user)
|
|
PRIVATE_PROC(TRUE)
|
|
preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], null)
|
|
return TRUE
|
|
*/
|
|
|
|
/datum/preference_middleware/loadout/proc/action_toggle_job_outfit(list/params, mob/user)
|
|
PRIVATE_PROC(TRUE)
|
|
preferences.character_preview_view.show_job_clothes = !preferences.character_preview_view.show_job_clothes
|
|
preferences.character_preview_view.update_body()
|
|
return TRUE
|
|
|
|
/datum/preference_middleware/loadout/proc/action_rotate_model_dir(list/params, mob/user)
|
|
PRIVATE_PROC(TRUE)
|
|
switch(params["dir"])
|
|
if("left")
|
|
preferences.character_preview_view.setDir(turn(preferences.character_preview_view.dir, -90))
|
|
if("right")
|
|
preferences.character_preview_view.setDir(turn(preferences.character_preview_view.dir, 90))
|
|
|
|
/datum/preference_middleware/loadout/proc/action_pass_to_loadout_item(list/params, mob/user)
|
|
PRIVATE_PROC(TRUE)
|
|
var/path_to_use = text2path(params["path"])
|
|
var/datum/loadout_item/interacted_item = GLOB.all_loadout_datums[path_to_use]
|
|
if(!istype(interacted_item)) // no you cannot href exploit to spawn with a pulse rifle
|
|
stack_trace("Failed to locate desired loadout item (path: [params["path"]]) in the global list of loadout datums!")
|
|
return TRUE // update
|
|
|
|
if(interacted_item.handle_loadout_action(src, user, params["subaction"], params))
|
|
preferences.character_preview_view.update_body()
|
|
return TRUE
|
|
|
|
return FALSE
|
|
|
|
/// Select [path] item to [category_slot] slot.
|
|
/datum/preference_middleware/loadout/proc/select_item(datum/loadout_item/selected_item)
|
|
var/list/loadout = get_current_loadout() // BUBBER EDIT: Multiple loadout presets: ORIGINAL: var/list/loadout = preferences.read_preference(/datum/preference/loadout)
|
|
var/list/datum/loadout_item/loadout_datums = loadout_list_to_datums(loadout)
|
|
for(var/datum/loadout_item/item as anything in loadout_datums)
|
|
if(item.category != selected_item.category)
|
|
continue
|
|
if(!item.category.handle_duplicate_entires(src, item, selected_item, loadout_datums))
|
|
return
|
|
// SKYRAT EDIT ADDITION
|
|
if(!isnull(selected_item.ckeywhitelist) && !(preferences?.parent?.ckey in selected_item.ckeywhitelist))
|
|
to_chat(preferences.parent, span_warning("You cannot select this item!"))
|
|
return
|
|
|
|
if(selected_item.donator_only && !SSplayer_ranks.is_donator(preferences.parent))
|
|
to_chat(preferences.parent, span_warning("This item is for donators only."))
|
|
return
|
|
// SKYRAT EDIT END
|
|
|
|
LAZYSET(loadout, selected_item.item_path, list())
|
|
save_current_loadout(loadout) // BUBBER EDIT: Multiple loadout presets: ORIGINAL: preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout)
|
|
|
|
/// Deselect [deselected_item].
|
|
/datum/preference_middleware/loadout/proc/deselect_item(datum/loadout_item/deselected_item)
|
|
var/list/loadout = get_current_loadout() // BUBBER EDIT: Multiple loadout presets: ORIGINAL: var/list/loadout = preferences.read_preference(/datum/preference/loadout)
|
|
LAZYREMOVE(loadout, deselected_item.item_path)
|
|
save_current_loadout(loadout) // BUBBER EDIT: Multiple loadout presets: ORIGINAL: preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], loadout)
|
|
|
|
/datum/preference_middleware/loadout/proc/register_greyscale_menu(datum/greyscale_modify_menu/open_menu)
|
|
src.menu = open_menu
|
|
RegisterSignal(menu, COMSIG_QDELETING, PROC_REF(cleanup_greyscale_menu))
|
|
|
|
/datum/preference_middleware/loadout/proc/cleanup_greyscale_menu()
|
|
SIGNAL_HANDLER
|
|
menu = null
|
|
|
|
/datum/preference_middleware/loadout/proc/force_close_greyscale_menu()
|
|
menu?.ui_close()
|
|
|
|
/datum/preference_middleware/loadout/get_ui_data(mob/user)
|
|
var/list/data = list()
|
|
data["job_clothes"] = preferences.character_preview_view.show_job_clothes
|
|
return data
|
|
|
|
/datum/preference_middleware/loadout/get_ui_static_data(mob/user)
|
|
var/list/data = list()
|
|
data["loadout_preview_view"] = preferences.character_preview_view.assigned_map
|
|
data["ckey"] = user.ckey // BUBBER EDIT ADDITION: Filter ckey-locked items
|
|
return data
|
|
|
|
/datum/preference_middleware/loadout/get_constant_data()
|
|
var/list/data = list()
|
|
var/list/loadout_tabs = list()
|
|
for(var/datum/loadout_category/category as anything in GLOB.all_loadout_categories)
|
|
var/list/cat_data = list(
|
|
"name" = category.category_name,
|
|
"category_icon" = category.category_ui_icon,
|
|
"category_info" = category.category_info,
|
|
"contents" = category.items_to_ui_data(),
|
|
)
|
|
UNTYPED_LIST_ADD(loadout_tabs, cat_data)
|
|
|
|
data["loadout_tabs"] = loadout_tabs
|
|
return data
|