mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 12:08:28 +01:00
Merge pull request #4924 from VOREStation/vplk-atmos-trinary
Eliminate duplicate code in trinary atmos components
This commit is contained in:
@@ -46,6 +46,11 @@ Pipelines + Other Objects -> Pipe network
|
||||
/obj/machinery/atmospherics/proc/init_dir()
|
||||
return
|
||||
|
||||
// Get the direction each node is facing to connect.
|
||||
// It now returns as a list so it can be fetched nicely, each entry corresponds to node of same number.
|
||||
/obj/machinery/atmospherics/proc/get_node_connect_dirs()
|
||||
return
|
||||
|
||||
// Initializes nodes by looking at neighboring atmospherics machinery to connect to.
|
||||
// When we're being constructed at runtime, atmos_init() is called by the construction code.
|
||||
// When dynamically loading a map atmos_init is called by the maploader (initTemplateBounds proc)
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/update_icon()
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/atmos_filter/m_filter))
|
||||
if(mirrored)
|
||||
icon_state = "m"
|
||||
else
|
||||
icon_state = ""
|
||||
@@ -72,31 +72,6 @@
|
||||
icon_state += "off"
|
||||
use_power = 0
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/update_underlays()
|
||||
if(..())
|
||||
underlays.Cut()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!istype(T))
|
||||
return
|
||||
|
||||
add_underlay(T, node1, turn(dir, -180))
|
||||
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/atmos_filter/m_filter))
|
||||
add_underlay(T, node2, turn(dir, 90))
|
||||
else
|
||||
add_underlay(T, node2, turn(dir, -90))
|
||||
|
||||
add_underlay(T, node3, dir)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/hide(var/i)
|
||||
update_underlays()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/power_change()
|
||||
var/old_stat = stat
|
||||
..()
|
||||
if(old_stat != stat)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/process()
|
||||
..()
|
||||
|
||||
@@ -133,24 +108,6 @@
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if(!can_unwrench())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it too exerted due to internal pressure.</span>")
|
||||
add_fingerprint(user)
|
||||
return 1
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
|
||||
if (do_after(user, 40 * W.toolspeed))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] unfastens \the [src].</span>", \
|
||||
"<span class='notice'>You have unfastened \the [src].</span>", \
|
||||
"You hear a ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/attack_hand(user as mob) // -- TLE
|
||||
if(..())
|
||||
return
|
||||
@@ -235,44 +192,11 @@
|
||||
*/
|
||||
return
|
||||
|
||||
//
|
||||
// Mirrored Orientation - Flips the output dir to opposite side from normal.
|
||||
//
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/m_filter
|
||||
icon_state = "mmap"
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH|NORTH|EAST
|
||||
|
||||
obj/machinery/atmospherics/trinary/atmos_filter/m_filter/init_dir()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = WEST|NORTH|SOUTH
|
||||
if(SOUTH)
|
||||
initialize_directions = SOUTH|EAST|NORTH
|
||||
if(EAST)
|
||||
initialize_directions = EAST|WEST|NORTH
|
||||
if(WEST)
|
||||
initialize_directions = WEST|SOUTH|EAST
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/m_filter/atmos_init()
|
||||
if(node1 && node2 && node3) return
|
||||
|
||||
var/node1_connect = turn(dir, -180)
|
||||
var/node2_connect = turn(dir, 90)
|
||||
var/node3_connect = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node1 = target
|
||||
break
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node2 = target
|
||||
break
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node3 = target
|
||||
break
|
||||
|
||||
update_icon()
|
||||
update_underlays()
|
||||
mirrored = TRUE
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/update_icon(var/safety = 0)
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/mixer/m_mixer))
|
||||
icon_state = "m"
|
||||
else if(istype(src, /obj/machinery/atmospherics/trinary/mixer/t_mixer))
|
||||
if(tee)
|
||||
icon_state = "t"
|
||||
else if(mirrored)
|
||||
icon_state = "m"
|
||||
else
|
||||
icon_state = ""
|
||||
|
||||
@@ -35,34 +35,6 @@
|
||||
icon_state += "off"
|
||||
use_power = 0
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/update_underlays()
|
||||
if(..())
|
||||
underlays.Cut()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!istype(T))
|
||||
return
|
||||
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/mixer/t_mixer))
|
||||
add_underlay(T, node1, turn(dir, -90))
|
||||
else
|
||||
add_underlay(T, node1, turn(dir, -180))
|
||||
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/mixer/m_mixer) || istype(src, /obj/machinery/atmospherics/trinary/mixer/t_mixer))
|
||||
add_underlay(T, node2, turn(dir, 90))
|
||||
else
|
||||
add_underlay(T, node2, turn(dir, -90))
|
||||
|
||||
add_underlay(T, node3, dir)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/hide(var/i)
|
||||
update_underlays()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/power_change()
|
||||
var/old_stat = stat
|
||||
..()
|
||||
if(old_stat != stat)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/New()
|
||||
..()
|
||||
air1.volume = ATMOS_DEFAULT_VOLUME_MIXER
|
||||
@@ -103,23 +75,6 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if(!can_unwrench())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it too exerted due to internal pressure.</span>")
|
||||
add_fingerprint(user)
|
||||
return 1
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
|
||||
if (do_after(user, 40 * W.toolspeed))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] unfastens \the [src].</span>", \
|
||||
"<span class='notice'>You have unfastened \the [src].</span>", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob)
|
||||
if(..())
|
||||
return
|
||||
@@ -173,92 +128,20 @@
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
//
|
||||
// "T" Orientation - Inputs are on oposite sides instead of adjacent
|
||||
//
|
||||
obj/machinery/atmospherics/trinary/mixer/t_mixer
|
||||
icon_state = "tmap"
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH|EAST|WEST
|
||||
tee = TRUE
|
||||
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
|
||||
obj/machinery/atmospherics/trinary/mixer/t_mixer/init_dir()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = EAST|NORTH|WEST
|
||||
if(SOUTH)
|
||||
initialize_directions = SOUTH|WEST|EAST
|
||||
if(EAST)
|
||||
initialize_directions = EAST|NORTH|SOUTH
|
||||
if(WEST)
|
||||
initialize_directions = WEST|NORTH|SOUTH
|
||||
|
||||
obj/machinery/atmospherics/trinary/mixer/t_mixer/atmos_init()
|
||||
..()
|
||||
if(node1 && node2 && node3) return
|
||||
|
||||
var/node1_connect = turn(dir, -90)
|
||||
var/node2_connect = turn(dir, 90)
|
||||
var/node3_connect = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node1 = target
|
||||
break
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node2 = target
|
||||
break
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node3 = target
|
||||
break
|
||||
|
||||
update_icon()
|
||||
update_underlays()
|
||||
|
||||
obj/machinery/atmospherics/trinary/mixer/m_mixer
|
||||
//
|
||||
// Mirrored Orientation - Flips the output dir to opposite side from normal.
|
||||
//
|
||||
/obj/machinery/atmospherics/trinary/mixer/m_mixer
|
||||
icon_state = "mmap"
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH|NORTH|EAST
|
||||
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
|
||||
obj/machinery/atmospherics/trinary/mixer/m_mixer/init_dir()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = WEST|NORTH|SOUTH
|
||||
if(SOUTH)
|
||||
initialize_directions = SOUTH|EAST|NORTH
|
||||
if(EAST)
|
||||
initialize_directions = EAST|WEST|NORTH
|
||||
if(WEST)
|
||||
initialize_directions = WEST|SOUTH|EAST
|
||||
|
||||
obj/machinery/atmospherics/trinary/mixer/m_mixer/atmos_init()
|
||||
..()
|
||||
if(node1 && node2 && node3) return
|
||||
|
||||
var/node1_connect = turn(dir, -180)
|
||||
var/node2_connect = turn(dir, 90)
|
||||
var/node3_connect = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node1 = target
|
||||
break
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node2 = target
|
||||
break
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node3 = target
|
||||
break
|
||||
|
||||
update_icon()
|
||||
update_underlays()
|
||||
mirrored = TRUE
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
initialize_directions = SOUTH|NORTH|WEST
|
||||
use_power = 0
|
||||
|
||||
var/mirrored = FALSE
|
||||
var/tee = FALSE
|
||||
|
||||
var/datum/gas_mixture/air1
|
||||
var/datum/gas_mixture/air2
|
||||
var/datum/gas_mixture/air3
|
||||
@@ -25,15 +28,44 @@
|
||||
air3.volume = 200
|
||||
|
||||
/obj/machinery/atmospherics/trinary/init_dir()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = EAST|NORTH|SOUTH
|
||||
if(SOUTH)
|
||||
initialize_directions = SOUTH|WEST|NORTH
|
||||
if(EAST)
|
||||
initialize_directions = EAST|WEST|SOUTH
|
||||
if(WEST)
|
||||
initialize_directions = WEST|NORTH|EAST
|
||||
initialize_directions = get_initialize_directions_trinary(dir, mirrored, tee)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/update_underlays()
|
||||
if(..())
|
||||
underlays.Cut()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!istype(T))
|
||||
return
|
||||
var/list/node_connects = get_node_connect_dirs()
|
||||
add_underlay(T, node1, node_connects[1])
|
||||
add_underlay(T, node2, node_connects[2])
|
||||
add_underlay(T, node3, node_connects[3])
|
||||
|
||||
/obj/machinery/atmospherics/trinary/hide(var/i)
|
||||
update_underlays()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/power_change()
|
||||
var/old_stat = stat
|
||||
. = ..()
|
||||
if(old_stat != stat)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if(!can_unwrench())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it too exerted due to internal pressure.</span>")
|
||||
add_fingerprint(user)
|
||||
return 1
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
|
||||
if (do_after(user, 40 * W.toolspeed))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] unfastens \the [src].</span>", \
|
||||
"<span class='notice'>You have unfastened \the [src].</span>", \
|
||||
"You hear a ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
qdel(src)
|
||||
|
||||
// Housekeeping and pipe network stuff below
|
||||
/obj/machinery/atmospherics/trinary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
@@ -70,26 +102,28 @@
|
||||
node2 = null
|
||||
node3 = null
|
||||
|
||||
// Get the direction each node is facing to connect.
|
||||
// It now returns as a list so it can be fetched nicely, each entry corresponds to node of same number.
|
||||
/obj/machinery/atmospherics/trinary/get_node_connect_dirs()
|
||||
return get_node_connect_dirs_trinary(dir, mirrored, tee)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/atmos_init()
|
||||
if(node1 && node2 && node3)
|
||||
return
|
||||
|
||||
var/node1_connect = turn(dir, -180)
|
||||
var/node2_connect = turn(dir, -90)
|
||||
var/node3_connect = dir
|
||||
var/list/node_connects = get_node_connect_dirs()
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[1]))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
if (check_connect_types(target,src))
|
||||
node1 = target
|
||||
break
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[2]))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
if (check_connect_types(target,src))
|
||||
node2 = target
|
||||
break
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[3]))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
if (check_connect_types(target,src))
|
||||
node3 = target
|
||||
@@ -166,4 +200,58 @@
|
||||
|
||||
update_underlays()
|
||||
|
||||
return null
|
||||
return null
|
||||
|
||||
// Trinary init_dir() logic in a separate proc so it can be referenced from "trinary-ish" places like T-Valves
|
||||
// TODO - Someday refactor those places under atmospherics/trinary
|
||||
/proc/get_initialize_directions_trinary(var/dir, var/mirrored = FALSE, var/tee = FALSE)
|
||||
if(tee)
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
return EAST|NORTH|WEST
|
||||
if(SOUTH)
|
||||
return SOUTH|WEST|EAST
|
||||
if(EAST)
|
||||
return EAST|NORTH|SOUTH
|
||||
if(WEST)
|
||||
return WEST|NORTH|SOUTH
|
||||
else if(mirrored)
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
return WEST|NORTH|SOUTH
|
||||
if(SOUTH)
|
||||
return SOUTH|EAST|NORTH
|
||||
if(EAST)
|
||||
return EAST|WEST|NORTH
|
||||
if(WEST)
|
||||
return WEST|SOUTH|EAST
|
||||
else
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
return EAST|NORTH|SOUTH
|
||||
if(SOUTH)
|
||||
return SOUTH|WEST|NORTH
|
||||
if(EAST)
|
||||
return EAST|WEST|SOUTH
|
||||
if(WEST)
|
||||
return WEST|NORTH|EAST
|
||||
|
||||
// Trinary get_node_connect_dirs() logic in a separate proc so it can be referenced from "trinary-ish" places like T-Valves
|
||||
/proc/get_node_connect_dirs_trinary(var/dir, var/mirrored = FALSE, var/tee = FALSE)
|
||||
var/node1_connect
|
||||
var/node2_connect
|
||||
var/node3_connect
|
||||
|
||||
if(tee)
|
||||
node1_connect = turn(dir, -90)
|
||||
node2_connect = turn(dir, 90)
|
||||
node3_connect = dir
|
||||
else if(mirrored)
|
||||
node1_connect = turn(dir, 180)
|
||||
node2_connect = turn(dir, 90)
|
||||
node3_connect = dir
|
||||
else
|
||||
node1_connect = turn(dir, 180)
|
||||
node2_connect = turn(dir, -90)
|
||||
node3_connect = dir
|
||||
return list(node1_connect, node2_connect, node3_connect)
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
|
||||
var/state = 0 // 0 = go straight, 1 = go to side
|
||||
|
||||
var/mirrored = FALSE
|
||||
|
||||
// like a trinary component, node1 is input, node2 is side output, node3 is straight output
|
||||
var/obj/machinery/atmospherics/node3
|
||||
|
||||
@@ -24,9 +26,9 @@
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/update_icon(animation)
|
||||
if(animation)
|
||||
flick("tvalve[src.state][!src.state]",src)
|
||||
flick("tvalve[mirrored ? "m" : ""][src.state][!src.state]",src)
|
||||
else
|
||||
icon_state = "tvalve[state]"
|
||||
icon_state = "tvalve[mirrored ? "m" : ""][state]"
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/update_underlays()
|
||||
if(..())
|
||||
@@ -34,28 +36,16 @@
|
||||
var/turf/T = get_turf(src)
|
||||
if(!istype(T))
|
||||
return
|
||||
add_underlay(T, node1, turn(dir, -180))
|
||||
|
||||
if(istype(src, /obj/machinery/atmospherics/tvalve/mirrored))
|
||||
add_underlay(T, node2, turn(dir, 90))
|
||||
else
|
||||
add_underlay(T, node2, turn(dir, -90))
|
||||
|
||||
add_underlay(T, node3, dir)
|
||||
var/list/node_connects = get_node_connect_dirs()
|
||||
add_underlay(T, node1, node_connects[1])
|
||||
add_underlay(T, node2, node_connects[2])
|
||||
add_underlay(T, node3, node_connects[3])
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/hide(var/i)
|
||||
update_underlays()
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/init_dir()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = SOUTH|NORTH|EAST
|
||||
if(SOUTH)
|
||||
initialize_directions = NORTH|SOUTH|WEST
|
||||
if(EAST)
|
||||
initialize_directions = WEST|EAST|SOUTH
|
||||
if(WEST)
|
||||
initialize_directions = EAST|WEST|NORTH
|
||||
initialize_directions = get_initialize_directions_trinary(dir, mirrored)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
if(reference == node1)
|
||||
@@ -179,26 +169,26 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/get_node_connect_dirs()
|
||||
return get_node_connect_dirs_trinary(dir, mirrored)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/atmos_init()
|
||||
var/node1_dir
|
||||
var/node2_dir
|
||||
var/node3_dir
|
||||
if(node1 && node2 && node3)
|
||||
return
|
||||
|
||||
node1_dir = turn(dir, 180)
|
||||
node2_dir = turn(dir, -90)
|
||||
node3_dir = dir
|
||||
var/list/node_connects = get_node_connect_dirs()
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node1_dir))
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[1]))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
if (check_connect_types(target,src))
|
||||
node1 = target
|
||||
break
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node2_dir))
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[2]))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
if (check_connect_types(target,src))
|
||||
node2 = target
|
||||
break
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node3_dir))
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[3]))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
if (check_connect_types(target,src))
|
||||
node3 = target
|
||||
@@ -294,7 +284,7 @@
|
||||
/obj/machinery/atmospherics/tvalve/digital/update_icon()
|
||||
..()
|
||||
if(!powered())
|
||||
icon_state = "tvalvenopower"
|
||||
icon_state = "tvalve[mirrored ? "m" : ""]nopower"
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/digital/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
@@ -363,120 +353,16 @@
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored
|
||||
icon_state = "map_tvalvem0"
|
||||
mirrored = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/bypass
|
||||
icon_state = "map_tvalvem1"
|
||||
state = 1
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/init_dir()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = SOUTH|NORTH|WEST
|
||||
if(SOUTH)
|
||||
initialize_directions = NORTH|SOUTH|EAST
|
||||
if(EAST)
|
||||
initialize_directions = WEST|EAST|NORTH
|
||||
if(WEST)
|
||||
initialize_directions = EAST|WEST|SOUTH
|
||||
/obj/machinery/atmospherics/tvalve/digital/mirrored
|
||||
icon_state = "map_tvalvem0"
|
||||
mirrored = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/atmos_init()
|
||||
var/node1_dir
|
||||
var/node2_dir
|
||||
var/node3_dir
|
||||
|
||||
node1_dir = turn(dir, 180)
|
||||
node2_dir = turn(dir, 90)
|
||||
node3_dir = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node1_dir))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node1 = target
|
||||
break
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node2_dir))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node2 = target
|
||||
break
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node3_dir))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node3 = target
|
||||
break
|
||||
|
||||
update_icon()
|
||||
update_underlays()
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/update_icon(animation)
|
||||
if(animation)
|
||||
flick("tvalvem[src.state][!src.state]",src)
|
||||
else
|
||||
icon_state = "tvalvem[state]"
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital // can be controlled by AI
|
||||
name = "digital switching valve"
|
||||
desc = "A digitally controlled valve."
|
||||
icon = 'icons/atmos/digital_tvalve.dmi'
|
||||
|
||||
var/frequency = 0
|
||||
var/id = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/Destroy()
|
||||
unregister_radio(src, frequency)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/bypass
|
||||
/obj/machinery/atmospherics/tvalve/digital/mirrored/bypass
|
||||
icon_state = "map_tvalvem1"
|
||||
state = 1
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/power_change()
|
||||
var/old_stat = stat
|
||||
..()
|
||||
if(old_stat != stat)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/update_icon()
|
||||
..()
|
||||
if(!powered())
|
||||
icon_state = "tvalvemnopower"
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/attack_hand(mob/user as mob)
|
||||
if(!powered())
|
||||
return
|
||||
if(!src.allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
//Radio remote control -eh?
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/proc/set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/initialize()
|
||||
. = ..()
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored/digital/receive_signal(datum/signal/signal)
|
||||
if(!signal.data["tag"] || (signal.data["tag"] != id))
|
||||
return 0
|
||||
|
||||
switch(signal.data["command"])
|
||||
if("valve_open")
|
||||
if(!state)
|
||||
go_to_side()
|
||||
|
||||
if("valve_close")
|
||||
if(state)
|
||||
go_straight()
|
||||
|
||||
if("valve_toggle")
|
||||
if(state)
|
||||
go_straight()
|
||||
else
|
||||
go_to_side()
|
||||
|
||||
@@ -145,7 +145,7 @@ Buildable meters
|
||||
src.pipe_type = PIPE_PASSIVE_GATE
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/unary/heat_exchanger))
|
||||
src.pipe_type = PIPE_HEAT_EXCHANGE
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/tvalve/mirrored/digital))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/tvalve/digital/mirrored))
|
||||
src.pipe_type = PIPE_DTVALVEM
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/tvalve/mirrored))
|
||||
src.pipe_type = PIPE_MTVALVEM
|
||||
@@ -1105,7 +1105,7 @@ Buildable meters
|
||||
V.node3.build_network()
|
||||
|
||||
if(PIPE_DTVALVEM) //mirrored digital t-valve
|
||||
var/obj/machinery/atmospherics/tvalve/mirrored/digital/V = new(src.loc)
|
||||
var/obj/machinery/atmospherics/tvalve/digital/mirrored/V = new(src.loc)
|
||||
if(src.req_access)
|
||||
V.req_access = src.req_access
|
||||
if(src.req_one_access)
|
||||
|
||||
Reference in New Issue
Block a user