Fix walkie talkie screen
This commit is contained in:
parent
272fcc390f
commit
effbe7dc83
|
@ -2,12 +2,12 @@ extends Spatial
|
||||||
|
|
||||||
var active = false
|
var active = false
|
||||||
onready var fsm: AnimationNodeStateMachinePlayback = $Animations/AnimationTree.get("parameters/playback")
|
onready var fsm: AnimationNodeStateMachinePlayback = $Animations/AnimationTree.get("parameters/playback")
|
||||||
export var default_screen_color = Color(226, 255, 0, 255)
|
export var default_screen_color = Color(0.886275, 1, 0, 1)
|
||||||
export var screen_off_color = Color(0.0, 0.0, 0.0)
|
export var screen_off_color = Color(0.0, 0.0, 0.0)
|
||||||
var is_screen_on: bool
|
var is_screen_on: bool
|
||||||
|
|
||||||
# Screen flicker is buggy it glitches and does new things when you modify the albedo colour
|
onready var util = get_node("/root/Util")
|
||||||
# Seems like a Godot bug
|
onready var player = util.player
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
is_screen_on = false
|
is_screen_on = false
|
||||||
|
@ -15,14 +15,14 @@ func _ready():
|
||||||
|
|
||||||
func turn_screen_off():
|
func turn_screen_off():
|
||||||
var mat = $Animations/walkie_talkie/Body.get_active_material(1)
|
var mat = $Animations/walkie_talkie/Body.get_active_material(1)
|
||||||
#mat.albedo_color = screen_off_color
|
mat.albedo_color = screen_off_color
|
||||||
#mat.emission_enabled = false
|
mat.emission_enabled = false
|
||||||
is_screen_on = false
|
is_screen_on = false
|
||||||
|
|
||||||
func turn_screen_on():
|
func turn_screen_on():
|
||||||
var mat = $Animations/walkie_talkie/Body.get_active_material(1)
|
var mat = $Animations/walkie_talkie/Body.get_active_material(1)
|
||||||
#mat.albedo_color = default_screen_color
|
mat.albedo_color = default_screen_color
|
||||||
#mat.emission_enabled = true
|
mat.emission_enabled = true
|
||||||
is_screen_on = true
|
is_screen_on = true
|
||||||
|
|
||||||
func toggle_screen():
|
func toggle_screen():
|
||||||
|
@ -31,29 +31,43 @@ func toggle_screen():
|
||||||
else:
|
else:
|
||||||
turn_screen_on()
|
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 make_active():
|
||||||
|
if active:
|
||||||
|
return
|
||||||
|
if fsm.is_playing():
|
||||||
|
fsm.travel("WalkieTalkieEnter")
|
||||||
|
else:
|
||||||
|
fsm.start("WalkieTalkieEnter")
|
||||||
|
$StaticBuzz.play()
|
||||||
|
$StaticFizz.play()
|
||||||
|
$Talk.play()
|
||||||
|
$Whale1.play()
|
||||||
|
$Whale2.play()
|
||||||
|
turn_screen_on()
|
||||||
|
$Click.play()
|
||||||
|
active = true
|
||||||
|
|
||||||
|
func make_inactive():
|
||||||
|
if not active:
|
||||||
|
return
|
||||||
|
fsm.travel("WalkieTalkieLeave")
|
||||||
|
$StaticBuzz.stop()
|
||||||
|
$StaticFizz.stop()
|
||||||
|
$Talk.stop()
|
||||||
|
$Whale1.stop()
|
||||||
|
$Whale2.stop()
|
||||||
|
turn_screen_off()
|
||||||
|
$Click.play()
|
||||||
|
active = false
|
||||||
|
|
||||||
|
func toggle_active():
|
||||||
|
if active:
|
||||||
|
make_inactive()
|
||||||
|
else:
|
||||||
|
make_active()
|
||||||
|
|
||||||
|
|
||||||
func put_away():
|
func put_away():
|
||||||
fsm.travel("WalkieTalkieLeave")
|
fsm.travel("WalkieTalkieLeave")
|
||||||
if $DestroyTimer.is_stopped():
|
if $DestroyTimer.is_stopped():
|
||||||
|
@ -61,7 +75,13 @@ func put_away():
|
||||||
|
|
||||||
func _process(_delta):
|
func _process(_delta):
|
||||||
if Input.is_action_just_pressed("toggle_walkie_talkie"):
|
if Input.is_action_just_pressed("toggle_walkie_talkie"):
|
||||||
toggle()
|
toggle_active()
|
||||||
|
if not active or not fsm.is_playing():
|
||||||
|
return
|
||||||
|
if player.is_ground_sprinting():
|
||||||
|
fsm.travel("WalkieTalkieWalking")
|
||||||
|
else:
|
||||||
|
fsm.travel("WalkieTalkieIdle")
|
||||||
|
|
||||||
|
|
||||||
func _on_ScreenFlicker_timeout():
|
func _on_ScreenFlicker_timeout():
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=33 format=2]
|
[gd_scene load_steps=34 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://assets/models/walkie_talkie/LCDScreen.material" type="Material" id=1]
|
[ext_resource path="res://assets/models/walkie_talkie/LCDScreen.material" type="Material" id=1]
|
||||||
[ext_resource path="res://assets/models/walkie_talkie/WalkieTalkieSpeaker.material" type="Material" id=2]
|
[ext_resource path="res://assets/models/walkie_talkie/WalkieTalkieSpeaker.material" type="Material" id=2]
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
[ext_resource path="res://assets/audio/walkie_talkie/white_noise_static.ogg" type="AudioStream" id=8]
|
[ext_resource path="res://assets/audio/walkie_talkie/white_noise_static.ogg" type="AudioStream" id=8]
|
||||||
[ext_resource path="res://assets/audio/walkie_talkie/talk.ogg" type="AudioStream" id=9]
|
[ext_resource path="res://assets/audio/walkie_talkie/talk.ogg" type="AudioStream" id=9]
|
||||||
[ext_resource path="res://assets/audio/walkie_talkie/high_whale.ogg" type="AudioStream" id=10]
|
[ext_resource path="res://assets/audio/walkie_talkie/high_whale.ogg" type="AudioStream" id=10]
|
||||||
|
[ext_resource path="res://assets/audio/flashlight_click.wav" type="AudioStream" id=11]
|
||||||
|
|
||||||
[sub_resource type="Animation" id=1]
|
[sub_resource type="Animation" id=1]
|
||||||
resource_name = "WalkieTalkieEnter"
|
resource_name = "WalkieTalkieEnter"
|
||||||
|
@ -251,7 +252,7 @@ light_cull_mask = 4293919232
|
||||||
omni_range = 0.449905
|
omni_range = 0.449905
|
||||||
|
|
||||||
[node name="ScreenFlicker" type="Timer" parent="Animations/walkie_talkie/Body"]
|
[node name="ScreenFlicker" type="Timer" parent="Animations/walkie_talkie/Body"]
|
||||||
wait_time = 0.5
|
wait_time = 0.3
|
||||||
autostart = true
|
autostart = true
|
||||||
|
|
||||||
[node name="BigKnob" type="MeshInstance" parent="Animations/walkie_talkie"]
|
[node name="BigKnob" type="MeshInstance" parent="Animations/walkie_talkie"]
|
||||||
|
@ -277,4 +278,7 @@ stream = ExtResource( 6 )
|
||||||
[node name="Whale2" type="AudioStreamPlayer" parent="."]
|
[node name="Whale2" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource( 10 )
|
stream = ExtResource( 10 )
|
||||||
|
|
||||||
|
[node name="Click" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource( 11 )
|
||||||
|
|
||||||
[connection signal="timeout" from="Animations/walkie_talkie/Body/ScreenFlicker" to="." method="_on_ScreenFlicker_timeout"]
|
[connection signal="timeout" from="Animations/walkie_talkie/Body/ScreenFlicker" to="." method="_on_ScreenFlicker_timeout"]
|
||||||
|
|
|
@ -6,6 +6,12 @@ onready var active_physics_node: Spatial = $OnFootPhysics
|
||||||
func is_on_foot():
|
func is_on_foot():
|
||||||
return active_physics_node == $OnFootPhysics
|
return active_physics_node == $OnFootPhysics
|
||||||
|
|
||||||
|
func is_ground_walking():
|
||||||
|
return is_on_foot() and $OnFootPhysics/Floor.is_on_floor and $MovementInput.input_xz != Vector2.ZERO
|
||||||
|
|
||||||
|
func is_ground_sprinting():
|
||||||
|
return is_ground_walking() and $MovementInput.sprinting
|
||||||
|
|
||||||
func camera():
|
func camera():
|
||||||
return $"Smoothing/CameraController/Rotation/Camera"
|
return $"Smoothing/CameraController/Rotation/Camera"
|
||||||
|
|
||||||
|
@ -15,8 +21,6 @@ func camera_position() -> Vector3:
|
||||||
func set_physics_node(node: Spatial):
|
func set_physics_node(node: Spatial):
|
||||||
if active_physics_node == node:
|
if active_physics_node == node:
|
||||||
return
|
return
|
||||||
#util.activate_node(node)
|
|
||||||
#util.deactivate_node(active_physics_node)
|
|
||||||
|
|
||||||
$Smoothing.target = NodePath("../" + node.name)
|
$Smoothing.target = NodePath("../" + node.name)
|
||||||
node.global_transform = active_physics_node.global_transform
|
node.global_transform = active_physics_node.global_transform
|
||||||
|
|
Loading…
Reference in New Issue