This commit is contained in:
kevinz000
2020-01-15 19:32:38 -07:00
parent b42de8d457
commit 4f665930cc
5 changed files with 63 additions and 52 deletions

View File

@@ -1,13 +1,15 @@
//Builds networks like power cables/atmos lines/etc
//Just a holder parent type for now..
/obj/effect/network_builder
/obj/effect/mapping_helpers/network_builder
/// set var to true to not del on lateload
var/custom_spawned = FALSE
icon = 'icons/effects/mapping_helpers.dmi'
/// what directions we know connections are in
var/list/network_directions
/obj/effect/network_builder/Initialize(mapload)
/obj/effect/mapping_helpers/network_builder/Initialize(mapload)
. = ..()
var/conflict = check_duplicates()
if(conflict)
@@ -22,17 +24,17 @@
return INITIALIZE_HINT_LATELOAD
/// How this works: On LateInitialize, detect all directions that this should be applicable to, and do what it needs to do, and then inform all network builders in said directions that it's been around since it won't be around afterwards.
/obj/effect/network_builder/LateInitialize()
/obj/effect/mapping_helpers/network_builder/LateInitialize()
scan_directions()
build_network()
if(!custom_spawned)
qdel(src)
/obj/effect/network_builder/proc/check_duplicates()
/obj/effect/mapping_helpers/network_builder/proc/check_duplicates()
CRASH("Base abstract network builder tried to check duplicates.")
/obj/effect/network_builder/proc/scan_directions()
/obj/effect/mapping_helpers/network_builder/proc/scan_directions()
CRASH("Base abstract network builder tried to scan directions.")
/obj/effect/network_builder/proc/build_network()
/obj/effect/mapping_helpers/network_builder/proc/build_network()
CRASH("Base abstract network builder tried to build network.")

View File

@@ -5,7 +5,7 @@
/* Automatically places pipes on init based on any pipes connecting to it and adjacent helpers. Only supports cardinals.
* Conflicts with ANY PIPE ON ITS LAYER, as well as atmos network build helpers on the same layer, as well as any pipe on all layers. Do those manually.
*/
/obj/effect/network_builder/atmos_pipe
/obj/effect/mapping_helpers/network_builder/atmos_pipe
name = "atmos pipe autobuilder"
icon_state = "atmospipebuilder"
@@ -20,8 +20,10 @@
color = null
/obj/effect/network_builder/atmos_pipe/check_duplicates()
for(var/obj/effect/network_builder/atmos_pipe/other in loc)
/obj/effect/mapping_helpers/network_builder/atmos_pipe/check_duplicates()
for(var/obj/effect/mapping_helpers/network_builder/atmos_pipe/other in loc)
if(other == src)
continue
if(other.pipe_layer == pipe_layer)
return other
for(var/obj/machinery/atmospherics/A in loc)
@@ -32,7 +34,7 @@
return FALSE
/// Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
/obj/effect/network_builder/atmos_pipe/scan_directions()
/obj/effect/mapping_helpers/network_builder/atmos_pipe/scan_directions()
var/turf/T
for(var/i in GLOB.cardinals)
if(i in network_directions)
@@ -41,7 +43,7 @@
if(!T)
continue
var/found = FALSE
for(var/obj/effect/network_builder/atmos_pipe/other in T)
for(var/obj/effect/mapping_helpers/network_builder/atmos_pipe/other in T)
if(other.pipe_layer == pipe_layer)
network_directions += i
LAZYADD(other.network_directions, turn(i, 180))
@@ -56,7 +58,7 @@
return network_directions
/// Directions should only ever have cardinals.
/obj/effect/network_builder/atmos_pipe/build_network(list/directions = network_directions)
/obj/effect/mapping_helpers/network_builder/atmos_pipe/build_network(list/directions = network_directions)
if(!length(directions) <= 1)
return
var/obj/machinery/atmospherics/pipe/built
@@ -74,7 +76,7 @@
built.SetInitDirections()
built.on_construction(pipe_color, pipe_layer)
/obj/effect/network_builder/atmos_pipe/distro
/obj/effect/mapping_helpers/network_builder/atmos_pipe/distro
name = "distro line autobuilder"
pipe_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
@@ -82,7 +84,7 @@
pipe_color = rgb(130,43,255)
color = rgb(130,43,255)
/obj/effect/network_builder/atmos_pipe/scrubbers
/obj/effect/mapping_helpers/network_builder/atmos_pipe/scrubbers
name = "scrubbers line autobuilder"
pipe_layer = PIPING_LAYER_MAX
pixel_x = PIPING_LAYER_P_X

View File

@@ -3,7 +3,7 @@
#define KNOT_FORCED 2
/// Automatically links on init to power cables and other cable builder helpers. Only supports cardinals.
/obj/effect/network_builder/power_cable
/obj/effect/mapping_helpers/network_builder/power_cable
name = "power line autobuilder"
icon_state = "powerlinebuilder"
@@ -16,11 +16,17 @@
var/cable_color = "red"
/obj/effect/network_builder/power_cable/check_duplicates()
return (locate(/obj/structure/cable) in loc) || (locate(/obj/effect/network_builder/power_cable) in loc)
/obj/effect/mapping_helpers/network_builder/power_cable/check_duplicates()
var/obj/structure/cable/C = locate() in loc
if(C)
return C
for(var/obj/effect/mapping_helpers/network_builder/power_cable/other in loc)
if(other == src)
continue
return other
/// Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
/obj/effect/network_builder/power_cable/scan_directions()
/obj/effect/mapping_helpers/network_builder/power_cable/scan_directions()
var/turf/T
for(var/i in GLOB.cardinals)
if(i in network_directions)
@@ -28,7 +34,7 @@
T = get_step(loc, i)
if(!T)
continue
var/obj/effect/network_builder/power_cable/other = locate() in T
var/obj/effect/mapping_helpers/network_builder/power_cable/other = locate() in T
if(other)
network_directions += i
LAZYADD(other.network_directions, turn(i, 180))
@@ -40,7 +46,7 @@
return network_directions
/// Directions should only ever have cardinals.
/obj/effect/network_builder/power_cable/build_network(list/directions = network_directions)
/obj/effect/mapping_helpers/network_builder/power_cable/build_network(list/directions = network_directions)
if(!length(directions))
return
else if(length(directions) == 1)
@@ -63,117 +69,117 @@
new /obj/structure/cable(loc, cable_color, NONE, directions[i])
do_knot = FALSE
/obj/effect/network_builder/power_cable/proc/should_auto_knot()
/obj/effect/mapping_helpers/network_builder/power_cable/proc/should_auto_knot()
return (locate(/obj/machinery/power/terminal) in loc)
/obj/effect/network_builder/power_cable/knot
/obj/effect/mapping_helpers/network_builder/power_cable/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/auto
/obj/effect/mapping_helpers/network_builder/power_cable/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// Red
/obj/effect/network_builder/power_cable/red
/obj/effect/mapping_helpers/network_builder/power_cable/red
color = "#ff0000"
cable_color = "red"
/obj/effect/network_builder/power_cable/red/knot
/obj/effect/mapping_helpers/network_builder/power_cable/red/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/red/auto
/obj/effect/mapping_helpers/network_builder/power_cable/red/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// White
/obj/effect/network_builder/power_cable/white
/obj/effect/mapping_helpers/network_builder/power_cable/white
color = "#ffffff"
cable_color = "white"
/obj/effect/network_builder/power_cable/white/knot
/obj/effect/mapping_helpers/network_builder/power_cable/white/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/white/auto
/obj/effect/mapping_helpers/network_builder/power_cable/white/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// Cyan
/obj/effect/network_builder/power_cable/cyan
/obj/effect/mapping_helpers/network_builder/power_cable/cyan
color = "#00ffff"
cable_color = "cyan"
/obj/effect/network_builder/power_cable/cyan/knot
/obj/effect/mapping_helpers/network_builder/power_cable/cyan/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/cyan/auto
/obj/effect/mapping_helpers/network_builder/power_cable/cyan/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// Orange
/obj/effect/network_builder/power_cable/orange
/obj/effect/mapping_helpers/network_builder/power_cable/orange
color = "#ff8000"
cable_color = "orange"
/obj/effect/network_builder/power_cable/orange/knot
/obj/effect/mapping_helpers/network_builder/power_cable/orange/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/orange/auto
/obj/effect/mapping_helpers/network_builder/power_cable/orange/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// Pink
/obj/effect/network_builder/power_cable/pink
/obj/effect/mapping_helpers/network_builder/power_cable/pink
color = "#ff3cc8"
cable_color = "pink"
/obj/effect/network_builder/power_cable/pink/knot
/obj/effect/mapping_helpers/network_builder/power_cable/pink/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/pink/auto
/obj/effect/mapping_helpers/network_builder/power_cable/pink/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// Blue
/obj/effect/network_builder/power_cable/blue
/obj/effect/mapping_helpers/network_builder/power_cable/blue
color = "#1919c8"
cable_color = "blue"
/obj/effect/network_builder/power_cable/blue/knot
/obj/effect/mapping_helpers/network_builder/power_cable/blue/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/blue/auto
/obj/effect/mapping_helpers/network_builder/power_cable/blue/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// Green
/obj/effect/network_builder/power_cable/green
/obj/effect/mapping_helpers/network_builder/power_cable/green
color = "#00aa00"
cable_color = "green"
/obj/effect/network_builder/power_cable/green/knot
/obj/effect/mapping_helpers/network_builder/power_cable/green/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/green/auto
/obj/effect/mapping_helpers/network_builder/power_cable/green/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO
// Yellow
/obj/effect/network_builder/power_cable/yellow
/obj/effect/mapping_helpers/network_builder/power_cable/yellow
color = "#ffff00"
cable_color = "yellow"
/obj/effect/network_builder/power_cable/yellow/knot
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/knot
icon_state = "powerlinebuilderknot"
knot = KNOT_FORCED
/obj/effect/network_builder/power_cable/yellow/auto
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto
icon_state = "powerlinebuilderauto"
knot = KNOT_AUTO