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()
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

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"

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))
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'

View File

@@ -1021,6 +1021,7 @@
#include "code\game\turfs\flooring\flooring.dm"
#include "code\game\turfs\flooring\flooring_decals.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\maintenance.dm"
#include "code\game\turfs\simulated\floor.dm"