mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-29 19:11:51 +00:00
[MIRROR] BCI overlay fix [MDB IGNORE] (#12222)
* BCI overlay fix (#65604) * BCI overlay fix Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
var/overlay_limit = 10
|
||||
|
||||
/obj/item/circuit_component/object_overlay/bar/populate_ports()
|
||||
. = ..()
|
||||
bar_number = add_input_port("Number", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/object_overlay/bar/populate_options()
|
||||
@@ -44,19 +45,23 @@
|
||||
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)
|
||||
cool_overlay.plane = ABOVE_LIGHTING_PLANE
|
||||
|
||||
if(image_pixel_x.value)
|
||||
if(image_pixel_x.value != null)
|
||||
cool_overlay.pixel_x = image_pixel_x.value
|
||||
|
||||
if(image_pixel_y.value)
|
||||
if(image_pixel_y.value != null)
|
||||
cool_overlay.pixel_y = image_pixel_y.value
|
||||
|
||||
active_overlays[target_atom] = WEAKREF(target_atom.add_alt_appearance(
|
||||
var/datum/atom_hud/alternate_appearance/basic/one_person/alt_appearance = target_atom.add_alt_appearance(
|
||||
/datum/atom_hud/alternate_appearance/basic/one_person,
|
||||
"bar_overlay_[REF(src)]",
|
||||
cool_overlay,
|
||||
owner,
|
||||
))
|
||||
)
|
||||
alt_appearance.add_hud_to(owner)
|
||||
|
||||
active_overlays[target_atom] = WEAKREF(alt_appearance)
|
||||
|
||||
#undef COMP_BAR_OVERLAY_VERTICAL
|
||||
#undef COMP_BAR_OVERLAY_HORIZONTAL
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
var/obj/item/organ/cyberimp/bci/bci
|
||||
var/list/numbers = list()
|
||||
var/counter_appearance
|
||||
var/datum/weakref/counter_appearance
|
||||
|
||||
/obj/item/circuit_component/counter_overlay/populate_ports()
|
||||
counter_number = add_input_port("Displayed Number", PORT_TYPE_NUMBER)
|
||||
@@ -38,9 +38,13 @@
|
||||
|
||||
/obj/item/circuit_component/counter_overlay/unregister_shell(atom/movable/shell)
|
||||
bci = null
|
||||
QDEL_NULL(counter_appearance)
|
||||
for(var/number in numbers)
|
||||
QDEL_NULL(number)
|
||||
for(var/datum/weakref/number in numbers)
|
||||
var/datum/atom_hud/number_overlay = number?.resolve()
|
||||
QDEL_NULL(number_overlay)
|
||||
numbers = list()
|
||||
|
||||
var/datum/atom_hud/overlay = counter_appearance?.resolve()
|
||||
QDEL_NULL(overlay)
|
||||
UnregisterSignal(shell, COMSIG_ORGAN_REMOVED)
|
||||
|
||||
/obj/item/circuit_component/counter_overlay/input_received(datum/port/input/port)
|
||||
@@ -52,50 +56,74 @@
|
||||
if(!owner || !istype(owner) || !owner.client)
|
||||
return
|
||||
|
||||
for(var/number in numbers)
|
||||
QDEL_NULL(number)
|
||||
for(var/datum/weakref/number in numbers)
|
||||
var/datum/atom_hud/number_overlay = number?.resolve()
|
||||
QDEL_NULL(number_overlay)
|
||||
numbers = list()
|
||||
|
||||
QDEL_NULL(counter_appearance)
|
||||
var/image/counter = image(icon = 'icons/hud/screen_bci.dmi', icon_state = "hud_numbers", loc = owner)
|
||||
if(image_pixel_x.value)
|
||||
var/datum/atom_hud/overlay = counter_appearance?.resolve()
|
||||
QDEL_NULL(overlay)
|
||||
|
||||
var/image/counter = image(icon = 'icons/hud/screen_bci.dmi', icon_state = "hud_numbers", loc = owner, layer = RIPPLE_LAYER)
|
||||
counter.plane = ABOVE_LIGHTING_PLANE
|
||||
|
||||
if(image_pixel_x.value != null)
|
||||
counter.pixel_x = image_pixel_x.value
|
||||
if(image_pixel_y.value)
|
||||
if(image_pixel_y.value != null)
|
||||
counter.pixel_y = image_pixel_y.value
|
||||
|
||||
counter_appearance = WEAKREF(owner.add_alt_appearance(
|
||||
var/datum/atom_hud/alternate_appearance/basic/one_person/alt_appearance = owner.add_alt_appearance(
|
||||
/datum/atom_hud/alternate_appearance/basic/one_person,
|
||||
"counter_overlay_[REF(src)]",
|
||||
counter,
|
||||
owner,
|
||||
))
|
||||
)
|
||||
alt_appearance.add_hud_to(owner)
|
||||
|
||||
counter_appearance = WEAKREF(alt_appearance)
|
||||
|
||||
var/cleared_number = clamp(round(counter_number.value), 0, 999)
|
||||
|
||||
for(var/i = 1 to 3)
|
||||
var/cur_num = round(cleared_number / (10 ** (3 - i))) % 10
|
||||
var/image/number = image(icon = 'icons/hud/screen_bci.dmi', icon_state = "hud_number_[cur_num]", loc = owner)
|
||||
var/image/number = image(icon = 'icons/hud/screen_bci.dmi', icon_state = "hud_number_[cur_num]", loc = owner, layer = RIPPLE_LAYER)
|
||||
number.plane = ABOVE_LIGHTING_PLANE
|
||||
|
||||
if(image_pixel_x.value)
|
||||
if(image_pixel_x.value != null)
|
||||
number.pixel_x = image_pixel_x.value + (i - 1) * 9
|
||||
if(image_pixel_y.value)
|
||||
else
|
||||
number.pixel_x = (i - 1) * 9
|
||||
|
||||
if(image_pixel_y.value != null)
|
||||
number.pixel_y = image_pixel_y.value
|
||||
|
||||
numbers.Add(WEAKREF(owner.add_alt_appearance(
|
||||
var/datum/atom_hud/alternate_appearance/basic/one_person/number_alt_appearance = owner.add_alt_appearance(
|
||||
/datum/atom_hud/alternate_appearance/basic/one_person,
|
||||
"counter_overlay_[REF(src)]_[i]",
|
||||
number,
|
||||
owner,
|
||||
)))
|
||||
)
|
||||
number_alt_appearance.add_hud_to(owner)
|
||||
|
||||
numbers += WEAKREF(number_alt_appearance)
|
||||
|
||||
/obj/item/circuit_component/counter_overlay/proc/on_organ_removed(datum/source, mob/living/carbon/owner)
|
||||
SIGNAL_HANDLER
|
||||
QDEL_NULL(counter_appearance)
|
||||
for(var/number in numbers)
|
||||
QDEL_NULL(number)
|
||||
for(var/datum/weakref/number in numbers)
|
||||
var/datum/atom_hud/number_overlay = number?.resolve()
|
||||
QDEL_NULL(number_overlay)
|
||||
numbers = list()
|
||||
|
||||
var/datum/atom_hud/overlay = counter_appearance?.resolve()
|
||||
overlay.remove_hud_from(owner)
|
||||
QDEL_NULL(overlay)
|
||||
|
||||
/obj/item/circuit_component/counter_overlay/Destroy()
|
||||
QDEL_NULL(counter_appearance)
|
||||
for(var/number in numbers)
|
||||
QDEL_NULL(number)
|
||||
for(var/datum/weakref/number in numbers)
|
||||
var/datum/atom_hud/number_overlay = number?.resolve()
|
||||
QDEL_NULL(number_overlay)
|
||||
numbers = list()
|
||||
|
||||
var/datum/atom_hud/overlay = counter_appearance?.resolve()
|
||||
QDEL_NULL(overlay)
|
||||
return ..()
|
||||
|
||||
@@ -83,7 +83,9 @@
|
||||
show_to_owner(target_atom, owner)
|
||||
|
||||
if(COMPONENT_TRIGGERED_BY(signal_off, port) && (target_atom in active_overlays))
|
||||
QDEL_NULL(active_overlays[target_atom])
|
||||
var/datum/weakref/overlay_ref = active_overlays[target_atom]
|
||||
var/datum/atom_hud/overlay = overlay_ref?.resolve()
|
||||
QDEL_NULL(overlay)
|
||||
active_overlays.Remove(target_atom)
|
||||
|
||||
/obj/item/circuit_component/object_overlay/proc/show_to_owner(atom/target_atom, mob/living/owner)
|
||||
@@ -91,30 +93,36 @@
|
||||
return
|
||||
|
||||
if(active_overlays[target_atom])
|
||||
QDEL_NULL(active_overlays[target_atom])
|
||||
var/datum/weakref/overlay_ref = active_overlays[target_atom]
|
||||
var/datum/atom_hud/overlay = overlay_ref?.resolve()
|
||||
QDEL_NULL(overlay)
|
||||
|
||||
var/image/cool_overlay = image(icon = 'icons/hud/screen_bci.dmi', loc = target_atom, icon_state = options_map[object_overlay_options.value], layer = RIPPLE_LAYER)
|
||||
cool_overlay.plane = ABOVE_LIGHTING_PLANE
|
||||
|
||||
if(image_pixel_x.value)
|
||||
if(image_pixel_x.value != null)
|
||||
cool_overlay.pixel_x = image_pixel_x.value
|
||||
|
||||
if(image_pixel_y.value)
|
||||
if(image_pixel_y.value != null)
|
||||
cool_overlay.pixel_y = image_pixel_y.value
|
||||
|
||||
var/alt_appearance = WEAKREF(target_atom.add_alt_appearance(
|
||||
var/datum/atom_hud/alternate_appearance/basic/one_person/alt_appearance = target_atom.add_alt_appearance(
|
||||
/datum/atom_hud/alternate_appearance/basic/one_person,
|
||||
"object_overlay_[REF(src)]",
|
||||
cool_overlay,
|
||||
owner,
|
||||
))
|
||||
)
|
||||
alt_appearance.add_hud_to(owner)
|
||||
|
||||
active_overlays[target_atom] = alt_appearance
|
||||
active_overlays[target_atom] = WEAKREF(alt_appearance)
|
||||
|
||||
/obj/item/circuit_component/object_overlay/proc/on_organ_removed(datum/source, mob/living/carbon/owner)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
for(var/atom/target_atom in active_overlays)
|
||||
QDEL_NULL(active_overlays[target_atom])
|
||||
var/datum/weakref/overlay_ref = active_overlays[target_atom]
|
||||
var/datum/atom_hud/overlay = overlay_ref?.resolve()
|
||||
QDEL_NULL(overlay)
|
||||
active_overlays.Remove(target_atom)
|
||||
|
||||
#undef OBJECT_OVERLAY_LIMIT
|
||||
|
||||
Reference in New Issue
Block a user