mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-07-28 07:30:39 +01:00
cd467444ef
Co-authored-by: silicons <no@you.cat>
72 lines
2.3 KiB
Plaintext
72 lines
2.3 KiB
Plaintext
#define STATE_DEFAULT 1
|
|
#define STATE_MESSAGELIST 2
|
|
#define STATE_VIEWMESSAGE 3
|
|
#define STATE_STATUSDISPLAY 4
|
|
#define STATE_ALERT_LEVEL 5
|
|
/datum/computer_file/program/comm
|
|
filename = "comm"
|
|
filedesc = "Command and Communications Program"
|
|
program_icon_state = "comm"
|
|
program_key_state = "med_key"
|
|
program_menu_icon = "flag"
|
|
tguimodule_path = /datum/tgui_module_old/communications/ntos
|
|
extended_desc = "Used to command and control. Can relay long-range communications. This program can not be run on tablet computers."
|
|
required_access = ACCESS_COMMAND_BRIDGE
|
|
requires_ntnet = 1
|
|
size = 12
|
|
usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP
|
|
network_destination = "long-range communication array"
|
|
var/datum/comm_message_listener/message_core = new
|
|
|
|
/datum/computer_file/program/comm/clone()
|
|
var/datum/computer_file/program/comm/temp = ..()
|
|
temp.message_core.messages = null
|
|
temp.message_core.messages = message_core.messages.Copy()
|
|
return temp
|
|
|
|
/*
|
|
General message handling stuff
|
|
*/
|
|
var/global/list/comm_message_listeners = list() //We first have to initialize list then we can use it.
|
|
var/global/datum/comm_message_listener/global_message_listener = new //May be used by admins
|
|
var/global/last_message_id = 0
|
|
|
|
/proc/get_comm_message_id()
|
|
last_message_id = last_message_id + 1
|
|
return last_message_id
|
|
|
|
/proc/post_comm_message(var/message_title, var/message_text)
|
|
var/list/message = list()
|
|
message["id"] = get_comm_message_id()
|
|
message["title"] = message_title
|
|
message["contents"] = message_text
|
|
|
|
for(var/datum/comm_message_listener/l in comm_message_listeners)
|
|
l.Add(message)
|
|
|
|
// todo: refactor
|
|
|
|
//Old console support
|
|
for (var/obj/machinery/computer/communications/comm in GLOB.machines)
|
|
if (!(comm.machine_stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
|
|
var/obj/item/paper/intercept = new /obj/item/paper( comm.loc )
|
|
intercept.name = message_title
|
|
intercept.info = message_text
|
|
|
|
comm.messagetitle.Add(message_title)
|
|
comm.messagetext.Add(message_text)
|
|
|
|
/datum/comm_message_listener
|
|
var/list/messages
|
|
|
|
/datum/comm_message_listener/New()
|
|
..()
|
|
messages = list()
|
|
comm_message_listeners.Add(src)
|
|
|
|
/datum/comm_message_listener/proc/Add(var/list/message)
|
|
messages[++messages.len] = message
|
|
|
|
/datum/comm_message_listener/proc/Remove(var/list/message)
|
|
messages -= list(message)
|