From 3e6ad4a92d56bda6bcc3d1b9309929e2dcc65c80 Mon Sep 17 00:00:00 2001 From: Spaghetti-bit <60483458+Spaghetti-bit@users.noreply.github.com> Date: Sat, 1 Jun 2024 14:50:15 -0600 Subject: [PATCH] [PORT] Fullscreen Port from BayStation12 / TG (#25587) * Changes necrosis_prob to use decaylevel. * Reverts previous change to create a new branch. * Ports over full screen from BayStation12. * Adds fullscreen keybind. F11 to toggle. * Apply suggestions from code review I want to strange @1080p Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com> Signed-off-by: Spaghetti-bit <60483458+Spaghetti-bit@users.noreply.github.com> * Makes fullscreen to non-fullscreen more seamless. Still has to readjust the chat box size similar to how someone would do it if they manually adjusted their chatbox size. This is currently unavoidable. * Fixing lint angy * Gives the user input in the chat when they toggle fullscreen on or off. * gives the user a tip on how to enable and disable fullscreen * readability --------- Signed-off-by: Spaghetti-bit <60483458+Spaghetti-bit@users.noreply.github.com> Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com> --- code/datums/keybindings/client.dm | 8 ++++++++ code/modules/client/client_defines.dm | 3 +++ code/modules/client/client_procs.dm | 25 +++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/code/datums/keybindings/client.dm b/code/datums/keybindings/client.dm index 23a89404931..ac39a724cef 100644 --- a/code/datums/keybindings/client.dm +++ b/code/datums/keybindings/client.dm @@ -9,6 +9,14 @@ . = ..() C.adminhelp() +/datum/keybinding/client/toggle_fullscreen + name ="Toggle Fullscreen" + keys = list("F11") + +/datum/keybinding/client/toggle_fullscreen/down(client/C) + . = ..() + C.toggle_fullscreen() + /datum/keybinding/client/toggle_min_hud name = "Toggle Minimal HUD" keys = list("F12") diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index d47f82b5e02..1f724e7386a 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -225,6 +225,9 @@ /// Our object window datum. It stores info about and handles behavior for the object tab var/datum/object_window_info/obj_window + /// The current fullscreen state for /client/toggle_fullscreen() + var/fullscreen = FALSE + /client/vv_edit_var(var_name, var_value) switch(var_name) // I know we will never be in a world where admins are editing client vars to let people bypass TOS diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 73c0d726df4..02145bca38e 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -1270,6 +1270,31 @@ class = "unknown" debug_variables(stat_item) message_admins("Admin [key_name_admin(usr)] is debugging the [stat_item] [class].") +/** +* Handles fullscreen on the client. +*/ +/client/verb/toggle_fullscreen() + set name = "Toggle Fullscreen" + set category = "OOC" + + fullscreen = !fullscreen + + if(fullscreen) + winset(usr, "mainwindow", "titlebar=false") + winset(usr, "mainwindow", "can-resize=false") + winset(usr, "mainwindow", "is-maximized=false") // Ensures the window doesn't get stretched oddly. + winset(usr, "mainwindow", "is-maximized=true") + winset(usr, "mainwindow", "is-fullscreen=true") + winset(usr, "mainwindow", "menu=") // Top-Menu bar [DISABLED] + else + winset(usr, "mainwindow", "titlebar=true") + winset(usr, "mainwindow", "can-resize=true") + winset(usr, "mainwindow", "is-fullscreen=false") // Order matters. Fullscreen [OFF] -> Maximize [TRUE] + winset(usr, "mainwindow", "is-maximized=true") + winset(usr, "mainwindow", "menu=menu") + var/fullscreen_state = fullscreen ? "on" : "off" + to_chat(usr, "Toggled fullscreen [fullscreen_state]. To Toggle fullscreen; Go to the tab OOC -> Toggle fullscreen or press F11") + fit_viewport() /client/proc/try_open_reagent_editor(atom/target) var/target_UID = target.UID()