extends Spatial var active = false onready var fsm: AnimationNodeStateMachinePlayback = $Animations/AnimationTree.get("parameters/playback") export var default_screen_color = Color(226, 255, 0, 255) export var screen_off_color = Color(0.0, 0.0, 0.0) var is_screen_on: bool # Screen flicker is buggy it glitches and does new things when you modify the albedo colour # Seems like a Godot bug func _ready(): is_screen_on = false turn_screen_off() func turn_screen_off(): var mat = $Animations/walkie_talkie/Body.get_active_material(1) #mat.albedo_color = screen_off_color #mat.emission_enabled = false is_screen_on = false func turn_screen_on(): var mat = $Animations/walkie_talkie/Body.get_active_material(1) #mat.albedo_color = default_screen_color #mat.emission_enabled = true is_screen_on = true func toggle_screen(): if is_screen_on: turn_screen_off() else: turn_screen_on() func toggle(): if active: fsm.travel("WalkieTalkieLeave") $StaticBuzz.stop() $StaticFizz.stop() $Talk.stop() $Whale1.stop() $Whale2.stop() turn_screen_off() else: if fsm.is_playing(): fsm.travel("WalkieTalkieEnter") else: fsm.start("WalkieTalkieEnter") $StaticBuzz.play() $StaticFizz.play() $Talk.play() $Whale1.play() $Whale2.play() turn_screen_on() active = not active func put_away(): fsm.travel("WalkieTalkieLeave") if $DestroyTimer.is_stopped(): $DestroyTimer.start(1) func _process(_delta): if Input.is_action_just_pressed("toggle_walkie_talkie"): toggle() func _on_ScreenFlicker_timeout(): if active: toggle_screen()