Standardises all files from CRLF to LF
This commit is contained in:
@@ -1,315 +1,315 @@
|
||||
#define CLOSING 1
|
||||
#define OPENING 2
|
||||
#define CYCLE 3
|
||||
#define CYCLE_EXTERIOR 4
|
||||
#define CYCLE_INTERIOR 5
|
||||
|
||||
/obj/machinery/doorButtons
|
||||
power_channel = ENVIRON
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/idSelf
|
||||
|
||||
/obj/machinery/doorButtons/attackby(obj/O, mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/doorButtons/proc/findObjsByTag()
|
||||
return
|
||||
|
||||
/obj/machinery/doorButtons/Initialize()
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/machinery/doorButtons/LateInitialize()
|
||||
findObjsByTag()
|
||||
|
||||
/obj/machinery/doorButtons/emag_act(mob/user)
|
||||
. = ..()
|
||||
if(obj_flags & EMAGGED)
|
||||
return
|
||||
obj_flags |= EMAGGED
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
playsound(src, "sparks", 100, 1)
|
||||
to_chat(user, "<span class='warning'>You short out the access controller.</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/doorButtons/proc/removeMe()
|
||||
|
||||
|
||||
/obj/machinery/doorButtons/access_button
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "access_button_standby"
|
||||
name = "access button"
|
||||
desc = "A button used for the explicit purpose of opening an airlock."
|
||||
var/idDoor
|
||||
var/obj/machinery/door/airlock/door
|
||||
var/obj/machinery/doorButtons/airlock_controller/controller
|
||||
var/busy
|
||||
|
||||
/obj/machinery/doorButtons/access_button/findObjsByTag()
|
||||
for(var/obj/machinery/doorButtons/airlock_controller/A in GLOB.machines)
|
||||
if(A.idSelf == idSelf)
|
||||
controller = A
|
||||
break
|
||||
for(var/obj/machinery/door/airlock/I in GLOB.machines)
|
||||
if(I.id_tag == idDoor)
|
||||
door = I
|
||||
break
|
||||
|
||||
/obj/machinery/doorButtons/access_button/interact(mob/user)
|
||||
if(busy)
|
||||
return
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
if(controller && !controller.busy && door)
|
||||
if(controller.stat & NOPOWER)
|
||||
return
|
||||
busy = TRUE
|
||||
update_icon()
|
||||
if(door.density)
|
||||
if(!controller.exteriorAirlock || !controller.interiorAirlock)
|
||||
controller.onlyOpen(door)
|
||||
else
|
||||
if(controller.exteriorAirlock.density && controller.interiorAirlock.density)
|
||||
controller.onlyOpen(door)
|
||||
else
|
||||
controller.cycleClose(door)
|
||||
else
|
||||
controller.onlyClose(door)
|
||||
sleep(20)
|
||||
busy = FALSE
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/doorButtons/access_button/update_icon()
|
||||
if(stat & NOPOWER)
|
||||
icon_state = "access_button_off"
|
||||
else
|
||||
if(busy)
|
||||
icon_state = "access_button_cycle"
|
||||
else
|
||||
icon_state = "access_button_standby"
|
||||
|
||||
/obj/machinery/doorButtons/access_button/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/doorButtons/access_button/removeMe(obj/O)
|
||||
if(O == door)
|
||||
door = null
|
||||
|
||||
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "access_control_standby"
|
||||
name = "access console"
|
||||
desc = "A small console that can cycle opening between two airlocks."
|
||||
var/obj/machinery/door/airlock/interiorAirlock
|
||||
var/obj/machinery/door/airlock/exteriorAirlock
|
||||
var/idInterior
|
||||
var/idExterior
|
||||
var/busy
|
||||
var/lostPower
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/removeMe(obj/O)
|
||||
if(O == interiorAirlock)
|
||||
interiorAirlock = null
|
||||
else if(O == exteriorAirlock)
|
||||
exteriorAirlock = null
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/Destroy()
|
||||
for(var/obj/machinery/doorButtons/access_button/A in GLOB.machines)
|
||||
if(A.controller == src)
|
||||
A.controller = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if(busy)
|
||||
return
|
||||
if(!allowed(usr))
|
||||
to_chat(usr, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
switch(href_list["command"])
|
||||
if("close_exterior")
|
||||
onlyClose(exteriorAirlock)
|
||||
if("close_interior")
|
||||
onlyClose(interiorAirlock)
|
||||
if("cycle_exterior")
|
||||
cycleClose(exteriorAirlock)
|
||||
if("cycle_interior")
|
||||
cycleClose(interiorAirlock)
|
||||
if("open_exterior")
|
||||
onlyOpen(exteriorAirlock)
|
||||
if("open_interior")
|
||||
onlyOpen(interiorAirlock)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/onlyOpen(obj/machinery/door/airlock/A)
|
||||
if(A)
|
||||
busy = CLOSING
|
||||
update_icon()
|
||||
openDoor(A)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/onlyClose(obj/machinery/door/airlock/A)
|
||||
if(A)
|
||||
busy = CLOSING
|
||||
closeDoor(A)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/closeDoor(obj/machinery/door/airlock/A)
|
||||
set waitfor = FALSE
|
||||
if(A.density)
|
||||
goIdle()
|
||||
return 0
|
||||
update_icon()
|
||||
A.unbolt()
|
||||
. = 1
|
||||
if(A && A.close())
|
||||
if(stat & NOPOWER || lostPower || !A || QDELETED(A))
|
||||
goIdle(1)
|
||||
return
|
||||
A.bolt()
|
||||
if(busy == CLOSING)
|
||||
goIdle(1)
|
||||
else
|
||||
goIdle(1)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/cycleClose(obj/machinery/door/airlock/A)
|
||||
if(!A || !exteriorAirlock || !interiorAirlock)
|
||||
return
|
||||
if(exteriorAirlock.density == interiorAirlock.density || !A.density)
|
||||
return
|
||||
busy = CYCLE
|
||||
update_icon()
|
||||
if(A == interiorAirlock)
|
||||
if(closeDoor(exteriorAirlock))
|
||||
busy = CYCLE_INTERIOR
|
||||
else
|
||||
if(closeDoor(interiorAirlock))
|
||||
busy = CYCLE_EXTERIOR
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/cycleOpen(obj/machinery/door/airlock/A)
|
||||
if(!A)
|
||||
goIdle(1)
|
||||
if(A == exteriorAirlock)
|
||||
if(interiorAirlock)
|
||||
if(!interiorAirlock.density || !interiorAirlock.locked)
|
||||
return
|
||||
else
|
||||
if(exteriorAirlock)
|
||||
if(!exteriorAirlock.density || !exteriorAirlock.locked)
|
||||
return
|
||||
if(busy != OPENING)
|
||||
busy = OPENING
|
||||
openDoor(A)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/openDoor(obj/machinery/door/airlock/A)
|
||||
if(exteriorAirlock && interiorAirlock && (!exteriorAirlock.density || !interiorAirlock.density))
|
||||
goIdle(1)
|
||||
return
|
||||
A.unbolt()
|
||||
spawn()
|
||||
if(A && A.open())
|
||||
if(stat | (NOPOWER) && !lostPower && A && !QDELETED(A))
|
||||
A.bolt()
|
||||
goIdle(1)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/goIdle(update)
|
||||
lostPower = 0
|
||||
busy = FALSE
|
||||
if(update)
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/process()
|
||||
if(stat & NOPOWER)
|
||||
return
|
||||
if(busy == CYCLE_EXTERIOR)
|
||||
cycleOpen(exteriorAirlock)
|
||||
else if(busy == CYCLE_INTERIOR)
|
||||
cycleOpen(interiorAirlock)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/power_change()
|
||||
..()
|
||||
if(stat & NOPOWER)
|
||||
lostPower = 1
|
||||
else
|
||||
if(!busy)
|
||||
lostPower = 0
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/findObjsByTag()
|
||||
for(var/obj/machinery/door/airlock/A in GLOB.machines)
|
||||
if(A.id_tag == idInterior)
|
||||
interiorAirlock = A
|
||||
else if(A.id_tag == idExterior)
|
||||
exteriorAirlock = A
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/update_icon()
|
||||
if(stat & NOPOWER)
|
||||
icon_state = "access_control_off"
|
||||
return
|
||||
if(busy || lostPower)
|
||||
icon_state = "access_control_process"
|
||||
else
|
||||
icon_state = "access_control_standby"
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/ui_interact(mob/user)
|
||||
var/datum/browser/popup = new(user, "computer", name)
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.set_content(returnText())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/returnText()
|
||||
var/output
|
||||
if(!exteriorAirlock && !interiorAirlock)
|
||||
return "ERROR ERROR ERROR ERROR"
|
||||
if(lostPower)
|
||||
output = "Initializing..."
|
||||
else
|
||||
if(!exteriorAirlock || !interiorAirlock)
|
||||
if(!exteriorAirlock)
|
||||
if(interiorAirlock.density)
|
||||
output = "<A href='?src=[REF(src)];command=open_interior'>Open Interior Airlock</A><BR>"
|
||||
else
|
||||
output = "<A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"
|
||||
else
|
||||
if(exteriorAirlock.density)
|
||||
output = "<A href='?src=[REF(src)];command=open_exterior'>Open Exterior Airlock</A><BR>"
|
||||
else
|
||||
output = "<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>"
|
||||
else
|
||||
if(exteriorAirlock.density)
|
||||
if(interiorAirlock.density)
|
||||
output = {"<A href='?src=[REF(src)];command=open_exterior'>Open Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=open_interior'>Open Interior Airlock</A><BR>"}
|
||||
else
|
||||
output = {"<A href='?src=[REF(src)];command=cycle_exterior'>Cycle to Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"}
|
||||
else
|
||||
if(interiorAirlock.density)
|
||||
output = {"<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_interior'>Cycle to Interior Airlock</A><BR>"}
|
||||
else
|
||||
output = {"<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"}
|
||||
|
||||
|
||||
output = {"<B>Access Control Console</B><HR>
|
||||
[output]<HR>"}
|
||||
if(exteriorAirlock)
|
||||
output += "<B>Exterior Door: </B> [exteriorAirlock.density ? "closed" : "open"]<BR>"
|
||||
if(interiorAirlock)
|
||||
output += "<B>Interior Door: </B> [interiorAirlock.density ? "closed" : "open"]<BR>"
|
||||
|
||||
return output
|
||||
|
||||
#undef CLOSING
|
||||
#undef OPENING
|
||||
#undef CYCLE
|
||||
#undef CYCLE_EXTERIOR
|
||||
#undef CYCLE_INTERIOR
|
||||
#define CLOSING 1
|
||||
#define OPENING 2
|
||||
#define CYCLE 3
|
||||
#define CYCLE_EXTERIOR 4
|
||||
#define CYCLE_INTERIOR 5
|
||||
|
||||
/obj/machinery/doorButtons
|
||||
power_channel = ENVIRON
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/idSelf
|
||||
|
||||
/obj/machinery/doorButtons/attackby(obj/O, mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/doorButtons/proc/findObjsByTag()
|
||||
return
|
||||
|
||||
/obj/machinery/doorButtons/Initialize()
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/machinery/doorButtons/LateInitialize()
|
||||
findObjsByTag()
|
||||
|
||||
/obj/machinery/doorButtons/emag_act(mob/user)
|
||||
. = ..()
|
||||
if(obj_flags & EMAGGED)
|
||||
return
|
||||
obj_flags |= EMAGGED
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
playsound(src, "sparks", 100, 1)
|
||||
to_chat(user, "<span class='warning'>You short out the access controller.</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/doorButtons/proc/removeMe()
|
||||
|
||||
|
||||
/obj/machinery/doorButtons/access_button
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "access_button_standby"
|
||||
name = "access button"
|
||||
desc = "A button used for the explicit purpose of opening an airlock."
|
||||
var/idDoor
|
||||
var/obj/machinery/door/airlock/door
|
||||
var/obj/machinery/doorButtons/airlock_controller/controller
|
||||
var/busy
|
||||
|
||||
/obj/machinery/doorButtons/access_button/findObjsByTag()
|
||||
for(var/obj/machinery/doorButtons/airlock_controller/A in GLOB.machines)
|
||||
if(A.idSelf == idSelf)
|
||||
controller = A
|
||||
break
|
||||
for(var/obj/machinery/door/airlock/I in GLOB.machines)
|
||||
if(I.id_tag == idDoor)
|
||||
door = I
|
||||
break
|
||||
|
||||
/obj/machinery/doorButtons/access_button/interact(mob/user)
|
||||
if(busy)
|
||||
return
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
if(controller && !controller.busy && door)
|
||||
if(controller.stat & NOPOWER)
|
||||
return
|
||||
busy = TRUE
|
||||
update_icon()
|
||||
if(door.density)
|
||||
if(!controller.exteriorAirlock || !controller.interiorAirlock)
|
||||
controller.onlyOpen(door)
|
||||
else
|
||||
if(controller.exteriorAirlock.density && controller.interiorAirlock.density)
|
||||
controller.onlyOpen(door)
|
||||
else
|
||||
controller.cycleClose(door)
|
||||
else
|
||||
controller.onlyClose(door)
|
||||
sleep(20)
|
||||
busy = FALSE
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/doorButtons/access_button/update_icon()
|
||||
if(stat & NOPOWER)
|
||||
icon_state = "access_button_off"
|
||||
else
|
||||
if(busy)
|
||||
icon_state = "access_button_cycle"
|
||||
else
|
||||
icon_state = "access_button_standby"
|
||||
|
||||
/obj/machinery/doorButtons/access_button/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/doorButtons/access_button/removeMe(obj/O)
|
||||
if(O == door)
|
||||
door = null
|
||||
|
||||
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "access_control_standby"
|
||||
name = "access console"
|
||||
desc = "A small console that can cycle opening between two airlocks."
|
||||
var/obj/machinery/door/airlock/interiorAirlock
|
||||
var/obj/machinery/door/airlock/exteriorAirlock
|
||||
var/idInterior
|
||||
var/idExterior
|
||||
var/busy
|
||||
var/lostPower
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/removeMe(obj/O)
|
||||
if(O == interiorAirlock)
|
||||
interiorAirlock = null
|
||||
else if(O == exteriorAirlock)
|
||||
exteriorAirlock = null
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/Destroy()
|
||||
for(var/obj/machinery/doorButtons/access_button/A in GLOB.machines)
|
||||
if(A.controller == src)
|
||||
A.controller = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if(busy)
|
||||
return
|
||||
if(!allowed(usr))
|
||||
to_chat(usr, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
switch(href_list["command"])
|
||||
if("close_exterior")
|
||||
onlyClose(exteriorAirlock)
|
||||
if("close_interior")
|
||||
onlyClose(interiorAirlock)
|
||||
if("cycle_exterior")
|
||||
cycleClose(exteriorAirlock)
|
||||
if("cycle_interior")
|
||||
cycleClose(interiorAirlock)
|
||||
if("open_exterior")
|
||||
onlyOpen(exteriorAirlock)
|
||||
if("open_interior")
|
||||
onlyOpen(interiorAirlock)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/onlyOpen(obj/machinery/door/airlock/A)
|
||||
if(A)
|
||||
busy = CLOSING
|
||||
update_icon()
|
||||
openDoor(A)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/onlyClose(obj/machinery/door/airlock/A)
|
||||
if(A)
|
||||
busy = CLOSING
|
||||
closeDoor(A)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/closeDoor(obj/machinery/door/airlock/A)
|
||||
set waitfor = FALSE
|
||||
if(A.density)
|
||||
goIdle()
|
||||
return 0
|
||||
update_icon()
|
||||
A.unbolt()
|
||||
. = 1
|
||||
if(A && A.close())
|
||||
if(stat & NOPOWER || lostPower || !A || QDELETED(A))
|
||||
goIdle(1)
|
||||
return
|
||||
A.bolt()
|
||||
if(busy == CLOSING)
|
||||
goIdle(1)
|
||||
else
|
||||
goIdle(1)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/cycleClose(obj/machinery/door/airlock/A)
|
||||
if(!A || !exteriorAirlock || !interiorAirlock)
|
||||
return
|
||||
if(exteriorAirlock.density == interiorAirlock.density || !A.density)
|
||||
return
|
||||
busy = CYCLE
|
||||
update_icon()
|
||||
if(A == interiorAirlock)
|
||||
if(closeDoor(exteriorAirlock))
|
||||
busy = CYCLE_INTERIOR
|
||||
else
|
||||
if(closeDoor(interiorAirlock))
|
||||
busy = CYCLE_EXTERIOR
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/cycleOpen(obj/machinery/door/airlock/A)
|
||||
if(!A)
|
||||
goIdle(1)
|
||||
if(A == exteriorAirlock)
|
||||
if(interiorAirlock)
|
||||
if(!interiorAirlock.density || !interiorAirlock.locked)
|
||||
return
|
||||
else
|
||||
if(exteriorAirlock)
|
||||
if(!exteriorAirlock.density || !exteriorAirlock.locked)
|
||||
return
|
||||
if(busy != OPENING)
|
||||
busy = OPENING
|
||||
openDoor(A)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/openDoor(obj/machinery/door/airlock/A)
|
||||
if(exteriorAirlock && interiorAirlock && (!exteriorAirlock.density || !interiorAirlock.density))
|
||||
goIdle(1)
|
||||
return
|
||||
A.unbolt()
|
||||
spawn()
|
||||
if(A && A.open())
|
||||
if(stat | (NOPOWER) && !lostPower && A && !QDELETED(A))
|
||||
A.bolt()
|
||||
goIdle(1)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/goIdle(update)
|
||||
lostPower = 0
|
||||
busy = FALSE
|
||||
if(update)
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/process()
|
||||
if(stat & NOPOWER)
|
||||
return
|
||||
if(busy == CYCLE_EXTERIOR)
|
||||
cycleOpen(exteriorAirlock)
|
||||
else if(busy == CYCLE_INTERIOR)
|
||||
cycleOpen(interiorAirlock)
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/power_change()
|
||||
..()
|
||||
if(stat & NOPOWER)
|
||||
lostPower = 1
|
||||
else
|
||||
if(!busy)
|
||||
lostPower = 0
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/findObjsByTag()
|
||||
for(var/obj/machinery/door/airlock/A in GLOB.machines)
|
||||
if(A.id_tag == idInterior)
|
||||
interiorAirlock = A
|
||||
else if(A.id_tag == idExterior)
|
||||
exteriorAirlock = A
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/update_icon()
|
||||
if(stat & NOPOWER)
|
||||
icon_state = "access_control_off"
|
||||
return
|
||||
if(busy || lostPower)
|
||||
icon_state = "access_control_process"
|
||||
else
|
||||
icon_state = "access_control_standby"
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/ui_interact(mob/user)
|
||||
var/datum/browser/popup = new(user, "computer", name)
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.set_content(returnText())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/doorButtons/airlock_controller/proc/returnText()
|
||||
var/output
|
||||
if(!exteriorAirlock && !interiorAirlock)
|
||||
return "ERROR ERROR ERROR ERROR"
|
||||
if(lostPower)
|
||||
output = "Initializing..."
|
||||
else
|
||||
if(!exteriorAirlock || !interiorAirlock)
|
||||
if(!exteriorAirlock)
|
||||
if(interiorAirlock.density)
|
||||
output = "<A href='?src=[REF(src)];command=open_interior'>Open Interior Airlock</A><BR>"
|
||||
else
|
||||
output = "<A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"
|
||||
else
|
||||
if(exteriorAirlock.density)
|
||||
output = "<A href='?src=[REF(src)];command=open_exterior'>Open Exterior Airlock</A><BR>"
|
||||
else
|
||||
output = "<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>"
|
||||
else
|
||||
if(exteriorAirlock.density)
|
||||
if(interiorAirlock.density)
|
||||
output = {"<A href='?src=[REF(src)];command=open_exterior'>Open Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=open_interior'>Open Interior Airlock</A><BR>"}
|
||||
else
|
||||
output = {"<A href='?src=[REF(src)];command=cycle_exterior'>Cycle to Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"}
|
||||
else
|
||||
if(interiorAirlock.density)
|
||||
output = {"<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_interior'>Cycle to Interior Airlock</A><BR>"}
|
||||
else
|
||||
output = {"<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"}
|
||||
|
||||
|
||||
output = {"<B>Access Control Console</B><HR>
|
||||
[output]<HR>"}
|
||||
if(exteriorAirlock)
|
||||
output += "<B>Exterior Door: </B> [exteriorAirlock.density ? "closed" : "open"]<BR>"
|
||||
if(interiorAirlock)
|
||||
output += "<B>Interior Door: </B> [interiorAirlock.density ? "closed" : "open"]<BR>"
|
||||
|
||||
return output
|
||||
|
||||
#undef CLOSING
|
||||
#undef OPENING
|
||||
#undef CYCLE
|
||||
#undef CYCLE_EXTERIOR
|
||||
#undef CYCLE_INTERIOR
|
||||
|
||||
@@ -1,315 +1,315 @@
|
||||
//States for airlock_control
|
||||
#define AIRLOCK_STATE_INOPEN -2
|
||||
#define AIRLOCK_STATE_PRESSURIZE -1
|
||||
#define AIRLOCK_STATE_CLOSED 0
|
||||
#define AIRLOCK_STATE_DEPRESSURIZE 1
|
||||
#define AIRLOCK_STATE_OUTOPEN 2
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller
|
||||
var/id_tag
|
||||
var/exterior_door_tag //Burn chamber facing door
|
||||
var/interior_door_tag //Station facing door
|
||||
var/airpump_tag //See: dp_vent_pump.dm
|
||||
var/sensor_tag //See: /obj/machinery/airlock_sensor
|
||||
var/sanitize_external //Before the interior airlock opens, do we first drain all gases inside the chamber and then repressurize?
|
||||
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
var/target_state = AIRLOCK_STATE_CLOSED
|
||||
var/sensor_pressure = null
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal)
|
||||
var/receive_tag = signal.data["tag"]
|
||||
if(!receive_tag)
|
||||
return
|
||||
|
||||
if(receive_tag==sensor_tag)
|
||||
if(signal.data["pressure"])
|
||||
sensor_pressure = text2num(signal.data["pressure"])
|
||||
|
||||
else if(receive_tag==exterior_door_tag)
|
||||
memory["exterior_status"] = signal.data["door_status"]
|
||||
|
||||
else if(receive_tag==interior_door_tag)
|
||||
memory["interior_status"] = signal.data["door_status"]
|
||||
|
||||
else if(receive_tag==airpump_tag)
|
||||
if(signal.data["power"])
|
||||
memory["pump_status"] = signal.data["direction"]
|
||||
else
|
||||
memory["pump_status"] = "off"
|
||||
|
||||
else if(receive_tag==id_tag)
|
||||
switch(signal.data["command"])
|
||||
if("cycle")
|
||||
if(state < AIRLOCK_STATE_CLOSED)
|
||||
target_state = AIRLOCK_STATE_OUTOPEN
|
||||
else
|
||||
target_state = AIRLOCK_STATE_INOPEN
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller/receive_user_command(command)
|
||||
switch(command)
|
||||
if("cycle_closed")
|
||||
target_state = AIRLOCK_STATE_CLOSED
|
||||
if("cycle_exterior")
|
||||
target_state = AIRLOCK_STATE_OUTOPEN
|
||||
if("cycle_interior")
|
||||
target_state = AIRLOCK_STATE_INOPEN
|
||||
if("abort")
|
||||
target_state = AIRLOCK_STATE_CLOSED
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller/process()
|
||||
var/process_again = 1
|
||||
while(process_again)
|
||||
process_again = 0
|
||||
switch(state)
|
||||
if(AIRLOCK_STATE_INOPEN) // state -2
|
||||
if(target_state > state)
|
||||
if(memory["interior_status"] == "closed")
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
if(AIRLOCK_STATE_PRESSURIZE)
|
||||
if(target_state < state)
|
||||
if(sensor_pressure >= ONE_ATMOSPHERE*0.95)
|
||||
if(memory["interior_status"] == "open")
|
||||
state = AIRLOCK_STATE_INOPEN
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_open"
|
||||
)))
|
||||
else
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command"
|
||||
))
|
||||
if(memory["pump_status"] == "siphon")
|
||||
signal.data["stabilize"] = 1
|
||||
else if(memory["pump_status"] != "release")
|
||||
signal.data["power"] = 1
|
||||
post_signal(signal)
|
||||
else if(target_state > state)
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
|
||||
if(AIRLOCK_STATE_CLOSED)
|
||||
if(target_state > state)
|
||||
if(memory["interior_status"] == "closed")
|
||||
state = AIRLOCK_STATE_DEPRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else if(target_state < state)
|
||||
if(memory["exterior_status"] == "closed")
|
||||
state = AIRLOCK_STATE_PRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
if(AIRLOCK_STATE_DEPRESSURIZE)
|
||||
var/target_pressure = ONE_ATMOSPHERE*0.05
|
||||
if(sanitize_external)
|
||||
target_pressure = ONE_ATMOSPHERE*0.01
|
||||
|
||||
if(sensor_pressure <= target_pressure)
|
||||
if(target_state > state)
|
||||
if(memory["exterior_status"] == "open")
|
||||
state = AIRLOCK_STATE_OUTOPEN
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_open"
|
||||
)))
|
||||
else if(target_state < state)
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else if((target_state < state) && !sanitize_external)
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command"
|
||||
))
|
||||
if(memory["pump_status"] == "release")
|
||||
signal.data["purge"] = 1
|
||||
else if(memory["pump_status"] != "siphon")
|
||||
signal.data["power"] = 1
|
||||
post_signal(signal)
|
||||
|
||||
if(AIRLOCK_STATE_OUTOPEN) //state 2
|
||||
if(target_state < state)
|
||||
if(memory["exterior_status"] == "closed")
|
||||
if(sanitize_external)
|
||||
state = AIRLOCK_STATE_DEPRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
memory["sensor_pressure"] = sensor_pressure
|
||||
memory["processing"] = state != target_state
|
||||
//sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_control_standby"
|
||||
|
||||
name = "airlock console"
|
||||
density = FALSE
|
||||
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
power_channel = ENVIRON
|
||||
|
||||
// Setup parameters only
|
||||
var/id_tag
|
||||
var/exterior_door_tag
|
||||
var/interior_door_tag
|
||||
var/airpump_tag
|
||||
var/sensor_tag
|
||||
var/sanitize_external
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_TOXMIX_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_ATMOS_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
return
|
||||
|
||||
var/datum/computer/file/embedded_program/airlock_controller/new_prog = new
|
||||
|
||||
new_prog.id_tag = id_tag
|
||||
new_prog.exterior_door_tag = exterior_door_tag
|
||||
new_prog.interior_door_tag = interior_door_tag
|
||||
new_prog.airpump_tag = airpump_tag
|
||||
new_prog.sensor_tag = sensor_tag
|
||||
new_prog.sanitize_external = sanitize_external
|
||||
|
||||
new_prog.master = src
|
||||
program = new_prog
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/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/airlock_controller/return_text()
|
||||
var/state_options = null
|
||||
|
||||
var/state = 0
|
||||
var/sensor_pressure = "----"
|
||||
var/exterior_status = "----"
|
||||
var/interior_status = "----"
|
||||
var/pump_status = "----"
|
||||
var/current_status = "Inactive<BR> "
|
||||
if(program)
|
||||
state = program.state
|
||||
sensor_pressure = program.memory["sensor_pressure"] ? program.memory["sensor_pressure"] : "----"
|
||||
exterior_status = program.memory["exterior_status"] ? program.memory["exterior_status"] : "----"
|
||||
interior_status = program.memory["interior_status"] ? program.memory["interior_status"] : "----"
|
||||
pump_status = program.memory["pump_status"] ? program.memory["pump_status"] : "----"
|
||||
|
||||
switch(state)
|
||||
if(AIRLOCK_STATE_INOPEN)
|
||||
state_options = {"<A href='?src=[REF(src)];command=cycle_closed'>Close Interior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_exterior'>Cycle to Exterior Airlock</A><BR>"}
|
||||
current_status = "Interior Airlock Open<BR><span class='good'>Chamber Pressurized</span>"
|
||||
if(AIRLOCK_STATE_PRESSURIZE)
|
||||
state_options = "<A href='?src=[REF(src)];command=abort'>Abort Cycling</A><BR>"
|
||||
current_status = "Cycling to Interior Airlock<BR><span class='average'>Chamber Pressurizing</span>"
|
||||
if(AIRLOCK_STATE_CLOSED)
|
||||
state_options = {"<A href='?src=[REF(src)];command=cycle_interior'>Open Interior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_exterior'>Open Exterior Airlock</A><BR>"}
|
||||
if(AIRLOCK_STATE_DEPRESSURIZE)
|
||||
state_options = "<A href='?src=[REF(src)];command=abort'>Abort Cycling</A><BR>"
|
||||
current_status = "Cycling to Exterior Airlock<BR><span class='average'>Chamber Depressurizing</span>"
|
||||
if(AIRLOCK_STATE_OUTOPEN)
|
||||
state_options = {"<A href='?src=[REF(src)];command=cycle_interior'>Cycle to Interior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_closed'>Close Exterior Airlock</A><BR>"}
|
||||
current_status = "Exterior Airlock Open<BR><span class='bad'>Chamber Depressurized</span>"
|
||||
|
||||
var/output = {"<h3>Airlock Status</h3>
|
||||
<div class='statusDisplay'>
|
||||
<div class='line'><div class='statusLabel'>Current Status:</div><div class='statusValue'>[current_status]</div></div>
|
||||
<div class='line'> </div>
|
||||
<div class='line'><div class='statusLabel'>\> Chamber Pressure:</div><div class='statusValue'>[sensor_pressure] kPa</div></div>
|
||||
<div class='line'><div class='statusLabel'>\> Control Pump:</div><div class='statusValue'>[pump_status]</div></div>
|
||||
<div class='line'><div class='statusLabel'>\> Interior Door:</div><div class='statusValue'>[interior_status]</div></div>
|
||||
<div class='line'><div class='statusLabel'>\> Exterior Door:</div><div class='statusValue'>[exterior_status]</div></div>
|
||||
<div class='clearBoth'></div>
|
||||
</div>
|
||||
[state_options]"}
|
||||
|
||||
//States for airlock_control
|
||||
#define AIRLOCK_STATE_INOPEN -2
|
||||
#define AIRLOCK_STATE_PRESSURIZE -1
|
||||
#define AIRLOCK_STATE_CLOSED 0
|
||||
#define AIRLOCK_STATE_DEPRESSURIZE 1
|
||||
#define AIRLOCK_STATE_OUTOPEN 2
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller
|
||||
var/id_tag
|
||||
var/exterior_door_tag //Burn chamber facing door
|
||||
var/interior_door_tag //Station facing door
|
||||
var/airpump_tag //See: dp_vent_pump.dm
|
||||
var/sensor_tag //See: /obj/machinery/airlock_sensor
|
||||
var/sanitize_external //Before the interior airlock opens, do we first drain all gases inside the chamber and then repressurize?
|
||||
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
var/target_state = AIRLOCK_STATE_CLOSED
|
||||
var/sensor_pressure = null
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal)
|
||||
var/receive_tag = signal.data["tag"]
|
||||
if(!receive_tag)
|
||||
return
|
||||
|
||||
if(receive_tag==sensor_tag)
|
||||
if(signal.data["pressure"])
|
||||
sensor_pressure = text2num(signal.data["pressure"])
|
||||
|
||||
else if(receive_tag==exterior_door_tag)
|
||||
memory["exterior_status"] = signal.data["door_status"]
|
||||
|
||||
else if(receive_tag==interior_door_tag)
|
||||
memory["interior_status"] = signal.data["door_status"]
|
||||
|
||||
else if(receive_tag==airpump_tag)
|
||||
if(signal.data["power"])
|
||||
memory["pump_status"] = signal.data["direction"]
|
||||
else
|
||||
memory["pump_status"] = "off"
|
||||
|
||||
else if(receive_tag==id_tag)
|
||||
switch(signal.data["command"])
|
||||
if("cycle")
|
||||
if(state < AIRLOCK_STATE_CLOSED)
|
||||
target_state = AIRLOCK_STATE_OUTOPEN
|
||||
else
|
||||
target_state = AIRLOCK_STATE_INOPEN
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller/receive_user_command(command)
|
||||
switch(command)
|
||||
if("cycle_closed")
|
||||
target_state = AIRLOCK_STATE_CLOSED
|
||||
if("cycle_exterior")
|
||||
target_state = AIRLOCK_STATE_OUTOPEN
|
||||
if("cycle_interior")
|
||||
target_state = AIRLOCK_STATE_INOPEN
|
||||
if("abort")
|
||||
target_state = AIRLOCK_STATE_CLOSED
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller/process()
|
||||
var/process_again = 1
|
||||
while(process_again)
|
||||
process_again = 0
|
||||
switch(state)
|
||||
if(AIRLOCK_STATE_INOPEN) // state -2
|
||||
if(target_state > state)
|
||||
if(memory["interior_status"] == "closed")
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
if(AIRLOCK_STATE_PRESSURIZE)
|
||||
if(target_state < state)
|
||||
if(sensor_pressure >= ONE_ATMOSPHERE*0.95)
|
||||
if(memory["interior_status"] == "open")
|
||||
state = AIRLOCK_STATE_INOPEN
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_open"
|
||||
)))
|
||||
else
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command"
|
||||
))
|
||||
if(memory["pump_status"] == "siphon")
|
||||
signal.data["stabilize"] = 1
|
||||
else if(memory["pump_status"] != "release")
|
||||
signal.data["power"] = 1
|
||||
post_signal(signal)
|
||||
else if(target_state > state)
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
|
||||
if(AIRLOCK_STATE_CLOSED)
|
||||
if(target_state > state)
|
||||
if(memory["interior_status"] == "closed")
|
||||
state = AIRLOCK_STATE_DEPRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else if(target_state < state)
|
||||
if(memory["exterior_status"] == "closed")
|
||||
state = AIRLOCK_STATE_PRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
if(AIRLOCK_STATE_DEPRESSURIZE)
|
||||
var/target_pressure = ONE_ATMOSPHERE*0.05
|
||||
if(sanitize_external)
|
||||
target_pressure = ONE_ATMOSPHERE*0.01
|
||||
|
||||
if(sensor_pressure <= target_pressure)
|
||||
if(target_state > state)
|
||||
if(memory["exterior_status"] == "open")
|
||||
state = AIRLOCK_STATE_OUTOPEN
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_open"
|
||||
)))
|
||||
else if(target_state < state)
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else if((target_state < state) && !sanitize_external)
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command"
|
||||
))
|
||||
if(memory["pump_status"] == "release")
|
||||
signal.data["purge"] = 1
|
||||
else if(memory["pump_status"] != "siphon")
|
||||
signal.data["power"] = 1
|
||||
post_signal(signal)
|
||||
|
||||
if(AIRLOCK_STATE_OUTOPEN) //state 2
|
||||
if(target_state < state)
|
||||
if(memory["exterior_status"] == "closed")
|
||||
if(sanitize_external)
|
||||
state = AIRLOCK_STATE_DEPRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
memory["sensor_pressure"] = sensor_pressure
|
||||
memory["processing"] = state != target_state
|
||||
//sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_control_standby"
|
||||
|
||||
name = "airlock console"
|
||||
density = FALSE
|
||||
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
power_channel = ENVIRON
|
||||
|
||||
// Setup parameters only
|
||||
var/id_tag
|
||||
var/exterior_door_tag
|
||||
var/interior_door_tag
|
||||
var/airpump_tag
|
||||
var/sensor_tag
|
||||
var/sanitize_external
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_TOXMIX_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_ATMOS_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
return
|
||||
|
||||
var/datum/computer/file/embedded_program/airlock_controller/new_prog = new
|
||||
|
||||
new_prog.id_tag = id_tag
|
||||
new_prog.exterior_door_tag = exterior_door_tag
|
||||
new_prog.interior_door_tag = interior_door_tag
|
||||
new_prog.airpump_tag = airpump_tag
|
||||
new_prog.sensor_tag = sensor_tag
|
||||
new_prog.sanitize_external = sanitize_external
|
||||
|
||||
new_prog.master = src
|
||||
program = new_prog
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/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/airlock_controller/return_text()
|
||||
var/state_options = null
|
||||
|
||||
var/state = 0
|
||||
var/sensor_pressure = "----"
|
||||
var/exterior_status = "----"
|
||||
var/interior_status = "----"
|
||||
var/pump_status = "----"
|
||||
var/current_status = "Inactive<BR> "
|
||||
if(program)
|
||||
state = program.state
|
||||
sensor_pressure = program.memory["sensor_pressure"] ? program.memory["sensor_pressure"] : "----"
|
||||
exterior_status = program.memory["exterior_status"] ? program.memory["exterior_status"] : "----"
|
||||
interior_status = program.memory["interior_status"] ? program.memory["interior_status"] : "----"
|
||||
pump_status = program.memory["pump_status"] ? program.memory["pump_status"] : "----"
|
||||
|
||||
switch(state)
|
||||
if(AIRLOCK_STATE_INOPEN)
|
||||
state_options = {"<A href='?src=[REF(src)];command=cycle_closed'>Close Interior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_exterior'>Cycle to Exterior Airlock</A><BR>"}
|
||||
current_status = "Interior Airlock Open<BR><span class='good'>Chamber Pressurized</span>"
|
||||
if(AIRLOCK_STATE_PRESSURIZE)
|
||||
state_options = "<A href='?src=[REF(src)];command=abort'>Abort Cycling</A><BR>"
|
||||
current_status = "Cycling to Interior Airlock<BR><span class='average'>Chamber Pressurizing</span>"
|
||||
if(AIRLOCK_STATE_CLOSED)
|
||||
state_options = {"<A href='?src=[REF(src)];command=cycle_interior'>Open Interior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_exterior'>Open Exterior Airlock</A><BR>"}
|
||||
if(AIRLOCK_STATE_DEPRESSURIZE)
|
||||
state_options = "<A href='?src=[REF(src)];command=abort'>Abort Cycling</A><BR>"
|
||||
current_status = "Cycling to Exterior Airlock<BR><span class='average'>Chamber Depressurizing</span>"
|
||||
if(AIRLOCK_STATE_OUTOPEN)
|
||||
state_options = {"<A href='?src=[REF(src)];command=cycle_interior'>Cycle to Interior Airlock</A><BR>
|
||||
<A href='?src=[REF(src)];command=cycle_closed'>Close Exterior Airlock</A><BR>"}
|
||||
current_status = "Exterior Airlock Open<BR><span class='bad'>Chamber Depressurized</span>"
|
||||
|
||||
var/output = {"<h3>Airlock Status</h3>
|
||||
<div class='statusDisplay'>
|
||||
<div class='line'><div class='statusLabel'>Current Status:</div><div class='statusValue'>[current_status]</div></div>
|
||||
<div class='line'> </div>
|
||||
<div class='line'><div class='statusLabel'>\> Chamber Pressure:</div><div class='statusValue'>[sensor_pressure] kPa</div></div>
|
||||
<div class='line'><div class='statusLabel'>\> Control Pump:</div><div class='statusValue'>[pump_status]</div></div>
|
||||
<div class='line'><div class='statusLabel'>\> Interior Door:</div><div class='statusValue'>[interior_status]</div></div>
|
||||
<div class='line'><div class='statusLabel'>\> Exterior Door:</div><div class='statusValue'>[exterior_status]</div></div>
|
||||
<div class='clearBoth'></div>
|
||||
</div>
|
||||
[state_options]"}
|
||||
|
||||
return output
|
||||
@@ -1,87 +1,87 @@
|
||||
/datum/computer/file/embedded_program
|
||||
var/list/memory = list()
|
||||
var/state
|
||||
var/obj/machinery/embedded_controller/master
|
||||
|
||||
/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line)
|
||||
if(master)
|
||||
master.post_signal(signal, comm_line)
|
||||
else
|
||||
qdel(signal)
|
||||
|
||||
/datum/computer/file/embedded_program/proc/receive_user_command(command)
|
||||
|
||||
/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal)
|
||||
return null
|
||||
|
||||
/datum/computer/file/embedded_program/process()
|
||||
return 0
|
||||
|
||||
/obj/machinery/embedded_controller
|
||||
var/datum/computer/file/embedded_program/program
|
||||
|
||||
name = "embedded controller"
|
||||
density = FALSE
|
||||
|
||||
var/on = TRUE
|
||||
|
||||
/obj/machinery/embedded_controller/ui_interact(mob/user)
|
||||
. = ..()
|
||||
user.set_machine(src)
|
||||
var/datum/browser/popup = new(user, "computer", name) // Set up the popup browser window
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.set_content(return_text())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/embedded_controller/update_icon()
|
||||
|
||||
/obj/machinery/embedded_controller/proc/return_text()
|
||||
|
||||
/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line)
|
||||
return 0
|
||||
|
||||
/obj/machinery/embedded_controller/receive_signal(datum/signal/signal)
|
||||
if(istype(signal) && program)
|
||||
program.receive_signal(signal)
|
||||
|
||||
/obj/machinery/embedded_controller/Topic(href, href_list)
|
||||
if(..())
|
||||
return 0
|
||||
|
||||
if(program)
|
||||
program.receive_user_command(href_list["command"])
|
||||
addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5)
|
||||
|
||||
usr.set_machine(src)
|
||||
addtimer(CALLBACK(src, .proc/updateDialog), 5)
|
||||
|
||||
/obj/machinery/embedded_controller/process()
|
||||
if(program)
|
||||
program.process()
|
||||
|
||||
update_icon()
|
||||
src.updateDialog()
|
||||
|
||||
/obj/machinery/embedded_controller/radio
|
||||
var/frequency
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/embedded_controller/radio/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/embedded_controller/radio/Initialize()
|
||||
. = ..()
|
||||
set_frequency(frequency)
|
||||
|
||||
/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
|
||||
signal = null
|
||||
|
||||
/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency)
|
||||
/datum/computer/file/embedded_program
|
||||
var/list/memory = list()
|
||||
var/state
|
||||
var/obj/machinery/embedded_controller/master
|
||||
|
||||
/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line)
|
||||
if(master)
|
||||
master.post_signal(signal, comm_line)
|
||||
else
|
||||
qdel(signal)
|
||||
|
||||
/datum/computer/file/embedded_program/proc/receive_user_command(command)
|
||||
|
||||
/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal)
|
||||
return null
|
||||
|
||||
/datum/computer/file/embedded_program/process()
|
||||
return 0
|
||||
|
||||
/obj/machinery/embedded_controller
|
||||
var/datum/computer/file/embedded_program/program
|
||||
|
||||
name = "embedded controller"
|
||||
density = FALSE
|
||||
|
||||
var/on = TRUE
|
||||
|
||||
/obj/machinery/embedded_controller/ui_interact(mob/user)
|
||||
. = ..()
|
||||
user.set_machine(src)
|
||||
var/datum/browser/popup = new(user, "computer", name) // Set up the popup browser window
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.set_content(return_text())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/embedded_controller/update_icon()
|
||||
|
||||
/obj/machinery/embedded_controller/proc/return_text()
|
||||
|
||||
/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line)
|
||||
return 0
|
||||
|
||||
/obj/machinery/embedded_controller/receive_signal(datum/signal/signal)
|
||||
if(istype(signal) && program)
|
||||
program.receive_signal(signal)
|
||||
|
||||
/obj/machinery/embedded_controller/Topic(href, href_list)
|
||||
if(..())
|
||||
return 0
|
||||
|
||||
if(program)
|
||||
program.receive_user_command(href_list["command"])
|
||||
addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5)
|
||||
|
||||
usr.set_machine(src)
|
||||
addtimer(CALLBACK(src, .proc/updateDialog), 5)
|
||||
|
||||
/obj/machinery/embedded_controller/process()
|
||||
if(program)
|
||||
program.process()
|
||||
|
||||
update_icon()
|
||||
src.updateDialog()
|
||||
|
||||
/obj/machinery/embedded_controller/radio
|
||||
var/frequency
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/embedded_controller/radio/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/embedded_controller/radio/Initialize()
|
||||
. = ..()
|
||||
set_frequency(frequency)
|
||||
|
||||
/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
|
||||
signal = null
|
||||
|
||||
/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency)
|
||||
|
||||
@@ -1,72 +1,72 @@
|
||||
/datum/computer/file/embedded_program/simple_vent_controller
|
||||
|
||||
var/airpump_tag
|
||||
|
||||
/datum/computer/file/embedded_program/simple_vent_controller/receive_user_command(command)
|
||||
switch(command)
|
||||
if("vent_inactive")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command",
|
||||
"power" = 0
|
||||
)))
|
||||
|
||||
if("vent_pump")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command",
|
||||
"stabilize" = 1,
|
||||
"power" = 1
|
||||
)))
|
||||
|
||||
if("vent_clear")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command",
|
||||
"purge" = 1,
|
||||
"power" = 1
|
||||
)))
|
||||
|
||||
/datum/computer/file/embedded_program/simple_vent_controller/process()
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_control_standby"
|
||||
|
||||
name = "vent controller"
|
||||
density = FALSE
|
||||
|
||||
frequency = FREQ_ATMOS_CONTROL
|
||||
power_channel = ENVIRON
|
||||
|
||||
// Setup parameters only
|
||||
var/airpump_tag
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
return
|
||||
var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new
|
||||
|
||||
new_prog.airpump_tag = airpump_tag
|
||||
new_prog.master = src
|
||||
program = new_prog
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon()
|
||||
if(on && program)
|
||||
icon_state = "airlock_control_standby"
|
||||
else
|
||||
icon_state = "airlock_control_off"
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller/return_text()
|
||||
var/state_options = null
|
||||
state_options = {"<A href='?src=[REF(src)];command=vent_inactive'>Deactivate Vent</A><BR>
|
||||
<A href='?src=[REF(src)];command=vent_pump'>Activate Vent / Pump</A><BR>
|
||||
<A href='?src=[REF(src)];command=vent_clear'>Activate Vent / Clear</A><BR>"}
|
||||
var/output = {"<B>Vent Control Console</B><HR>
|
||||
[state_options]<HR>"}
|
||||
|
||||
return output
|
||||
/datum/computer/file/embedded_program/simple_vent_controller
|
||||
|
||||
var/airpump_tag
|
||||
|
||||
/datum/computer/file/embedded_program/simple_vent_controller/receive_user_command(command)
|
||||
switch(command)
|
||||
if("vent_inactive")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command",
|
||||
"power" = 0
|
||||
)))
|
||||
|
||||
if("vent_pump")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command",
|
||||
"stabilize" = 1,
|
||||
"power" = 1
|
||||
)))
|
||||
|
||||
if("vent_clear")
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype" = "command",
|
||||
"purge" = 1,
|
||||
"power" = 1
|
||||
)))
|
||||
|
||||
/datum/computer/file/embedded_program/simple_vent_controller/process()
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_control_standby"
|
||||
|
||||
name = "vent controller"
|
||||
density = FALSE
|
||||
|
||||
frequency = FREQ_ATMOS_CONTROL
|
||||
power_channel = ENVIRON
|
||||
|
||||
// Setup parameters only
|
||||
var/airpump_tag
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
return
|
||||
var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new
|
||||
|
||||
new_prog.airpump_tag = airpump_tag
|
||||
new_prog.master = src
|
||||
program = new_prog
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon()
|
||||
if(on && program)
|
||||
icon_state = "airlock_control_standby"
|
||||
else
|
||||
icon_state = "airlock_control_off"
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_vent_controller/return_text()
|
||||
var/state_options = null
|
||||
state_options = {"<A href='?src=[REF(src)];command=vent_inactive'>Deactivate Vent</A><BR>
|
||||
<A href='?src=[REF(src)];command=vent_pump'>Activate Vent / Pump</A><BR>
|
||||
<A href='?src=[REF(src)];command=vent_clear'>Activate Vent / Clear</A><BR>"}
|
||||
var/output = {"<B>Vent Control Console</B><HR>
|
||||
[state_options]<HR>"}
|
||||
|
||||
return output
|
||||
|
||||
Reference in New Issue
Block a user