Files
CHOMPStation2/code/game/machinery/embedded_controller/embedded_controller_base.dm
ShadowLarkens 951f37d2e3 TGUI Engineering: Squashed Edition (Commits Below)
TGUI APCs

 TGUI vending machines

 Fix AI default_tgui_interaction

 TGUI Airlocks

 Station & Atmospheric Alert TGUI + Misc NTOS-TGUI Fixes

 TGUI Air Alarms & Central Atmospheric Control

 Airlock TGUI

 TG... got rid of UI for fire alarm. í´·

 TGUI Gas Heating/Cooling System

 TGUI Gas Pump & Passive Gate + Fixes

 TGUI Omni Atmospherics

 TGUI Pipe Dispensers & RPD

 TGUI IntelliCore & Vending Fix

 TGUI Handheld Tanks

 TGUI Portable Pump & Scrubber

 TGUI Tank Dispenser & Canisters

 TGUI Radios

 TGUI SMES & Air Alarm adjustment

 Tweak vending machine interfaces a tad

 TGUI Algae Farm

 TGUI general_air_control

 - Distro & Waste Console
 - Riot Control Console
 - Atmos Intake Console
 - Engine Cooling Console

 TGUI Heavy Scrubber Control (and body scanner fix)

 TGUI trinary devices & shutoff monitor

 TGUI Telecomms Log Browser

 TGUI Telecomms Machine Browser

 TGUI Spaceheater Internal Panel

 TGUI Gravity Generator

 TGUI Id Cards & Fix ID Card Images

 TGUI Id Card Redesign

 TGUI Turbolift

 TGUI Suit Cycler & Suit Storage Unit & Vending Fixes

 TGUI Power Monitor

 TGUI Signalers

 TGUI Employment Records

 TGUI Drone Console

 TGUI RIGSuits

 TGUI PA & PACMAN, and Margin Fix

 TGUI Solar Panels & Fix Power Monitor

 Adjust TGUI modules & their interaction with NTOS

 TGUI RCON

 TGUI Message Monitor

 Bump TGUI line limit to 120 (ParadiseSS13/Paradise#14002)

 TGUI Exonet & NTNet Relay

 TGUI Telecomms Multitool Menu

 TGUI Shield Capacitor & Shield Generator

 TGUI Supermatter-everything & Refactors
2020-08-09 04:46:31 -07:00

109 lines
3.2 KiB
Plaintext

/obj/machinery/embedded_controller
name = "Embedded Controller"
anchored = 1
use_power = USE_POWER_IDLE
idle_power_usage = 10
var/datum/computer/file/embedded_program/program //the currently executing program
var/list/valid_actions = list()
var/on = 1
/obj/machinery/embedded_controller/Initialize()
if(ispath(program))
program = new program(src)
return ..()
/obj/machinery/embedded_controller/Destroy()
if(istype(program))
qdel(program) // the program will clear the ref in its Destroy
return ..()
/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line)
return 0
/obj/machinery/embedded_controller/receive_signal(datum/signal/signal, receive_method, receive_param)
if(!signal || signal.encryption) return
if(program)
program.receive_signal(signal, receive_method, receive_param)
/obj/machinery/embedded_controller/Topic()
. = ..()
stack_trace("WARNING: Embedded controller [src] ([type]) had Topic() called unexpectedly. Please report this.")
/obj/machinery/embedded_controller/tgui_act(action, params)
if(..())
return TRUE
if(LAZYLEN(valid_actions))
if(action in valid_actions)
program.receive_user_command(action)
if(usr)
add_fingerprint(usr)
/obj/machinery/embedded_controller/process()
if(program)
program.process()
update_icon()
/obj/machinery/embedded_controller/attack_ai(mob/user as mob)
tgui_interact(user)
/obj/machinery/embedded_controller/attack_hand(mob/user as mob)
if(!user.IsAdvancedToolUser())
return 0
tgui_interact(user)
/obj/machinery/embedded_controller/tgui_interact(mob/user, datum/tgui/ui = null)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "EmbeddedController", src)
ui.open()
//
// Embedded controller with a radio! (Most things (All things?) use this)
//
/obj/machinery/embedded_controller/radio
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "airlock_control_standby"
power_channel = ENVIRON
density = 0
unacidable = 1
var/id_tag
//var/radio_power_use = 50 //power used to xmit signals
var/frequency = 1379
var/radio_filter = null
var/datum/radio_frequency/radio_connection
/obj/machinery/embedded_controller/radio/Initialize()
set_frequency(frequency) // Set it before parent instantiates program
. = ..()
/obj/machinery/embedded_controller/radio/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
/obj/machinery/embedded_controller/radio/update_icon()
if(on && program)
if(program.memory["processing"])
icon_state = "airlock_control_process"
else
icon_state = "airlock_control_standby"
else
icon_state = "airlock_control_off"
/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal, var/radio_filter = null)
signal.transmission_method = TRANSMISSION_RADIO
if(radio_connection)
//use_power(radio_power_use) //neat idea, but causes way too much lag.
return radio_connection.post_signal(src, signal, radio_filter)
else
qdel(signal)
/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, radio_filter)