70 lines
1.5 KiB
GDScript
70 lines
1.5 KiB
GDScript
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()
|