Skip to content

Commit

Permalink
Ports bad catwalk layering fix (#11146)
Browse files Browse the repository at this point in the history
* undertile refactor

* ah, so thats the issue
  • Loading branch information
Tsar-Salat authored Jul 3, 2024
1 parent e423489 commit 44f8a60
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 23 deletions.
2 changes: 1 addition & 1 deletion code/controllers/subsystem/minor_mapping.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ SUBSYSTEM_DEF(minor_mapping)
var/turf/T = pick_n_take(turfs)
var/obj/item/storage/backpack/satchel/flat/F = new(T)

SEND_SIGNAL(F, COMSIG_OBJ_HIDE, T.underfloor_accessibility < UNDERFLOOR_VISIBLE)
SEND_SIGNAL(F, COMSIG_OBJ_HIDE, T.underfloor_accessibility)
amount--

/proc/find_exposed_wires()
Expand Down
4 changes: 3 additions & 1 deletion code/datums/components/plumbing/_plumbing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,11 @@
net.add_plumber(src, dir)
net.add_plumber(P, opposite_dir)

/datum/component/plumbing/proc/hide(atom/movable/AM, should_hide)
/datum/component/plumbing/proc/hide(atom/movable/AM, underfloor_accessibility)
SIGNAL_HANDLER

var/should_hide = !underfloor_accessibility

tile_covered = should_hide
AM.update_appearance()

Expand Down
34 changes: 24 additions & 10 deletions code/datums/elements/undertile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

/datum/element/undertile/Attach(datum/target, invisibility_trait, invisibility_level = INVISIBILITY_MAXIMUM, tile_overlay, use_alpha = TRUE, use_anchor = FALSE)
. = ..()

if(!ismovable(target))
return ELEMENT_INCOMPATIBLE

Expand All @@ -35,42 +36,55 @@
src.use_alpha = use_alpha
src.use_anchor = use_anchor


///called when a tile has been covered or uncovered
/datum/element/undertile/proc/hide(atom/movable/source, covered)
/datum/element/undertile/proc/hide(atom/movable/source, underfloor_accessibility)
SIGNAL_HANDLER

if(source.density)
stack_trace("([src]): Atom [source] was given an undertile element, but has become dense! This can lead to invisible walls!")
return //Returning to actually prevent this from happening

source.invisibility = covered ? invisibility_level : 0
source.invisibility = underfloor_accessibility < UNDERFLOOR_VISIBLE ? invisibility_level : 0

var/turf/T = get_turf(source)

if(covered)
if(invisibility_trait)
ADD_TRAIT(source, invisibility_trait, ELEMENT_TRAIT(type))
if(underfloor_accessibility < UNDERFLOOR_INTERACTABLE)
source.plane = FLOOR_PLANE // We do this so that turfs that allow you to see what's underneath them don't have to be on the game plane (which causes ambient occlusion weirdness)

if(tile_overlay)
T.add_overlay(tile_overlay)
if(use_alpha)
source.alpha = ALPHA_UNDERTILE

if(use_anchor)
source.set_anchored(TRUE)

if(underfloor_accessibility < UNDERFLOOR_VISIBLE)
if(use_alpha)
source.alpha = ALPHA_UNDERTILE

if(invisibility_trait)
ADD_TRAIT(source, invisibility_trait, ELEMENT_TRAIT(type))

else
source.plane = initial(source.plane)

if(invisibility_trait)
REMOVE_TRAIT(source, invisibility_trait, ELEMENT_TRAIT(type))

if(tile_overlay)
T.overlays -= tile_overlay

if(use_alpha)
source.alpha = 255
source.alpha = initial(source.alpha)

if(use_anchor)
source.set_anchored(FALSE)

/datum/element/undertile/Detach(atom/movable/AM, visibility_trait, invisibility_level = INVISIBILITY_MAXIMUM)

/datum/element/undertile/Detach(atom/movable/source, visibility_trait, invisibility_level = INVISIBILITY_MAXIMUM)
. = ..()

hide(AM, FALSE)
hide(source, UNDERFLOOR_INTERACTABLE)


#undef ALPHA_UNDERTILE
6 changes: 4 additions & 2 deletions code/game/objects/items/devices/pressureplates.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,7 @@
return ..()

///Called from COMSIG_OBJ_HIDE to toggle the active part, because yeah im not making a special exception on the element to support it
/obj/item/pressure_plate/proc/ToggleActive(datum/source, covered)
active = covered
/obj/item/pressure_plate/proc/ToggleActive(datum/source, underfloor_accessibility)
SIGNAL_HANDLER

active = underfloor_accessibility < UNDERFLOOR_VISIBLE
8 changes: 2 additions & 6 deletions code/game/turfs/open/floor/catwalk_plating.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@
baseturfs = /turf/open/floor/plating
floor_tile = /obj/item/stack/tile/catwalk_tile
layer = CATWALK_LAYER
plane = GAME_PLANE
footstep = FOOTSTEP_CATWALK
barefootstep = FOOTSTEP_CATWALK
clawfootstep = FOOTSTEP_CATWALK
heavyfootstep = FOOTSTEP_CATWALK
overfloor_placed = TRUE
underfloor_accessibility = UNDERFLOOR_VISIBLE
var/covered = TRUE
Expand Down Expand Up @@ -47,13 +43,13 @@
if(!covered)
underfloor_accessibility = UNDERFLOOR_INTERACTABLE
layer = TURF_LAYER
plane = FLOOR_PLANE
icon_state = "[catwalk_type]_below"
else
underfloor_accessibility = UNDERFLOOR_VISIBLE
layer = CATWALK_LAYER
plane = GAME_PLANE
icon_state = "[catwalk_type]_above"

levelupdate()
user.balloon_alert(user, "[!covered ? "Cover removed" : "Ccover added"]")
tool.play_tool_sound(src)
update_appearance()
Expand Down
2 changes: 1 addition & 1 deletion code/game/turfs/turf.dm
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists)
/turf/proc/levelupdate()
for(var/obj/O in src)
if(O.flags_1 & INITIALIZED_1)
SEND_SIGNAL(O, COMSIG_OBJ_HIDE, underfloor_accessibility < UNDERFLOOR_VISIBLE)
SEND_SIGNAL(O, COMSIG_OBJ_HIDE, underfloor_accessibility)

// override for space turfs, since they should never hide anything
/turf/open/space/levelupdate()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,9 @@
/obj/machinery/atmospherics/components/proc/update_icon_nopipes()
return

/obj/machinery/atmospherics/components/proc/hide_pipe(datum/source, covered)
showpipe = !covered
/obj/machinery/atmospherics/components/proc/hide_pipe(datum/source, underfloor_accessibility)
SIGNAL_HANDLER
showpipe = !!underfloor_accessibility
update_icon()

/obj/machinery/atmospherics/components/update_icon()
Expand Down

0 comments on commit 44f8a60

Please sign in to comment.