Files
CHOMPStation2/code/game/turfs/simulated/floor_icon.dm
Leshana 6756c5a483 Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-03-30
# Conflicts:
#	.travis.yml
#	code/ATMOSPHERICS/components/unary/outlet_injector.dm
#	code/__defines/_planes+layers.dm
#	code/__defines/chemistry.dm
#	code/__defines/mobs.dm
#	code/_helpers/mobs.dm
#	code/_onclick/hud/robot.dm
#	code/game/area/areas.dm
#	code/game/machinery/computer/supply.dm
#	code/game/machinery/cryopod.dm
#	code/game/machinery/doors/airlock.dm
#	code/game/objects/items/devices/communicator/UI.dm
#	code/game/objects/items/devices/communicator/messaging.dm
#	code/game/sound.dm
#	code/game/supplyshuttle.dm
#	code/game/turfs/flooring/flooring_decals.dm
#	code/modules/admin/admin.dm
#	code/modules/client/preference_setup/occupation/occupation.dm
#	code/modules/events/event_container.dm
#	code/modules/mob/dead/observer/observer.dm
#	code/modules/mob/language/language.dm
#	code/modules/mob/living/carbon/human/human.dm
#	code/modules/mob/living/carbon/human/human_powers.dm
#	code/modules/mob/living/carbon/human/life.dm
#	code/modules/mob/living/carbon/human/species/species_shapeshift.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob/living/living_powers.dm
#	code/modules/mob/living/say.dm
#	code/modules/mob/living/simple_animal/animals/bear.dm
#	code/modules/mob/living/simple_animal/animals/cat.dm
#	code/modules/mob/living/simple_animal/animals/parrot.dm
#	code/modules/mob/logout.dm
#	code/modules/mob/mob_helpers.dm
#	code/modules/organs/organ.dm
#	code/modules/organs/organ_icon.dm
#	code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
#	code/modules/reagents/reagent_containers/syringes.dm
#	code/modules/shuttles/shuttle.dm
#	html/changelogs/.all_changelog.yml
#	maps/RandomZLevels/wildwest.dm
#	maps/southern_cross/items/clothing/sc_head.dm
#	maps/southern_cross/southern_cross-1.dmm
#	vorestation.dme
2018-03-31 09:20:59 -04:00

107 lines
4.5 KiB
Plaintext

var/list/flooring_cache = list()
var/image/no_ceiling_image = null
/hook/startup/proc/setup_no_ceiling_image()
cache_no_ceiling_image()
return TRUE
/proc/cache_no_ceiling_image()
no_ceiling_image = image(icon = 'icons/turf/open_space.dmi', icon_state = "no_ceiling")
no_ceiling_image.plane = PLANE_MESONS
/turf/simulated/floor/update_icon(var/update_neighbors)
if(lava)
return
cut_overlays()
if(flooring)
// Set initial icon and strings.
name = flooring.name
desc = flooring.desc
icon = flooring.icon
if(flooring_override)
icon_state = flooring_override
else
icon_state = flooring.icon_base
if(flooring.has_base_range)
icon_state = "[icon_state][rand(0,flooring.has_base_range)]"
flooring_override = icon_state
// Apply edges, corners, and inner corners.
var/has_border = 0
if(flooring.flags & TURF_HAS_EDGES)
for(var/step_dir in cardinal)
var/turf/simulated/floor/T = get_step(src, step_dir)
if(!istype(T) || !T.flooring || T.flooring.name != flooring.name)
has_border |= step_dir
add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[step_dir]", "[flooring.icon_base]_edges", step_dir))
// There has to be a concise numerical way to do this but I am too noob.
if((has_border & NORTH) && (has_border & EAST))
add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[NORTHEAST]", "[flooring.icon_base]_edges", NORTHEAST))
if((has_border & NORTH) && (has_border & WEST))
add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[NORTHWEST]", "[flooring.icon_base]_edges", NORTHWEST))
if((has_border & SOUTH) && (has_border & EAST))
add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[SOUTHEAST]", "[flooring.icon_base]_edges", SOUTHEAST))
if((has_border & SOUTH) && (has_border & WEST))
add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[SOUTHWEST]", "[flooring.icon_base]_edges", SOUTHWEST))
if(flooring.flags & TURF_HAS_CORNERS)
// As above re: concise numerical way to do this.
if(!(has_border & NORTH))
if(!(has_border & EAST))
var/turf/simulated/floor/T = get_step(src, NORTHEAST)
if(!(istype(T) && T.flooring && T.flooring.name == flooring.name))
add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[NORTHEAST]", "[flooring.icon_base]_corners", NORTHEAST))
if(!(has_border & WEST))
var/turf/simulated/floor/T = get_step(src, NORTHWEST)
if(!(istype(T) && T.flooring && T.flooring.name == flooring.name))
add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[NORTHWEST]", "[flooring.icon_base]_corners", NORTHWEST))
if(!(has_border & SOUTH))
if(!(has_border & EAST))
var/turf/simulated/floor/T = get_step(src, SOUTHEAST)
if(!(istype(T) && T.flooring && T.flooring.name == flooring.name))
add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHEAST]", "[flooring.icon_base]_corners", SOUTHEAST))
if(!(has_border & WEST))
var/turf/simulated/floor/T = get_step(src, SOUTHWEST)
if(!(istype(T) && T.flooring && T.flooring.name == flooring.name))
add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHWEST]", "[flooring.icon_base]_corners", SOUTHWEST))
// Re-apply floor decals
if(LAZYLEN(decals))
add_overlay(decals)
if(is_plating() && !(isnull(broken) && isnull(burnt))) //temp, todo
icon = 'icons/turf/flooring/plating.dmi'
icon_state = "dmg[rand(1,4)]"
else if(flooring)
if(!isnull(broken) && (flooring.flags & TURF_CAN_BREAK))
add_overlay(get_flooring_overlay("[flooring.icon_base]-broken-[broken]","broken[broken]")) // VOREStation Edit - Eris overlays
if(!isnull(burnt) && (flooring.flags & TURF_CAN_BURN))
add_overlay(get_flooring_overlay("[flooring.icon_base]-burned-[burnt]","burned[burnt]")) // VOREStation Edit - Eris overlays
if(weather_overlay)
add_overlay(weather_overlay)
if(update_neighbors)
for(var/turf/simulated/floor/F in range(src, 1))
if(F == src)
continue
F.update_icon()
// Show 'ceilingless' overlay.
var/turf/above = GetAbove(src)
if(above && isopenspace(above) && !istype(src, /turf/simulated/floor/outdoors)) // This won't apply to outdoor turfs since its assumed they don't have a ceiling anyways.
add_overlay(no_ceiling_image)
/turf/simulated/floor/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0)
if(!flooring_cache[cache_key])
var/image/I = image(icon = flooring.icon, icon_state = icon_base, dir = icon_dir)
I.layer = layer
flooring_cache[cache_key] = I
return flooring_cache[cache_key]