mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-18 13:04:45 +00:00
* Adds MC initialization stages. Earlier stages can fire while later ones init. Removes TICK_LIMIT_MC_INIT config for barely doing anything to speed up init and being inconvenient to work with if fires and inits can happen at the same time.
99 lines
2.6 KiB
Plaintext
99 lines
2.6 KiB
Plaintext
/*!
|
|
* Copyright (c) 2020 Aleksej Komarov
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
/**
|
|
* Circumvents the message queue and sends the message
|
|
* to the recipient (target) as soon as possible.
|
|
*/
|
|
/proc/to_chat_immediate(
|
|
target,
|
|
html,
|
|
type = null,
|
|
text = null,
|
|
avoid_highlighting = FALSE,
|
|
// FIXME: These flags are now pointless and have no effect
|
|
handle_whitespace = TRUE,
|
|
trailing_newline = TRUE,
|
|
confidential = FALSE
|
|
)
|
|
// Useful where the integer 0 is the entire message. Use case is enabling to_chat(target, some_boolean) while preventing to_chat(target, "")
|
|
html = "[html]"
|
|
text = "[text]"
|
|
|
|
if(!target)
|
|
return
|
|
if(!html && !text)
|
|
CRASH("Empty or null string in to_chat proc call.")
|
|
if(target == world)
|
|
target = GLOB.clients
|
|
|
|
// Build a message
|
|
var/message = list()
|
|
if(type) message["type"] = type
|
|
if(text) message["text"] = text
|
|
if(html) message["html"] = html
|
|
if(avoid_highlighting) message["avoidHighlighting"] = avoid_highlighting
|
|
var/message_blob = TGUI_CREATE_MESSAGE("chat/message", message)
|
|
var/message_html = message_to_html(message)
|
|
if(islist(target))
|
|
for(var/_target in target)
|
|
var/client/client = CLIENT_FROM_VAR(_target)
|
|
if(client)
|
|
// Send to tgchat
|
|
client.tgui_panel?.window.send_raw_message(message_blob)
|
|
// Send to old chat
|
|
SEND_TEXT(client, message_html)
|
|
return
|
|
var/client/client = CLIENT_FROM_VAR(target)
|
|
if(client)
|
|
// Send to tgchat
|
|
client.tgui_panel?.window.send_raw_message(message_blob)
|
|
// Send to old chat
|
|
SEND_TEXT(client, message_html)
|
|
|
|
/**
|
|
* Sends the message to the recipient (target).
|
|
*
|
|
* Recommended way to write to_chat calls:
|
|
* ```
|
|
* to_chat(client,
|
|
* type = MESSAGE_TYPE_INFO,
|
|
* html = "You have found <strong>[object]</strong>")
|
|
* ```
|
|
*/
|
|
/proc/to_chat(
|
|
target,
|
|
html,
|
|
type = null,
|
|
text = null,
|
|
avoid_highlighting = FALSE,
|
|
// FIXME: These flags are now pointless and have no effect
|
|
handle_whitespace = TRUE,
|
|
trailing_newline = TRUE,
|
|
confidential = FALSE
|
|
)
|
|
if(isnull(Master) || !SSchat?.initialized || !MC_RUNNING(SSchat.init_stage))
|
|
to_chat_immediate(target, html, type, text, avoid_highlighting)
|
|
return
|
|
|
|
// Useful where the integer 0 is the entire message. Use case is enabling to_chat(target, some_boolean) while preventing to_chat(target, "")
|
|
html = "[html]"
|
|
text = "[text]"
|
|
|
|
if(!target)
|
|
return
|
|
if(!html && !text)
|
|
CRASH("Empty or null string in to_chat proc call.")
|
|
if(target == world)
|
|
target = GLOB.clients
|
|
|
|
// Build a message
|
|
var/message = list()
|
|
if(type) message["type"] = type
|
|
if(text) message["text"] = text
|
|
if(html) message["html"] = html
|
|
if(avoid_highlighting) message["avoidHighlighting"] = avoid_highlighting
|
|
SSchat.queue(target, message)
|