mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-06 06:52:39 +00:00
* Adds Circuit variables (#60590) Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com> * Adds Circuit variables Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com> Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
67 lines
2.1 KiB
Plaintext
67 lines
2.1 KiB
Plaintext
/**
|
|
* # Sound Emitter Component
|
|
*
|
|
* A component that emits a sound when it receives an input.
|
|
*/
|
|
/obj/item/circuit_component/soundemitter
|
|
display_name = "Sound Emitter"
|
|
desc = "A component that emits a sound when it receives an input. The frequency is a multiplier which determines the speed at which the sound is played"
|
|
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
|
|
|
|
/// Sound to play
|
|
var/datum/port/input/option/sound_file
|
|
|
|
/// Volume of the sound when played
|
|
var/datum/port/input/volume
|
|
|
|
/// Frequency of the sound when played
|
|
var/datum/port/input/frequency
|
|
|
|
/// The cooldown for this component of how often it can play sounds.
|
|
var/sound_cooldown = 2 SECONDS
|
|
|
|
var/list/options_map
|
|
|
|
/obj/item/circuit_component/soundemitter/get_ui_notices()
|
|
. = ..()
|
|
. += create_ui_notice("Sound Cooldown: [DisplayTimeText(sound_cooldown)]", "orange", "stopwatch")
|
|
|
|
|
|
/obj/item/circuit_component/soundemitter/Initialize()
|
|
. = ..()
|
|
volume = add_input_port("Volume", PORT_TYPE_NUMBER, default = 35)
|
|
frequency = add_input_port("Frequency", PORT_TYPE_NUMBER, default = 0)
|
|
|
|
/obj/item/circuit_component/soundemitter/populate_options()
|
|
var/static/component_options = list(
|
|
"Buzz" = 'sound/machines/buzz-sigh.ogg',
|
|
"Buzz Twice" = 'sound/machines/buzz-two.ogg',
|
|
"Chime" = 'sound/machines/chime.ogg',
|
|
"Honk" = 'sound/items/bikehorn.ogg',
|
|
"Ping" = 'sound/machines/ping.ogg',
|
|
"Sad Trombone" = 'sound/misc/sadtrombone.ogg',
|
|
"Warn" = 'sound/machines/warning-buzzer.ogg',
|
|
"Slow Clap" = 'sound/machines/slowclap.ogg',
|
|
)
|
|
sound_file = add_option_port("Sound Option", component_options)
|
|
options_map = component_options
|
|
|
|
|
|
/obj/item/circuit_component/soundemitter/input_received(datum/port/input/port)
|
|
. = ..()
|
|
volume.set_value(clamp(volume.value, 0, 100))
|
|
frequency.set_value(clamp(frequency.value, -100, 100))
|
|
if(.)
|
|
return
|
|
|
|
if(TIMER_COOLDOWN_CHECK(parent, COOLDOWN_CIRCUIT_SOUNDEMITTER))
|
|
return
|
|
|
|
var/sound_to_play = options_map[sound_file.value]
|
|
if(!sound_to_play)
|
|
return
|
|
|
|
playsound(src, sound_to_play, volume.value, frequency != 0, frequency = frequency.value)
|
|
|
|
TIMER_COOLDOWN_START(parent, COOLDOWN_CIRCUIT_SOUNDEMITTER, sound_cooldown)
|