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,14 +20,16 @@
- [Wood Substance 009](https://ambientcg.com/view?id=WoodSubstance009) - [Wood Substance 009](https://ambientcg.com/view?id=WoodSubstance009)
- [Wicker 010 B](https://ambientcg.com/view?id=Wicker010B) - [Wicker 010 B](https://ambientcg.com/view?id=Wicker010B)
## Comic Illustrations ## Comic Illustrations
- by [Fernand0FC](https://www.deviantart.com/fernand0fc), CC-BY-3.0 - by [Fernand0FC](https://www.deviantart.com/fernand0fc), CC-BY-3.0
+ [Corporate level bodyguard](https://www.deviantart.com/fernand0fc/art/Corporate-level-bodyguard-803579124) + [Corporate level bodyguard](https://www.deviantart.com/fernand0fc/art/Corporate-level-bodyguard-803579124)
+ [Into the glowing sea](https://www.deviantart.com/fernand0fc/art/Into-the-glowing-sea-834238466) + [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) + [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 ## 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 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 - [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": { "flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": { "locked": {
"lastModified": 1678901627, "lastModified": 1689068808,
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -32,11 +35,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1679793451, "lastModified": 1689078114,
"narHash": "sha256-JafTtgMDATE8dZOImBhWMA9RCn9AP8FVOpN+9K/tTlg=", "narHash": "sha256-osG8BrX5RpKJ7wH+vI6auOU+ctvNOblT4XXCgknK47c=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "0cd51a933d91078775b300cf0f29aa3495231aa2", "rev": "b6cc7ff8fee93789bc871a267ab876c3fca042cb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -50,6 +53,21 @@
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "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", "root": "root",

View File

@ -85,7 +85,7 @@
mkdir -p $out/share/${pname} mkdir -p $out/share/${pname}
# This just copies the export template and packs the game files next to it # 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 runHook postBuild
''; '';

View File

@ -1,6 +1,19 @@
extends Area3D extends Area3D
@onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/Collectable_ui @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 var has_mouse: bool = false
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
@ -9,9 +22,11 @@ func _ready():
func _on_mouse_entered(): func _on_mouse_entered():
input_ray_pickable = false input_ray_pickable = false
$UiWrapper.show() ui.collapsed = false
$UiWrapper/UiSprite/SubViewport/Collectable_ui.show()
has_mouse = true has_mouse = true
func _on_mouse_exited(): func _on_mouse_exited():
assert(false) 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 freeze
signal unfreeze signal unfreeze
signal ini_room
signal resume_room
var current_mode: int = Modes.FREEZE: var current_mode: int = Modes.FREEZE:
set(new_mode): set(new_mode):
@ -18,9 +20,7 @@ var current_mode: int = Modes.FREEZE:
current_mode = _update_scene(new_mode) current_mode = _update_scene(new_mode)
func start(): func start():
$light_animation.play("light_up") emit_signal("ini_room")
$AudioPlayer.play("intro")
State.pass_stage_to($PlayerController)
current_mode = Modes.WALKING current_mode = Modes.WALKING
func _update_scene(new_mode) -> int: 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 vec2 nebula_scale = vec2(1.5);
uniform sampler2D starlight_noise; uniform sampler2D starlight_noise;
uniform sampler2D starlight_textures; uniform sampler2D starlight_textures;
uniform float rotation_speed = 0.05; uniform float rotation_speed = 0.02;
uniform vec2 rotation_pivot = vec2(.8); uniform vec2 rotation_pivot = vec2(.8);
uniform vec2 drift_compensation = vec2(0.1, -0.2); uniform vec2 drift_compensation = vec2(0.1, -0.2);
uniform float noise_strength = 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"] [gd_resource type="AudioBusLayout" format=3 uid="uid://djkwd76o033io"]
[resource] [resource]
bus/0/mute = true
bus/1/name = &"text" bus/1/name = &"text"
bus/1/solo = false bus/1/solo = false
bus/1/mute = 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://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"] [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"] [node name="board of devs" type="Control"]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
@ -10,6 +16,7 @@ anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = SubResource("GDScript_cr445")
[node name="childhood" type="Control" parent="."] [node name="childhood" type="Control" parent="."]
anchors_preset = 0 anchors_preset = 0

View File

@ -14,11 +14,6 @@ func _process(_delta):
look_at(look, Vector3.UP) look_at(look, Vector3.UP)
func _unhandled_input(event): 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) viewport.push_input(event)
func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int): 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: var has_stage = false:
set(focus): set(focus):
if focus != has_stage: if focus:
if focus: has_stage = true
has_stage = true self.mouse_filter = Control.MOUSE_FILTER_PASS
self.mouse_filter = Control.MOUSE_FILTER_PASS else:
else: has_stage = false
has_stage = false self.mouse_filter = Control.MOUSE_FILTER_IGNORE
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 dropzone = $HBoxContainer/dropzone
@onready var postit_container = $HBoxContainer/ScrollContainer/VBoxContainer @onready var postit_container = $HBoxContainer/ScrollContainer/VBoxContainer
@ -36,6 +41,7 @@ func _ready():
reorder_areas("dropzone_content") reorder_areas("dropzone_content")
active_context = ui_context.DROPZONE active_context = ui_context.DROPZONE
has_stage = has_stage
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta): func _process(delta):

View File

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

View File

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

View File

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

View File

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

View File

@ -99,6 +99,7 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme = ExtResource("1_2apkb") theme = ExtResource("1_2apkb")
script = ExtResource("1_tgjc2") script = ExtResource("1_tgjc2")
scene = null
[node name="Panel" type="PanelContainer" parent="."] [node name="Panel" type="PanelContainer" parent="."]
layout_mode = 2 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="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="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="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"] [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(): func _ready():
_handle_jitter(0) _handle_jitter(0)
func _on_ini_room():
State.take_stage(self)
func _process(_delta): func _process(_delta):
if focus_ray.get_collider() != null: 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: if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
_handle_mouse_input(event) _handle_mouse_input(event)
get_viewport().set_input_as_handled() get_viewport().set_input_as_handled()
if event is InputEventMouseButton and has_entered: if event is InputEventMouseButton and event.pressed:
State.free_focus() State.free_focus()
get_viewport().set_input_as_handled() get_tree().call_group("interactables", "reveal")
#if event.is_action_pressed("ui_accept"): #if event.is_action_pressed("ui_accept"):
# State.pass_stage_to(focus_ray.get_collider()) # State.pass_stage_to(focus_ray.get_collider())
# get_viewport().set_input_as_handled() # get_viewport().set_input_as_handled()
else:
func _on_empty_click(): if event is InputEventMouseButton:
State.take_stage(self, true) 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): func _on_bed_enter(_body):
if not (crouched or on_crouch_cooldown): if not (crouched or on_crouch_cooldown):
@ -175,5 +180,3 @@ func _on_bed_exit(_body):
on_crouch_cooldown = true on_crouch_cooldown = true
await get_tree().create_timer(1.0).timeout await get_tree().create_timer(1.0).timeout
on_crouch_cooldown = false 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="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"] [sub_resource type="PhysicsMaterial" id="10"]
friction = 0.0 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"] [sub_resource type="SphereShape3D" id="8"]
radius = 0.307047 radius = 0.307047
@ -42,114 +34,6 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [Vector3(0, 0, 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"] [sub_resource type="Animation" id="12"]
resource_name = "crouch" 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)] "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"] [sub_resource type="Animation" id="14"]
resource_name = "stand_up" resource_name = "stand_up"
length = 3.0 length = 3.0
@ -289,10 +73,10 @@ tracks/0/path = NodePath("Yaw:position")
tracks/0/interp = 2 tracks/0/interp = 2
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { 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), "transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0, "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/type = "value"
tracks/1/imported = false tracks/1/imported = false
@ -311,7 +95,6 @@ tracks/1/keys = {
_data = { _data = {
"RESET": SubResource("11"), "RESET": SubResource("11"),
"crouch": SubResource("12"), "crouch": SubResource("12"),
"mask_reveal": SubResource("Animation_5o0sk"),
"stand_up": SubResource("14") "stand_up": SubResource("14")
} }
@ -343,44 +126,6 @@ collision_mask = 17
collide_with_areas = true collide_with_areas = true
collide_with_bodies = false 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="."] [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) transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.322255, 0)
shape = SubResource("8") shape = SubResource("8")

View File

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

View File

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

View File

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

View File

@ -25,7 +25,7 @@ gradient = SubResource("Gradient_c8r4y")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_eegys"] [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_eegys"]
emission_shape = 1 emission_shape = 1
emission_sphere_radius = 0.3 emission_sphere_radius = 0.2
spread = 180.0 spread = 180.0
gravity = Vector3(0, 0.02, 0) gravity = Vector3(0, 0.02, 0)
initial_velocity_max = 0.2 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 = Vector3(0.1, 0.3, 0.5)
turbulence_noise_speed_random = 0.3 turbulence_noise_speed_random = 0.3
turbulence_influence_min = 0.01 turbulence_influence_min = 0.01
turbulence_influence_max = 0.03 turbulence_influence_max = 0.02
turbulence_initial_displacement_max = 1.0 turbulence_initial_displacement_max = 1.0
[sub_resource type="Shader" id="Shader_p2314"] [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"] [sub_resource type="QuadMesh" id="QuadMesh_ea2fp"]
material = SubResource("ShaderMaterial_fgrmi") material = SubResource("ShaderMaterial_fgrmi")
size = Vector2(0.1, 0.1) size = Vector2(0.06, 0.06)
[node name="collectable_particles" type="GPUParticles3D"] [node name="collectable_particles" type="GPUParticles3D"]
material_override = SubResource("ShaderMaterial_lpenh") material_override = SubResource("ShaderMaterial_lpenh")
cast_shadow = 0 cast_shadow = 0
amount = 50 amount = 50
lifetime = 10.0 lifetime = 10.0
speed_scale = 0.5
process_material = SubResource("ParticleProcessMaterial_eegys") process_material = SubResource("ParticleProcessMaterial_eegys")
draw_pass_1 = SubResource("QuadMesh_ea2fp") draw_pass_1 = SubResource("QuadMesh_ea2fp")