mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
@@ -34,6 +34,8 @@
|
||||
return FALSE
|
||||
else
|
||||
new_alert = new alert_type()
|
||||
new_alert.category = category
|
||||
new_alert.owner = src
|
||||
new_alert.override_alerts = override
|
||||
if(override)
|
||||
new_alert.timeout = null
|
||||
@@ -56,19 +58,8 @@
|
||||
hud_used.reorganize_alerts()
|
||||
new_alert.transform = matrix(32, 6, MATRIX_TRANSLATE)
|
||||
animate(new_alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
|
||||
|
||||
if(new_alert.timeout)
|
||||
alert_timeout(new_alert, category)
|
||||
new_alert.timeout = world.time + new_alert.timeout - world.tick_lag
|
||||
return new_alert
|
||||
|
||||
/mob/proc/alert_timeout(var/obj/abstract/screen/alert/alert, category)
|
||||
if(!istype(alert) || !category)
|
||||
return
|
||||
spawn(alert.timeout)
|
||||
if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout)
|
||||
clear_alert(category)
|
||||
|
||||
// Proc to clear an existing alert.
|
||||
/mob/proc/clear_alert(category, clear_override = FALSE)
|
||||
var/obj/abstract/screen/alert/alert = alerts[category]
|
||||
@@ -76,10 +67,6 @@
|
||||
return FALSE
|
||||
if(alert.override_alerts && !clear_override)
|
||||
return FALSE
|
||||
alerts -= category
|
||||
if(client && hud_used)
|
||||
hud_used.reorganize_alerts()
|
||||
client.screen -= alert
|
||||
qdel(alert)
|
||||
|
||||
/mob/proc/clear_all_alerts()
|
||||
@@ -158,17 +145,33 @@ var/global/list/screen_alarms_locs = list(
|
||||
icon = 'icons/mob/screen_alarms.dmi'
|
||||
icon_state = "default"
|
||||
mouse_opacity = TRUE
|
||||
var/severity
|
||||
var/mob/owner
|
||||
var/category
|
||||
var/timeout = null //If set to a number, this alert will clear itself after that many deciseconds
|
||||
var/severity = null
|
||||
var/override_alerts = FALSE //If it is overriding other alerts of the same type
|
||||
var/alerttooltipstyle = null
|
||||
var/emph = FALSE //Whether to have a flashy outline
|
||||
|
||||
/obj/abstract/screen/alert/New()
|
||||
..()
|
||||
if(timeout)
|
||||
add_timer(new /callback(src, .proc/qdel_self), timeout)
|
||||
if(emph)
|
||||
overlays.Add(image('icons/mob/screen_alarms.dmi', icon_state = "emph_outline"))
|
||||
|
||||
/obj/abstract/screen/alert/proc/qdel_self()
|
||||
qdel(src)
|
||||
|
||||
/obj/abstract/screen/alert/Destroy()
|
||||
if(owner)
|
||||
owner.alerts -= category
|
||||
if(owner.client && owner.hud_used)
|
||||
owner.hud_used.reorganize_alerts()
|
||||
owner.client.screen -= src
|
||||
owner = null
|
||||
..()
|
||||
|
||||
/obj/abstract/screen/alert/Click(location, control, params)
|
||||
if(!usr || !usr.client)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user