Merge pull request #3726 from Woodratt/WR_Floortile_stuff

Woodrat breaks everything with floor decals
This commit is contained in:
Anewbe
2017-08-27 15:13:20 -04:00
committed by GitHub
5 changed files with 907 additions and 47 deletions
+51 -31
View File
@@ -35,42 +35,24 @@ datum/controller/game_controller/New()
if(!syndicate_code_response) syndicate_code_response = generate_code_phrase()
datum/controller/game_controller/proc/setup()
spawn(20)
createRandomZlevel()
setup_objects()
setupgenetics()
SetupXenoarch()
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()
admin_notice("<span class='danger'>Initializing objects</span>", R_DEBUG)
sleep(-1)
for(var/atom/movable/object in world)
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()
#if !UNIT_TEST
var/initialized_objects = 0
#endif
// Set up antagonists.
populate_antag_type_list()
@@ -78,12 +60,50 @@ datum/controller/game_controller/proc/setup_objects()
//Set up 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)
for(var/thing in turbolifts)
var/obj/turbolift_map_holder/lift = thing
if(!QDELETED(lift))
lift.initialize()
sleep(-1)
admin_notice("<span class='danger'>Initializations complete.</span>", R_DEBUG)
sleep(-1)
CHECK_SLEEP_MASTER
+760 -14
View File
@@ -14,22 +14,16 @@ var/list/floor_decals = list()
if(newcolour) color = newcolour
..(newloc)
// VOREStation Edit - Hack to workaround byond crash bug
/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)
if(istype(T, /turf/simulated/floor) || istype(T, /turf/unsimulated/floor) || istype(T, /turf/simulated/shuttle/floor))
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]
T.apply_decals()
qdel(src)
return
// VOREStation Edit End
/obj/effect/floor_decal/reset
name = "reset marker"
@@ -55,6 +49,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/black/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
name = "blue corner"
color = COLOR_BLUE_GRAY
@@ -65,6 +77,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/blue/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
name = "pale blue corner"
color = COLOR_PALE_BLUE_GRAY
@@ -75,6 +105,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/paleblue/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
name = "green corner"
color = COLOR_GREEN_GRAY
@@ -85,6 +133,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/green/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
name = "lime corner"
color = COLOR_PALE_GREEN_GRAY
@@ -95,6 +161,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/lime/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
name = "yellow corner"
color = COLOR_BROWN
@@ -105,6 +189,27 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/yellow/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
name = "beige corner"
color = COLOR_BEIGE
@@ -115,6 +220,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/beige/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
name = "red corner"
color = COLOR_RED_GRAY
@@ -125,6 +248,27 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/red/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
name = "pink corner"
color = COLOR_PALE_RED_GRAY
@@ -135,6 +279,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/pink/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
name = "purple corner"
color = COLOR_PURPLE_GRAY
@@ -145,6 +307,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/purple/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
name = "mauve corner"
color = COLOR_PALE_PURPLE_GRAY
@@ -155,6 +335,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/mauve/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
name = "orange corner"
color = COLOR_DARK_ORANGE
@@ -165,6 +363,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/orange/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
name = "brown corner"
color = COLOR_DARK_BROWN
@@ -175,6 +391,25 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/brown/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
name = "white corner"
icon_state = "corner_white"
@@ -185,6 +420,24 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/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
name = "grey corner"
color = "#8D8C8C"
@@ -195,6 +448,49 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/corner/grey/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
name = "spline - plain"
icon_state = "spline_plain"
@@ -213,7 +509,7 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/spline/fancy/wood/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"
/obj/effect/floor_decal/industrial/warning
@@ -229,6 +525,19 @@ var/list/floor_decals = list()
/obj/effect/floor_decal/industrial/warning/cee
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
name = "hazard stripes"
icon_state = "warning_dust"
@@ -403,4 +712,441 @@ var/list/floor_decals = list()
icon_state = "white_d2"
/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"
@@ -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()
+5 -2
View File
@@ -60,8 +60,11 @@ var/list/flooring_cache = list()
if(!(istype(T) && T.flooring && T.flooring.name == flooring.name))
overlays |= get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHWEST]", "[flooring.icon_base]_corners", SOUTHWEST)
if(decals && decals.len)
overlays |= decals
// VOREStation Edit - Hack workaround to byond crash bug
//if(decals && decals.len)
//overlays |= decals
apply_decals()
// VOREStation Edit End
if(is_plating() && !(isnull(broken) && isnull(burnt))) //temp, todo
icon = 'icons/turf/flooring/plating.dmi'