meat_madness_redux/godot/assets/models/walkie_talkie/walkie_talkie.gd

70 lines
1.5 KiB
GDScript3
Raw Normal View History

2022-12-04 18:23:46 -07:00
extends Spatial
var active = false
onready var fsm: AnimationNodeStateMachinePlayback = $Animations/AnimationTree.get("parameters/playback")
2022-12-04 19:20:58 -07:00
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
2022-12-04 18:23:46 -07:00
2022-12-04 19:20:58 -07:00
# 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()
2022-12-04 18:23:46 -07:00
func toggle():
if active:
fsm.travel("WalkieTalkieLeave")
2022-12-04 19:20:58 -07:00
$StaticBuzz.stop()
$StaticFizz.stop()
$Talk.stop()
$Whale1.stop()
$Whale2.stop()
turn_screen_off()
2022-12-04 18:23:46 -07:00
else:
2022-12-04 19:20:58 -07:00
if fsm.is_playing():
fsm.travel("WalkieTalkieEnter")
else:
fsm.start("WalkieTalkieEnter")
$StaticBuzz.play()
$StaticFizz.play()
$Talk.play()
$Whale1.play()
$Whale2.play()
turn_screen_on()
2022-12-04 18:23:46 -07:00
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()
2022-12-04 19:20:58 -07:00
func _on_ScreenFlicker_timeout():
if active:
toggle_screen()