Merge branch 'main' into adi_dev

This commit is contained in:
Adrian Schmid 2023-07-14 18:13:35 +02:00
commit df9018ec9e
27 changed files with 18072 additions and 1026 deletions

View File

@ -0,0 +1,38 @@
## Summary
(This template will help you publicly describe an issue you have encountered. Contact email support, when you do not with to openly describe your Issue.)
(Fill out what is relevant to your issue and delete what's not)
## Steps to reproduce
(What did you do before finding the issue? Providing a step by step guide can help us solve it. Try if the issue still persists after restarting the game.)
Example
1. Load the first Level
2. Go to the Laptop and click the screen 4 times
3. Run at the window.
### What did you expect to happen?
(The player hits the window)
### What happend?
(The player floats up towards the sky)
## Did you change any settings?
(We will provide you with an option to just dump your config here in the future, but for now just describe what you did.)
## How do you play the game?
(With a racing wheel and a touch screen, obviousely)
## Please give us some System Info
- OS: GameOS 42
- Processor: intel Ryzen 1234XD
- Graphics Card: Radeon Battlemage Pro
## Possible Fixes
(This is the section for nerds, that already dug up our source code and know exactly what is going on.)
/label ~bug

View File

@ -20,7 +20,6 @@
- [Wood Substance 009](https://ambientcg.com/view?id=WoodSubstance009)
- [Wicker 010 B](https://ambientcg.com/view?id=Wicker010B)
## Comic Illustrations
- by [Fernand0FC](https://www.deviantart.com/fernand0fc), CC-BY-3.0
@ -28,6 +27,9 @@
+ [Into the glowing sea](https://www.deviantart.com/fernand0fc/art/Into-the-glowing-sea-834238466)
+ [Anti-Hero](https://www.deviantart.com/fernand0fc/art/Anti-Hero-555054767)
## Music
- [Foundations I by Azure Studios](https://azurestudios.bandcamp.com/album/foundations-i-24bit), CC-BY 3.0
## Sounds Effects
- [Rain on Windows, Interior](https://freesound.org/people/InspectorJ/sounds/346641/) by [InspectorJ](https://freesound.org/people/InspectorJ/) CC-BY 3.0
- [Rain and thunder](https://freesound.org/people/MrAuralization/sounds/241294/) by [MrAuralization](https://freesound.org/people/MrAuralization/) CC-BY 3.0

BIN
design/itch-header.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

16340
design/itch-header.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -17,12 +17,15 @@
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1678901627,
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
@ -32,11 +35,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1679793451,
"narHash": "sha256-JafTtgMDATE8dZOImBhWMA9RCn9AP8FVOpN+9K/tTlg=",
"lastModified": 1689078114,
"narHash": "sha256-osG8BrX5RpKJ7wH+vI6auOU+ctvNOblT4XXCgknK47c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0cd51a933d91078775b300cf0f29aa3495231aa2",
"rev": "b6cc7ff8fee93789bc871a267ab876c3fca042cb",
"type": "github"
},
"original": {
@ -50,6 +53,21 @@
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",

View File

@ -85,7 +85,7 @@
mkdir -p $out/share/${pname}
# This just copies the export template and packs the game files next to it
godot --headless --export-release "linux" $out/share/${pname}/${pname}
godot4 --headless --export-release "linux" $out/share/${pname}/${pname}
runHook postBuild
'';

View File

@ -1,6 +1,19 @@
extends Area3D
@onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/Collectable_ui
@onready var wrapper = $UiWrapper
@onready var ui = $UiWrapper/UiSprite/SubViewport.get_child(0)
var revealed: bool = false:
set(on_stage):
revealed = on_stage
if on_stage:
wrapper.show()
ui.show()
else:
wrapper.hide()
ui.hide()
var has_mouse: bool = false
# Called when the node enters the scene tree for the first time.
@ -9,9 +22,11 @@ func _ready():
func _on_mouse_entered():
input_ray_pickable = false
$UiWrapper.show()
$UiWrapper/UiSprite/SubViewport/Collectable_ui.show()
ui.collapsed = false
has_mouse = true
func _on_mouse_exited():
assert(false)
func reveal():
revealed = true

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://1tvopjmo6dp2"
path="res://.godot/imported/Azure Studios - mgd-723687677.mp3-ffcb00059cdac7ecd24487bd9e38d9cb.mp3str"
[deps]
source_file="res://base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3"
dest_files=["res://.godot/imported/Azure Studios - mgd-723687677.mp3-ffcb00059cdac7ecd24487bd9e38d9cb.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@ -11,6 +11,8 @@ enum Modes {
signal freeze
signal unfreeze
signal ini_room
signal resume_room
var current_mode: int = Modes.FREEZE:
set(new_mode):
@ -18,9 +20,7 @@ var current_mode: int = Modes.FREEZE:
current_mode = _update_scene(new_mode)
func start():
$light_animation.play("light_up")
$AudioPlayer.play("intro")
State.pass_stage_to($PlayerController)
emit_signal("ini_room")
current_mode = Modes.WALKING
func _update_scene(new_mode) -> int:

View File

@ -5,7 +5,7 @@ uniform float nebula_brightness = 4;
uniform vec2 nebula_scale = vec2(1.5);
uniform sampler2D starlight_noise;
uniform sampler2D starlight_textures;
uniform float rotation_speed = 0.05;
uniform float rotation_speed = 0.02;
uniform vec2 rotation_pivot = vec2(.8);
uniform vec2 drift_compensation = vec2(0.1, -0.2);
uniform float noise_strength = 0.2;

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
[gd_resource type="AudioBusLayout" format=3 uid="uid://djkwd76o033io"]
[resource]
bus/0/mute = true
bus/1/name = &"text"
bus/1/solo = false
bus/1/mute = false

View File

@ -1,8 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://bvowj4l8dtceu"]
[gd_scene load_steps=4 format=3 uid="uid://bvowj4l8dtceu"]
[ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="1_xrckx"]
[ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/post-it.tscn" id="2_ucudl"]
[sub_resource type="GDScript" id="GDScript_cr445"]
script/source = "extends Control
var has_stage: bool = false
"
[node name="board of devs" type="Control"]
layout_mode = 3
anchors_preset = 15
@ -10,6 +16,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = SubResource("GDScript_cr445")
[node name="childhood" type="Control" parent="."]
anchors_preset = 0

View File

@ -14,11 +14,6 @@ func _process(_delta):
look_at(look, Vector3.UP)
func _unhandled_input(event):
if event is InputEventMouse:
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_RIGHT:
assert(false)
return
viewport.push_input(event)
func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int):

View File

@ -5,13 +5,18 @@ enum ui_context {DROPZONE, POST_IT_LIST, ASSIGN_POST_IT}
var has_stage = false:
set(focus):
if focus != has_stage:
if focus:
has_stage = true
self.mouse_filter = Control.MOUSE_FILTER_PASS
else:
has_stage = false
self.mouse_filter = Control.MOUSE_FILTER_IGNORE
if focus:
has_stage = true
self.mouse_filter = Control.MOUSE_FILTER_PASS
else:
has_stage = false
self.mouse_filter = Control.MOUSE_FILTER_IGNORE
if is_node_ready():
#fixme: thie should be replaced by a reference that holds all children ...
for child in dropzone.get_children():
child.on_stage = has_stage
for child in postit_container.get_children():
child.get_child(1).on_stage = has_stage
@onready var dropzone = $HBoxContainer/dropzone
@onready var postit_container = $HBoxContainer/ScrollContainer/VBoxContainer
@ -36,6 +41,7 @@ func _ready():
reorder_areas("dropzone_content")
active_context = ui_context.DROPZONE
has_stage = has_stage
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):

View File

@ -10,16 +10,18 @@ var noise: Noise = FastNoiseLite.new()
var wiggle_tween
var scale_tween
var on_stage = false
@export var text: String = "" :
set (value):
set(value):
text = value
if is_inside_tree() or Engine.is_editor_hint():
if get_children() != [] or Engine.is_editor_hint():
$Label.text = value
$BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation)
if is_inside_tree() and !Engine.is_editor_hint():
if !Engine.is_editor_hint():
wiggle_pos = float(text.hash() % 100)
_handle_wiggle(0)
if is_inside_tree() and value == "":
if get_children() != [] and !Engine.is_editor_hint() and text == "":
$BackgroundSprite.void_active = true
@export var wiggle_strength: float = 0.2
@export var wiggle_speed: float = 5
@ -74,17 +76,18 @@ func _ready():
$BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation)
$Label.text = self.text
if not Engine.is_editor_hint(): $BackgroundSprite.void_active = text == ""
wiggle_pos = float(text.hash() % 100)
if not Engine.is_editor_hint():
_handle_wiggle(0)
func _process(delta: float) -> void:
if self.on_stage:
if highlighted:
_handle_wiggle(delta)
if highlighted:
_handle_wiggle(delta)
_move_card()
_move_card()
func _handle_wiggle(delta):
wiggle_pos += delta * wiggle_speed * wiggle_intensity
@ -104,23 +107,25 @@ func _on_focus_exited():
print(self, "is not focused")
func _on_mouse_entered():
if not Input.is_action_pressed("mouse_left"):
highlighted = true
if "handle_hover" in owner:
owner.handle_hover(self)
if self.on_stage:
if not Input.is_action_pressed("mouse_left"):
highlighted = true
if "handle_hover" in owner:
owner.handle_hover(self)
func _on_mouse_exited():
highlighted = false
if self.on_stage:
highlighted = false
func _on_input_event(viewport, event, shape_idx):
if self.on_stage:
if event is InputEventMouseMotion:
_move_card()
if event is InputEventMouseMotion:
_move_card()
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT:
if is_dragable and "handle_mouse_button" in owner:
owner.handle_mouse_button(self, event)
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT:
if is_dragable and "handle_mouse_button" in owner:
owner.handle_mouse_button(self, event)
func _move_card():
if is_dragged:

View File

@ -6,6 +6,8 @@ var sibling
var shift_tween
var modulate_tween
var on_stage = false
@export var text: String = "" :
set (value):
if is_inside_tree() or Engine.is_editor_hint():
@ -60,8 +62,8 @@ func replace_with(postit: PostIt):
self.sibling = postit.sibling
func _process(_delta: float) -> void:
_move_post_it()
if on_stage:
_move_post_it()
func _on_focus_entered():
print(self, "is focused")
@ -70,7 +72,7 @@ func _on_focus_exited():
print(self, "is not focused")
func _on_mouse_entered():
if not Input.is_action_pressed("mouse_left"):
if on_stage and not Input.is_action_pressed("mouse_left"):
highlighted = true
if "handle_hover" in owner:
owner.handle_hover(self)
@ -79,13 +81,14 @@ func _on_mouse_exited():
highlighted = false
func _on_input_event(viewport, event, shape_idx):
if event is InputEventMouseMotion:
_move_post_it()
if on_stage:
if event is InputEventMouseMotion:
_move_post_it()
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT:
if is_dragable and "handle_mouse_button" in owner:
owner.handle_mouse_button(self, event)
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT:
if is_dragable and "handle_mouse_button" in owner:
owner.handle_mouse_button(self, event)
func _move_post_it():
if is_dragged:

View File

@ -1491,7 +1491,6 @@ libraries = {
[node name="card" parent="cards/card_1" instance=ExtResource("2_dqebt")]
text = "Slot 1"
metadata/type = "card"
[node name="card_2" type="Control" parent="cards"]
layout_mode = 2
@ -1504,7 +1503,6 @@ libraries = {
[node name="card" parent="cards/card_2" instance=ExtResource("2_dqebt")]
text = "Slot 2"
metadata/type = "card"
[node name="card_3" type="Control" parent="cards"]
layout_mode = 2
@ -1522,7 +1520,6 @@ libraries = {
[node name="card" parent="cards/card_3" instance=ExtResource("2_dqebt")]
text = "Slot 3"
metadata/type = "card"
[node name="postIts" type="Panel" parent="."]
layout_mode = 2

View File

@ -2,6 +2,8 @@
extends CenterContainer
class_name Collectable_Ui
@export var scene = Scenes.id
@export var collapsed = true:
set(collapse):
if is_inside_tree() and not Engine.is_editor_hint():
@ -17,6 +19,8 @@ class_name Collectable_Ui
_show_buttons()
collapsed = collapse
if collapse and has_stage: State.leave_stage(self)
@export var is_story: bool = false
@export var has_stage: bool = false:
set(focused):
@ -36,9 +40,6 @@ class_name Collectable_Ui
elif has_stage:
has_stage = false
get_viewport().gui_release_focus()
#hide()
@export var collected: bool = false:
set(set_collected):
@ -100,22 +101,26 @@ func hide():
_hide_buttons()
await tween.finished
visible = false
if has_stage: State.leave_stage(self)
func show():
if not collapsed:
_show_buttons()
modulate = Color()
visible = true
var tween = create_tween()
tween.tween_property(self, "modulate", Color(1, 1, 1), 0.4)
if !visible:
if not collapsed:
_show_buttons()
modulate = Color()
visible = true
var tween = create_tween()
tween.tween_property(self, "modulate", Color(1, 1, 1), 0.4)
func _yoink_focus():
return # fixme
if not has_stage:
State.take_stage(self, true)
State.transition_stage_to(self)
func _on_pick_button_pressed():
hide()
print("card collected!")
emit_signal("card_collected")
if scene != null:
get_tree().call_group("animation_player", "play_scene", scene)
State.leave_stage(self)
func _on_pick_button_released():
hide()

View File

@ -99,6 +99,7 @@ grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_2apkb")
script = ExtResource("1_tgjc2")
scene = null
[node name="Panel" type="PanelContainer" parent="."]
layout_mode = 2
@ -170,6 +171,7 @@ libraries = {
}
[connection signal="resized" from="Panel/Content/Buttons/VBoxContainer" to="Panel/Content/Buttons" method="_on_v_box_container_resized"]
[connection signal="button_up" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_on_pick_button_released"]
[connection signal="focus_entered" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_yoink_focus"]
[connection signal="pressed" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_on_pick_button_pressed"]
[connection signal="focus_entered" from="Panel/Content/Buttons/VBoxContainer/Summary" to="." method="_yoink_focus"]

View File

@ -65,6 +65,9 @@ signal ui_exited
func _ready():
_handle_jitter(0)
func _on_ini_room():
State.take_stage(self)
func _process(_delta):
if focus_ray.get_collider() != null:
@ -148,15 +151,17 @@ func _input(event:InputEvent):
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
_handle_mouse_input(event)
get_viewport().set_input_as_handled()
if event is InputEventMouseButton and has_entered:
if event is InputEventMouseButton and event.pressed:
State.free_focus()
get_viewport().set_input_as_handled()
get_tree().call_group("interactables", "reveal")
#if event.is_action_pressed("ui_accept"):
# State.pass_stage_to(focus_ray.get_collider())
# get_viewport().set_input_as_handled()
func _on_empty_click():
State.take_stage(self, true)
else:
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed:
if !Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT):
State.take_stage(self, true)
func _on_bed_enter(_body):
if not (crouched or on_crouch_cooldown):
@ -175,5 +180,3 @@ func _on_bed_exit(_body):
on_crouch_cooldown = true
await get_tree().create_timer(1.0).timeout
on_crouch_cooldown = false

View File

@ -1,18 +1,10 @@
[gd_scene load_steps=11 format=3 uid="uid://mkccbig41bqb"]
[gd_scene load_steps=8 format=3 uid="uid://mkccbig41bqb"]
[ext_resource type="Script" path="res://logic-scenes/player_controller/player_controller.gd" id="1_0b4mi"]
[ext_resource type="ArrayMesh" uid="uid://bfc3d4g40n0wy" path="res://logic-scenes/collectable/import/old-mask.res" id="2_vnej0"]
[sub_resource type="PhysicsMaterial" id="10"]
friction = 0.0
[sub_resource type="GDScript" id="GDScript_r0b38"]
script/source = "extends MeshInstance3D
func _process(delta):
rotate_y(delta/3)
"
[sub_resource type="SphereShape3D" id="8"]
radius = 0.307047
@ -42,114 +34,6 @@ tracks/1/keys = {
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2:rotation")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(5.96046e-08, 1.74846e-07, -7.10543e-15)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.11067, -0.0251684, -0.309266)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:rotation")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1.49012e-07, 0, 0)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:light_energy")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.4]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:light_energy")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.5]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:visible")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:layers")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [1]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:visible")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2:visible")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="12"]
resource_name = "crouch"
@ -179,106 +63,6 @@ tracks/1/keys = {
"values": [Vector3(0, 0, 0), Vector3(-30, 0, -10), Vector3(-20, 0, 3), Vector3(0, 0, 0), Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_5o0sk"]
resource_name = "mask_reveal"
length = 3.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(0.366021, 1),
"update": 0,
"values": [Vector3(0.376781, -0.521269, -0.513588), Vector3(0.18, -0.025, -0.309)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 0.378929),
"update": 0,
"values": [Vector3(0, -0.698132, 0), Vector3(1.49012e-07, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:light_energy")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.8, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 0.4]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:light_energy")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.2, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.5]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:layers")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [1]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2:visible")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="Animation" id="14"]
resource_name = "stand_up"
length = 3.0
@ -289,10 +73,10 @@ tracks/0/path = NodePath("Yaw:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.9, 1.7, 3),
"times": PackedFloat32Array(0, 0.9, 1.8, 3),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector3(0, 0.327816, 0), Vector3(0, 0.331, 0), Vector3(0, 1.3, 0), Vector3(0, 1.22534, 0)]
"values": [Vector3(0, 0.327816, 0), Vector3(0, 0.331, 0), Vector3(0, 1, 0), Vector3(0, 1.22534, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -311,7 +95,6 @@ tracks/1/keys = {
_data = {
"RESET": SubResource("11"),
"crouch": SubResource("12"),
"mask_reveal": SubResource("Animation_5o0sk"),
"stand_up": SubResource("14")
}
@ -343,44 +126,6 @@ collision_mask = 17
collide_with_areas = true
collide_with_bodies = false
[node name="memory mount" type="Node3D" parent="Yaw/Pitch/Mount/Camera3D"]
transform = Transform3D(0.8, 0, 0, 0, 0.8, -7.15258e-08, 0, 1.1921e-07, 0.48, 0.11067, -0.0251684, -0.309266)
[node name="old_mask2" type="MeshInstance3D" parent="Yaw/Pitch/Mount/Camera3D/memory mount"]
transform = Transform3D(1, 1.75271e-14, 1.74846e-07, -7.10543e-15, 1, -5.96046e-08, -1.74846e-07, 5.96046e-08, 1, 0.0250661, 0, 0)
visible = false
mesh = ExtResource("2_vnej0")
skeleton = NodePath("")
script = SubResource("GDScript_r0b38")
[node name="OmniLight3D" type="OmniLight3D" parent="Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2"]
transform = Transform3D(1, -3.8743e-07, 5.96046e-08, 3.57628e-07, 1, 8.9407e-08, -5.96046e-08, -8.9407e-08, 1, 0.083235, -0.219628, 0.176047)
light_color = Color(0.972549, 0.752941, 0.592157, 1)
light_energy = 0.1
light_specular = 0.0
omni_range = 0.457129
omni_attenuation = 0.659754
[node name="SpotLight3D" type="SpotLight3D" parent="Yaw/Pitch/Mount/Camera3D"]
transform = Transform3D(0.584488, 0.621177, -0.522028, 0.363951, 0.374307, 0.852897, 0.725199, -0.688501, -0.00729993, 0.0601956, 0.21754, -0.271749)
visible = false
light_color = Color(0.97599, 0.669299, 0.509314, 1)
light_energy = 0.4
light_size = 0.1
shadow_enabled = true
spot_range = 0.394683
spot_angle = 27.7927
[node name="SpotLight3D2" type="SpotLight3D" parent="Yaw/Pitch/Mount/Camera3D"]
transform = Transform3D(0.456583, 0.0747244, 0.886537, 0.819566, -0.423063, -0.386432, 0.346185, 0.903014, -0.254405, 0.475638, -0.147216, -0.329875)
visible = false
light_color = Color(0.317647, 0.427451, 1, 1)
light_energy = 1.5
light_size = 0.1
shadow_enabled = true
spot_range = 0.624277
spot_angle = 22.1657
[node name="PlayerCollision" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.322255, 0)
shape = SubResource("8")

View File

@ -19,6 +19,7 @@ config/icon="res://icon.png"
[autoload]
State="*res://singletons/global_state.gd"
Scenes="*res://singletons/scene_reference.gd"
[debug]

View File

@ -29,6 +29,7 @@ func take_stage(actor: Object, reclaim: bool = false) -> bool:
if stage_list.has(actor):
while stage_list.pop_front() != actor: break
actor.has_stage = true
stage_list.push_front(actor)
return actor.has_stage
push_warning(actor, " wanted to reclaim focus, but was not on list.")
return pass_stage_to(actor)
@ -58,10 +59,11 @@ func pass_stage_to(target:Object) -> bool:
push_error("Focus instance not valid")
elif !"has_stage" in target:
push_error(target, " has no has focus method.")
if stage_list.size() > 0:
if stage_list.front() == target:
push_warning(target, " is already target. Abort passing focus.")
else:
if stage_list.size() > 0:
if stage_list.front() == target:
push_warning(target, " is already target. Abort passing focus.")
return false
if not stage_list.size() == 0: stage_list.front().has_stage = false
target.has_stage = true
if target.has_stage:
@ -72,7 +74,13 @@ func pass_stage_to(target:Object) -> bool:
# Currently focused element loses focus, but remains in stack.
func free_focus():
if not stage_list.front() == null: stage_list.front().has_stage = false
if stage_list.size() > 0: stage_list.front().has_stage = false
func queue_for_stage(target: Object, index: int):
func transition_stage_to(thief: Object):
if stage_list.size() > 0:
if stage_list.front().has_stage:
stage_list.pop_front().has_stage = false
return pass_stage_to(thief)
func queue_for_stage(target: Object, index: int = 1):
stage_list.insert(index, target)

View File

@ -1,8 +1,8 @@
extends Node
enum {
enum id {
YOUTH_CHILDHOOD,
YOUTH_THEATRE,
YOUTH_VOICE_TRAINING,
YOUTH_JUI_JUTSU,
ADULT_DND,
ADULD_VOLUNTARY,

View File

@ -25,7 +25,7 @@ gradient = SubResource("Gradient_c8r4y")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_eegys"]
emission_shape = 1
emission_sphere_radius = 0.3
emission_sphere_radius = 0.2
spread = 180.0
gravity = Vector3(0, 0.02, 0)
initial_velocity_max = 0.2
@ -37,7 +37,7 @@ turbulence_noise_scale = 2.0
turbulence_noise_speed = Vector3(0.1, 0.3, 0.5)
turbulence_noise_speed_random = 0.3
turbulence_influence_min = 0.01
turbulence_influence_max = 0.03
turbulence_influence_max = 0.02
turbulence_initial_displacement_max = 1.0
[sub_resource type="Shader" id="Shader_p2314"]
@ -127,12 +127,13 @@ shader_parameter/texture_backlight = ExtResource("2_h5y3k")
[sub_resource type="QuadMesh" id="QuadMesh_ea2fp"]
material = SubResource("ShaderMaterial_fgrmi")
size = Vector2(0.1, 0.1)
size = Vector2(0.06, 0.06)
[node name="collectable_particles" type="GPUParticles3D"]
material_override = SubResource("ShaderMaterial_lpenh")
cast_shadow = 0
amount = 50
lifetime = 10.0
speed_scale = 0.5
process_material = SubResource("ParticleProcessMaterial_eegys")
draw_pass_1 = SubResource("QuadMesh_ea2fp")