mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-05 22:43:46 +00:00
Makes computer console circuits more consistent (#83412)
## About The Pull Request This PR makes the computer console's print feature work on a signal instead of wasting paper every string update, changes the flashlight color change to do the same, fixes the on/off signal not turning the console on, and fixes the signal for the console turning off not functioning. ## Why It's Good For The Game Besides the bug fixes, this makes the console components more consistent with every other circuit component. The refactor is to prevent worrying about nulls for colors or errors because of early returns. ## Changelog 🆑 fix: computers with no lights can now turn on using the on/off signal fix: RGB lights on PDA circuits now use a signal fix: the is_off signal now works on consoles fix: printing text on a console component now uses a signal refactor: each input signal in console circuits now have their own proc /🆑
This commit is contained in:
@@ -484,7 +484,10 @@
|
||||
playsound(src, 'sound/machines/card_slide.ogg', 50)
|
||||
|
||||
/obj/item/modular_computer/proc/turn_on(mob/user, open_ui = TRUE)
|
||||
var/issynth = HAS_SILICON_ACCESS(user) // Robots and AIs get different activation messages.
|
||||
var/issynth = FALSE // Robots and AIs get different activation messages.
|
||||
if(user)
|
||||
issynth = HAS_SILICON_ACCESS(user)
|
||||
|
||||
if(atom_integrity <= integrity_failure * max_integrity)
|
||||
if(user)
|
||||
if(issynth)
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
var/obj/item/modular_computer/computer
|
||||
///Turns the PC on/off
|
||||
var/datum/port/input/on_off
|
||||
///When set, will print a piece of paper with the value as text.
|
||||
///Determines the text to be printed
|
||||
var/datum/port/input/print_text
|
||||
/// Print when triggered
|
||||
var/datum/port/input/print
|
||||
|
||||
///Sent when turned on
|
||||
@@ -18,6 +20,7 @@
|
||||
var/datum/port/input/red
|
||||
var/datum/port/input/green
|
||||
var/datum/port/input/blue
|
||||
var/datum/port/input/set_color
|
||||
|
||||
/obj/item/circuit_component/modpc/register_shell(atom/movable/shell)
|
||||
. = ..()
|
||||
@@ -39,10 +42,11 @@
|
||||
* I hope you're cool with me doing it here.
|
||||
*/
|
||||
if(computer.has_light && isnull(lights))
|
||||
lights = add_input_port("Toggle Lights", PORT_TYPE_SIGNAL)
|
||||
lights = add_input_port("Toggle Lights", PORT_TYPE_SIGNAL, trigger = PROC_REF(toggle_flashlight))
|
||||
red = add_input_port("Red", PORT_TYPE_NUMBER)
|
||||
green = add_input_port("Green", PORT_TYPE_NUMBER)
|
||||
blue = add_input_port("Blue", PORT_TYPE_NUMBER)
|
||||
set_color = add_input_port("Set Color", PORT_TYPE_SIGNAL, trigger = PROC_REF(set_flashlight_color))
|
||||
|
||||
/obj/item/circuit_component/modpc/unregister_shell(atom/movable/shell)
|
||||
if(computer)
|
||||
@@ -51,45 +55,37 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/circuit_component/modpc/populate_ports()
|
||||
on_off = add_input_port("Turn On/Off", PORT_TYPE_SIGNAL)
|
||||
print = add_input_port("Print Text", PORT_TYPE_STRING)
|
||||
on_off = add_input_port("Turn On/Off", PORT_TYPE_SIGNAL, trigger = PROC_REF(toggle_power))
|
||||
print_text = add_input_port("Print Text", PORT_TYPE_STRING)
|
||||
print = add_input_port("Print", PORT_TYPE_SIGNAL, trigger = PROC_REF(print_text))
|
||||
|
||||
is_on = add_output_port("Turned On", PORT_TYPE_SIGNAL)
|
||||
is_on = add_output_port("Shut Down", PORT_TYPE_SIGNAL)
|
||||
is_off = add_output_port("Shut Down", PORT_TYPE_SIGNAL)
|
||||
|
||||
/obj/item/circuit_component/modpc/pre_input_received(datum/port/input/port)
|
||||
if(isnull(computer))
|
||||
return
|
||||
if(COMPONENT_TRIGGERED_BY(print, port))
|
||||
if(COMPONENT_TRIGGERED_BY(print_text, port))
|
||||
print.set_value(html_encode(trim(print.value, MAX_PAPER_LENGTH)))
|
||||
else if(COMPONENT_TRIGGERED_BY(red, port))
|
||||
red.set_value(clamp(red.value, 0, 255))
|
||||
else if(COMPONENT_TRIGGERED_BY(blue, port))
|
||||
blue.set_value(clamp(blue.value, 0, 255))
|
||||
else if(COMPONENT_TRIGGERED_BY(green, port))
|
||||
green.set_value(clamp(green.value, 0, 255))
|
||||
|
||||
/obj/item/circuit_component/modpc/input_received(datum/port/input/port)
|
||||
if(isnull(computer))
|
||||
return
|
||||
if(COMPONENT_TRIGGERED_BY(on_off, port))
|
||||
if(computer.enabled)
|
||||
INVOKE_ASYNC(computer, TYPE_PROC_REF(/obj/item/modular_computer, shutdown_computer))
|
||||
else
|
||||
INVOKE_ASYNC(computer, TYPE_PROC_REF(/obj/item/modular_computer, turn_on))
|
||||
return
|
||||
/obj/item/circuit_component/modpc/proc/print_text(datum/source)
|
||||
if(computer.enabled)
|
||||
computer.print_text(print_text.value)
|
||||
|
||||
if(!computer.enabled)
|
||||
return
|
||||
/obj/item/circuit_component/modpc/proc/toggle_power(datum/source)
|
||||
if(computer.enabled)
|
||||
INVOKE_ASYNC(computer, TYPE_PROC_REF(/obj/item/modular_computer, shutdown_computer))
|
||||
else
|
||||
INVOKE_ASYNC(computer, TYPE_PROC_REF(/obj/item/modular_computer, turn_on))
|
||||
|
||||
if(COMPONENT_TRIGGERED_BY(print, port))
|
||||
computer.print_text(print.value)
|
||||
/obj/item/circuit_component/modpc/proc/toggle_flashlight(datum/source)
|
||||
computer.toggle_flashlight()
|
||||
|
||||
if(lights)
|
||||
if(COMPONENT_TRIGGERED_BY(lights, port))
|
||||
computer.toggle_flashlight()
|
||||
if(COMPONENT_TRIGGERED_BY(red, port) || COMPONENT_TRIGGERED_BY(green, port) || COMPONENT_TRIGGERED_BY(blue, port))
|
||||
computer.set_flashlight_color(rgb(red.value || 0, green.value || 0, blue.value || 0))
|
||||
/obj/item/circuit_component/modpc/proc/set_flashlight_color(datum/source)
|
||||
red.set_value(clamp(red.value, 0, 255))
|
||||
blue.set_value(clamp(blue.value, 0, 255))
|
||||
green.set_value(clamp(green.value, 0, 255))
|
||||
computer.set_flashlight_color(rgb(red.value || 0, green.value || 0, blue.value || 0))
|
||||
|
||||
/obj/item/circuit_component/modpc/proc/computer_on(datum/source, mob/user)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
Reference in New Issue
Block a user