/
githubmirror
/
vgstation13
Обзор
Документация
Войти
/
githubmirror
/
vgstation13
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
Bleeding-Edge
code/modules/client/preferences/pref_datums_client.dm
597 строк
15 KB
DeityLink
Plane Filter prefs + Pref Settings tab split (#38925)
25 янв 2026, 23:13
Не верифицирован
25 янв 2026, 23:13
0b30acb
Код
Авторство
О чём код?
// -- ACTUAL PREFS -- // non-prefs stuff /datum/preference_setting/numerical/warns name = "Warns" sql_name = "warns" sql_table = "client" enabled = TRUE default_setting = 0 /datum/preference_setting/numerical/warnbans name = "Warn bans" sql_name = "warnbans" sql_table = "client" enabled = TRUE default_setting = 0 /datum/preference_setting/toggle/show_warning_next_time name = "Show warning next time" sql_name = "show_warning_next_time" sql_table = "client" enabled = TRUE default_setting = 0 /datum/preference_setting/string/last_warned_message name = "Last warned message" sql_name = "last_warned_message" sql_table = "client" enabled = TRUE default_setting = "Default warning message" /datum/preference_setting/string/warning_admin name = "Warning admin" sql_name = "warning_admin" sql_table = "client" enabled = TRUE default_setting = "Admin" /datum/preference_setting/numerical/default_slot name = "Default slot" sql_name = "default_slot" sql_table = "client" enabled = TRUE default_setting = 1 min_value = 1 max_value = MAX_SAVE_SLOTS // game-preferences //Saved changlog filesize to detect if there was a change /datum/preference_setting/string/changelog name = "Last changelog" sql_name = "lastchangelog" sql_table = "client" enabled = TRUE default_setting = "" /datum/preference_setting/string/ooc_color name = "OOC Color" sql_name = "ooc_color" sql_table = "client" enabled = TRUE default_setting = "#b82e00" // For all that matters, this ISN'T in the pref UI for some reason? /datum/preference_setting/string/ooc_color/choose_setting(var/mob/user) var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null if(new_ooccolor) setting = new_ooccolor /datum/preference_setting/string/UI_style name = "UI Style" sql_name = "UI_style" sql_table = "client" enabled = TRUE default_setting = "Midnight" // This is just cycling /datum/preference_setting/string/UI_style/choose_setting(mob/user) . = ..() switch(setting) if("Midnight") setting = "Orange" if("Orange") setting = "old" if("old") setting = "White" else setting = "Midnight" /datum/preference_setting/binary_flag/toggles name = "Toggles" sql_name = "toggles" sql_table = "client" enabled = TRUE default_setting = TOGGLES_DEFAULT // Annoying overwrite but I can't think of a more elegant way to do it. /datum/preference_setting/binary_flag/toggles/process_link(var/task, var/mob/user, var/list/href_list) if (task == "input") var/toggle = text2num(href_list["toggle"]) // I can't think of any other way to check this pre-toggling. Probably overloaded but I want to replicate it, just ion case. switch (toggle) // Admin toggle, do not pass if we're not admin if (SOUND_ADMINHELP, CHAT_PRAYER, CHAT_ATTACKLOGS, CHAT_DEBUGLOGS, AUTO_DEADMIN) if (!user.client.holder) return setting ^= toggle // Annoying but have to do it. switch (toggle) if (SOUND_MIDI) user << sound(null, repeat = 0, wait = 0, volume = 0, channel = CHANNEL_ADMINMUSIC) if (SOUND_AMBIENCE) if(config.no_ambience) to_chat(user, "DEBUG: Ambience is globally disabled via server config.") user << sound(null, repeat = 0, wait = 0, volume = 0, channel = CHANNEL_AMBIENCE) if (SOUND_LOBBY) if(config.no_lobby_music) to_chat(user, "DEBUG: Lobby music is globally disabled via server config.") if(istype(user,/mob/new_player)) user << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = CHANNEL_LOBBY) /datum/preference_setting/string/UI_style_color name = "UI Style Color" sql_name = "UI_style_color" sql_table = "client" enabled = TRUE default_setting = "#ffffff" /datum/preference_setting/string/UI_style_color/choose_setting(var/mob/user) var/UI_style_color_new = input(user, "Choose your UI colour, dark colours are not recommended!") as color|null if(!UI_style_color_new) return setting = UI_style_color_new /datum/preference_setting/numerical/UI_style_alpha name = "UI Style Alpha" sql_name = "UI_style_alpha" sql_table = "client" enabled = TRUE default_setting = 255 min_value = 50 max_value = 255 /datum/preference_setting/numerical/UI_style_alpha/choose_setting(var/mob/user) var/UI_style_alpha_new = input(user, "Select a new alpha(transparency) parameter for UI, between 50 and 255") as num if(!UI_style_alpha_new || !(UI_style_alpha_new <= max_value && UI_style_alpha_new >= min_value)) return setting = UI_style_alpha_new /datum/preference_setting/toggle/space_parallax name = "Space parallax" sql_name = "space_parallax" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/space_parallax/choose_setting(var/mob/user) . = ..() if(user && user.hud_used) user.hud_used.update_parallax_existence() /datum/preference_setting/toggle/space_dust name = "Space dust" sql_name = "space_dust" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/space_dust/choose_setting(var/mob/user) . = ..() if(user && user.hud_used) user.hud_used.update_parallax_existence() /datum/preference_setting/numerical/parallax_speed name = "Parallax speed" sql_name = "parallax_speed" sql_table = "client" enabled = TRUE default_setting = 2 min_value = 0 max_value = 5 /datum/preference_setting/numerical/parallax_speed/choose_setting(var/mob/user) var/p_speed = input(user, "Enter a number between 0 and 5 included (default=2)","Parallax Speed Preferences",setting) setting = clamp(p_speed, min_value, max_value) /datum/preference_setting/toggle/plane_filters name = "Plane filters" sql_name = "plane_filters" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/plane_filters/choose_setting(var/mob/user) . = ..() if(user && isliving(user) && user.client) var/mob/living/L = user if (!L.client.prefs.get_pref(/datum/preference_setting/toggle/plane_filters)) L.disable_all_visual_filters() /datum/preference_setting/enum/special_popup name = "Special popup" sql_name = "special" // HISTORICAL REASONS :tm: sql_table = "client" enabled = TRUE default_setting = SPECIAL_POPUP_USE_BOTH allowed_values = list(SPECIAL_POPUP_DISABLED, SPECIAL_POPUP_EXCLUSIVE, SPECIAL_POPUP_USE_BOTH) /datum/preference_setting/enum/special_popup/choose_setting(mob/user) var/choice = input(user, "Set your special tab preferences:", "Settings") as null|anything in special_popup_text2num if(!isnull(choice)) setting = special_popup_text2num[choice] /datum/preference_setting/toggle/tooltips name = "Tooltips" sql_name = "tooltips" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/stumble name = "Stumble" sql_name = "stumble" sql_table = "client" enabled = TRUE default_setting = FALSE /datum/preference_setting/toggle/hear_voicesound name = "Hear voicesound" sql_name = "hear_voicesound" sql_table = "client" enabled = TRUE default_setting = FALSE /datum/preference_setting/numerical/volume name = "Music volume" sql_name = "volume" sql_table = "client" enabled = TRUE default_setting = 100 min_value = 0 max_value = 100 /datum/preference_setting/numerical/volume/choose_setting(var/mob/user) user.client.set_new_volume() /datum/preference_setting/toggle/usewmp name = "Use WMP" sql_name = "usewmp" sql_table = "client" enabled = TRUE default_setting = FALSE /datum/preference_setting/toggle/usewmp/choose_setting(var/mob/user) . = ..() if(!user.client.media) return user.client.media.stop_music() user.client.media.playerstyle = (setting ? PLAYER_OLD_HTML : PLAYER_HTML) var/datum/preference_setting/toggles = parent.get_pref_datum(/datum/preference_setting/binary_flag/toggles) if(toggles.setting & SOUND_STREAMING) user.client.media.open() user.client.media.update_music() /datum/preference_setting/toggle/randomslot name = "Use random character slot" sql_name = "randomslot" sql_table = "client" enabled = TRUE default_setting = FALSE /datum/preference_setting/toggle/usenanoui name = "Use nanoUI" sql_name = "usenanoui" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/progress_bars name = "Progress bars" sql_name = "progress_bars" sql_table = "client" enabled = TRUE default_setting = TRUE // TRAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!! /datum/preference_setting/enum/attack_animations name = "Attack animations" sql_name = "attack_animation" sql_table = "client" enabled = TRUE default_setting = ITEM_ANIMATION allowed_values = list(ITEM_ANIMATION, NO_ANIMATION, PERSON_ANIMATION) /datum/preference_setting/enum/attack_animations/choose_setting(var/mob/user) if(setting == NO_ANIMATION) item_animation_viewers |= parent.client setting = ITEM_ANIMATION else if(setting == ITEM_ANIMATION) setting = PERSON_ANIMATION person_animation_viewers |= parent.client item_animation_viewers -= parent.client else if(setting == PERSON_ANIMATION) setting = NO_ANIMATION item_animation_viewers -= parent.client /datum/preference_setting/toggle/pulltoggle name = "Pull toggle" sql_name = "pulltoggle" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/hear_instruments name = "Hear instruments" sql_name = "hear_instruments" sql_table = "client" enabled = TRUE default_setting = FALSE /datum/preference_setting/numerical/ambience_volume name = "Ambience volume" sql_name = "ambience_volume" sql_table = "client" enabled = TRUE default_setting = 100 min_value = 0 max_value = 100 /datum/preference_setting/numerical/ambience_volume/choose_setting(var/mob/user) var/new_volume = input(user, "Enter the new volume you wish to use. (0-100)","Ambience Volume Preferences", setting) setting = clamp(new_volume, min_value, max_value) /datum/preference_setting/numerical/credits_volume name = "Ambience volume" sql_name = "credits_volume" sql_table = "client" enabled = TRUE default_setting = 75 min_value = 0 max_value = 100 /datum/preference_setting/numerical/credits_volume/choose_setting(var/mob/user) var/credits_volume = input(user, "Enter the new volume you wish to use. (0-100, default is 75)","Credits/Jingle Volume", setting) setting = clamp(credits_volume, min_value, max_value) /datum/preference_setting/enum/credits name = "Credits" sql_name = "credits" sql_table = "client" enabled = TRUE default_setting = CREDITS_ALWAYS allowed_values = list(CREDITS_NEVER, CREDITS_ALWAYS, CREDITS_NO_RERUNS) saved_as_string = FALSE /datum/preference_setting/enum/credits/choose_setting(var/mob/user) switch(setting) if(CREDITS_NEVER) setting = CREDITS_ALWAYS if(CREDITS_ALWAYS) setting = CREDITS_NO_RERUNS if(CREDITS_NO_RERUNS) setting = CREDITS_NEVER /datum/preference_setting/enum/jingle name = "Jingle" sql_name = "jingle" sql_table = "client" enabled = TRUE default_setting = JINGLE_CLASSIC allowed_values = list(JINGLE_NEVER, JINGLE_CLASSIC, JINGLE_ALL) saved_as_string = FALSE /datum/preference_setting/enum/jingle/choose_setting(var/mob/user) switch(setting) if(JINGLE_NEVER) setting = JINGLE_CLASSIC if(JINGLE_CLASSIC) setting = JINGLE_ALL if(JINGLE_ALL) setting = JINGLE_NEVER /datum/preference_setting/numerical/headset_sound name = "Headset sound" sql_name = "headset_sound" sql_table = "client" enabled = TRUE default_setting = HEADSET_SOUND_TRANSMIT min_value = HEADSET_SOUND_DISABLED max_value = HEADSET_SOUND_ALL saved_as_string = FALSE /datum/preference_setting/numerical/headset_sound/choose_setting(var/mob/user) var/choice = input(user, "Set your radio headset sound preferences:", "Settings") as null|anything in headset_sound_text2num if(!isnull(choice)) setting = headset_sound_text2num[choice] /datum/preference_setting/toggle/window_flashing name = "Window flashing" sql_name = "window_flashing" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/antag_objectives name = "Antag objectives" sql_name = "antag_objectives" sql_table = "client" enabled = TRUE default_setting = TRUE // This also has "historical reasons" but not code-related /datum/preference_setting/toggle/typing_indicator name = "Typing indicator" sql_name = "typing_indicator" sql_table = "client" enabled = TRUE default_setting = TRUE // This also has "historical reasons" but not code-related // -- Runechat things /datum/preference_setting/toggle/mob_chat_on_map name = "Runechat on map" sql_name = "mob_chat_on_map" sql_table = "client" enabled = TRUE default_setting = TRUE // This also has "historical reasons" but not code-related /datum/preference_setting/numerical/max_chat_length name = "Max runechat message length" sql_name = "max_chat_length" sql_table = "client" enabled = TRUE default_setting = CHAT_MESSAGE_MAX_LENGTH min_value = 0 max_value = CHAT_MESSAGE_MAX_LENGTH /datum/preference_setting/numerical/max_chat_length/choose_setting(mob/user) var/max_chat_length = input(user, "Choose the max character length of shown Runechat messages. Valid range is 1 to [CHAT_MESSAGE_MAX_LENGTH] (default: [default_setting]))", "Character Preference", setting) as null|num setting = clamp(max_chat_length, min_value, max_value) /datum/preference_setting/toggle/obj_chat_on_map name = "Object runechat" sql_name = "obj_chat_on_map" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/toggle/no_goonchat_for_obj name = "No goonchat for object" sql_name = "no_goonchat_for_obj" sql_table = "client" enabled = TRUE default_setting = FALSE /datum/preference_setting/toggle/tgui_fancy name = "Fancy TGUI" sql_name = "tgui_fancy" sql_table = "client" enabled = TRUE default_setting = TRUE /datum/preference_setting/numerical/fps name = "FPS" sql_name = "fps" sql_table = "client" enabled = TRUE default_setting = -1 min_value = -1 max_value = 1000 saved_as_string = FALSE /datum/preference_setting/numerical/fps/choose_setting(var/mob/user) var/desired_fps = input(user, "Choose your desired frames per second.\n\ WARNING: BYOND versions earlier than 513.1523 might not work properly with values other than 0.\n\ Set this to -1 to use the recommended value.\n\ Set this to 0 to use the server's FPS (currently [world.fps])\n\ Values up to 1000 are allowed.", "FPS", setting) as null|num if(isnull(desired_fps)) return if(desired_fps < 0) desired_fps = -1 desired_fps = sanitize_integer(desired_fps, -1, 1000, setting) setting = desired_fps parent.client.fps = (setting < 0) ? RECOMMENDED_CLIENT_FPS : setting // THESE ARE UNIMPLEMENTED FROM tgui MIGRATIONS! TOFIX /datum/preference_setting/toggle/tgui_input name = "tgui_input" sql_name = "tgui_input" sql_table = "client" enabled = FALSE default_setting = FALSE /datum/preference_setting/toggle/tgui_input_swapped name = "tgui_input_swapped" sql_name = "tgui_input_swapped" sql_table = "client" enabled = FALSE default_setting = FALSE /datum/preference_setting/toggle/tgui_input_large name = "tgui_input_large" sql_name = "tgui_input_large" sql_table = "client" enabled = FALSE default_setting = FALSE /datum/preference_setting/toggle/tgui_lock name = "tgui_lock" sql_name = "tgui_lock" sql_table = "client" enabled = FALSE default_setting = FALSE /datum/preference_setting/toggle/tgui_scale name = "tgui_scale" sql_name = "tgui_scale" sql_table = "client" enabled = FALSE default_setting = FALSE /datum/preference_setting/toggle/layout_prefs_used name = "tgui_scale" sql_name = "tgui_scale" sql_table = "client" enabled = FALSE default_setting = FALSE