Merge pull request #6524 from Citadel-Station-13/upstream-merge-37342
[MIRROR] Makes it possible to see tiles past z transitions
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
/datum/component/mirage_border
|
||||
var/obj/effect/abstract/mirage_holder/holder
|
||||
|
||||
/datum/component/mirage_border/Initialize(turf/target, direction, range=world.view)
|
||||
if(!isturf(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
if(!target || !istype(target) || !direction)
|
||||
. = COMPONENT_INCOMPATIBLE
|
||||
CRASH("[type] improperly instanced with the following args: target=\[[target]\], direction=\[[direction]\], range=\[[range]\]")
|
||||
|
||||
holder = new(parent)
|
||||
|
||||
var/x = target.x
|
||||
var/y = target.y
|
||||
var/z = target.z
|
||||
var/turf/southwest = locate(CLAMP(x - (direction & WEST ? range : 0), 1, world.maxx), CLAMP(y - (direction & SOUTH ? range : 0), 1, world.maxy), CLAMP(z, 1, world.maxz))
|
||||
var/turf/northeast = locate(CLAMP(x + (direction & EAST ? range : 0), 1, world.maxx), CLAMP(y + (direction & NORTH ? range : 0), 1, world.maxy), CLAMP(z, 1, world.maxz))
|
||||
//holder.vis_contents += block(southwest, northeast) // This doesnt work because of beta bug memes
|
||||
for(var/i in block(southwest, northeast))
|
||||
holder.vis_contents += i
|
||||
if(direction & SOUTH)
|
||||
holder.pixel_y -= world.icon_size * range
|
||||
if(direction & WEST)
|
||||
holder.pixel_x -= world.icon_size * range
|
||||
|
||||
/datum/component/mirage_border/Destroy()
|
||||
QDEL_NULL(holder)
|
||||
return ..()
|
||||
|
||||
/datum/component/mirage_border/OnTransfer(atom/thing)
|
||||
if(!isturf(thing))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
holder.forceMove(thing)
|
||||
|
||||
/obj/effect/abstract/mirage_holder
|
||||
name = "Mirage holder"
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
@@ -125,3 +125,19 @@
|
||||
S.destination_x = x_pos_transition[side] == 1 ? S.x : x_pos_transition[side]
|
||||
S.destination_y = y_pos_transition[side] == 1 ? S.y : y_pos_transition[side]
|
||||
S.destination_z = zdestination
|
||||
|
||||
// Mirage border code
|
||||
var/mirage_dir
|
||||
if(S.x == 1 + TRANSITIONEDGE)
|
||||
mirage_dir |= WEST
|
||||
else if(S.x == world.maxx - TRANSITIONEDGE)
|
||||
mirage_dir |= EAST
|
||||
if(S.y == 1 + TRANSITIONEDGE)
|
||||
mirage_dir |= SOUTH
|
||||
else if(S.y == world.maxy - TRANSITIONEDGE)
|
||||
mirage_dir |= NORTH
|
||||
if(!mirage_dir)
|
||||
continue
|
||||
|
||||
var/turf/place = locate(S.destination_x, S.destination_y, S.destination_z)
|
||||
S.AddComponent(/datum/component/mirage_border, place, mirage_dir)
|
||||
|
||||
@@ -330,6 +330,7 @@
|
||||
#include "code\datums\components\knockoff.dm"
|
||||
#include "code\datums\components\lockon_aiming.dm"
|
||||
#include "code\datums\components\material_container.dm"
|
||||
#include "code\datums\components\mirage_border.dm"
|
||||
#include "code\datums\components\mood.dm"
|
||||
#include "code\datums\components\ntnet_interface.dm"
|
||||
#include "code\datums\components\paintable.dm"
|
||||
|
||||
Reference in New Issue
Block a user