mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 09:42:29 +00:00
* Multiz Rework: Human Suffering Edition (Contains PLANE CUBE) * skyrat changes * bodyparts merge * unres door floorlight fix * Future upstream fix for blindness * upcoming upstream airlock fix * fix button emissive * Fix FOV markings? Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: tastyfish <crazychris32@gmail.com>
127 lines
4.3 KiB
Plaintext
127 lines
4.3 KiB
Plaintext
///Atom that manages and controls multiple planes. It's an atom so we can hook into add_filter etc. Multiple controllers can control one plane.
|
|
/atom/movable/plane_master_controller
|
|
///List of planes as defines in this controllers control
|
|
var/list/controlled_planes = list()
|
|
///hud that owns this controller
|
|
var/datum/hud/owner_hud
|
|
|
|
INITIALIZE_IMMEDIATE(/atom/movable/plane_master_controller)
|
|
|
|
///Ensures that all the planes are correctly in the controlled_planes list.
|
|
/atom/movable/plane_master_controller/Initialize(mapload, datum/hud/hud)
|
|
. = ..()
|
|
if(!istype(hud))
|
|
return
|
|
owner_hud = hud
|
|
|
|
/atom/movable/plane_master_controller/proc/get_planes()
|
|
var/returned_planes = list()
|
|
for(var/true_plane in controlled_planes)
|
|
returned_planes += get_true_plane(true_plane)
|
|
return returned_planes
|
|
|
|
/atom/movable/plane_master_controller/proc/get_true_plane(true_plane)
|
|
var/list/returned_planes = owner_hud.get_true_plane_masters(true_plane)
|
|
if(!length(returned_planes)) //If we looked for a hud that isn't instanced, just keep going
|
|
stack_trace("[plane] isn't a valid plane master layer for [owner_hud.type], are you sure it exists in the first place?")
|
|
return
|
|
|
|
return returned_planes
|
|
|
|
///Full override so we can just use filterrific
|
|
/atom/movable/plane_master_controller/add_filter(name, priority, list/params)
|
|
. = ..()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
pm_iterator.add_filter(name, priority, params)
|
|
|
|
///Full override so we can just use filterrific
|
|
/atom/movable/plane_master_controller/remove_filter(name_or_names)
|
|
. = ..()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
pm_iterator.remove_filter(name_or_names)
|
|
|
|
/atom/movable/plane_master_controller/update_filters()
|
|
. = ..()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
pm_iterator.update_filters()
|
|
|
|
///Gets all filters for this controllers plane masters
|
|
/atom/movable/plane_master_controller/proc/get_filters(name)
|
|
. = list()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
. += pm_iterator.get_filter(name)
|
|
|
|
///Transitions all filters owned by this plane master controller
|
|
/atom/movable/plane_master_controller/transition_filter(name, time, list/new_params, easing, loop)
|
|
. = ..()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
pm_iterator.transition_filter(name, time, new_params, easing, loop)
|
|
|
|
///Full override so we can just use filterrific
|
|
/atom/movable/plane_master_controller/add_atom_colour(coloration, colour_priority)
|
|
. = ..()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
pm_iterator.add_atom_colour(coloration, colour_priority)
|
|
|
|
|
|
///Removes an instance of colour_type from the atom's atom_colours list
|
|
/atom/movable/plane_master_controller/remove_atom_colour(colour_priority, coloration)
|
|
. = ..()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
pm_iterator.remove_atom_colour(colour_priority, coloration)
|
|
|
|
|
|
///Resets the atom's color to null, and then sets it to the highest priority colour available
|
|
/atom/movable/plane_master_controller/update_atom_colour()
|
|
for(var/atom/movable/screen/plane_master/pm_iterator as anything in get_planes())
|
|
pm_iterator.update_atom_colour()
|
|
|
|
|
|
/atom/movable/plane_master_controller/game
|
|
name = PLANE_MASTERS_GAME
|
|
controlled_planes = list(
|
|
FLOOR_PLANE,
|
|
RENDER_PLANE_TRANSPARENT,
|
|
GAME_PLANE,
|
|
GAME_PLANE_FOV_HIDDEN,
|
|
GAME_PLANE_UPPER,
|
|
GAME_PLANE_UPPER_FOV_HIDDEN,
|
|
ABOVE_GAME_PLANE,
|
|
MASSIVE_OBJ_PLANE,
|
|
GHOST_PLANE,
|
|
POINT_PLANE,
|
|
LIGHTING_PLANE,
|
|
AREA_PLANE,
|
|
)
|
|
|
|
/// Controller of all planes we're ok with changing with colorblind logic
|
|
/atom/movable/plane_master_controller/colorblind
|
|
name = PLANE_MASTERS_COLORBLIND
|
|
controlled_planes = list(
|
|
PLANE_SPACE_PARALLAX,
|
|
GRAVITY_PULSE_PLANE,
|
|
FLOOR_PLANE,
|
|
GAME_PLANE,
|
|
GAME_PLANE_FOV_HIDDEN,
|
|
GAME_PLANE_UPPER,
|
|
GAME_PLANE_UPPER_FOV_HIDDEN,
|
|
SEETHROUGH_PLANE,
|
|
ABOVE_GAME_PLANE,
|
|
MASSIVE_OBJ_PLANE,
|
|
GHOST_PLANE,
|
|
POINT_PLANE,
|
|
LIGHTING_PLANE,
|
|
O_LIGHTING_VISUAL_PLANE,
|
|
ABOVE_LIGHTING_PLANE,
|
|
CAMERA_STATIC_PLANE,
|
|
PIPECRAWL_IMAGES_PLANE,
|
|
HIGH_GAME_PLANE,
|
|
FULLSCREEN_PLANE,
|
|
SOUND_EFFECT_VISUAL_PLANE,
|
|
RUNECHAT_PLANE,
|
|
HUD_PLANE,
|
|
ABOVE_HUD_PLANE,
|
|
AREA_PLANE,
|
|
)
|
|
|