mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-31 00:58:26 +01:00
Refactors how components are triggered and refactors how ports are ordered (#60934)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
This commit is contained in:
co-authored by
Watermelon914
parent
a9cc1bc816
commit
126411f405
@@ -21,13 +21,12 @@
|
||||
|
||||
var/list/datum/port/input/compare_ports = list()
|
||||
|
||||
/obj/item/circuit_component/compare/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/compare/populate_ports()
|
||||
for(var/port_id in 1 to input_port_amount)
|
||||
var/letter = ascii2text(text2ascii("A") + (port_id-1))
|
||||
compare_ports += add_input_port(letter, PORT_TYPE_ANY)
|
||||
|
||||
load_custom_ports()
|
||||
populate_custom_ports()
|
||||
compare = add_input_port("Compare", PORT_TYPE_SIGNAL)
|
||||
|
||||
true = add_output_port("True", PORT_TYPE_SIGNAL)
|
||||
@@ -37,13 +36,10 @@
|
||||
/**
|
||||
* Used by derivatives to load their own ports in for custom use.
|
||||
*/
|
||||
/obj/item/circuit_component/compare/proc/load_custom_ports()
|
||||
/obj/item/circuit_component/compare/proc/populate_custom_ports()
|
||||
return
|
||||
|
||||
/obj/item/circuit_component/compare/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/logic_result = do_comparisons(compare_ports)
|
||||
if(COMPONENT_TRIGGERED_BY(compare, port))
|
||||
|
||||
@@ -68,8 +68,7 @@
|
||||
/// The currently attached module
|
||||
var/obj/item/circuit_component/module/attached_module
|
||||
|
||||
/obj/item/circuit_component/module_output/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
/obj/item/circuit_component/module_output/pre_input_received(datum/port/input/port)
|
||||
if(!port)
|
||||
return
|
||||
// We don't check the parent here because frankly, we don't care. We only sync our input with the module's output
|
||||
@@ -79,8 +78,7 @@
|
||||
|
||||
port_to_update.set_output(port.value)
|
||||
|
||||
/obj/item/circuit_component/module/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
/obj/item/circuit_component/module/pre_input_received(datum/port/input/port)
|
||||
if(!port)
|
||||
return
|
||||
var/datum/port/output/port_to_update = linked_ports[port]
|
||||
|
||||
@@ -26,8 +26,7 @@
|
||||
. = ..()
|
||||
. += create_ui_notice("Maximum Brightness: [max_power]", "orange", "lightbulb")
|
||||
|
||||
/obj/item/circuit_component/light/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/light/populate_ports()
|
||||
red = add_input_port("Red", PORT_TYPE_NUMBER)
|
||||
green = add_input_port("Green", PORT_TYPE_NUMBER)
|
||||
blue = add_input_port("Blue", PORT_TYPE_NUMBER)
|
||||
@@ -37,14 +36,13 @@
|
||||
|
||||
/obj/item/circuit_component/light/register_shell(atom/movable/shell)
|
||||
. = ..()
|
||||
TRIGGER_CIRCUIT_COMPONENT(src, null)
|
||||
trigger_component()
|
||||
|
||||
/obj/item/circuit_component/light/unregister_shell(atom/movable/shell)
|
||||
shell.set_light_on(FALSE)
|
||||
return ..()
|
||||
|
||||
/obj/item/circuit_component/light/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
/obj/item/circuit_component/light/pre_input_received(datum/port/input/port)
|
||||
brightness.set_value(clamp(brightness.value || 0, 0, max_power))
|
||||
red.set_value(clamp(red.value, 0, 255))
|
||||
blue.set_value(clamp(blue.value, 0, 255))
|
||||
@@ -52,9 +50,8 @@
|
||||
var/list/hsl = rgb2hsl(red.value || 0, green.value || 0, blue.value || 0)
|
||||
var/list/light_col = hsl2rgb(hsl[1], hsl[2], max(min_lightness, hsl[3]))
|
||||
shell_light_color = rgb(light_col[1], light_col[2], light_col[3])
|
||||
if(.)
|
||||
return
|
||||
|
||||
/obj/item/circuit_component/light/input_received(datum/port/input/port)
|
||||
if(parent.shell)
|
||||
set_atom_light(parent.shell)
|
||||
|
||||
|
||||
@@ -36,8 +36,7 @@
|
||||
/// Maximum length of the message that can be sent to the MMI
|
||||
var/max_length = 300
|
||||
|
||||
/obj/item/circuit_component/mmi/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/mmi/populate_ports()
|
||||
message = add_input_port("Message", PORT_TYPE_STRING)
|
||||
send = add_input_port("Send Message", PORT_TYPE_SIGNAL)
|
||||
eject = add_input_port("Eject", PORT_TYPE_SIGNAL)
|
||||
@@ -56,9 +55,6 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/circuit_component/mmi/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(!brain)
|
||||
return
|
||||
|
||||
@@ -33,11 +33,10 @@
|
||||
. += create_ui_notice("Pathfinding Cooldown: [DisplayTimeText(different_path_cooldown)]", "orange", "stopwatch")
|
||||
. += create_ui_notice("Maximum Range: [max_range] tiles", "orange", "info")
|
||||
|
||||
/obj/item/circuit_component/pathfind/Initialize()
|
||||
. = ..()
|
||||
input_X = add_input_port("Target X", PORT_TYPE_NUMBER, FALSE)
|
||||
input_Y = add_input_port("Target Y", PORT_TYPE_NUMBER, FALSE)
|
||||
id_card = add_input_port("ID Card", PORT_TYPE_ATOM, FALSE)
|
||||
/obj/item/circuit_component/pathfind/populate_ports()
|
||||
input_X = add_input_port("Target X", PORT_TYPE_NUMBER, trigger = null)
|
||||
input_Y = add_input_port("Target Y", PORT_TYPE_NUMBER, trigger = null)
|
||||
id_card = add_input_port("ID Card", PORT_TYPE_ATOM, trigger = null)
|
||||
|
||||
output = add_output_port("Next step", PORT_TYPE_ATOM)
|
||||
finished = add_output_port("Arrived to destination", PORT_TYPE_SIGNAL)
|
||||
@@ -45,10 +44,9 @@
|
||||
reason_failed = add_output_port("Fail reason", PORT_TYPE_STRING)
|
||||
|
||||
/obj/item/circuit_component/pathfind/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
INVOKE_ASYNC(src, .proc/perform_pathfinding, port)
|
||||
|
||||
/obj/item/circuit_component/pathfind/proc/perform_pathfinding(datum/port/input/port)
|
||||
var/target_X = input_X.value
|
||||
if(isnull(target_X))
|
||||
return
|
||||
@@ -110,4 +108,3 @@
|
||||
next_turf = get_turf(path[1])
|
||||
output.set_output(next_turf)
|
||||
TIMER_COOLDOWN_START(parent, COOLDOWN_CIRCUIT_PATHFIND_SAME, same_path_cooldown)
|
||||
|
||||
|
||||
@@ -11,15 +11,10 @@
|
||||
var/datum/port/input/target
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/pull/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/pull/populate_ports()
|
||||
target = add_input_port("Target", PORT_TYPE_ATOM)
|
||||
|
||||
/obj/item/circuit_component/pull/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/atom/target_atom = target.value
|
||||
if(!target_atom)
|
||||
return
|
||||
@@ -28,4 +23,4 @@
|
||||
if(!istype(shell) || get_dist(shell, target_atom) > 1 || shell.z != target_atom.z)
|
||||
return
|
||||
|
||||
shell.start_pulling(target_atom)
|
||||
INVOKE_ASYNC(shell, /atom/movable.proc/start_pulling, target_atom)
|
||||
|
||||
@@ -30,11 +30,10 @@
|
||||
)
|
||||
public_options = add_option_port("Encryption Options", component_options)
|
||||
|
||||
/obj/item/circuit_component/radio/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/radio/populate_ports()
|
||||
freq = add_input_port("Frequency", PORT_TYPE_NUMBER, default = FREQ_SIGNALER)
|
||||
code = add_input_port("Code", PORT_TYPE_NUMBER, default = DEFAULT_SIGNALER_CODE)
|
||||
INVOKE_ASYNC(src, .proc/apply_signal_component)
|
||||
trigger_component()
|
||||
// These are cleaned up on the parent
|
||||
trigger_input = add_input_port("Send", PORT_TYPE_SIGNAL)
|
||||
trigger_output = add_output_port("Received", PORT_TYPE_SIGNAL)
|
||||
@@ -43,19 +42,19 @@
|
||||
SSradio.remove_object(src, current_freq)
|
||||
return ..()
|
||||
|
||||
/obj/item/circuit_component/radio/proc/apply_signal_component()
|
||||
TRIGGER_CIRCUIT_COMPONENT(src, null)
|
||||
/obj/item/circuit_component/radio/pre_input_received(datum/port/input/port)
|
||||
freq.set_value(sanitize_frequency(freq.value, TRUE))
|
||||
|
||||
/obj/item/circuit_component/radio/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
freq.set_value(sanitize_frequency(freq.value, TRUE))
|
||||
if(.)
|
||||
return
|
||||
INVOKE_ASYNC(src, .proc/handle_radio_input, port)
|
||||
|
||||
/obj/item/circuit_component/radio/proc/handle_radio_input(datum/port/input/port)
|
||||
var/frequency = freq.value
|
||||
|
||||
SSradio.remove_object(src, current_freq)
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_SIGNALER)
|
||||
current_freq = frequency
|
||||
if(frequency != current_freq)
|
||||
SSradio.remove_object(src, current_freq)
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_SIGNALER)
|
||||
current_freq = frequency
|
||||
|
||||
if(COMPONENT_TRIGGERED_BY(trigger_input, port))
|
||||
var/datum/signal/signal = new(list("code" = round(code.value) || 0, "key" = parent?.owner_id))
|
||||
|
||||
@@ -27,8 +27,7 @@
|
||||
. += create_ui_notice("Sound Cooldown: [DisplayTimeText(sound_cooldown)]", "orange", "stopwatch")
|
||||
|
||||
|
||||
/obj/item/circuit_component/soundemitter/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/soundemitter/populate_ports()
|
||||
volume = add_input_port("Volume", PORT_TYPE_NUMBER, default = 35)
|
||||
frequency = add_input_port("Frequency", PORT_TYPE_NUMBER, default = 0)
|
||||
|
||||
@@ -46,14 +45,11 @@
|
||||
sound_file = add_option_port("Sound Option", component_options)
|
||||
options_map = component_options
|
||||
|
||||
|
||||
/obj/item/circuit_component/soundemitter/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
/obj/item/circuit_component/soundemitter/pre_input_received(datum/port/input/port)
|
||||
volume.set_value(clamp(volume.value, 0, 100))
|
||||
frequency.set_value(clamp(frequency.value, -100, 100))
|
||||
if(.)
|
||||
return
|
||||
|
||||
/obj/item/circuit_component/soundemitter/input_received(datum/port/input/port)
|
||||
if(TIMER_COOLDOWN_CHECK(parent, COOLDOWN_CIRCUIT_SOUNDEMITTER))
|
||||
return
|
||||
|
||||
|
||||
@@ -18,14 +18,10 @@
|
||||
. = ..()
|
||||
. += create_ui_notice("Speech Cooldown: [DisplayTimeText(speech_cooldown)]", "orange", "stopwatch")
|
||||
|
||||
/obj/item/circuit_component/speech/Initialize()
|
||||
. = ..()
|
||||
message = add_input_port("Message", PORT_TYPE_STRING, FALSE)
|
||||
/obj/item/circuit_component/speech/populate_ports()
|
||||
message = add_input_port("Message", PORT_TYPE_STRING, trigger = null)
|
||||
|
||||
/obj/item/circuit_component/speech/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(TIMER_COOLDOWN_CHECK(parent, COOLDOWN_CIRCUIT_SPEECH))
|
||||
return
|
||||
|
||||
@@ -18,17 +18,13 @@
|
||||
var/datum/port/output/output_value
|
||||
|
||||
|
||||
/obj/item/circuit_component/get_variable/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/get_variable/populate_ports()
|
||||
entity = add_input_port("Target", PORT_TYPE_ATOM)
|
||||
variable_name = add_input_port("Variable Name", PORT_TYPE_STRING)
|
||||
|
||||
output_value = add_output_port("Output Value", PORT_TYPE_ANY)
|
||||
|
||||
/obj/item/circuit_component/get_variable/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/atom/object = entity.value
|
||||
var/var_name = variable_name.value
|
||||
if(!var_name || !object)
|
||||
|
||||
@@ -34,8 +34,7 @@
|
||||
|
||||
proccall_options = add_option_port("Proccall Options", component_options)
|
||||
|
||||
/obj/item/circuit_component/proccall/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/proccall/populate_ports()
|
||||
entity = add_input_port("Target", PORT_TYPE_ATOM)
|
||||
proc_name = add_input_port("Proc Name", PORT_TYPE_STRING)
|
||||
arguments = add_input_port("Arguments", PORT_TYPE_LIST)
|
||||
@@ -43,9 +42,6 @@
|
||||
output_value = add_output_port("Output Value", PORT_TYPE_ANY)
|
||||
|
||||
/obj/item/circuit_component/proccall/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/called_on
|
||||
if(proccall_options.value == COMP_PROC_OBJECT)
|
||||
|
||||
@@ -14,20 +14,21 @@
|
||||
var/datum/port/output/results
|
||||
|
||||
|
||||
/obj/item/circuit_component/sdql_operation/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/sdql_operation/populate_ports()
|
||||
sdql_operation = add_input_port("SDQL String", PORT_TYPE_STRING)
|
||||
results = add_output_port("Result", PORT_TYPE_LIST)
|
||||
|
||||
/obj/item/circuit_component/sdql_operation/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(GLOB.AdminProcCaller)
|
||||
return TRUE
|
||||
|
||||
INVOKE_ASYNC(src, .proc/execute_sdql, port)
|
||||
|
||||
/obj/item/circuit_component/sdql_operation/proc/execute_sdql(datum/port/input/port)
|
||||
var/operation = sdql_operation.value
|
||||
|
||||
if(GLOB.AdminProcCaller || !operation)
|
||||
return TRUE
|
||||
return
|
||||
|
||||
GLOB.AdminProcCaller = "CHAT_[parent.display_name]" //_ won't show up in ckeys so it'll never match with a real admin
|
||||
var/list/result = world.SDQL2_query(operation, parent.get_creator_admin(), parent.get_creator())
|
||||
|
||||
@@ -18,16 +18,12 @@
|
||||
var/datum/port/input/new_value
|
||||
|
||||
|
||||
/obj/item/circuit_component/set_variable/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/set_variable/populate_ports()
|
||||
entity = add_input_port("Target", PORT_TYPE_ATOM)
|
||||
variable_name = add_input_port("Variable Name", PORT_TYPE_STRING)
|
||||
new_value = add_input_port("New Value", PORT_TYPE_ANY)
|
||||
|
||||
/obj/item/circuit_component/set_variable/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/atom/object = entity.value
|
||||
var/var_name = variable_name.value
|
||||
if(!var_name || !object)
|
||||
|
||||
@@ -20,8 +20,7 @@
|
||||
/// The result from the output
|
||||
var/datum/port/output/spawned_atom
|
||||
|
||||
/obj/item/circuit_component/spawn_atom/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/spawn_atom/populate_ports()
|
||||
input_path = add_input_port("Type", PORT_TYPE_ANY)
|
||||
spawn_at = add_input_port("Spawn At", PORT_TYPE_ATOM)
|
||||
parameters = add_input_port("Parameters", PORT_TYPE_LIST)
|
||||
@@ -29,9 +28,6 @@
|
||||
spawned_atom = add_output_port("Spawned Atom", PORT_TYPE_ATOM)
|
||||
|
||||
/obj/item/circuit_component/spawn_atom/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/typepath = input_path.value
|
||||
|
||||
|
||||
@@ -14,15 +14,11 @@
|
||||
/// The type output
|
||||
var/datum/port/output/type_output
|
||||
|
||||
/obj/item/circuit_component/to_type/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/to_type/populate_ports()
|
||||
input_path = add_input_port("Type", PORT_TYPE_STRING)
|
||||
type_output = add_output_port("Typepath", PORT_TYPE_ANY)
|
||||
|
||||
/obj/item/circuit_component/to_type/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
type_output.set_output(text2path(input_path.value))
|
||||
|
||||
|
||||
@@ -28,8 +28,7 @@
|
||||
. = ..()
|
||||
. += create_ui_notice("Maximum Range: [max_range] tiles", "orange", "info")
|
||||
|
||||
/obj/item/circuit_component/direction/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/direction/populate_ports()
|
||||
input_port = add_input_port("Organism", PORT_TYPE_ATOM)
|
||||
|
||||
output = add_output_port("Direction", PORT_TYPE_STRING)
|
||||
@@ -40,9 +39,6 @@
|
||||
west = add_output_port("West", PORT_TYPE_SIGNAL)
|
||||
|
||||
/obj/item/circuit_component/direction/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/atom/object = input_port.value
|
||||
if(!object)
|
||||
|
||||
@@ -14,17 +14,12 @@
|
||||
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/gps/Initialize()
|
||||
. = ..()
|
||||
|
||||
/obj/item/circuit_component/gps/populate_ports()
|
||||
x_pos = add_output_port("X", PORT_TYPE_NUMBER)
|
||||
y_pos = add_output_port("Y", PORT_TYPE_NUMBER)
|
||||
z_pos = add_output_port("Z", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/gps/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/turf/location = get_turf(src)
|
||||
|
||||
|
||||
@@ -29,8 +29,7 @@
|
||||
. = ..()
|
||||
. += create_ui_notice("Maximum Range: [max_range] tiles", "orange", "info")
|
||||
|
||||
/obj/item/circuit_component/health/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/health/populate_ports()
|
||||
input_port = add_input_port("Organism", PORT_TYPE_ATOM)
|
||||
|
||||
brute = add_output_port("Brute Damage", PORT_TYPE_NUMBER)
|
||||
@@ -40,9 +39,6 @@
|
||||
health = add_output_port("Health", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/health/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/mob/living/organism = input_port.value
|
||||
var/turf/current_turf = get_turf(src)
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
/// The trigger sent when this event occurs
|
||||
var/datum/port/output/trigger_port
|
||||
|
||||
/obj/item/circuit_component/hear/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/hear/populate_ports()
|
||||
message_port = add_output_port("Message", PORT_TYPE_STRING)
|
||||
language_port = add_output_port("Language", PORT_TYPE_STRING)
|
||||
speaker_port = add_output_port("Speaker", PORT_TYPE_ATOM)
|
||||
|
||||
@@ -10,8 +10,7 @@
|
||||
/// The shell this component is attached to.
|
||||
var/datum/port/output/output
|
||||
|
||||
/obj/item/circuit_component/self/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/self/populate_ports()
|
||||
output = add_output_port("Self", PORT_TYPE_ATOM)
|
||||
|
||||
/obj/item/circuit_component/self/register_shell(atom/movable/shell)
|
||||
|
||||
@@ -15,16 +15,12 @@
|
||||
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/species/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/species/populate_ports()
|
||||
input_port = add_input_port("Organism", PORT_TYPE_ATOM)
|
||||
|
||||
output = add_output_port("Species", PORT_TYPE_STRING)
|
||||
|
||||
/obj/item/circuit_component/species/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human = input_port.value
|
||||
if(!istype(human) || !human.has_dna())
|
||||
|
||||
@@ -17,8 +17,7 @@
|
||||
|
||||
var/overlay_limit = 10
|
||||
|
||||
/obj/item/circuit_component/object_overlay/bar/Initialize()
|
||||
. = ..()
|
||||
/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()
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
var/list/numbers = list()
|
||||
var/counter_appearance
|
||||
|
||||
/obj/item/circuit_component/counter_overlay/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/counter_overlay/populate_ports()
|
||||
counter_number = add_input_port("Displayed Number", PORT_TYPE_NUMBER)
|
||||
|
||||
signal_update = add_input_port("Update Overlay", PORT_TYPE_SIGNAL)
|
||||
@@ -44,9 +43,7 @@
|
||||
UnregisterSignal(shell, COMSIG_ORGAN_REMOVED)
|
||||
|
||||
/obj/item/circuit_component/counter_overlay/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
|
||||
if(. || !bci)
|
||||
if(!bci)
|
||||
return
|
||||
|
||||
var/mob/living/owner = bci.owner
|
||||
|
||||
@@ -29,8 +29,7 @@
|
||||
var/list/active_overlays = list()
|
||||
var/list/options_map
|
||||
|
||||
/obj/item/circuit_component/object_overlay/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/object_overlay/populate_ports()
|
||||
target = add_input_port("Target", PORT_TYPE_ATOM)
|
||||
|
||||
signal_on = add_input_port("Create Overlay", PORT_TYPE_SIGNAL)
|
||||
@@ -70,9 +69,7 @@
|
||||
UnregisterSignal(shell, COMSIG_ORGAN_REMOVED)
|
||||
|
||||
/obj/item/circuit_component/object_overlay/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
|
||||
if(. || !bci)
|
||||
if(!bci)
|
||||
return
|
||||
|
||||
var/mob/living/owner = bci.owner
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
var/obj/item/organ/cyberimp/bci/bci
|
||||
var/intercept_cooldown = 1 SECONDS
|
||||
|
||||
/obj/item/circuit_component/target_intercept/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/target_intercept/populate_ports()
|
||||
trigger_input = add_input_port("Activate", PORT_TYPE_SIGNAL)
|
||||
trigger_output = add_output_port("Triggered", PORT_TYPE_SIGNAL)
|
||||
clicked_atom = add_output_port("Targeted Object", PORT_TYPE_ATOM)
|
||||
@@ -32,9 +31,7 @@
|
||||
UnregisterSignal(shell, COMSIG_ORGAN_REMOVED)
|
||||
|
||||
/obj/item/circuit_component/target_intercept/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
|
||||
if(. || !bci)
|
||||
if(!bci)
|
||||
return
|
||||
|
||||
var/mob/living/owner = bci.owner
|
||||
|
||||
@@ -17,17 +17,13 @@
|
||||
var/datum/port/output/output
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/concat_list/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/concat_list/populate_ports()
|
||||
list_port = add_input_port("List", PORT_TYPE_LIST)
|
||||
separator = add_input_port("Seperator", PORT_TYPE_STRING)
|
||||
|
||||
output = add_output_port("Output", PORT_TYPE_STRING)
|
||||
|
||||
/obj/item/circuit_component/concat_list/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/seperator = separator.value
|
||||
if(!seperator)
|
||||
|
||||
@@ -17,16 +17,12 @@
|
||||
/// The filtered list
|
||||
var/datum/port/output/output_list
|
||||
|
||||
/obj/item/circuit_component/get_column/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/get_column/populate_ports()
|
||||
received_table = add_input_port("Input", PORT_TYPE_TABLE)
|
||||
column_name = add_input_port("Column Name", PORT_TYPE_STRING)
|
||||
output_list = add_output_port("Output", PORT_TYPE_LIST)
|
||||
|
||||
/obj/item/circuit_component/get_column/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/list/input_list = received_table.value
|
||||
if(!islist(input_list) || isnum(column_name.value))
|
||||
|
||||
@@ -15,17 +15,13 @@
|
||||
var/datum/port/output/output
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/index/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/index/populate_ports()
|
||||
index_port = add_input_port("Index", PORT_TYPE_ANY)
|
||||
list_port = add_input_port("List", PORT_TYPE_LIST)
|
||||
|
||||
output = add_output_port("Value", PORT_TYPE_ANY)
|
||||
|
||||
/obj/item/circuit_component/index/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/index = index_port.value
|
||||
var/list/list_input = list_port.value
|
||||
|
||||
@@ -17,17 +17,13 @@
|
||||
/// The filtered list
|
||||
var/datum/port/output/output_list
|
||||
|
||||
/obj/item/circuit_component/index_table/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/index_table/populate_ports()
|
||||
received_table = add_input_port("Input", PORT_TYPE_TABLE)
|
||||
target_index = add_input_port("Index", PORT_TYPE_NUMBER)
|
||||
|
||||
output_list = add_output_port("Output", PORT_TYPE_LIST)
|
||||
|
||||
/obj/item/circuit_component/index_table/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/list/target_list = received_table.value
|
||||
if(!islist(target_list) || !length(target_list))
|
||||
|
||||
@@ -49,10 +49,9 @@
|
||||
var/index = length(input_ports)
|
||||
if(trigger_input)
|
||||
index -= 1
|
||||
entry_ports += add_input_port("Index [index+1]", PORT_TYPE_ANY, index = index+1)
|
||||
entry_ports += add_input_port("Index [index+1]", PORT_TYPE_ANY)
|
||||
|
||||
/obj/item/circuit_component/list_literal/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/list_literal/populate_ports()
|
||||
set_list_size(default_list_size)
|
||||
list_output = add_output_port("Value", PORT_TYPE_LIST)
|
||||
|
||||
@@ -73,9 +72,6 @@
|
||||
balloon_alert(user, "new size is now [length]")
|
||||
|
||||
/obj/item/circuit_component/list_literal/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/list/new_literal = list()
|
||||
for(var/datum/port/input/entry_port as anything in entry_ports)
|
||||
|
||||
@@ -35,18 +35,15 @@
|
||||
)
|
||||
comparison_options = add_option_port("Comparison Options", component_options)
|
||||
|
||||
/obj/item/circuit_component/select/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/select/populate_ports()
|
||||
received_table = add_input_port("Input", PORT_TYPE_TABLE)
|
||||
column_name = add_input_port("Column Name", PORT_TYPE_STRING)
|
||||
comparison_input = add_input_port("Comparison Input", PORT_TYPE_ANY)
|
||||
|
||||
filtered_table = add_output_port("Output", PORT_TYPE_TABLE)
|
||||
|
||||
/obj/item/circuit_component/select/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
/obj/item/circuit_component/select/pre_input_received(datum/port/input/port)
|
||||
var/current_option = comparison_options.value
|
||||
|
||||
switch(current_option)
|
||||
if(COMP_COMPARISON_EQUAL, COMP_COMPARISON_NOT_EQUAL)
|
||||
if(current_type != PORT_TYPE_ANY)
|
||||
@@ -57,9 +54,9 @@
|
||||
current_type = PORT_TYPE_NUMBER
|
||||
comparison_input.set_datatype(PORT_TYPE_NUMBER)
|
||||
|
||||
if(.)
|
||||
return
|
||||
|
||||
/obj/item/circuit_component/select/input_received(datum/port/input/port)
|
||||
var/current_option = comparison_options.value
|
||||
var/list/input_list = received_table.value
|
||||
if(!islist(input_list) || isnum(column_name.value))
|
||||
return
|
||||
|
||||
@@ -18,16 +18,12 @@
|
||||
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/split/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/split/populate_ports()
|
||||
input_port = add_input_port("Input", PORT_TYPE_STRING)
|
||||
separator = add_input_port("Seperator", PORT_TYPE_STRING)
|
||||
output = add_output_port("Output", PORT_TYPE_LIST)
|
||||
|
||||
/obj/item/circuit_component/split/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/separator_value = separator.value
|
||||
if(isnull(separator_value))
|
||||
|
||||
@@ -37,8 +37,7 @@
|
||||
)
|
||||
arithmetic_option = add_option_port("Arithmetic Option", component_options)
|
||||
|
||||
/obj/item/circuit_component/arithmetic/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/arithmetic/populate_ports()
|
||||
arithmetic_ports = list()
|
||||
for(var/port_id in 1 to input_port_amount)
|
||||
var/letter = ascii2text(text2ascii("A") + (port_id-1))
|
||||
@@ -47,9 +46,6 @@
|
||||
output = add_output_port("Output", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/arithmetic/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/list/ports = arithmetic_ports.Copy()
|
||||
var/datum/port/input/first_port = popleft(ports)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
)
|
||||
comparison_option = add_option_port("Comparison Option", component_options)
|
||||
|
||||
/obj/item/circuit_component/compare/comparison/input_received(datum/port/input/port)
|
||||
/obj/item/circuit_component/compare/comparison/pre_input_received(datum/port/input/port)
|
||||
switch(comparison_option.value)
|
||||
if(COMP_COMPARISON_EQUAL, COMP_COMPARISON_NOT_EQUAL)
|
||||
if(current_type != PORT_TYPE_ANY)
|
||||
@@ -35,7 +35,6 @@
|
||||
current_type = PORT_TYPE_NUMBER
|
||||
compare_ports[1].set_datatype(PORT_TYPE_NUMBER)
|
||||
compare_ports[2].set_datatype(PORT_TYPE_NUMBER)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/circuit_component/compare/comparison/do_comparisons(list/ports)
|
||||
|
||||
@@ -14,16 +14,12 @@
|
||||
var/datum/port/output/output
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/length/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/length/populate_ports()
|
||||
input_port = add_input_port("Input", PORT_TYPE_ANY)
|
||||
|
||||
output = add_output_port("Length", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/length/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
output.set_output(length(input_port.value))
|
||||
|
||||
|
||||
@@ -14,16 +14,12 @@
|
||||
var/datum/port/output/result
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/not/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/not/populate_ports()
|
||||
input_port = add_input_port("Input", PORT_TYPE_ANY)
|
||||
|
||||
result = add_output_port("Result", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/not/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
result.set_output(!input_port.value)
|
||||
|
||||
|
||||
@@ -17,17 +17,13 @@
|
||||
/// The result from the output
|
||||
var/datum/port/output/output
|
||||
|
||||
/obj/item/circuit_component/random/Initialize()
|
||||
. = ..()
|
||||
minimum = add_input_port("Minimum", PORT_TYPE_NUMBER, FALSE)
|
||||
maximum = add_input_port("Maximum", PORT_TYPE_NUMBER, FALSE)
|
||||
/obj/item/circuit_component/random/populate_ports()
|
||||
minimum = add_input_port("Minimum", PORT_TYPE_NUMBER, trigger = null)
|
||||
maximum = add_input_port("Maximum", PORT_TYPE_NUMBER, trigger = null)
|
||||
|
||||
output = add_output_port("Output", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/random/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/min_val = minimum.value || 0
|
||||
var/max_val = maximum.value || 0
|
||||
|
||||
@@ -20,8 +20,7 @@
|
||||
var/datum/port/input/option/data_type_options
|
||||
var/datum/port/input/option/secondary_data_type_options
|
||||
|
||||
/obj/item/circuit_component/ntnet_receive/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/ntnet_receive/populate_ports()
|
||||
data_package = add_output_port("Data Package", PORT_TYPE_ANY)
|
||||
secondary_package = add_output_port("Secondary Package", PORT_TYPE_ANY)
|
||||
enc_key = add_input_port("Encryption Key", PORT_TYPE_STRING)
|
||||
@@ -39,9 +38,6 @@
|
||||
secondary_data_type_options = add_option_port("Secondary Data Type", component_options)
|
||||
|
||||
/obj/item/circuit_component/ntnet_receive/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(COMPONENT_TRIGGERED_BY(data_type_options, port))
|
||||
data_package.set_datatype(data_type_options.value)
|
||||
|
||||
@@ -16,14 +16,10 @@
|
||||
var/datum/port/input/secondary_package
|
||||
var/datum/port/input/enc_key
|
||||
|
||||
/obj/item/circuit_component/ntnet_send/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/ntnet_send/populate_ports()
|
||||
data_package = add_input_port("Data Package", PORT_TYPE_ANY)
|
||||
secondary_package = add_input_port("Secondary Package", PORT_TYPE_ANY)
|
||||
enc_key = add_input_port("Encryption Key", PORT_TYPE_STRING)
|
||||
|
||||
/obj/item/circuit_component/ntnet_send/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
ntnet_send(list("data" = data_package.value, "data_secondary" = secondary_package.value, "enc_key" = enc_key.value))
|
||||
|
||||
@@ -12,14 +12,10 @@
|
||||
/// The result from the output
|
||||
var/datum/port/output/result
|
||||
|
||||
/obj/item/circuit_component/pressuresensor/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/pressuresensor/populate_ports()
|
||||
result = add_output_port("Result", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/pressuresensor/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
//Get current turf
|
||||
var/turf/location = get_turf(src)
|
||||
if(!location)
|
||||
|
||||
@@ -12,14 +12,10 @@
|
||||
/// The result from the output
|
||||
var/datum/port/output/result
|
||||
|
||||
/obj/item/circuit_component/tempsensor/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/tempsensor/populate_ports()
|
||||
result = add_output_port("Result", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/tempsensor/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
//Get current turf
|
||||
var/turf/location = get_turf(src)
|
||||
if(!location)
|
||||
|
||||
@@ -10,28 +10,23 @@
|
||||
/// The amount of input ports to have
|
||||
var/input_port_amount = 4
|
||||
|
||||
var/list/datum/port/input/concat_ports = list()
|
||||
|
||||
/// The result from the output
|
||||
var/datum/port/output/output
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/concat/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/concat/populate_ports()
|
||||
for(var/port_id in 1 to input_port_amount)
|
||||
var/letter = ascii2text(text2ascii("A") + (port_id-1))
|
||||
add_input_port(letter, PORT_TYPE_STRING)
|
||||
concat_ports += add_input_port(letter, PORT_TYPE_STRING)
|
||||
|
||||
output = add_output_port("Output", PORT_TYPE_STRING)
|
||||
|
||||
/obj/item/circuit_component/concat/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/result = ""
|
||||
var/list/ports = input_ports.Copy()
|
||||
ports -= trigger_input
|
||||
|
||||
for(var/datum/port/input/input_port as anything in ports)
|
||||
for(var/datum/port/input/input_port as anything in concat_ports)
|
||||
var/value = input_port.value
|
||||
if(isnull(value))
|
||||
continue
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/datum/port/input/needle
|
||||
var/datum/port/input/haystack
|
||||
|
||||
/obj/item/circuit_component/compare/contains/load_custom_ports()
|
||||
/obj/item/circuit_component/compare/contains/populate_custom_ports()
|
||||
needle = add_input_port("Needle", PORT_TYPE_STRING)
|
||||
haystack = add_input_port("Haystack", PORT_TYPE_STRING)
|
||||
|
||||
|
||||
@@ -27,15 +27,11 @@
|
||||
)
|
||||
textcase_options = add_option_port("Textcase Options", component_options)
|
||||
|
||||
/obj/item/circuit_component/textcase/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/textcase/populate_ports()
|
||||
input_port = add_input_port("Input", PORT_TYPE_STRING)
|
||||
output = add_output_port("Output", PORT_TYPE_STRING)
|
||||
|
||||
/obj/item/circuit_component/textcase/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/value = input_port.value
|
||||
if(isnull(value))
|
||||
|
||||
@@ -15,15 +15,10 @@
|
||||
|
||||
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
||||
|
||||
/obj/item/circuit_component/tonumber/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/tonumber/populate_ports()
|
||||
input_port = add_input_port("Input", PORT_TYPE_STRING)
|
||||
|
||||
output = add_output_port("Output", PORT_TYPE_NUMBER)
|
||||
|
||||
/obj/item/circuit_component/tonumber/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
output.set_output(text2num(input_port.value))
|
||||
|
||||
@@ -17,16 +17,11 @@
|
||||
|
||||
var/max_range = 7
|
||||
|
||||
/obj/item/circuit_component/tostring/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/tostring/populate_ports()
|
||||
input_port = add_input_port("Input", PORT_TYPE_ANY)
|
||||
|
||||
output = add_output_port("Output", PORT_TYPE_STRING)
|
||||
|
||||
/obj/item/circuit_component/tostring/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/value = input_port.value
|
||||
if(isatom(value))
|
||||
|
||||
@@ -17,16 +17,12 @@
|
||||
. = ..()
|
||||
. += create_ui_notice("Clock Interval: [DisplayTimeText(COMP_CLOCK_DELAY)]", "orange", "clock")
|
||||
|
||||
/obj/item/circuit_component/clock/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/clock/populate_ports()
|
||||
on = add_input_port("On", PORT_TYPE_NUMBER)
|
||||
|
||||
signal = add_output_port("Signal", PORT_TYPE_SIGNAL)
|
||||
|
||||
/obj/item/circuit_component/clock/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(on.value)
|
||||
start_process()
|
||||
|
||||
@@ -18,17 +18,13 @@
|
||||
/// The output of the signal
|
||||
var/datum/port/output/output
|
||||
|
||||
/obj/item/circuit_component/delay/Initialize()
|
||||
. = ..()
|
||||
delay_amount = add_input_port("Delay", PORT_TYPE_NUMBER, FALSE)
|
||||
/obj/item/circuit_component/delay/populate_ports()
|
||||
delay_amount = add_input_port("Delay", PORT_TYPE_NUMBER, trigger = null)
|
||||
trigger = add_input_port("Trigger", PORT_TYPE_SIGNAL)
|
||||
|
||||
output = add_output_port("Result", PORT_TYPE_SIGNAL)
|
||||
|
||||
/obj/item/circuit_component/delay/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(!COMPONENT_TRIGGERED_BY(trigger, port))
|
||||
return
|
||||
|
||||
@@ -26,14 +26,10 @@
|
||||
variable_name.possible_options = null
|
||||
return ..()
|
||||
|
||||
/obj/item/circuit_component/getter/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/getter/populate_ports()
|
||||
value = add_output_port("Value", PORT_TYPE_ANY)
|
||||
|
||||
/obj/item/circuit_component/getter/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
// We don't care much about the parent's return value. We only care if the parent exists
|
||||
// since this should never really fail.
|
||||
/obj/item/circuit_component/getter/pre_input_received(datum/port/input/port)
|
||||
if(!parent)
|
||||
return
|
||||
|
||||
|
||||
@@ -35,8 +35,7 @@
|
||||
)
|
||||
router_options = add_option_port("Router Options", component_options)
|
||||
|
||||
/obj/item/circuit_component/router/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/router/populate_ports()
|
||||
current_type = router_options.value
|
||||
if(input_port_amount > 1)
|
||||
input_selector = add_input_port("Input Selector", PORT_TYPE_NUMBER, default = 1)
|
||||
@@ -61,8 +60,7 @@
|
||||
|
||||
// If I is in range, L[I]. If I is out of range, wrap around.
|
||||
#define WRAPACCESS(L, I) L[(((I||1)-1)%length(L)+length(L))%length(L)+1]
|
||||
/obj/item/circuit_component/router/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
/obj/item/circuit_component/router/pre_input_received(datum/port/input/port)
|
||||
var/current_option = router_options.value
|
||||
if(current_type != current_option)
|
||||
current_type = current_option
|
||||
@@ -70,8 +68,8 @@
|
||||
input.set_datatype(current_type)
|
||||
for(var/datum/port/output/output as anything in outs)
|
||||
output.set_datatype(current_type)
|
||||
if(.)
|
||||
return
|
||||
|
||||
/obj/item/circuit_component/router/input_received(datum/port/input/port)
|
||||
var/datum/port/input/input = WRAPACCESS(ins, input_selector ? input_selector.value : 1)
|
||||
var/datum/port/output/output = WRAPACCESS(outs, output_selector ? output_selector.value : 1)
|
||||
output.set_output(input.value)
|
||||
|
||||
@@ -30,13 +30,33 @@
|
||||
variable_name.possible_options = null
|
||||
return ..()
|
||||
|
||||
/obj/item/circuit_component/setter/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/setter/populate_ports()
|
||||
input_port = add_input_port("Input", PORT_TYPE_ANY)
|
||||
trigger = add_input_port("Store", PORT_TYPE_SIGNAL)
|
||||
|
||||
/obj/item/circuit_component/setter/pre_input_received(datum/port/input/port)
|
||||
var/datum/circuit_variable/variable = get_variable()
|
||||
if(!variable)
|
||||
return
|
||||
|
||||
if(variable.datatype != current_type)
|
||||
current_type = variable.datatype
|
||||
input_port.set_datatype(current_type)
|
||||
|
||||
/obj/item/circuit_component/setter/should_receive_input(datum/port/input/port)
|
||||
if(!COMPONENT_TRIGGERED_BY(trigger, port))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/circuit_component/setter/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
var/datum/circuit_variable/variable = get_variable()
|
||||
if(!variable)
|
||||
return
|
||||
|
||||
variable.set_value(input_port.value)
|
||||
|
||||
/obj/item/circuit_component/setter/proc/get_variable()
|
||||
var/variable_string = variable_name.value
|
||||
if(!variable_string)
|
||||
return
|
||||
@@ -45,14 +65,4 @@
|
||||
if(!variable)
|
||||
return
|
||||
|
||||
if(variable.datatype != current_type)
|
||||
current_type = variable.datatype
|
||||
input_port.set_datatype(current_type)
|
||||
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(!COMPONENT_TRIGGERED_BY(trigger, port))
|
||||
return TRUE
|
||||
|
||||
variable.set_value(input_port.value)
|
||||
return variable
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
|
||||
var/current_type
|
||||
|
||||
/obj/item/circuit_component/typecast/Initialize()
|
||||
. = ..()
|
||||
/obj/item/circuit_component/typecast/populate_ports()
|
||||
current_type = typecast_options.value
|
||||
input_value = add_input_port("Input", PORT_TYPE_ANY)
|
||||
output_value = add_output_port("Output", current_type)
|
||||
@@ -31,16 +30,15 @@
|
||||
)
|
||||
typecast_options = add_option_port("Typecast Options", component_options)
|
||||
|
||||
/obj/item/circuit_component/typecast/input_received(datum/port/input/port)
|
||||
. = ..()
|
||||
/obj/item/circuit_component/typecast/pre_input_received(datum/port/input/port)
|
||||
var/current_option = typecast_options.value
|
||||
if(current_type != current_option)
|
||||
current_type = current_option
|
||||
output_value.set_datatype(current_type)
|
||||
|
||||
if(.)
|
||||
return
|
||||
|
||||
/obj/item/circuit_component/typecast/input_received(datum/port/input/port)
|
||||
var/current_option = typecast_options.value
|
||||
var/value = input_value.value
|
||||
var/value_to_set = null
|
||||
switch(current_option)
|
||||
|
||||
Reference in New Issue
Block a user