[MIRROR] Added circuit component UI details, added multiplexer and allowed inserting components directly into shells. (#6479)

* Added circuit component UI details, added multiplexer and allowed inserting components directly into shells. (#59635)

Adds the multiplexer circuit component - en.wikipedia.org/wiki/Multiplexer
Circuit components can now be directly inserted into shells rather than having to take the integrated circuit out.
Special information can be accessed from components now through the "Info" button besides the eject button on a component.

* Added circuit component UI details, added multiplexer and allowed inserting components directly into shells.

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-06-23 22:50:59 +01:00
committed by GitHub
co-authored by Watermelon914
parent 1a2f4f5d69
commit 5ab9aba9d4
41 changed files with 398 additions and 95 deletions
@@ -37,162 +37,147 @@
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
category = list("Circuitry", "Components")
/datum/design/component/New()
. = ..()
if(build_path)
var/obj/item/circuit_component/component_path = build_path
desc = initial(component_path.display_desc)
/datum/design/component/arithmetic
name = "Arithmetic Component"
desc = "General arithmetic component with add/subtract/multiplication/division capabilities."
id = "comp_arithmetic"
build_path = /obj/item/circuit_component/arithmetic
/datum/design/component/clock
name = "Clock Component"
desc = "A component that repeatedly fires."
id = "comp_clock"
build_path = /obj/item/circuit_component/clock
/datum/design/component/comparison
name = "Comparison Component"
desc = "A component that compares two objects."
id = "comp_comparison"
build_path = /obj/item/circuit_component/compare/comparison
/datum/design/component/logic
name = "Logic Component"
desc = "A component with 'and' and 'or' capabilities."
id = "comp_logic"
build_path = /obj/item/circuit_component/compare/logic
/datum/design/component/delay
name = "Delay Component"
desc = "A component that delays a signal by a specified duration."
id = "comp_delay"
build_path = /obj/item/circuit_component/delay
/datum/design/component/index
name = "Index Component"
desc = "A component that returns the value of a list at a given index."
id = "comp_index"
build_path = /obj/item/circuit_component/index
/datum/design/component/length
name = "Length Component"
desc = "A component that returns the length of its input."
id = "comp_length"
build_path = /obj/item/circuit_component/length
/datum/design/component/light
name = "Light Component"
desc = "A component that emits a light of a specific brightness and colour. Requires a shell."
id = "comp_light"
build_path = /obj/item/circuit_component/light
/datum/design/component/not
name = "Not Component"
desc = "A component that inverts its input."
id = "comp_not"
build_path = /obj/item/circuit_component/not
/datum/design/component/ram
name = "RAM Component"
desc = "A component that retains a variable."
id = "comp_ram"
build_path = /obj/item/circuit_component/ram
/datum/design/component/random
name = "Random Component"
desc = "A component that returns random values."
id = "comp_random"
build_path = /obj/item/circuit_component/random
/datum/design/component/species
name = "Get Species Component"
desc = "A component that returns the species of its input."
id = "comp_species"
build_path = /obj/item/circuit_component/species
/datum/design/component/speech
name = "Speech Component"
desc = "A component that sends a message. Requires a shell."
id = "comp_speech"
build_path = /obj/item/circuit_component/speech
/datum/design/component/tostring
name = "To String Component"
desc = "A component that converts its input to text."
id = "comp_tostring"
build_path = /obj/item/circuit_component/tostring
/datum/design/component/typecheck
name = "Typecheck Component"
desc = "A component that checks the type of its input."
id = "comp_typecheck"
build_path = /obj/item/circuit_component/compare/typecheck
/datum/design/component/concat
name = "Concatenation Component"
desc = "A component that combines strings."
id = "comp_concat"
build_path = /obj/item/circuit_component/concat
/datum/design/component/textcase
name = "Textcase Component"
desc = "A component that makes its input uppercase or lowercase."
id = "comp_textcase"
build_path = /obj/item/circuit_component/textcase
/datum/design/component/hear
name = "Voice Activator Component"
desc = "A component that listens for messages. Requires a shell."
id = "comp_hear"
build_path = /obj/item/circuit_component/hear
/datum/design/component/contains
name = "String Contains Component"
desc = "Checks if a string contains a word/letter"
id = "comp_string_contains"
build_path = /obj/item/circuit_component/compare/contains
/datum/design/component/self
name = "Self Component"
desc = "A component that returns the current shell."
id = "comp_self"
build_path = /obj/item/circuit_component/self
/datum/design/component/radio
name = "Radio Component"
desc = "A component that can listen and send frequencies."
id = "comp_radio"
build_path = /obj/item/circuit_component/radio
/datum/design/component/gps
name = "GPS Component"
desc = "A component that returns the xyz co-ordinates of itself."
id = "comp_gps"
build_path = /obj/item/circuit_component/gps
/datum/design/component/direction
name = "Direction Component"
desc = "A component that returns the direction of itself and an entity."
id = "comp_direction"
build_path = /obj/item/circuit_component/direction
/datum/design/component/health
name = "Health Component"
desc = "A component that returns the health of an organism."
id = "comp_health"
build_path = /obj/item/circuit_component/health
/datum/design/component/combiner
name = "Combiner Component"
desc = "A component that combines multiple inputs to provide 1 output."
id = "comp_combiner"
build_path = /obj/item/circuit_component/combiner
/datum/design/component/pull
name = "Pull Component"
desc = "A component that can force the shell to pull entities. Only works for drone shells."
id = "comp_pull"
build_path = /obj/item/circuit_component/pull
/datum/design/component/multiplexer
name = "Multiplexer Component"
id = "comp_multiplexer"
build_path = /obj/item/circuit_component/multiplexer
/datum/design/compact_remote_shell
name = "Compact Remote Shell"
desc = "A handheld shell with one big button."
@@ -223,6 +223,7 @@
"comp_length",
"comp_light",
"comp_logic",
"comp_multiplexer",
"comp_not",
"comp_radio",
"comp_ram",