Fix a bunch of html UI's for 516 (#88917)

## About The Pull Request
Moved broken on 516 UI's to browser datum
They now work and have a dark theme
Most of them are admin ones (All except 1)

I tried to check all the raw HTML UI's by typing `<< browse(` into the
VSC search and going through each element, but I might have missed
something.

What worked as it was, I didn't touch, except for the Dynamic control
UI's

## Why It's Good For The Game
Admin can do their things on 516
Coders/Mappers can debug some stuff on 516


![image](https://github.com/user-attachments/assets/013508d1-18cc-4001-92e4-0bc554960f86)

## Changelog

🆑
fix: Admin/Debug UI's (Especially the Game Panel) now work properly on
Byond 516, instead of showing raw HTML
/🆑
This commit is contained in:
Aylong
2025-01-06 18:13:48 -08:00
committed by GitHub
parent e2cec953c3
commit 1795c18aea
11 changed files with 92 additions and 63 deletions
+37 -31
View File
@@ -19,7 +19,7 @@
if(!check_rights(0))
return
var/dat = "<center><B>Game Panel</B></center><hr>"
var/dat
if(SSticker.current_state <= GAME_STATE_PREGAME)
dat += "<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_manage=1'>(Manage Dynamic Rulesets)</A><br>"
dat += "<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_roundstart=1'>(Force Roundstart Rulesets)</A><br>"
@@ -28,12 +28,12 @@
dat += {"<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_roundstart_remove=[text_ref(rule)]'>-> [rule.name] <-</A><br>"}
dat += "<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_roundstart_clear=1'>(Clear Rulesets)</A><br>"
dat += "<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_options=1'>(Dynamic mode options)</A><br>"
dat += "<hr/>"
dat += "<hr/>"
if(SSticker.IsRoundInProgress())
dat += "<a href='byond://?src=[REF(src)];[HrefToken()];gamemode_panel=1'>(Game Mode Panel)</a><BR>"
dat += "<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_manage=1'>(Manage Dynamic Rulesets)</A><br>"
dat += "<hr/>"
dat += {"
<BR>
<A href='byond://?src=[REF(src)];[HrefToken()];create_object=1'>Create Object</A><br>
<A href='byond://?src=[REF(src)];[HrefToken()];quick_create_object=1'>Quick Create Object</A><br>
<A href='byond://?src=[REF(src)];[HrefToken()];create_turf=1'>Create Turf</A><br>
@@ -43,7 +43,9 @@
if(marked_datum && istype(marked_datum, /atom))
dat += "<A href='byond://?src=[REF(src)];[HrefToken()];dupe_marked_datum=1'>Duplicate Marked Datum</A><br>"
usr << browse(dat, "window=admin2;size=240x280")
var/datum/browser/browser = new(usr, "admin2", "Game Panel", 240, 280)
browser.set_content(dat)
browser.open()
return
////////////////////////////////////////////////////////////////////////////////////////////////ADMIN HELPER PROCS
@@ -104,10 +106,7 @@ ADMIN_VERB(spawn_cargo, R_SPAWN, "Spawn Cargo", "Spawn a cargo crate.", ADMIN_CA
BLACKBOX_LOG_ADMIN_VERB("Spawn Cargo")
/datum/admins/proc/dynamic_mode_options(mob/user)
var/dat = {"
<center><B><h2>Dynamic Mode Options</h2></B></center><hr>
<br/>
<h3>Common options</h3>
var/dat = {"<h3>Common options</h3>
<i>All these options can be changed midround.</i> <br/>
<br/>
<b>Force extended:</b> - Option is <a href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_force_extended=1'> <b>[GLOB.dynamic_forced_extended ? "ON" : "OFF"]</a></b>.
@@ -122,18 +121,22 @@ ADMIN_VERB(spawn_cargo, R_SPAWN, "Spawn Cargo", "Spawn a cargo crate.", ADMIN_CA
<br/>
<b>Stacking threeshold:</b> Current value : <a href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_stacking_limit=1'><b>[GLOB.dynamic_stacking_limit]</b></a>.
<br/>The threshold at which "round-ender" rulesets will stack. A value higher than 100 ensure this never happens. <br/>
"}
"}
user << browse(dat, "window=dyn_mode_options;size=900x650")
var/datum/browser/browser = new(user, "dyn_mode_options", "Dynamic Mode Options", 900, 650)
browser.set_content(dat)
browser.open()
/datum/admins/proc/dynamic_ruleset_manager(mob/user)
var/dat = "<center><B><h2>Dynamic Ruleset Management</h2></B></center><hr>\
Change these options to forcibly enable or disable dynamic rulesets.<br/>\
Disabled rulesets will never run, even if they would otherwise be valid.<br/>\
Enabled rulesets will run even if the qualifying minimum of threat or player count is not present, this does not guarantee that they will necessarily be chosen (for example their weight may be set to 0 in config).<br/>\
\[<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_all_on=1'>force enable all</A> / \
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_all_off=1'>force disable all</A> / \
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_all_reset=1'>reset all</A>\]"
var/datum/browser/browser = new(user, "dyn_mode_options", "Dynamic Ruleset Management", 900, 650)
var/dat = {"
Change these options to forcibly enable or disable dynamic rulesets.<br/>
Disabled rulesets will never run, even if they would otherwise be valid.<br/>
Enabled rulesets will run even if the qualifying minimum of threat or player count is not present, this does not guarantee that they will necessarily be chosen (for example their weight may be set to 0 in config).<br/>
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_all_on=1'>force enable all</A>
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_all_off=1'>force disable all</A>
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_all_reset=1'>reset all</A>
"}
if (SSticker.current_state <= GAME_STATE_PREGAME) // Don't bother displaying after the round has started
var/static/list/rulesets_by_context = list()
@@ -146,29 +149,31 @@ ADMIN_VERB(spawn_cargo, R_SPAWN, "Spawn Cargo", "Spawn a cargo crate.", ADMIN_CA
dat += dynamic_ruleset_category_pre_start_display("Roundstart", rulesets_by_context[ROUNDSTART_RULESET])
dat += dynamic_ruleset_category_pre_start_display("Latejoin", rulesets_by_context[LATEJOIN_RULESET])
dat += dynamic_ruleset_category_pre_start_display("Midround", rulesets_by_context[MIDROUND_RULESET])
user << browse(dat, "window=dyn_mode_options;size=900x650")
browser.set_content(dat)
browser.open()
return
var/pop_count = length(GLOB.alive_player_list)
var/threat_level = SSdynamic.threat_level
dat += dynamic_ruleset_category_during_round_display("Latejoin", SSdynamic.latejoin_rules, pop_count, threat_level)
dat += dynamic_ruleset_category_during_round_display("Midround", SSdynamic.midround_rules, pop_count, threat_level)
user << browse(dat, "window=dyn_mode_options;size=900x650")
browser.set_content(dat)
browser.open()
/datum/admins/proc/dynamic_ruleset_category_pre_start_display(title, list/rules)
var/dat = "<B><h3>[title]</h3></B><table class='ml-2'>"
for (var/datum/dynamic_ruleset/rule as anything in rules)
var/forced = GLOB.dynamic_forced_rulesets[rule] || RULESET_NOT_FORCED
var/color = COLOR_BLACK
var/color = COLOR_SILVER
switch (forced)
if (RULESET_FORCE_ENABLED)
color = COLOR_GREEN
if (RULESET_FORCE_DISABLED)
color = COLOR_RED
dat += "<tr><td><b>[initial(rule.name)]</b></td><td>\[<font color=[color]>[forced]</font>\]</td><td>\[\
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_on=[text_ref(rule)]'>force enabled</A> /\
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_off=[text_ref(rule)]'>force disabled</A> /\
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_reset=[text_ref(rule)]'>reset</A>\]</td></tr>"
dat += "<tr><td><b>[initial(rule.name)]</b></td><td>\[<font color=[color]> [forced] </font>\]</td><td> \
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_on=[text_ref(rule)]'>force enabled</A> \
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_off=[text_ref(rule)]'>force disabled</A> \
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_reset=[text_ref(rule)]'>reset</A></td></tr>"
dat += "</table>"
return dat
@@ -196,13 +201,14 @@ ADMIN_VERB(spawn_cargo, R_SPAWN, "Spawn Cargo", "Spawn a cargo crate.", ADMIN_CA
explanation = " - Forcibly enabled"
active = active ? "Active" : "Inactive"
dat += "<tr><td><b>[rule.name]</b></td>\
<td>\[Weight : [rule.weight]\]\
<td>\[<font color=[color]>[active][explanation]</font>\]</td><td>\[\
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_on=[text_ref(rule.type)]'>force enabled</A> /\
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_off=[text_ref(rule.type)]'>force disabled</A> /\
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_reset=[text_ref(rule.type)]'>reset</A>\]</td>\
<td>\[<A href='byond://?src=[REF(src)];[HrefToken()];f_inspect_ruleset=[text_ref(rule)]'>VV</A>\]</td></tr>"
dat += {"<tr><td><b>[rule.name]</b></td>
<td>\[ Weight: [rule.weight] \]
<td>\[<font color=[color]> [active][explanation] </font>\]</td><td>
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_on=[text_ref(rule.type)]'>force enabled</A>
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_off=[text_ref(rule.type)]'>force disabled</A>
<A href='byond://?src=[REF(src)];[HrefToken()];f_dynamic_ruleset_force_reset=[text_ref(rule.type)]'>reset</A></td>
<td><A href='byond://?src=[REF(src)];[HrefToken()];f_inspect_ruleset=[text_ref(rule)]'>VV</A></td></tr>
"}
dat += "</table>"
return dat