This commit is contained in:
Spencer Killen 2023-01-01 02:23:56 -07:00
parent 1694788562
commit 7d11e5dd46
Signed by: sjkillen
GPG Key ID: F307025B65C860BA
93 changed files with 912 additions and 24 deletions

BIN
blends/environment.blend (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
source_md5="57b4ff75689821c17e211ac43dec5cc1"
dest_md5="e111a930a900111d74daf52169d71079"

View File

@ -0,0 +1,3 @@
source_md5="29a467bd0e8026e293d99ad55aa9226b"
dest_md5="544be77f19c21ac6731f2a9ffe327c5b"

View File

@ -0,0 +1,3 @@
source_md5="117c82671fc7ee51752ef9c55c2f660c"
dest_md5="69ffad1aa079b0bb21541ee45b204038"

View File

@ -0,0 +1,3 @@
source_md5="012bedbf6531f60be5bea92f0c6e72d3"
dest_md5="ef3ab7c849aecdb2333073d93acc14a6"

View File

@ -0,0 +1,3 @@
source_md5="6daa2c682f089c1575edb4df6779283b"
dest_md5="7ce601b52785ba50f5dbe7e1c86bd594"

View File

@ -1,3 +1,3 @@
source_md5="d958ea022de42cf6a043f9a1801ebaed"
dest_md5="dfff1dbb1add8c552ef261e8a3b6a094"
source_md5="f6f19525174d964bcfbd5e0d10af60f4"
dest_md5="b244913244895512a1541ec37a177db9"

View File

@ -0,0 +1,3 @@
source_md5="9b94e0f51de02c4a45185188995cb665"
dest_md5="15cc094a05e22cbf495d3b31b9636222"

View File

@ -0,0 +1,3 @@
source_md5="50c243f949bb21547a721b61ce9ef4e4"
dest_md5="bf69edfb8a6c681488dce5eb4b06afc1"

View File

@ -0,0 +1,3 @@
source_md5="d6b3b46b70c9ac15fe713c3512c3e2bb"
dest_md5="7e05983fb7806b04a3f81e7015eb5d53"

View File

@ -0,0 +1,3 @@
source_md5="cd0239125589bbed7154e4c37d3df269"
dest_md5="1343865a40c52a07aee54914c1cfe8ee"

View File

@ -0,0 +1,3 @@
source_md5="b2d69ececd65bd1f6b1dd2721557d916"
dest_md5="027713fa886127a5b5e6964c4e85675b"

View File

@ -0,0 +1,3 @@
source_md5="7cf5bb24903fdee23774f8c9da6e36b2"
dest_md5="21d192875f8011d011cb6317a7bc670a"

View File

@ -0,0 +1,3 @@
source_md5="f84ae5bbac64d603431a024c47a4a2aa"
dest_md5="fa6a07901b875360fa1234eaa1030a25"

View File

@ -0,0 +1,3 @@
source_md5="c3ed6de3d121966caf4e61dc885612a6"
dest_md5="6cc8935d8cf3c5ce99e5c3f175d20e0e"

View File

@ -0,0 +1,3 @@
source_md5="1c7190e4f5911bf2f2cf42fe764473d8"
dest_md5="7759500d4105c4cec08be5872341d1b2"

View File

@ -0,0 +1,3 @@
source_md5="964c8a1bd4adcf55e4960f4056556b30"
dest_md5="23c10cf6850b1e567d45b340f37b8dc1"

View File

@ -0,0 +1,3 @@
source_md5="f6dafb3b5cc64081b282ea04b18b2319"
dest_md5="153c542c7e4f67638a66f05a4f272837"

View File

@ -0,0 +1,3 @@
source_md5="cd581dfa2d4e48db761f0a6a8f5dde53"
dest_md5="f8d3ce55de908504c4421f4ed8d66f97"

View File

@ -0,0 +1,3 @@
source_md5="0b7e964d3f859345741fa337f39b3ee5"
dest_md5="407f16c0e0ee291d6de66272c0abb710"

View File

@ -67,16 +67,46 @@ func input_speed() -> float:
speed *= DIST_PER_ACTION
return speed
func sound_beep():
if not $Beep.playing:
$Beep.play()
func sound_color():
if $Color.playing:
return
$Color.play()
func _input(_event):
if Input.is_action_just_pressed("cursor_interact"):
GlobalCursorState.fire_interact()
sound_beep()
if Input.is_action_just_released("cursor_interact"):
sound_beep()
if Input.is_action_just_pressed("cursor_right") or Input.is_action_just_pressed("cursor_left"):
sound_color()
func _process(_delta):
set_color()
func bump():
if $Bump.playing:
return
$Bump.play()
var locked = false
func _physics_process(delta):
inc_time_buffer(delta)
if locked:
return
var dir = input_direction()
var speed = input_speed()
var _slide_vel = move_and_slide(Vector3(speed, speed, speed) * dir, Vector3.UP)
var velocity = Vector3(speed, speed, speed) * dir
var result = move_and_slide(velocity, Vector3.UP)
if velocity != result:
bump()
func _on_AnimationTree_motion_status(value):
locked = value

View File

@ -1,7 +1,10 @@
[gd_scene load_steps=6 format=2]
[gd_scene load_steps=9 format=2]
[ext_resource path="res://3DCursor.gd" type="Script" id=1]
[ext_resource path="res://3DCursorLight.tscn" type="PackedScene" id=2]
[ext_resource path="res://assets/audio/bassy_bump.ogg" type="AudioStream" id=3]
[ext_resource path="res://assets/audio/beep.ogg" type="AudioStream" id=4]
[ext_resource path="res://assets/audio/color.ogg" type="AudioStream" id=5]
[sub_resource type="SpatialMaterial" id=5]
params_diffuse_mode = 4
@ -41,3 +44,13 @@ transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, -3, 0, 0 )
[node name="OmniLight7" parent="." instance=ExtResource( 2 )]
transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 3, 0, 0 )
[node name="Bump" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 3 )
[node name="Beep" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 4 )
[node name="Color" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 5 )
volume_db = 10.0

View File

@ -1,6 +1,21 @@
extends AnimationTree
export var TARGET_FRAMERATE = 5
onready var fsm: AnimationNodeStateMachinePlayback = get("parameters/playback")
func _ready():
var _err = GlobalCursorState.connect("set_camera_zone", self, "move")
signal motion_status(value)
func move(where: String):
if where == fsm.get_current_node():
return
fsm.travel(where)
emit_signal("motion_status", true)
yield(get_tree().create_timer(3), "timeout")
emit_signal("motion_status", false)
var time_buffer = 0.0
func _process(delta):

23
godot/AtticAmberLight.gd Normal file
View File

@ -0,0 +1,23 @@
extends OmniLight
var active = false
func _ready():
var _err = GlobalCursorState.connect("set_camera_zone", self, "zone")
visible = false
func zone(where: String):
if where != "camera_attic_inner":
$AnimationPlayer.stop()
active = false
visible = false
return
active = true
func _on_AnimationTree_motion_status(value):
if not active:
return
if value:
return
$AnimationPlayer.play("light_flicker")

View File

@ -3,26 +3,33 @@ extends Area
export var on_interact_func = ""
export var on_enter_func = ""
export var on_leave_func = ""
export var call_string = ""
var cursor_is_touching = false
func _ready():
var _err = GlobalCursorState.connect("cursor_interact", self, "check_interact")
func call_with_value(func_name: String):
if call_string:
GlobalCursorState.call(func_name, call_string)
else:
GlobalCursorState.call(func_name)
func check_interact():
if cursor_is_touching and on_interact_func:
GlobalCursorState.call(on_interact_func)
call_with_value(on_interact_func)
func _on_CursorInteractArea_body_entered(body):
if not GlobalCursorState.is_cursor_collision(body):
return
cursor_is_touching = true
if on_enter_func:
GlobalCursorState.call(on_enter_func)
call_with_value(on_enter_func)
func _on_CursorInteractArea_body_exited(body):
if not GlobalCursorState.is_cursor_collision(body):
return
cursor_is_touching = false
if on_leave_func:
GlobalCursorState.call(on_leave_func)
call_with_value(on_leave_func)

View File

@ -21,3 +21,12 @@ func get_cursor():
#########################################
func _on_Interact_leave_disclaimer():
var _err = get_tree().change_scene("res://world.tscn")
# Camera zones
signal set_camera_zone(zone)
func _on_Cursor_set_camera(where: String):
emit_signal("set_camera_zone", where)

View File

@ -0,0 +1,16 @@
extends Node
onready var drone_fsm: AnimationNodeStateMachinePlayback = $DroneAudioFSM.get("parameters/playback")
func _ready():
$NormalDrone.play()
yield(get_tree().create_timer(.1), "timeout")
$SicklyDrone.play()
func _on_AnimationTree_motion_status(value):
if value:
drone_fsm.travel("play_sickly_drone")
else:
drone_fsm.travel("play_normal_drone")

View File

@ -0,0 +1,128 @@
[gd_scene load_steps=13 format=2]
[ext_resource path="res://assets/audio/sicky_drone.ogg" type="AudioStream" id=1]
[ext_resource path="res://assets/audio/vocal_drone.ogg" type="AudioStream" id=2]
[ext_resource path="res://assets/audio/AmbientSound.gd" type="Script" id=3]
[sub_resource type="Animation" id=1]
length = 0.001
tracks/0/type = "value"
tracks/0/path = NodePath("NormalDrone:volume_db")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -10.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("SicklyDrone:volume_db")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -10.0 ]
}
[sub_resource type="Animation" id=2]
resource_name = "play_normal_drone"
tracks/0/type = "value"
tracks/0/path = NodePath("NormalDrone:volume_db")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -10.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("SicklyDrone:volume_db")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -50.0 ]
}
[sub_resource type="Animation" id=3]
resource_name = "play_sickly_drone"
tracks/0/type = "value"
tracks/0/path = NodePath("NormalDrone:volume_db")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -50.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("SicklyDrone:volume_db")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -10.0 ]
}
[sub_resource type="AnimationNodeAnimation" id=4]
animation = "play_normal_drone"
[sub_resource type="AnimationNodeAnimation" id=5]
animation = "play_sickly_drone"
[sub_resource type="AnimationNodeStateMachineTransition" id=6]
[sub_resource type="AnimationNodeStateMachineTransition" id=7]
[sub_resource type="AnimationNodeStateMachine" id=8]
states/play_normal_drone/node = SubResource( 4 )
states/play_normal_drone/position = Vector2( 336, 128 )
states/play_sickly_drone/node = SubResource( 5 )
states/play_sickly_drone/position = Vector2( 683, 227 )
transitions = [ "play_normal_drone", "play_sickly_drone", SubResource( 6 ), "play_sickly_drone", "play_normal_drone", SubResource( 7 ) ]
start_node = "play_normal_drone"
[sub_resource type="AnimationNodeStateMachinePlayback" id=9]
[node name="AmbientSound" type="Node"]
script = ExtResource( 3 )
[node name="NormalDrone" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 2 )
volume_db = -10.0
[node name="SicklyDrone" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 1 )
volume_db = -10.0
[node name="DroneAudioAnimation" type="AnimationPlayer" parent="."]
anims/RESET = SubResource( 1 )
anims/play_normal_drone = SubResource( 2 )
anims/play_sickly_drone = SubResource( 3 )
[node name="DroneAudioFSM" type="AnimationTree" parent="."]
tree_root = SubResource( 8 )
anim_player = NodePath("../DroneAudioAnimation")
active = true
parameters/playback = SubResource( 9 )

BIN
godot/assets/audio/bassy_bump.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/bassy_bump.ogg-efb21ed36009cf312899a2d3e22513e6.oggstr"
[deps]
source_file="res://assets/audio/bassy_bump.ogg"
dest_files=[ "res://.import/bassy_bump.ogg-efb21ed36009cf312899a2d3e22513e6.oggstr" ]
[params]
loop=false
loop_offset=0.0

BIN
godot/assets/audio/beep.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/beep.ogg-dc3ef6a51669bb14c8d3ed05701e4a93.oggstr"
[deps]
source_file="res://assets/audio/beep.ogg"
dest_files=[ "res://.import/beep.ogg-dc3ef6a51669bb14c8d3ed05701e4a93.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/bump.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/bump.ogg-b6b5b32ea85cee0c0e584b94a3481d65.oggstr"
[deps]
source_file="res://assets/audio/bump.ogg"
dest_files=[ "res://.import/bump.ogg-b6b5b32ea85cee0c0e584b94a3481d65.oggstr" ]
[params]
loop=true
loop_offset=0

BIN
godot/assets/audio/color.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/color.ogg-ea241d625a2857be82c54e5056fbca40.oggstr"
[deps]
source_file="res://assets/audio/color.ogg"
dest_files=[ "res://.import/color.ogg-ea241d625a2857be82c54e5056fbca40.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/sicky_drone.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/sicky_drone.ogg-bf1e0d419cbb74f272e345e086ba6afd.oggstr"
[deps]
source_file="res://assets/audio/sicky_drone.ogg"
dest_files=[ "res://.import/sicky_drone.ogg-bf1e0d419cbb74f272e345e086ba6afd.oggstr" ]
[params]
loop=true
loop_offset=0

BIN
godot/assets/audio/vocal_drone.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/vocal_drone.ogg-b1bba3338757e53b92922102d8ec6f2d.oggstr"
[deps]
source_file="res://assets/audio/vocal_drone.ogg"
dest_files=[ "res://.import/vocal_drone.ogg-b1bba3338757e53b92922102d8ec6f2d.oggstr" ]
[params]
loop=true
loop_offset=0

View File

@ -0,0 +1,39 @@
extends Node
var voice_script = [
["the_long", "book"],
["the_tall", "book"],
["the_door"],
["the_clock"],
["under_the_bed"],
["frog"],
["squirrel"],
["the_attic"],
["the_fridge"],
["the_tall", "book"],
["under_the_bed"],
["the_long", "book"],
["behind_the_bookshelf"],
]
export var impatience: float = 5.0
func read_line(line):
pass
var loop = null
func start():
if loop != null:
return
loop = script_loop()
func script_loop():
for line in voice_script:
read_line(line)
while not yield():
read_line(line)
func _on_ImpatienceTimer_timeout():
script_loop().resume(false)

View File

@ -0,0 +1,58 @@
[gd_scene load_steps=14 format=2]
[ext_resource path="res://assets/audio/voice_lines/LineReader.gd" type="Script" id=1]
[ext_resource path="res://assets/audio/voice_lines/behind_the_bookshelf.ogg" type="AudioStream" id=2]
[ext_resource path="res://assets/audio/voice_lines/book.ogg" type="AudioStream" id=3]
[ext_resource path="res://assets/audio/voice_lines/frog.ogg" type="AudioStream" id=4]
[ext_resource path="res://assets/audio/voice_lines/show_me.ogg" type="AudioStream" id=5]
[ext_resource path="res://assets/audio/voice_lines/squirrel.ogg" type="AudioStream" id=6]
[ext_resource path="res://assets/audio/voice_lines/the_attic.ogg" type="AudioStream" id=7]
[ext_resource path="res://assets/audio/voice_lines/the_clock.ogg" type="AudioStream" id=8]
[ext_resource path="res://assets/audio/voice_lines/the_door.ogg" type="AudioStream" id=9]
[ext_resource path="res://assets/audio/voice_lines/the_fridge.ogg" type="AudioStream" id=10]
[ext_resource path="res://assets/audio/voice_lines/the_long.ogg" type="AudioStream" id=11]
[ext_resource path="res://assets/audio/voice_lines/the_tall.ogg" type="AudioStream" id=12]
[ext_resource path="res://assets/audio/voice_lines/under_the_bed.ogg" type="AudioStream" id=13]
[node name="LineReader" type="Node"]
script = ExtResource( 1 )
[node name="book" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 3 )
[node name="frog" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 4 )
[node name="show_me" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 5 )
[node name="squirrel" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 6 )
[node name="the_attic" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 7 )
[node name="the_clock" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 8 )
[node name="the_door" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 9 )
[node name="the_fridge" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 10 )
[node name="the_long" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 11 )
[node name="the_tall" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 12 )
[node name="under_the_bed" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 13 )
[node name="behind_the_bookshelf" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 2 )
[node name="ImpatienceTimer" type="Timer" parent="."]
[connection signal="timeout" from="ImpatienceTimer" to="." method="_on_ImpatienceTimer_timeout"]

BIN
godot/assets/audio/voice_lines/behind_the_bookshelf.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/behind_the_bookshelf.ogg-a21b7805e8182418c46ec087dd18f9dd.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/behind_the_bookshelf.ogg"
dest_files=[ "res://.import/behind_the_bookshelf.ogg-a21b7805e8182418c46ec087dd18f9dd.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/book.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/book.ogg-d7f394d64a887bb8fb9279710f22dd71.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/book.ogg"
dest_files=[ "res://.import/book.ogg-d7f394d64a887bb8fb9279710f22dd71.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/frog.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/frog.ogg-61032dbb065bd111b735592bb25495b5.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/frog.ogg"
dest_files=[ "res://.import/frog.ogg-61032dbb065bd111b735592bb25495b5.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/show_me.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/show_me.ogg-65a0d169ab1ca4f07b4ac301dd46007c.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/show_me.ogg"
dest_files=[ "res://.import/show_me.ogg-65a0d169ab1ca4f07b4ac301dd46007c.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/squirrel.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/squirrel.ogg-39d1b09d2874390274470386ae1c4000.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/squirrel.ogg"
dest_files=[ "res://.import/squirrel.ogg-39d1b09d2874390274470386ae1c4000.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/the_attic.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/the_attic.ogg-d9e131136e9e7772d4b3fefa98aa36a4.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/the_attic.ogg"
dest_files=[ "res://.import/the_attic.ogg-d9e131136e9e7772d4b3fefa98aa36a4.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/the_clock.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/the_clock.ogg-6558710d350bf1d0561bd6d3ed049019.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/the_clock.ogg"
dest_files=[ "res://.import/the_clock.ogg-6558710d350bf1d0561bd6d3ed049019.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/the_door.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/the_door.ogg-86a3a2d31d5218284b99b143d8edad4d.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/the_door.ogg"
dest_files=[ "res://.import/the_door.ogg-86a3a2d31d5218284b99b143d8edad4d.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/the_fridge.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/the_fridge.ogg-6a1d61f958de3fbdf43653fba19224df.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/the_fridge.ogg"
dest_files=[ "res://.import/the_fridge.ogg-6a1d61f958de3fbdf43653fba19224df.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/the_long.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/the_long.ogg-d68350c0196598d07f220b47a6e8a5bb.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/the_long.ogg"
dest_files=[ "res://.import/the_long.ogg-d68350c0196598d07f220b47a6e8a5bb.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/the_tall.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/the_tall.ogg-b8f927fd270ac40c2920a1be4bc930d1.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/the_tall.ogg"
dest_files=[ "res://.import/the_tall.ogg-b8f927fd270ac40c2920a1be4bc930d1.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/audio/voice_lines/under_the_bed.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/under_the_bed.ogg-ecda76c35b0cace769d0022f08f81678.oggstr"
[deps]
source_file="res://assets/audio/voice_lines/under_the_bed.ogg"
dest_files=[ "res://.import/under_the_bed.ogg-ecda76c35b0cace769d0022f08f81678.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
godot/assets/room/camera_positions.glb (Stored with Git LFS)

Binary file not shown.

View File

@ -5,6 +5,6 @@
[node name="camera_positions" instance=ExtResource( 1 )]
[node name="Camera" parent="." index="0"]
transform = Transform( -0.761628, -0.222546, 0.608602, 3.72529e-08, 0.939179, 0.343427, -0.648015, 0.261564, -0.715305, -7.44886, 18.7831, -13.0498 )
transform = Transform( -0.767553, -0.313861, 0.558887, 7.45058e-08, 0.871917, 0.489653, -0.640986, 0.375835, -0.669243, -12.6719, 16.3714, -6.79586 )
fov = 87.2
far = 100.0

View File

@ -16,6 +16,11 @@ config/icon="res://icon.png"
[autoload]
GlobalCursorState="*res://GlobalCursorState.tscn"
LineReader="*res://assets/audio/voice_lines/LineReader.gd"
[display]
window/size/fullscreen=true
[gui]

View File

@ -54,7 +54,7 @@ margin_bottom = -92.0
mouse_filter = 1
text = "Welcome to Goodnight Jellybean! We're excited to have you join us on this educational adventure.
We will be interacting with our virutal environment using FunMouse (tm). Simply use the left and right mouse buttons to change the direction of the cursor and use the scroll wheel to move the cursor in its current direction. interact with nearby objects by pressing the middle mouse button.
We will be interacting with our virutal environment using FunMouse (tm). Simply use the left and right mouse buttons to change the direction of the cursor and use the scroll wheel to move the cursor in its current direction. Interact with nearby objects by pressing the middle mouse button.
Don't have a mouse with a scroll wheel? You can also use the arrow keys and space bar to navigate and interact with the game. However, your child will be missing out on learning an important skill.
@ -73,7 +73,7 @@ environment = SubResource( 2 )
[node name="MeshInstance" type="MeshInstance" parent="."]
transform = Transform( 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 )
layers = 524288
layers = 0
material_override = SubResource( 9 )
mesh = SubResource( 4 )
skeleton = NodePath("../CanvasLayer/Control/Label")
@ -84,6 +84,7 @@ skeleton = NodePath("../CanvasLayer/Control/Label")
shape = SubResource( 5 )
[node name="3DCursor" parent="." instance=ExtResource( 1 )]
transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.402443, 2.04589 )
KB_ACTIONS_PER_SECOND = 6.0
interact_brightness = 100.0

View File

@ -0,0 +1,77 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://3DCursor.tscn" type="PackedScene" id=1]
[sub_resource type="Theme" id=1]
[sub_resource type="Environment" id=2]
background_mode = 1
background_energy = 16.0
glow_levels/1 = true
glow_levels/2 = true
glow_levels/4 = true
glow_levels/6 = true
glow_levels/7 = true
glow_strength = 0.89
glow_bloom = 1.0
glow_blend_mode = 0
glow_high_quality = true
[sub_resource type="SpatialMaterial" id=9]
params_cull_mode = 1
[sub_resource type="CubeMesh" id=4]
[sub_resource type="ConcavePolygonShape" id=5]
data = PoolVector3Array( -1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1, -1, 1, 1, -1, -1, -1, 1, 1, -1, 1, -1, -1, -1, 1, -1, 1, 1, -1, -1, -1, -1, -1 )
[node name="FinishedScreen" type="Spatial"]
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="Control" type="Control" parent="CanvasLayer"]
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 1
theme = SubResource( 1 )
[node name="Label" type="Label" parent="CanvasLayer/Control"]
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 31.0
margin_top = 22.0
margin_right = -168.0
margin_bottom = -92.0
mouse_filter = 1
text = "Congratulations on completing Goodnight Jellybean, brought to you by SoftWaves!
We hope you had fun using FunMouse(tm) and learning about all the different topics in the game. If you are feeling nauseous as a result of playing the game,, remember to take deep breaths and find a quiet place to rest.
Thank you for playing! If you would like more fun learning, please insert CD 2 for more educational adventures from SoftWaves or order a copy of our catalog for more educational fun! Please write to us at Softwaves HQ, 123 Fun Learning Lane, Funville, USA 12345 and include a $5 bill to request a copy of our games catalog."
autowrap = true
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource( 2 )
[node name="MeshInstance" type="MeshInstance" parent="."]
transform = Transform( 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 )
layers = 0
material_override = SubResource( 9 )
mesh = SubResource( 4 )
skeleton = NodePath("../CanvasLayer/Control/Label")
[node name="StaticBody" type="StaticBody" parent="MeshInstance"]
[node name="CollisionShape" type="CollisionShape" parent="MeshInstance/StaticBody"]
shape = SubResource( 5 )
[node name="3DCursor" parent="." instance=ExtResource( 1 )]
KB_ACTIONS_PER_SECOND = 6.0
interact_brightness = 100.0
[node name="Camera" type="Camera" parent="."]
transform = Transform( 0.710849, -0.253477, 0.656082, 0, 0.932803, 0.360388, -0.703345, -0.256181, 0.663082, 5.46264, 2.36601, 5.69697 )
[node name="DirectionalLight" type="DirectionalLight" parent="."]
transform = Transform( 0.969906, 0, 0.24348, 0, 1, 0, -0.24348, 0, 0.969906, -0.095212, 0.028264, 4.01219 )
light_cull_mask = 4294443007

View File

@ -1,10 +1,13 @@
[gd_scene load_steps=25 format=2]
[gd_scene load_steps=34 format=2]
[ext_resource path="res://assets/effects/dithering/CanvasLayer.tscn" type="PackedScene" id=1]
[ext_resource path="res://assets/room/environment.tscn" type="PackedScene" id=2]
[ext_resource path="res://3DCursor.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/room/camera_positions.tscn" type="PackedScene" id=4]
[ext_resource path="res://AnimationTree.gd" type="Script" id=5]
[ext_resource path="res://CursorInteractArea.tscn" type="PackedScene" id=6]
[ext_resource path="res://assets/audio/AmbientSound.tscn" type="PackedScene" id=7]
[ext_resource path="res://AtticAmberLight.gd" type="Script" id=8]
[sub_resource type="Environment" id=1]
background_mode = 1
@ -15,6 +18,9 @@ animation = "camera_attic_inner"
[sub_resource type="AnimationNodeAnimation" id=4]
animation = "camera_bookcase"
[sub_resource type="AnimationNodeAnimation" id=23]
animation = "camera_bookshelf_secret"
[sub_resource type="AnimationNodeAnimation" id=10]
animation = "camera_outer_attic"
@ -57,20 +63,52 @@ xfade_time = 3.0
[sub_resource type="AnimationNodeStateMachineTransition" id=22]
xfade_time = 3.0
[sub_resource type="AnimationNodeStateMachineTransition" id=24]
xfade_time = 3.0
[sub_resource type="AnimationNodeStateMachineTransition" id=25]
xfade_time = 3.0
[sub_resource type="AnimationNodeStateMachineTransition" id=26]
xfade_time = 3.0
[sub_resource type="AnimationNodeStateMachineTransition" id=27]
xfade_time = 3.0
[sub_resource type="AnimationNodeStateMachine" id=2]
states/camera_attic_inner/node = SubResource( 9 )
states/camera_attic_inner/position = Vector2( 788, 309 )
states/camera_bookcase/node = SubResource( 4 )
states/camera_bookcase/position = Vector2( 706, 78 )
states/camera_bookshelf_secret/node = SubResource( 23 )
states/camera_bookshelf_secret/position = Vector2( 246, 6 )
states/camera_outer_attic/node = SubResource( 10 )
states/camera_outer_attic/position = Vector2( 414, 309 )
states/camera_outer_attic/position = Vector2( 417, 324 )
states/camera_pos_corner/node = SubResource( 8 )
states/camera_pos_corner/position = Vector2( 243, 157 )
transitions = [ "camera_pos_corner", "camera_bookcase", SubResource( 11 ), "camera_outer_attic", "camera_pos_corner", SubResource( 12 ), "camera_outer_attic", "camera_bookcase", SubResource( 13 ), "camera_outer_attic", "camera_attic_inner", SubResource( 14 ), "camera_pos_corner", "camera_outer_attic", SubResource( 15 ), "camera_pos_corner", "camera_attic_inner", SubResource( 16 ), "camera_bookcase", "camera_pos_corner", SubResource( 17 ), "camera_bookcase", "camera_attic_inner", SubResource( 18 ), "camera_bookcase", "camera_outer_attic", SubResource( 19 ), "camera_attic_inner", "camera_bookcase", SubResource( 20 ), "camera_attic_inner", "camera_outer_attic", SubResource( 21 ), "camera_attic_inner", "camera_pos_corner", SubResource( 22 ) ]
states/camera_pos_corner/position = Vector2( 230, 169 )
transitions = [ "camera_pos_corner", "camera_bookcase", SubResource( 11 ), "camera_outer_attic", "camera_pos_corner", SubResource( 12 ), "camera_outer_attic", "camera_bookcase", SubResource( 13 ), "camera_outer_attic", "camera_attic_inner", SubResource( 14 ), "camera_pos_corner", "camera_outer_attic", SubResource( 15 ), "camera_pos_corner", "camera_attic_inner", SubResource( 16 ), "camera_bookcase", "camera_pos_corner", SubResource( 17 ), "camera_bookcase", "camera_attic_inner", SubResource( 18 ), "camera_bookcase", "camera_outer_attic", SubResource( 19 ), "camera_attic_inner", "camera_bookcase", SubResource( 20 ), "camera_attic_inner", "camera_outer_attic", SubResource( 21 ), "camera_attic_inner", "camera_pos_corner", SubResource( 22 ), "camera_pos_corner", "camera_bookshelf_secret", SubResource( 24 ), "camera_bookshelf_secret", "camera_pos_corner", SubResource( 25 ), "camera_bookshelf_secret", "camera_bookcase", SubResource( 26 ), "camera_bookcase", "camera_bookshelf_secret", SubResource( 27 ) ]
start_node = "camera_pos_corner"
graph_offset = Vector2( -64, 18 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=3]
[sub_resource type="Animation" id=28]
resource_name = "light_flicker"
length = 1.263
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.1, 0.3, 0.5, 1.5, 1.6, 2.3, 2.5, 3.7, 3.9, 4.6, 5, 5.2, 7.8, 8.2, 11.7 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ true, false, true, false, true, true, true, false, true, false, false, true, false, true, true ]
}
[node name="Spatial" type="Spatial"]
[node name="CanvasLayer" parent="." instance=ExtResource( 1 )]
@ -107,12 +145,6 @@ KB_ACTIONS_PER_SECOND = 6.0
[node name="camera_positions" parent="." instance=ExtResource( 4 )]
[node name="Camera" parent="camera_positions" index="0"]
transform = Transform( -0.996629, -0.00929657, 0.0815153, 0, 0.993559, 0.113312, -0.0820437, 0.11293, -0.99021, 0.178344, 4.60072, 0.331739 )
[node name="AnimationPlayer" parent="camera_positions" index="1"]
autoplay = "camera_pos_corner"
[node name="AnimationTree" type="AnimationTree" parent="."]
tree_root = SubResource( 2 )
anim_player = NodePath("../camera_positions/AnimationPlayer")
@ -121,4 +153,58 @@ process_mode = 2
parameters/playback = SubResource( 3 )
script = ExtResource( 5 )
[node name="CameraMoveZones" type="Spatial" parent="."]
[node name="BookshelfEnter" parent="CameraMoveZones" instance=ExtResource( 6 )]
transform = Transform( 1.88241, 0, 0, 0, 1.41215, 0, 0, 0, 1.8099, 0, 4.13633, 3.52765 )
on_enter_func = "_on_Cursor_set_camera"
call_string = "camera_bookcase"
[node name="BookshelfLeave" parent="CameraMoveZones/BookshelfEnter" instance=ExtResource( 6 )]
transform = Transform( 1.31595, 0, 0, 0, 1.36796, 0, 0, 0, 1.32271, 0, 0, 0 )
on_leave_func = "_on_Cursor_set_camera"
call_string = "camera_pos_corner"
[node name="OuterAtticEnter" parent="CameraMoveZones" instance=ExtResource( 6 )]
transform = Transform( 1, 0, 0, 0, 1.46013, 0, 0, 0, 1.2653, -2.46345, 9.85499, -3.18314 )
on_enter_func = "_on_Cursor_set_camera"
call_string = "camera_outer_attic"
[node name="OuterAtticLeave" parent="CameraMoveZones/OuterAtticEnter" instance=ExtResource( 6 )]
transform = Transform( 19.4492, 0, 0, 0, 4.36306, 0, 0, 0, 5.15836, -15.3042, 3.71776, 0 )
on_leave_func = "_on_Cursor_set_camera"
call_string = "camera_pos_corner"
[node name="UpperAtticEnter" parent="CameraMoveZones" instance=ExtResource( 6 )]
transform = Transform( 6.28323, 0, 0, 0, 4.7198, 0, 0, 0, 7.91118, -23.9917, 13.7811, 0 )
on_enter_func = "_on_Cursor_set_camera"
call_string = "camera_attic_inner"
[node name="UpperAtticLeave" parent="CameraMoveZones" instance=ExtResource( 6 )]
transform = Transform( 10.8129, 0, 0, 0, 4.7198, 0, 0, 0, 7.91118, -26.7224, 13.7811, 0 )
on_leave_func = "_on_Cursor_set_camera"
call_string = "camera_outer_attic"
[node name="AmbientSound" parent="." instance=ExtResource( 7 )]
[node name="Attic" type="Spatial" parent="."]
[node name="AtticAmberLight" type="OmniLight" parent="Attic"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -23.8074, 13.5384, -0.81872 )
light_color = Color( 0.796078, 0.627451, 0.25098, 1 )
light_energy = 6.0
light_indirect_energy = 1.306
light_cull_mask = 4294443007
shadow_enabled = true
omni_range = 4.0
omni_attenuation = 2.73208
script = ExtResource( 8 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="Attic/AtticAmberLight"]
anims/light_flicker = SubResource( 28 )
[connection signal="motion_status" from="AnimationTree" to="3DCursor" method="_on_AnimationTree_motion_status"]
[connection signal="motion_status" from="AnimationTree" to="AmbientSound" method="_on_AnimationTree_motion_status"]
[connection signal="motion_status" from="AnimationTree" to="Attic/AtticAmberLight" method="_on_AnimationTree_motion_status"]
[editable path="camera_positions"]

BIN
raw_audio/squirrel_chatter.ogg (Stored with Git LFS) Normal file

Binary file not shown.