mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 00:55:20 +01:00
[MIRROR] Adds a "Remind me later" button for tutorials (#27832)
* Adds a "Remind me later" button for tutorials (#83064) ## About The Pull Request Dismisses the tutorial when the button is pushed ## Why It's Good For The Game Some tutorials may pop up at inopportune moments and this lets players deal with that, as well as when they bug out ## Changelog 🆑 qol: Added a "Remind me later" button for tutorials /🆑 --------- Co-authored-by: TiviPlus <572233640+TiviPlus@ users.noreply.com> * Adds a "Remind me later" button for tutorials --------- Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com> Co-authored-by: TiviPlus <572233640+TiviPlus@ users.noreply.com>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
VAR_PROTECTED/mob/user
|
||||
|
||||
VAR_PRIVATE/atom/movable/screen/tutorial_instruction/instruction_screen
|
||||
VAR_PRIVATE/atom/movable/screen/tutorial_skip/skip_button
|
||||
|
||||
/datum/tutorial/New(mob/user)
|
||||
src.user = user
|
||||
@@ -17,10 +18,11 @@
|
||||
|
||||
/datum/tutorial/Destroy(force)
|
||||
user.client?.screen -= instruction_screen
|
||||
user.client?.screen -= skip_button
|
||||
QDEL_NULL(instruction_screen)
|
||||
QDEL_NULL(skip_button)
|
||||
|
||||
user = null
|
||||
|
||||
return ..()
|
||||
|
||||
/// Gets the [`/datum/tutorial_manager`] that owns this tutorial.
|
||||
@@ -70,6 +72,7 @@
|
||||
|
||||
if (!isnull(instruction_screen))
|
||||
animate(instruction_screen, time = INSTRUCTION_SCREEN_DELAY, alpha = 0, easing = SINE_EASING)
|
||||
animate(skip_button, time = INSTRUCTION_SCREEN_DELAY, alpha = 0, easing = SINE_EASING)
|
||||
delay += INSTRUCTION_SCREEN_DELAY
|
||||
|
||||
QDEL_IN(src, delay)
|
||||
@@ -97,6 +100,10 @@
|
||||
/// If a message already exists, will fade it out and replace it.
|
||||
/datum/tutorial/proc/show_instruction(message)
|
||||
PROTECTED_PROC(TRUE)
|
||||
if(isnull(skip_button))
|
||||
skip_button = new
|
||||
user.client?.screen += skip_button
|
||||
RegisterSignal(skip_button, COMSIG_SCREEN_ELEMENT_CLICK, PROC_REF(dismiss))
|
||||
|
||||
if (isnull(instruction_screen))
|
||||
instruction_screen = new(null, null, message, user.client)
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/atom/movable/screen/tutorial_skip
|
||||
icon = 'icons/effects/alphacolors.dmi'
|
||||
icon_state = "white"
|
||||
screen_loc = "TOP,LEFT"
|
||||
color = COLOR_NEARLY_ALL_BLACK
|
||||
alpha = 0
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
layer = TUTORIAL_INSTRUCTIONS_LAYER
|
||||
var/atom/movable/screen/tutorial_skip_text/skip_text
|
||||
|
||||
/atom/movable/screen/tutorial_skip/Initialize(mapload, datum/hud/hud_owner)
|
||||
. = ..()
|
||||
transform = transform.Scale(9, 1)
|
||||
skip_text = new(null, hud_owner)
|
||||
vis_contents += skip_text
|
||||
maptext = MAPTEXT_VCR_OSD_MONO("<span style='font-size: 10px; text-align: left'>Remind me later</span>")
|
||||
animate(src, alpha = 245, time = 0.8 SECONDS, easing = SINE_EASING)
|
||||
|
||||
/atom/movable/screen/tutorial_skip/Destroy()
|
||||
QDEL_NULL(skip_text)
|
||||
return ..()
|
||||
|
||||
/atom/movable/screen/tutorial_skip_text
|
||||
alpha = 0
|
||||
layer = TUTORIAL_INSTRUCTIONS_LAYER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
maptext_height = 32
|
||||
maptext_width = 200
|
||||
maptext_x = 20
|
||||
maptext_y = 9
|
||||
|
||||
/atom/movable/screen/tutorial_skip_text/Initialize(mapload, datum/hud/hud_owner)
|
||||
. = ..()
|
||||
var/newtext = MAPTEXT_VCR_OSD_MONO("<span style='font-size: 10px; text-align: left'>Remind me later</span>")
|
||||
animate(src, alpha = 255, time = 0.5 SECONDS, maptext=newtext)
|
||||
Reference in New Issue
Block a user