Rough port of

a8c9bb786a

Unsure if I even did it correctly, but seems to function in the brief tests done, no compile errors.

In preparation of porting the massive number of floor decals for the new map.
This commit is contained in:
Woodratt
2017-08-21 14:16:59 -07:00
parent 1546b25f4c
commit 10c8586db0
5 changed files with 907 additions and 47 deletions

View File

@@ -35,42 +35,24 @@ datum/controller/game_controller/New()
if(!syndicate_code_response) syndicate_code_response = generate_code_phrase() if(!syndicate_code_response) syndicate_code_response = generate_code_phrase()
datum/controller/game_controller/proc/setup() datum/controller/game_controller/proc/setup()
spawn(20)
createRandomZlevel()
setup_objects() setup_objects()
setupgenetics() setupgenetics()
SetupXenoarch() SetupXenoarch()
transfer_controller = new transfer_controller = new
admin_notice("<span class='danger'>Initializations complete.</span>", R_DEBUG)
#if UNIT_TEST
#define CHECK_SLEEP_MASTER // For unit tests we don't care about a smooth lobby screen experience. We care about speed.
#else
#define CHECK_SLEEP_MASTER if(++initialized_objects > 500) { initialized_objects=0;sleep(world.tick_lag); }
#endif
datum/controller/game_controller/proc/setup_objects() datum/controller/game_controller/proc/setup_objects()
admin_notice("<span class='danger'>Initializing objects</span>", R_DEBUG) #if !UNIT_TEST
sleep(-1) var/initialized_objects = 0
for(var/atom/movable/object in world) #endif
if(!QDELETED(object))
object.initialize()
admin_notice("<span class='danger'>Initializing areas</span>", R_DEBUG)
sleep(-1)
for(var/area/area in all_areas)
area.initialize()
admin_notice("<span class='danger'>Initializing pipe networks</span>", R_DEBUG)
sleep(-1)
for(var/obj/machinery/atmospherics/machine in machines)
machine.build_network()
admin_notice("<span class='danger'>Initializing atmos machinery.</span>", R_DEBUG)
sleep(-1)
for(var/obj/machinery/atmospherics/unary/U in machines)
if(istype(U, /obj/machinery/atmospherics/unary/vent_pump))
var/obj/machinery/atmospherics/unary/vent_pump/T = U
T.broadcast_status()
else if(istype(U, /obj/machinery/atmospherics/unary/vent_scrubber))
var/obj/machinery/atmospherics/unary/vent_scrubber/T = U
T.broadcast_status()
// Set up antagonists. // Set up antagonists.
populate_antag_type_list() populate_antag_type_list()
@@ -78,12 +60,50 @@ datum/controller/game_controller/proc/setup_objects()
//Set up spawn points. //Set up spawn points.
populate_spawn_points() populate_spawn_points()
admin_notice("<span class='danger'>Initializing Floor Decals</span>", R_DEBUG)
var/list/turfs_with_decals = list()
for(var/obj/effect/floor_decal/D in world)
var/T = D.add_to_turf_decals()
if(T) turfs_with_decals |= T
CHECK_SLEEP_MASTER
for(var/item in turfs_with_decals)
var/turf/T = item
if(T.decals) T.apply_decals()
CHECK_SLEEP_MASTER
floor_decals_initialized = TRUE
sleep(1)
admin_notice("<span class='danger'>Initializing objects</span>", R_DEBUG)
for(var/atom/movable/object in world)
if(!QDELETED(object))
object.initialize()
CHECK_SLEEP_MASTER
sleep(1)
admin_notice("<span class='danger'>Initializing areas</span>", R_DEBUG)
for(var/area/area in all_areas)
area.initialize()
CHECK_SLEEP_MASTER
sleep(1)
admin_notice("<span class='danger'>Initializing pipe networks</span>", R_DEBUG)
for(var/obj/machinery/atmospherics/machine in machines)
machine.build_network()
CHECK_SLEEP_MASTER
admin_notice("<span class='danger'>Initializing atmos machinery.</span>", R_DEBUG)
for(var/obj/machinery/atmospherics/unary/U in machines)
if(istype(U, /obj/machinery/atmospherics/unary/vent_pump))
var/obj/machinery/atmospherics/unary/vent_pump/T = U
T.broadcast_status()
else if(istype(U, /obj/machinery/atmospherics/unary/vent_scrubber))
var/obj/machinery/atmospherics/unary/vent_scrubber/T = U
T.broadcast_status()
CHECK_SLEEP_MASTER
admin_notice("<span class='danger'>Initializing turbolifts</span>", R_DEBUG) admin_notice("<span class='danger'>Initializing turbolifts</span>", R_DEBUG)
for(var/thing in turbolifts) for(var/thing in turbolifts)
var/obj/turbolift_map_holder/lift = thing var/obj/turbolift_map_holder/lift = thing
if(!QDELETED(lift)) if(!QDELETED(lift))
lift.initialize() lift.initialize()
sleep(-1) CHECK_SLEEP_MASTER
admin_notice("<span class='danger'>Initializations complete.</span>", R_DEBUG)
sleep(-1)

View File

@@ -14,22 +14,16 @@ var/list/floor_decals = list()
if(newcolour) color = newcolour if(newcolour) color = newcolour
..(newloc) ..(newloc)
// VOREStation Edit - Hack to workaround byond crash bug
/obj/effect/floor_decal/initialize() /obj/effect/floor_decal/initialize()
if(supplied_dir) set_dir(supplied_dir) if(!floor_decals_initialized || !loc || QDELETED(src))
return
add_to_turf_decals()
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(istype(T, /turf/simulated/floor) || istype(T, /turf/unsimulated/floor) || istype(T, /turf/simulated/shuttle/floor)) T.apply_decals()
var/cache_key = "[alpha]-[color]-[dir]-[icon_state]-[layer]"
if(!floor_decals[cache_key])
var/image/I = image(icon = src.icon, icon_state = src.icon_state, dir = src.dir)
I.layer = T.layer
I.color = src.color
I.alpha = src.alpha
floor_decals[cache_key] = I
if(!T.decals) T.decals = list()
T.decals |= floor_decals[cache_key]
T.overlays |= floor_decals[cache_key]
qdel(src) qdel(src)
return return
// VOREStation Edit End
/obj/effect/floor_decal/reset /obj/effect/floor_decal/reset
name = "reset marker" name = "reset marker"
@@ -55,6 +49,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/black/full /obj/effect/floor_decal/corner/black/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/black/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/black/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/black/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/black/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/black/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/black/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/blue /obj/effect/floor_decal/corner/blue
name = "blue corner" name = "blue corner"
color = COLOR_BLUE_GRAY color = COLOR_BLUE_GRAY
@@ -65,6 +77,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/blue/full /obj/effect/floor_decal/corner/blue/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/blue/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/blue/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/blue/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/blue/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/blue/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/blue/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/paleblue /obj/effect/floor_decal/corner/paleblue
name = "pale blue corner" name = "pale blue corner"
color = COLOR_PALE_BLUE_GRAY color = COLOR_PALE_BLUE_GRAY
@@ -75,6 +105,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/paleblue/full /obj/effect/floor_decal/corner/paleblue/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/paleblue/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/paleblue/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/paleblue/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/paleblue/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/paleblue/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/paleblue/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/green /obj/effect/floor_decal/corner/green
name = "green corner" name = "green corner"
color = COLOR_GREEN_GRAY color = COLOR_GREEN_GRAY
@@ -85,6 +133,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/green/full /obj/effect/floor_decal/corner/green/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/green/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/green/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/green/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/green/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/green/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/green/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/lime /obj/effect/floor_decal/corner/lime
name = "lime corner" name = "lime corner"
color = COLOR_PALE_GREEN_GRAY color = COLOR_PALE_GREEN_GRAY
@@ -95,6 +161,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/lime/full /obj/effect/floor_decal/corner/lime/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/lime/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/lime/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/lime/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/lime/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/lime/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/lime/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/yellow /obj/effect/floor_decal/corner/yellow
name = "yellow corner" name = "yellow corner"
color = COLOR_BROWN color = COLOR_BROWN
@@ -105,6 +189,27 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/yellow/full /obj/effect/floor_decal/corner/yellow/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/yellow/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/yellow/full
icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/yellow/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/yellow/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/yellow/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/yellow/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/yellow/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/beige /obj/effect/floor_decal/corner/beige
name = "beige corner" name = "beige corner"
color = COLOR_BEIGE color = COLOR_BEIGE
@@ -115,6 +220,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/beige/full /obj/effect/floor_decal/corner/beige/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/beige/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/beige/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/beige/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/beige/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/beige/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/beige/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/red /obj/effect/floor_decal/corner/red
name = "red corner" name = "red corner"
color = COLOR_RED_GRAY color = COLOR_RED_GRAY
@@ -125,6 +248,27 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/red/full /obj/effect/floor_decal/corner/red/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/red/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/red/full
icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/red/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/red/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/red/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/red/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/red/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/pink /obj/effect/floor_decal/corner/pink
name = "pink corner" name = "pink corner"
color = COLOR_PALE_RED_GRAY color = COLOR_PALE_RED_GRAY
@@ -135,6 +279,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/pink/full /obj/effect/floor_decal/corner/pink/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/pink/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/pink/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/pink/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/pink/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/pink/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/pink/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/purple /obj/effect/floor_decal/corner/purple
name = "purple corner" name = "purple corner"
color = COLOR_PURPLE_GRAY color = COLOR_PURPLE_GRAY
@@ -145,6 +307,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/purple/full /obj/effect/floor_decal/corner/purple/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/purple/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/purple/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/purple/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/purple/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/purple/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/purple/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/mauve /obj/effect/floor_decal/corner/mauve
name = "mauve corner" name = "mauve corner"
color = COLOR_PALE_PURPLE_GRAY color = COLOR_PALE_PURPLE_GRAY
@@ -155,6 +335,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/mauve/full /obj/effect/floor_decal/corner/mauve/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/mauve/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/mauve/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/mauve/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/mauve/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/mauve/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/mauve/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/orange /obj/effect/floor_decal/corner/orange
name = "orange corner" name = "orange corner"
color = COLOR_DARK_ORANGE color = COLOR_DARK_ORANGE
@@ -165,6 +363,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/orange/full /obj/effect/floor_decal/corner/orange/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/orange/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/orange/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/orange/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/orange/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/orange/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/orange/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/brown /obj/effect/floor_decal/corner/brown
name = "brown corner" name = "brown corner"
color = COLOR_DARK_BROWN color = COLOR_DARK_BROWN
@@ -175,6 +391,25 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/brown/full /obj/effect/floor_decal/corner/brown/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/brown/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/brown/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/brown/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/brown/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/brown/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/brown/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/white /obj/effect/floor_decal/corner/white
name = "white corner" name = "white corner"
icon_state = "corner_white" icon_state = "corner_white"
@@ -185,6 +420,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/white/full /obj/effect/floor_decal/corner/white/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/white/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/white/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/white/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/white/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/white/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/white/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/grey /obj/effect/floor_decal/corner/grey
name = "grey corner" name = "grey corner"
color = "#8D8C8C" color = "#8D8C8C"
@@ -195,6 +448,49 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/grey/full /obj/effect/floor_decal/corner/grey/full
icon_state = "corner_white_full" icon_state = "corner_white_full"
/obj/effect/floor_decal/corner/grey/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/grey/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/grey/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/grey/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/grey/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/grey/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/corner/lightgrey
name = "lightgrey corner"
color = "#A8B2B6"
/obj/effect/floor_decal/corner/lightgrey/diagonal
icon_state = "corner_white_diagonal"
/obj/effect/floor_decal/corner/lightgrey/three_quarters
icon_state = "corner_white_three_quarters"
/obj/effect/floor_decal/corner/lightgrey/border
icon_state = "bordercolor"
/obj/effect/floor_decal/corner/lightgrey/bordercorner
icon_state = "bordercolorcorner"
/obj/effect/floor_decal/corner/lightgrey/bordercorner2
icon_state = "bordercolorcorner2"
/obj/effect/floor_decal/corner/lightgrey/borderfull
icon_state = "bordercolorfull"
/obj/effect/floor_decal/corner/lightgrey/bordercee
icon_state = "bordercolorcee"
/obj/effect/floor_decal/spline/plain /obj/effect/floor_decal/spline/plain
name = "spline - plain" name = "spline - plain"
icon_state = "spline_plain" icon_state = "spline_plain"
@@ -213,7 +509,7 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/spline/fancy/wood/cee /obj/effect/floor_decal/spline/fancy/wood/cee
icon_state = "spline_fancy_cee" icon_state = "spline_fancy_cee"
/obj/effect/floor_decal/spline/fancy/wood/full /obj/effect/floor_decal/spline/fancy/wood/three_quarters
icon_state = "spline_fancy_full" icon_state = "spline_fancy_full"
/obj/effect/floor_decal/industrial/warning /obj/effect/floor_decal/industrial/warning
@@ -229,6 +525,19 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/industrial/warning/cee /obj/effect/floor_decal/industrial/warning/cee
icon_state = "warningcee" icon_state = "warningcee"
/obj/effect/floor_decal/industrial/danger
name = "hazard stripes"
icon_state = "danger"
/obj/effect/floor_decal/industrial/danger/corner
icon_state = "dangercorner"
/obj/effect/floor_decal/industrial/danger/full
icon_state = "dangerfull"
/obj/effect/floor_decal/industrial/danger/cee
icon_state = "dangercee"
/obj/effect/floor_decal/industrial/warning/dust /obj/effect/floor_decal/industrial/warning/dust
name = "hazard stripes" name = "hazard stripes"
icon_state = "warning_dust" icon_state = "warning_dust"
@@ -403,4 +712,441 @@ var/list/floor_decals = list()
icon_state = "white_d2" icon_state = "white_d2"
/obj/effect/floor_decal/sign/dock/three /obj/effect/floor_decal/sign/dock/three
icon_state = "white_d3" icon_state = "white_d3"
/obj/effect/floor_decal/rust
name = "rust"
icon_state = "rust"
/obj/effect/floor_decal/rust/mono_rusted1
icon_state = "mono_rusted1"
/obj/effect/floor_decal/rust/mono_rusted2
icon_state = "mono_rusted2"
/obj/effect/floor_decal/rust/mono_rusted3
icon_state = "mono_rusted3"
/obj/effect/floor_decal/rust/part_rusted1
icon_state = "part_rusted1"
/obj/effect/floor_decal/rust/part_rusted2
icon_state = "part_rusted2"
/obj/effect/floor_decal/rust/part_rusted3
icon_state = "part_rusted3"
/obj/effect/floor_decal/rust/color_rusted
icon_state = "color_rusted"
/obj/effect/floor_decal/rust/color_rustedcorner
icon_state = "color_rustedcorner"
/obj/effect/floor_decal/rust/color_rustedfull
icon_state = "color_rustedfull"
/obj/effect/floor_decal/rust/color_rustedcee
icon_state = "color_rustedcee"
/obj/effect/floor_decal/rust/steel_decals_rusted1
icon_state = "steel_decals_rusted1"
/obj/effect/floor_decal/rust/steel_decals_rusted2
icon_state = "steel_decals_rusted2"
//Old tile
/obj/effect/floor_decal/corner_oldtile
name = "corner oldtile"
icon_state = "corner_oldtile"
/obj/effect/floor_decal/corner_oldtile/white
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#d9d9d9"
/obj/effect/floor_decal/corner_oldtile/white/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/white/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
/obj/effect/floor_decal/corner_oldtile/blue
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#8ba7ad"
/obj/effect/floor_decal/corner_oldtile/blue/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/blue/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
/obj/effect/floor_decal/corner_oldtile/yellow
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#8c6d46"
/obj/effect/floor_decal/corner_oldtile/yellow/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/yellow/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
/obj/effect/floor_decal/corner_oldtile/gray
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#687172"
/obj/effect/floor_decal/corner_oldtile/gray/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/gray/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
/obj/effect/floor_decal/corner_oldtile/beige
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#385e60"
/obj/effect/floor_decal/corner_oldtile/beige/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/beige/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
/obj/effect/floor_decal/corner_oldtile/red
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#964e51"
/obj/effect/floor_decal/corner_oldtile/red/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/red/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
/obj/effect/floor_decal/corner_oldtile/purple
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#906987"
/obj/effect/floor_decal/corner_oldtile/purple/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/purple/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
/obj/effect/floor_decal/corner_oldtile/green
name = "corner oldtile"
icon_state = "corner_oldtile"
color = "#46725c"
/obj/effect/floor_decal/corner_oldtile/green/diagonal
name = "corner oldtile diagonal"
icon_state = "corner_oldtile_diagonal"
/obj/effect/floor_decal/corner_oldtile/green/full
name = "corner oldtile full"
icon_state = "corner_oldtile_full"
//Kafel
/obj/effect/floor_decal/corner_kafel
name = "corner kafel"
icon_state = "corner_kafel"
/obj/effect/floor_decal/corner_kafel/white
name = "corner kafel"
icon_state = "corner_kafel"
color = "#d9d9d9"
/obj/effect/floor_decal/corner_kafel/white/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/white/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
/obj/effect/floor_decal/corner_kafel/blue
name = "corner kafel"
icon_state = "corner_kafel"
color = "#8ba7ad"
/obj/effect/floor_decal/corner_kafel/blue/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/blue/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
/obj/effect/floor_decal/corner_kafel/yellow
name = "corner kafel"
icon_state = "corner_kafel"
color = "#8c6d46"
/obj/effect/floor_decal/corner_kafel/yellow/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/yellow/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
/obj/effect/floor_decal/corner_kafel/gray
name = "corner kafel"
icon_state = "corner_kafel"
color = "#687172"
/obj/effect/floor_decal/corner_kafel/gray/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/gray/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
/obj/effect/floor_decal/corner_kafel/beige
name = "corner kafel"
icon_state = "corner_kafel"
color = "#385e60"
/obj/effect/floor_decal/corner_kafel/beige/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/beige/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
/obj/effect/floor_decal/corner_kafel/red
name = "corner kafel"
icon_state = "corner_kafel"
color = "#964e51"
/obj/effect/floor_decal/corner_kafel/red/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/red/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
/obj/effect/floor_decal/corner_kafel/purple
name = "corner kafel"
icon_state = "corner_kafel"
color = "#906987"
/obj/effect/floor_decal/corner_kafel/purple/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/purple/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
/obj/effect/floor_decal/corner_kafel/green
name = "corner kafel"
icon_state = "corner_kafel"
color = "#46725c"
/obj/effect/floor_decal/corner_kafel/green/diagonal
name = "corner kafel diagonal"
icon_state = "corner_kafel_diagonal"
/obj/effect/floor_decal/corner_kafel/green/full
name = "corner kafel full"
icon_state = "corner_kafel_full"
//Techfloor
/obj/effect/floor_decal/corner_techfloor_gray
name = "corner techfloorgray"
icon_state = "corner_techfloor_gray"
/obj/effect/floor_decal/corner_techfloor_gray/diagonal
name = "corner techfloorgray diagonal"
icon_state = "corner_techfloor_gray_diagonal"
/obj/effect/floor_decal/corner_techfloor_gray/full
name = "corner techfloorgray full"
icon_state = "corner_techfloor_gray_full"
/obj/effect/floor_decal/corner_techfloor_grid
name = "corner techfloorgrid"
icon_state = "corner_techfloor_grid"
/obj/effect/floor_decal/corner_techfloor_grid/diagonal
name = "corner techfloorgrid diagonal"
icon_state = "corner_techfloor_grid_diagonal"
/obj/effect/floor_decal/corner_techfloor_grid/full
name = "corner techfloorgrid full"
icon_state = "corner_techfloor_grid_full"
/obj/effect/floor_decal/corner_steel_grid
name = "corner steel_grid"
icon_state = "steel_grid"
/obj/effect/floor_decal/corner_steel_grid/diagonal
name = "corner tsteel_grid diagonal"
icon_state = "steel_grid_diagonal"
/obj/effect/floor_decal/corner_steel_grid/full
name = "corner steel_grid full"
icon_state = "steel_grid_full"
/obj/effect/floor_decal/borderfloor
name = "border floor"
icon_state = "borderfloor"
/obj/effect/floor_decal/borderfloor/corner
icon_state = "borderfloorcorner"
/obj/effect/floor_decal/borderfloor/corner2
icon_state = "borderfloorcorner2"
/obj/effect/floor_decal/borderfloor/full
icon_state = "borderfloorfull"
/obj/effect/floor_decal/borderfloor/cee
icon_state = "borderfloorcee"
/obj/effect/floor_decal/borderfloorblack
name = "border floor"
icon_state = "borderfloor_black"
/obj/effect/floor_decal/borderfloorblack/corner
icon_state = "borderfloorcorner_black"
/obj/effect/floor_decal/borderfloorblack/corner2
icon_state = "borderfloorcorner2_black"
/obj/effect/floor_decal/borderfloorblack/full
icon_state = "borderfloorfull_black"
/obj/effect/floor_decal/borderfloorblack/cee
icon_state = "borderfloorcee_black"
/obj/effect/floor_decal/borderfloorwhite
name = "border floor"
icon_state = "borderfloor_white"
/obj/effect/floor_decal/borderfloorwhite/corner
icon_state = "borderfloorcorner_white"
/obj/effect/floor_decal/borderfloorwhite/corner2
icon_state = "borderfloorcorner2_white"
/obj/effect/floor_decal/borderfloorwhite/full
icon_state = "borderfloorfull_white"
/obj/effect/floor_decal/borderfloorwhite/cee
icon_state = "borderfloorcee_white"
/obj/effect/floor_decal/steeldecal
name = "steel decal"
icon_state = "steel_decals1"
/obj/effect/floor_decal/steeldecal/steel_decals1
icon_state = "steel_decals1"
/obj/effect/floor_decal/steeldecal/steel_decals2
icon_state = "steel_decals2"
/obj/effect/floor_decal/steeldecal/steel_decals3
icon_state = "steel_decals3"
/obj/effect/floor_decal/steeldecal/steel_decals4
icon_state = "steel_decals4"
/obj/effect/floor_decal/steeldecal/steel_decals5
icon_state = "steel_decals5"
/obj/effect/floor_decal/steeldecal/steel_decals6
icon_state = "steel_decals6"
/obj/effect/floor_decal/steeldecal/steel_decals7
icon_state = "steel_decals7"
/obj/effect/floor_decal/steeldecal/steel_decals8
icon_state = "steel_decals8"
/obj/effect/floor_decal/steeldecal/steel_decals9
icon_state = "steel_decals9"
/obj/effect/floor_decal/steeldecal/steel_decals10
icon_state = "steel_decals10"
/obj/effect/floor_decal/steeldecal/steel_decals_central1
icon_state = "steel_decals_central1"
/obj/effect/floor_decal/steeldecal/steel_decals_central2
icon_state = "steel_decals_central2"
/obj/effect/floor_decal/steeldecal/steel_decals_central3
icon_state = "steel_decals_central3"
/obj/effect/floor_decal/steeldecal/steel_decals_central4
icon_state = "steel_decals_central4"
/obj/effect/floor_decal/steeldecal/steel_decals_central5
icon_state = "steel_decals_central5"
/obj/effect/floor_decal/steeldecal/steel_decals_central6
icon_state = "steel_decals_central6"
/obj/effect/floor_decal/steeldecal/steel_decals_central7
icon_state = "steel_decals_central7"
/obj/effect/floor_decal/techfloor
name = "techfloor edges"
icon_state = "techfloor_edges"
/obj/effect/floor_decal/techfloor/corner
name = "techfloor corner"
icon_state = "techfloor_corners"
/obj/effect/floor_decal/techfloor/orange
name = "techfloor edges"
icon_state = "techfloororange_edges"
/obj/effect/floor_decal/techfloor/orange/corner
name = "techfloor corner"
icon_state = "techfloororange_corners"
/obj/effect/floor_decal/techfloor/hole
name = "hole left"
icon_state = "techfloor_hole_left"
/obj/effect/floor_decal/techfloor/hole/right
name = "hole right"
icon_state = "techfloor_hole_right"
//Grass for ship garden
/obj/effect/floor_decal/grass_edge
name = "grass edge"
icon_state = "grass_edge"
/obj/effect/floor_decal/grass_edge/corner
name = "grass edge"
icon_state = "grass_edge_corner"

View File

@@ -0,0 +1,90 @@
//
// Initialize floor decals! Woo! This is crazy.
//
var/global/floor_decals_initialized = FALSE
// The Turf Decal Holder
// Since it is unsafe to add overlays to turfs, we hold them here for now.
// Since I want this object to basically not exist, I am modeling it in part after lighting_overlay
/atom/movable/turf_overlay_holder
name = "turf overlay holder"
density = 0
simulated = 0
anchored = 1
layer = TURF_LAYER
icon = null
icon_state = null
mouse_opacity = 0
auto_init = 0
/atom/movable/turf_overlay_holder/New(var/atom/newloc)
..()
verbs.Cut()
var/turf/T = loc
T.overlay_holder = src
/atom/movable/turf_overlay_holder/Destroy()
if(loc)
var/turf/T = loc
if(T.overlay_holder == src)
T.overlay_holder = null
. = ..()
// Variety of overrides so the overlays don't get affected by weird things.
/atom/movable/turf_overlay_holder/ex_act()
return
/atom/movable/turf_overlay_holder/singularity_act()
return
/atom/movable/turf_overlay_holder/singularity_pull()
return
/atom/movable/turf_overlay_holder/forceMove()
return 0 //should never move
/atom/movable/turf_overlay_holder/Move()
return 0
/atom/movable/turf_overlay_holder/throw_at()
return 0
/obj/effect/floor_decal/proc/add_to_turf_decals()
if(src.supplied_dir) src.set_dir(src.supplied_dir)
var/turf/T = get_turf(src)
if(istype(T, /turf/simulated/floor) || istype(T, /turf/unsimulated/floor) || istype(T, /turf/simulated/shuttle/floor))
var/cache_key = "[src.alpha]-[src.color]-[src.dir]-[src.icon_state]-[T.layer]"
var/image/I = floor_decals[cache_key]
if(!I)
I = image(icon = src.icon, icon_state = src.icon_state, dir = src.dir)
I.layer = T.layer
I.color = src.color
I.alpha = src.alpha
floor_decals[cache_key] = I
if(!T.decals) T.decals = list()
//world.log << "About to add img:\ref[I] onto decals at turf:\ref[T] ([T.x],[T.y],[T.z]) which has appearance:\ref[T.appearance] and decals.len=[T.decals.len]"
T.decals += I
return T
// qdel(D)
src.loc = null
src.tag = null
// Changes to turf to let us do this
/turf
var/atom/movable/turf_overlay_holder/overlay_holder = null
// After a turf change, destroy the old overlay holder since we will have lost access to it.
/turf/post_change()
var/atom/movable/turf_overlay_holder/TOH = locate(/atom/movable/turf_overlay_holder, src)
if(TOH)
qdel(TOH)
..()
/turf/proc/apply_decals()
if(decals)
if(!overlay_holder)
overlay_holder = new(src)
overlay_holder.overlays = src.decals
else if(overlay_holder)
overlay_holder.overlays.Cut()

View File

@@ -60,8 +60,11 @@ var/list/flooring_cache = list()
if(!(istype(T) && T.flooring && T.flooring.name == flooring.name)) if(!(istype(T) && T.flooring && T.flooring.name == flooring.name))
overlays |= get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHWEST]", "[flooring.icon_base]_corners", SOUTHWEST) overlays |= get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHWEST]", "[flooring.icon_base]_corners", SOUTHWEST)
if(decals && decals.len) // VOREStation Edit - Hack workaround to byond crash bug
overlays |= decals //if(decals && decals.len)
//overlays |= decals
apply_decals()
// VOREStation Edit End
if(is_plating() && !(isnull(broken) && isnull(burnt))) //temp, todo if(is_plating() && !(isnull(broken) && isnull(burnt))) //temp, todo
icon = 'icons/turf/flooring/plating.dmi' icon = 'icons/turf/flooring/plating.dmi'

View File

@@ -1021,6 +1021,7 @@
#include "code\game\turfs\flooring\flooring.dm" #include "code\game\turfs\flooring\flooring.dm"
#include "code\game\turfs\flooring\flooring_decals.dm" #include "code\game\turfs\flooring\flooring_decals.dm"
#include "code\game\turfs\flooring\flooring_premade.dm" #include "code\game\turfs\flooring\flooring_premade.dm"
#include "code\game\turfs\flooring\turf_overlay_holder.dm"
#include "code\game\turfs\initialization\init.dm" #include "code\game\turfs\initialization\init.dm"
#include "code\game\turfs\initialization\maintenance.dm" #include "code\game\turfs\initialization\maintenance.dm"
#include "code\game\turfs\simulated\floor.dm" #include "code\game\turfs\simulated\floor.dm"