mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-11 10:22:13 +00:00
63 lines
2.1 KiB
Plaintext
63 lines
2.1 KiB
Plaintext
#define COMP_BAR_OVERLAY_VERTICAL "Vertical"
|
|
#define COMP_BAR_OVERLAY_HORIZONTAL "Horizontal"
|
|
|
|
/**
|
|
* # Bar Overlay Component
|
|
*
|
|
* Basically an advanced verion of object overlay component that shows a horizontal/vertical bar.
|
|
* Requires a BCI shell.
|
|
*/
|
|
|
|
/obj/item/circuit_component/object_overlay/bar
|
|
display_name = "Bar Overlay"
|
|
desc = "Requires a BCI shell. A component that shows a bar overlay ontop of an object from a range of 0 to 100."
|
|
|
|
var/datum/port/input/option/bar_overlay_options
|
|
var/datum/port/input/bar_number
|
|
|
|
var/overlay_limit = 10
|
|
|
|
/obj/item/circuit_component/object_overlay/bar/Initialize(mapload)
|
|
. = ..()
|
|
bar_number = add_input_port("Number", PORT_TYPE_NUMBER)
|
|
|
|
/obj/item/circuit_component/object_overlay/bar/populate_options()
|
|
var/static/component_options_bar = list(
|
|
COMP_BAR_OVERLAY_VERTICAL = "barvert",
|
|
COMP_BAR_OVERLAY_HORIZONTAL = "barhoriz"
|
|
)
|
|
bar_overlay_options = add_option_port("Bar Overlay Options", component_options_bar)
|
|
options_map = component_options_bar
|
|
|
|
/obj/item/circuit_component/object_overlay/bar/show_to_owner(atom/target_atom, mob/living/owner)
|
|
if(LAZYLEN(active_overlays) >= overlay_limit)
|
|
return
|
|
|
|
var/current_option = bar_overlay_options.value
|
|
|
|
if(active_overlays[target_atom])
|
|
QDEL_NULL(active_overlays[target_atom])
|
|
|
|
var/number_clear = clamp(bar_number.value, 0, 100)
|
|
if(current_option == COMP_BAR_OVERLAY_HORIZONTAL)
|
|
number_clear = round(number_clear / 6.25) * 6.25
|
|
else if(current_option == COMP_BAR_OVERLAY_VERTICAL)
|
|
number_clear = round(number_clear / 10) * 10
|
|
var/image/cool_overlay = image(icon = 'icons/hud/screen_bci.dmi', loc = target_atom, icon_state = "[options_map[current_option]][number_clear]", layer = RIPPLE_LAYER)
|
|
|
|
if(image_pixel_x.value)
|
|
cool_overlay.pixel_x = image_pixel_x.value
|
|
|
|
if(image_pixel_y.value)
|
|
cool_overlay.pixel_y = image_pixel_y.value
|
|
|
|
active_overlays[target_atom] = WEAKREF(target_atom.add_alt_appearance(
|
|
/datum/atom_hud/alternate_appearance/basic/one_person,
|
|
"bar_overlay_[REF(src)]",
|
|
cool_overlay,
|
|
owner,
|
|
))
|
|
|
|
#undef COMP_BAR_OVERLAY_VERTICAL
|
|
#undef COMP_BAR_OVERLAY_HORIZONTAL
|