Browser/TGUI Stat Panels (#24065)

* initial commit (broken)

* load the html

* fix this

* Fix various issues with browser statpanel

* Fix Alt Clicking opening up a window and Add back some object verbs to the browser stat panel

* Optimize stat panel and fix guardian verbs

* Restyles Stat Panel, Adds Subpanel Sub-Categories

* Use better layout for verbs in stat panel

* Updates statpanel verb widths to be more dynamic at higher screen resolutions.

* Adjust stat panel grid item widths and breakpoints

* refactors statpanel to use tgui API

* CI moment

* more CI

* this stupid thing

* Apply suggestions from code review

Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/client/client_procs.dm

* ci fix

* emergency mc debug view

* temp revert some code change suggestions due to massive runtiming

* proper atom click topic implementation

* optimise

* mob clicking in stat panels work

* yeet spell tab thingy

* yeet simple stat panel pref

* allow insertion of html into MC tab content

* tidy up status tab

* Apply suggestions from code review

* fix this

* fix CI

* oops

* fix index runtime

* fixes MC tab showing up for mentors, fixes runtime

* safeties!

* Return of theme support

* more fixes

* fix view range pref, tidy prefs tab

* Remove old stat panel from themes

* fixes

* make sure verbs don't go missing

* fix ooc/looc breaking

* Revert "make sure verbs don't go missing"

This reverts commit 7d07ad45ed.

* fix this properly

* fix stat panel hitting rate limiters

* fix borg status tab

* Object Window Niceties

* Adds file cycling for icon2base64

* optimizes icon2html() for icon files known to be in the rsc at compile time

* CI moment

* remove dupe emergency shuttle timers

* more robust verb updates

* statpanel tweaks

* zip archived changelog to avoid search results

* optimise

* fix mentor chat wonkyness when disabled

* debug log moment

* i am very smart

* reintroduce this because it was needed

* better time listings

* less jank

* stops telling admins they arent mentors

* returns MC tab pref for admins

* Update code/controllers/subsystem/SSstatpanel.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>

* lewcc

* OD typemaker prep

---------

Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Aylong <alexanderkitsa@gmail.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
S34N
2024-03-07 10:31:36 -05:00
committed by GitHub
co-authored by GDN Burzah Luc Aylong
parent 19a3f768c8
commit 91660824fa
124 changed files with 2585 additions and 27334 deletions
@@ -1,34 +1,34 @@
//toggles
/client/verb/toggle_ghost_ears()
set name = "Show/Hide GhostEars"
set category = "Preferences"
set desc = ".Toggle Between seeing all mob speech, and only speech of nearby mobs"
set name = "GhostEars"
set category = "Preferences.Show/Hide"
set desc = "Toggle Between seeing all mob speech, and only speech of nearby mobs"
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTEARS
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"].")
prefs.save_preferences(src)
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle GhostEars") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_ghost_sight()
set name = "Show/Hide GhostSight"
set category = "Preferences"
set desc = ".Toggle Between seeing all mob emotes, and only emotes of nearby mobs"
set name = "GhostSight"
set category = "Preferences.Show/Hide"
set desc = "Toggle Between seeing all mob emotes, and only emotes of nearby mobs"
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTSIGHT
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"].")
prefs.save_preferences(src)
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle GhostSight") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_ghost_radio()
set name = "Enable/Disable GhostRadio"
set category = "Preferences"
set desc = ".Toggle between hearing all radio chatter, or only from nearby speakers"
set name = "GhostRadio"
set category = "Preferences.Show/Hide"
set desc = "Toggle between hearing all radio chatter, or only from nearby speakers"
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTRADIO
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"].")
prefs.save_preferences(src)
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle GhostRadio")
/client/proc/toggle_hear_radio()
set name = "Show/Hide RadioChatter"
set category = "Preferences"
set name = "RadioChatter"
set category = "Preferences.Show/Hide"
set desc = "Toggle seeing radiochatter from radios and speakers"
if(!check_rights(R_ADMIN))
return
@@ -38,8 +38,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle RadioChatter") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_ai_voice_annoucements()
set name = "Hear/Silence AI Voice Announcements"
set category = "Preferences"
set name = "AI Voice Announcements"
set category = "Preferences.Hear/Silence"
set desc = "Toggle hearing AI annoucements in voice form or in text form"
prefs.sound ^= SOUND_AI_VOICE
prefs.save_preferences(src)
@@ -47,8 +47,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle AI Voice") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggleadminhelpsound()
set name = "Hear/Silence Admin Bwoinks"
set category = "Preferences"
set name = "Admin Bwoinks"
set category = "Preferences.Hear/Silence"
set desc = "Toggle hearing a notification when admin PMs are received"
if(!check_rights(R_ADMIN))
return
@@ -58,8 +58,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Admin Bwoinks") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/togglementorhelpsound()
set name = "Hear/Silence Mentorhelp Bwoinks"
set category = "Preferences"
set name = "Mentorhelp Bwoinks"
set category = "Preferences.Hear/Silence"
set desc = "Toggle hearing a notification when mentorhelps are received"
if(!check_rights(R_ADMIN|R_MENTOR))
return
@@ -69,8 +69,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Mentor Bwoinks") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/deadchat() // Deadchat toggle is usable by anyone.
set name = "Show/Hide Deadchat"
set category = "Preferences"
set name = "Deadchat"
set category = "Preferences.Show/Hide"
set desc ="Toggles seeing deadchat"
prefs.toggles ^= PREFTOGGLE_CHAT_DEAD
prefs.save_preferences(src)
@@ -83,8 +83,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Deadchat") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggleprayers()
set name = "Show/Hide Prayers"
set category = "Preferences"
set name = "Prayers"
set category = "Preferences.Show/Hide"
set desc = "Toggles seeing prayers"
prefs.toggles ^= PREFTOGGLE_CHAT_PRAYER
prefs.save_preferences(src)
@@ -92,8 +92,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Prayers") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggleprayernotify()
set name = "Hear/Silence Prayer Notification Sound"
set category = "Preferences"
set name = "Prayer Notification Sound"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing when prayers are made"
prefs.sound ^= SOUND_PRAYERNOTIFY
prefs.save_preferences(src)
@@ -101,8 +101,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Prayer Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/togglescoreboard()
set name = "Hide/Display End Round Scoreboard"
set category = "Preferences"
set name = "End Round Scoreboard"
set category = "Preferences.Show/Hide"
set desc = "Toggles displaying end of round scoreboard"
prefs.toggles ^= PREFTOGGLE_DISABLE_SCOREBOARD
prefs.save_preferences(src)
@@ -110,8 +110,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Scoreboard") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggletitlemusic()
set name = "Hear/Silence LobbyMusic"
set category = "Preferences"
set name = "LobbyMusic"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing the GameLobby music"
prefs.sound ^= SOUND_LOBBY
prefs.save_preferences(src)
@@ -126,8 +126,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Lobby Music") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/togglemidis()
set name = "Hear/Silence Midis"
set category = "Preferences"
set name = "Midis"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing sounds uploaded by admins"
prefs.sound ^= SOUND_MIDI
prefs.save_preferences(src)
@@ -140,8 +140,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle MIDIs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/listen_ooc()
set name = "Show/Hide OOC"
set category = "Preferences"
set name = "OOC (Out of Character)"
set category = "Preferences.Show/Hide"
set desc = "Toggles seeing OutOfCharacter chat"
prefs.toggles ^= PREFTOGGLE_CHAT_OOC
prefs.save_preferences(src)
@@ -150,8 +150,8 @@
/client/verb/listen_looc()
set name = "Show/Hide LOOC"
set category = "Preferences"
set name = "LOOC (Local Out of Character)"
set category = "Preferences.Show/Hide"
set desc = "Toggles seeing Local OutOfCharacter chat"
prefs.toggles ^= PREFTOGGLE_CHAT_LOOC
prefs.save_preferences(src)
@@ -160,8 +160,8 @@
/client/verb/Toggle_Soundscape() //All new ambience should be added here so it works with this verb until someone better at things comes up with a fix that isn't awful
set name = "Hear/Silence Ambience"
set category = "Preferences"
set name = "Ambience"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing ambient sound effects"
prefs.sound ^= SOUND_AMBIENCE
prefs.save_preferences(src)
@@ -174,8 +174,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Ambience") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/Toggle_Parallax_Dark() //All new ambience should be added here so it works with this verb until someone better at things comes up with a fix that isn't awful
set name = "Show/Hide Parallax in darkness"
set category = "Preferences"
set name = "Parallax in darkness"
set category = "Preferences.Show/Hide"
set desc = "If enabled, drawing parallax if you see in dark instead of black tiles."
prefs.toggles2 ^= PREFTOGGLE_2_PARALLAX_IN_DARKNESS
prefs.save_preferences(src)
@@ -187,8 +187,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Parallax Darkness") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/Toggle_Buzz() //No more headaches because headphones bump up shipambience.ogg to insanity levels.
set name = "Hear/Silence White Noise"
set category = "Preferences"
set name = "White Noise"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing ambient white noise"
prefs.sound ^= SOUND_BUZZ
prefs.save_preferences(src)
@@ -201,8 +201,8 @@
/client/verb/Toggle_Heartbeat() //to toggle off heartbeat sounds, in case they get too annoying
set name = "Hear/Silence Heartbeat"
set category = "Preferences"
set name = "Heartbeat"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing heart beating sound effects"
prefs.sound ^= SOUND_HEARTBEAT
prefs.save_preferences(src)
@@ -215,8 +215,8 @@
// This needs a toggle because you people are awful and spammed terrible music
/client/verb/toggle_instruments()
set name = "Hear/Silence Instruments"
set category = "Preferences"
set name = "Instruments"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing musical instruments like the violin and piano"
prefs.sound ^= SOUND_INSTRUMENTS
prefs.save_preferences(src)
@@ -227,16 +227,16 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Instruments") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_input()
set name = "Toggle TGUI Input"
set category = "Preferences"
set name = "TGUI Input"
set category = "Preferences.Toggle"
set desc = "Switches inputs between the TGUI and the standard one"
prefs.toggles2 ^= PREFTOGGLE_2_DISABLE_TGUI_INPUT
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_DISABLE_TGUI_INPUT) ? "no longer" : "now"] use TGUI Inputs.")
/client/verb/Toggle_disco() //to toggle off the disco machine locally, in case it gets too annoying
set name = "Hear/Silence Dance Machine"
set category = "Preferences"
set name = "Dance Machine"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing and dancing to the radiant dance machine"
prefs.sound ^= SOUND_DISCO
prefs.save_preferences(src)
@@ -255,8 +255,8 @@
prefs.ShowChoices(usr)
/client/verb/toggle_ghost_pda()
set name = "Show/Hide GhostPDA"
set category = "Preferences"
set name = "GhostPDA"
set category = "Preferences.Show/Hide"
set desc = "Toggle seeing PDA messages as an observer."
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTPDA
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTPDA) ? "see all PDA messages" : "no longer see PDA messages"].")
@@ -272,80 +272,64 @@
/client/verb/toggle_runechat()
set name = "Enable/Disable Runechat"
set category = "Preferences"
set name = "Runechat"
set category = "Preferences.Toggle"
set desc = "Toggle runechat messages"
prefs.toggles2 ^= PREFTOGGLE_2_RUNECHAT
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) ? "now see" : "no longer see"] floating chat messages.")
/client/verb/toggle_death_messages()
set name = "Show/Hide Death Notifications"
set category = "Preferences"
set name = "Death Notifications"
set category = "Preferences.Toggle"
set desc = "Toggle player death notifications"
prefs.toggles2 ^= PREFTOGGLE_2_DEATHMESSAGE
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_DEATHMESSAGE) ? "now" : "no longer"] see a notification in deadchat when a player dies.")
/client/verb/toggle_reverb()
set name = "Enable/Disable Reverb"
set category = "Preferences"
set name = "Reverb"
set category = "Preferences.Toggle"
set desc = "Toggle ingame reverb effects"
prefs.toggles2 ^= PREFTOGGLE_2_REVERB_DISABLE
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_REVERB_DISABLE) ? "no longer" : "now"] get reverb on ingame sounds.")
/client/verb/toggle_forced_white_runechat()
set name = "Toggle Runechat Colour Forcing"
set category = "Preferences"
set name = "Runechat Colour Forcing"
set category = "Preferences.Toggle"
set desc = "Toggles forcing your runechat colour to white"
prefs.toggles2 ^= PREFTOGGLE_2_FORCE_WHITE_RUNECHAT
prefs.save_preferences(src)
to_chat(src, "Your runechats will [(prefs.toggles2 & PREFTOGGLE_2_FORCE_WHITE_RUNECHAT) ? "now" : "no longer"] be forced to be white.")
/client/verb/toggle_simple_stat_panel()
set name = "Toggle Simple Status Panel"
set category = "Preferences"
set desc = "Toggles detailed information on the status panel"
prefs.toggles2 ^= PREFTOGGLE_2_SIMPLE_STAT_PANEL
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_SIMPLE_STAT_PANEL) ? "no longer" : "now"] get detailed information on the status panel.")
/client/verb/toggle_item_outlines()
set name = "Toggle Item Outlines"
set category = "Preferences"
set name = "Item Outlines"
set category = "Preferences.Toggle"
set desc = "Toggles seeing item outlines on hover."
prefs.toggles2 ^= PREFTOGGLE_2_SEE_ITEM_OUTLINES
prefs.save_preferences(src)
to_chat(usr, "You will [(prefs.toggles2 & PREFTOGGLE_2_SEE_ITEM_OUTLINES) ? "now" : "no longer"] see item outlines on hover.")
/client/verb/toggle_item_tooltips()
set name = "Toggle Hover-over Item Tooltips"
set category = "Preferences"
set name = "Hover-over Item Tooltips"
set category = "Preferences.Toggle"
set desc = "Toggles textboxes with the item descriptions after hovering on them in your inventory."
prefs.toggles2 ^= PREFTOGGLE_2_HIDE_ITEM_TOOLTIPS
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_HIDE_ITEM_TOOLTIPS) ? "no longer" : "now"] see item tooltips when you hover over items on your HUD.")
/mob/verb/toggle_anonmode()
set name = "Toggle Anonymous Mode"
set category = "Preferences"
set name = "Anonymous Mode"
set category = "Preferences.Toggle"
set desc = "Toggles showing your key in various parts of the game (deadchat, end round, etc)."
client.prefs.toggles2 ^= PREFTOGGLE_2_ANON
to_chat(src, "Your key will [(client.prefs.toggles2 & PREFTOGGLE_2_ANON) ? "no longer" : "now"] be shown in certain events (end round reports, deadchat, etc).</span>")
client.prefs.save_preferences(src)
/client/proc/toggle_mctabs()
set name = "Show/Hide MC Tabs"
set category = "Preferences"
set desc = "Shows or hides the MC tabs."
prefs.toggles2 ^= PREFTOGGLE_2_MC_TABS
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_MC_TABS) ? "now" : "no longer"] see the MC tabs on the top right.")
/client/verb/toggle_dance()
set name = "Toggle Disco Machine Dancing"
set category = "Preferences"
set name = "Disco Machine Dancing"
set category = "Preferences.Toggle"
set desc = "Toggles automatic dancing from the radiant dance machine"
prefs.toggles2 ^= PREFTOGGLE_2_DANCE_DISCO
prefs.save_preferences(src)
@@ -367,3 +351,11 @@
prefs.admin_sound_ckey_ignore -= choice
to_chat(usr, "You will now hear sounds from <code>[choice]</code> again.")
prefs.save_preferences(src)
/client/proc/toggle_mctabs()
set name = "MC Tab"
set category = "Preferences.Show/Hide"
set desc = "Shows or hides the MC tab."
prefs.toggles2 ^= PREFTOGGLE_2_MC_TAB
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_MC_TAB) ? "now" : "no longer"] see the MC tab on the top right.")