mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Airlock controller rewrite
- /datum/computer/file/embedded_program moved from embedded_controller_base.dm to code/game/machinery/embedded_controller/airlock_program.dm - embedded_controller_base.dm cleaned up and identical parts of the controller subtypes were moved here - embedded_controller subtypes moved to code/game/machinery/embedded_controller/airlock_controllers.dm - Added nanoUI templates for airlock controllers - Added a couple of classes to nano/css/shared.css for colouring buttons - Minor map update to maintain airlock compatibility and fix a broken airlock near virology
This commit is contained in:
@@ -1,84 +1,98 @@
|
||||
datum/computer/file/embedded_program
|
||||
var/list/memory = list()
|
||||
var/state
|
||||
var/obj/machinery/embedded_controller/master
|
||||
|
||||
proc
|
||||
post_signal(datum/signal/signal, comm_line)
|
||||
if(master)
|
||||
master.post_signal(signal, comm_line)
|
||||
else
|
||||
del(signal)
|
||||
|
||||
receive_user_command(command)
|
||||
|
||||
receive_signal(datum/signal/signal, receive_method, receive_param)
|
||||
return null
|
||||
|
||||
process()
|
||||
return 0
|
||||
|
||||
obj/machinery/embedded_controller
|
||||
/obj/machinery/embedded_controller
|
||||
var/datum/computer/file/embedded_program/program
|
||||
|
||||
name = "Embedded Controller"
|
||||
density = 0
|
||||
anchored = 1
|
||||
|
||||
var/on = 1
|
||||
|
||||
attack_hand(mob/user)
|
||||
user << browse(return_text(), "window=computer")
|
||||
user.set_machine(src)
|
||||
onclose(user, "computer")
|
||||
/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line)
|
||||
return 0
|
||||
|
||||
update_icon()
|
||||
proc/return_text()
|
||||
/obj/machinery/embedded_controller/receive_signal(datum/signal/signal, receive_method, receive_param)
|
||||
if(!signal || signal.encryption) return
|
||||
|
||||
proc/post_signal(datum/signal/signal, comm_line)
|
||||
return 0
|
||||
|
||||
receive_signal(datum/signal/signal, receive_method, receive_param)
|
||||
if(!signal || signal.encryption) return
|
||||
|
||||
if(program)
|
||||
program.receive_signal(signal, receive_method, receive_param)
|
||||
if(program)
|
||||
program.receive_signal(signal, receive_method, receive_param)
|
||||
//spawn(5) program.process() //no, program.process sends some signals and machines respond and we here again and we lag -rastaf0
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return 0
|
||||
/obj/machinery/embedded_controller/process()
|
||||
if(program)
|
||||
program.process()
|
||||
|
||||
if(program)
|
||||
program.receive_user_command(href_list["command"])
|
||||
spawn(5) program.process()
|
||||
update_icon()
|
||||
src.updateDialog()
|
||||
|
||||
usr.set_machine(src)
|
||||
spawn(5) src.updateDialog()
|
||||
/obj/machinery/embedded_controller/attack_ai(mob/user as mob)
|
||||
src.ui_interact(user)
|
||||
|
||||
process()
|
||||
if(program)
|
||||
program.process()
|
||||
/obj/machinery/embedded_controller/attack_paw(mob/user as mob)
|
||||
user << "You do not have the dexterity to use this."
|
||||
return
|
||||
|
||||
update_icon()
|
||||
src.updateDialog()
|
||||
/obj/machinery/embedded_controller/attack_hand(mob/user as mob)
|
||||
src.ui_interact(user)
|
||||
|
||||
radio
|
||||
var/frequency
|
||||
var/datum/radio_frequency/radio_connection
|
||||
/obj/machinery/embedded_controller/ui_interact()
|
||||
return
|
||||
|
||||
initialize()
|
||||
set_frequency(frequency)
|
||||
/obj/machinery/embedded_controller/radio
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_control_standby"
|
||||
power_channel = ENVIRON
|
||||
density = 0
|
||||
|
||||
post_signal(datum/signal/signal)
|
||||
signal.transmission_method = TRANSMISSION_RADIO
|
||||
if(radio_connection)
|
||||
return radio_connection.post_signal(src, signal)
|
||||
else
|
||||
del(signal)
|
||||
// Setup parameters only
|
||||
var/id_tag
|
||||
var/tag_exterior_door
|
||||
var/tag_interior_door
|
||||
var/tag_airpump
|
||||
var/tag_chamber_sensor
|
||||
var/tag_exterior_sensor
|
||||
var/tag_interior_sensor
|
||||
var/tag_secure = 0
|
||||
|
||||
proc
|
||||
set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency)
|
||||
var/frequency = 1379
|
||||
var/datum/radio_frequency/radio_connection
|
||||
unacidable = 1
|
||||
|
||||
/obj/machinery/embedded_controller/radio/initialize()
|
||||
set_frequency(frequency)
|
||||
var/datum/computer/file/embedded_program/new_prog = new
|
||||
|
||||
new_prog.id_tag = id_tag
|
||||
new_prog.tag_exterior_door = tag_exterior_door
|
||||
new_prog.tag_interior_door = tag_interior_door
|
||||
new_prog.tag_airpump = tag_airpump
|
||||
new_prog.tag_chamber_sensor = tag_chamber_sensor
|
||||
new_prog.tag_exterior_sensor = tag_exterior_sensor
|
||||
new_prog.tag_interior_sensor = tag_interior_sensor
|
||||
new_prog.memory["secure"] = tag_secure
|
||||
|
||||
new_prog.master = src
|
||||
program = new_prog
|
||||
|
||||
spawn(10)
|
||||
program.signalDoor(tag_exterior_door, "update") //signals connected doors to update their status
|
||||
program.signalDoor(tag_interior_door, "update")
|
||||
|
||||
/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)
|
||||
signal.transmission_method = TRANSMISSION_RADIO
|
||||
if(radio_connection)
|
||||
return radio_connection.post_signal(src, signal)
|
||||
else
|
||||
del(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)
|
||||
Reference in New Issue
Block a user