Refactor scene configurations and add z-index properties for better layering; implement grace period logic in DeadliftSystem

This commit is contained in:
2026-01-24 22:19:10 +01:00
parent cdfd4cbbd2
commit 4931cb159a
9 changed files with 153 additions and 54 deletions

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://dxq2510ywj1hy"] [gd_scene load_steps=4 format=3 uid="uid://dxq2510ywj1hy"]
[ext_resource type="PackedScene" uid="uid://dn8y3bgovnh4a" path="res://Objects/bench_press_stickman.tscn" id="2_0c1tm"] [ext_resource type="PackedScene" uid="uid://dn8y3bgovnh4a" path="res://Objects/bench_press_stickman.tscn" id="2_0c1tm"]
[ext_resource type="Texture2D" uid="uid://dsovna2tmb4o3" path="res://Sprites/bench.png" id="2_ky8t4"] [ext_resource type="Texture2D" uid="uid://dsovna2tmb4o3" path="res://Sprites/bench.png" id="2_ky8t4"]
@@ -9,14 +9,17 @@
[node name="System" type="BenchPressSystem" parent="."] [node name="System" type="BenchPressSystem" parent="."]
[node name="Bench" type="Sprite2D" parent="."] [node name="Bench" type="Sprite2D" parent="."]
position = Vector2(11, 1) z_index = 1
position = Vector2(11, 128.5)
scale = Vector2(2.086, 2.086) scale = Vector2(2.086, 2.086)
texture = ExtResource("2_ky8t4") texture = ExtResource("2_ky8t4")
[node name="BenchPressStickman" parent="." instance=ExtResource("2_0c1tm")] [node name="BenchPressStickman" parent="." instance=ExtResource("2_0c1tm")]
position = Vector2(0, 127.5)
[node name="Barbell" type="Sprite2D" parent="."] [node name="Barbell" type="Sprite2D" parent="."]
position = Vector2(22, -5) z_index = 1
position = Vector2(22, 122.5)
scale = Vector2(2.432, 2.432) scale = Vector2(2.432, 2.432)
texture = ExtResource("3_ky8t4") texture = ExtResource("3_ky8t4")
@@ -24,4 +27,4 @@ texture = ExtResource("3_ky8t4")
player_anim = NodePath("../BenchPressStickman") player_anim = NodePath("../BenchPressStickman")
barbell = NodePath("../Barbell") barbell = NodePath("../Barbell")
animation_name = "default" animation_name = "default"
bar_positions = Array[Vector2]([Vector2(19, -5), Vector2(19, -19), Vector2(21, -36), Vector2(21, -15), Vector2(23, 3), Vector2(22, 11), Vector2(22, -1), Vector2(22, -1)]) bar_positions = Array[Vector2]([Vector2(19, 123), Vector2(19, 109), Vector2(21, 92), Vector2(21, 113), Vector2(23, 131), Vector2(22, 139), Vector2(22, 127), Vector2(22, 127)])

View File

@@ -42,5 +42,6 @@ animations = [{
}] }]
[node name="BenchPressStickman" type="AnimatedSprite2D"] [node name="BenchPressStickman" type="AnimatedSprite2D"]
z_index = 1
sprite_frames = SubResource("SpriteFrames_edqll") sprite_frames = SubResource("SpriteFrames_edqll")
speed_scale = 0.0 speed_scale = 0.0

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=3 format=3 uid="uid://dx1k40qfioaas"] [gd_scene load_steps=2 format=3 uid="uid://dx1k40qfioaas"]
[ext_resource type="Texture2D" uid="uid://cbgn8aspf7oi0" path="res://Sprites/barbell.png" id="2_ltxro"] [ext_resource type="Texture2D" uid="uid://cbgn8aspf7oi0" path="res://Sprites/barbell.png" id="2_ltxro"]
@@ -10,5 +10,6 @@ bar_visual = NodePath("../Barbell")
end_pos = Vector2(0, -30) end_pos = Vector2(0, -30)
[node name="Barbell" type="Sprite2D" parent="."] [node name="Barbell" type="Sprite2D" parent="."]
z_index = 1
scale = Vector2(2, 2) scale = Vector2(2, 2)
texture = ExtResource("2_ltxro") texture = ExtResource("2_ltxro")

View File

@@ -4,6 +4,7 @@
anim_sprite = NodePath("AnimatedSprite2D") anim_sprite = NodePath("AnimatedSprite2D")
click_area = NodePath("Area2D") click_area = NodePath("Area2D")
click_shape = NodePath("Area2D/CollisionShape2D") click_shape = NodePath("Area2D/CollisionShape2D")
z_index = 1
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=3 uid="uid://xtm08af0e82g"] [gd_scene load_steps=13 format=3 uid="uid://xtm08af0e82g"]
[ext_resource type="Shader" uid="uid://dndm4jfifooyk" path="res://Shaders/TunnelVision.gdshader" id="1_jjgbg"] [ext_resource type="Shader" uid="uid://dndm4jfifooyk" path="res://Shaders/TunnelVision.gdshader" id="1_jjgbg"]
[ext_resource type="DayConfig" uid="uid://d30pwvrr7m72j" path="res://Resources/Day_Day1.tres" id="2_8gbba"] [ext_resource type="DayConfig" uid="uid://d30pwvrr7m72j" path="res://Resources/Day_Day1.tres" id="2_8gbba"]
@@ -8,6 +8,12 @@
[ext_resource type="PackedScene" uid="uid://bqxc62tofqger" path="res://Objects/hazard_animated.tscn" id="4_21xkr"] [ext_resource type="PackedScene" uid="uid://bqxc62tofqger" path="res://Objects/hazard_animated.tscn" id="4_21xkr"]
[ext_resource type="DayConfig" uid="uid://b0j1f8h6tioaf" path="res://Resources/Day_Day2.tres" id="4_344ge"] [ext_resource type="DayConfig" uid="uid://b0j1f8h6tioaf" path="res://Resources/Day_Day2.tres" id="4_344ge"]
[ext_resource type="HazardDef" uid="uid://xsxsa2m5ryjr" path="res://Resources/Hazard_Phone.tres" id="6_344ge"] [ext_resource type="HazardDef" uid="uid://xsxsa2m5ryjr" path="res://Resources/Hazard_Phone.tres" id="6_344ge"]
[ext_resource type="Texture2D" uid="uid://fulcxnac5453" path="res://Sprites/gym_bg.png" id="9_ynf5e"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bo1nx"]
shader = ExtResource("1_jjgbg")
shader_parameter/vignette_intensity = 0.0
shader_parameter/vignette_color = Color(0, 0, 0, 1)
[sub_resource type="Curve" id="Curve_bo1nx"] [sub_resource type="Curve" id="Curve_bo1nx"]
_data = [Vector2(0, 0), 0.0, 1.4, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0] _data = [Vector2(0, 0), 0.0, 1.4, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
@@ -17,56 +23,19 @@ point_count = 2
max_tunnel_intensity = 0.7 max_tunnel_intensity = 0.7
vision_curve = SubResource("Curve_bo1nx") vision_curve = SubResource("Curve_bo1nx")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bo1nx"]
shader = ExtResource("1_jjgbg")
shader_parameter/vignette_intensity = 0.0
shader_parameter/vignette_color = Color(0, 0, 0, 1)
[node name="Main" type="Node"] [node name="Main" type="Node"]
[node name="Systems" type="Node" parent="."] [node name="CanvasLayer" type="CanvasLayer" parent="."]
layer = -10
[node name="PlayerInputSystem" type="PlayerInputSystem" parent="Systems"] [node name="BG" type="TextureRect" parent="CanvasLayer"]
z_index = -8
[node name="TunnelSystem" type="TunnelSystem" parent="Systems" node_paths=PackedStringArray("vignette_overlay")] anchors_preset = 15
config = SubResource("TunnelConfig_8gbba") anchor_right = 1.0
vignette_overlay = NodePath("../../Ui/Vignette") anchor_bottom = 1.0
grow_horizontal = 2
[node name="SoundManager" type="SoundManager" parent="Systems"] grow_vertical = 2
bank = ExtResource("2_21xkr") texture = ExtResource("9_ynf5e")
[node name="GameManager" type="GameManager" parent="Systems" node_paths=PackedStringArray("hazard_system", "minigame_container", "win_screen", "lose_screen")]
days = Array[DayConfig]([ExtResource("2_8gbba"), ExtResource("4_344ge")])
hazard_system = NodePath("../HazardSystem")
minigame_container = NodePath("../../GameContainer")
win_screen = NodePath("../../Ui/Win")
lose_screen = NodePath("../../Ui/Lose")
main_menu_scene = ExtResource("4_6bp64")
[node name="CameraShakeSystem" type="CameraShakeSystem" parent="Systems" node_paths=PackedStringArray("camera")]
camera = NodePath("../../Camera2D")
min_focus_for_shake = 0.7
[node name="HazardSystem" type="HazardSystem" parent="Systems" node_paths=PackedStringArray("spawn_locations")]
possible_hazards = Array[HazardDef]([ExtResource("3_kry3j"), ExtResource("6_344ge")])
spawn_locations = [NodePath("../../HazardSpots/Right"), NodePath("../../HazardSpots/Left"), NodePath("../../HazardSpots/Top"), NodePath("../../HazardSpots/Down")]
hazard_prefab = ExtResource("4_21xkr")
[node name="GameContainer" type="Node" parent="."]
[node name="HazardSpots" type="Node2D" parent="."]
[node name="Right" type="Marker2D" parent="HazardSpots"]
position = Vector2(502, 0)
[node name="Top" type="Marker2D" parent="HazardSpots"]
position = Vector2(0, -228)
[node name="Down" type="Marker2D" parent="HazardSpots"]
position = Vector2(0, 212)
[node name="Left" type="Marker2D" parent="HazardSpots"]
position = Vector2(-500, 0)
[node name="Ui" type="CanvasLayer" parent="."] [node name="Ui" type="CanvasLayer" parent="."]
@@ -77,7 +46,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
mouse_filter = 2 mouse_filter = 1
[node name="LiftProgressBar" type="LiftProgressBar" parent="Ui"] [node name="LiftProgressBar" type="LiftProgressBar" parent="Ui"]
anchors_preset = 12 anchors_preset = 12
@@ -166,6 +135,50 @@ text = "Restart"
layout_mode = 2 layout_mode = 2
text = "Go to menu" text = "Go to menu"
[node name="Systems" type="Node" parent="."]
[node name="PlayerInputSystem" type="PlayerInputSystem" parent="Systems"]
[node name="TunnelSystem" type="TunnelSystem" parent="Systems" node_paths=PackedStringArray("vignette_overlay")]
config = SubResource("TunnelConfig_8gbba")
vignette_overlay = NodePath("../../Ui/Vignette")
[node name="SoundManager" type="SoundManager" parent="Systems"]
bank = ExtResource("2_21xkr")
[node name="GameManager" type="GameManager" parent="Systems" node_paths=PackedStringArray("hazard_system", "minigame_container", "win_screen", "lose_screen")]
days = Array[DayConfig]([ExtResource("2_8gbba"), ExtResource("4_344ge")])
hazard_system = NodePath("../HazardSystem")
minigame_container = NodePath("../../GameContainer")
win_screen = NodePath("../../Ui/Win")
lose_screen = NodePath("../../Ui/Lose")
main_menu_scene = ExtResource("4_6bp64")
[node name="CameraShakeSystem" type="CameraShakeSystem" parent="Systems" node_paths=PackedStringArray("camera")]
camera = NodePath("../../Camera2D")
min_focus_for_shake = 0.7
[node name="HazardSystem" type="HazardSystem" parent="Systems" node_paths=PackedStringArray("spawn_locations")]
possible_hazards = Array[HazardDef]([ExtResource("3_kry3j"), ExtResource("6_344ge")])
spawn_locations = [NodePath("../../HazardSpots/Right"), NodePath("../../HazardSpots/Left"), NodePath("../../HazardSpots/Top"), NodePath("../../HazardSpots/Down")]
hazard_prefab = ExtResource("4_21xkr")
[node name="GameContainer" type="Node" parent="."]
[node name="HazardSpots" type="Node2D" parent="."]
[node name="Right" type="Marker2D" parent="HazardSpots"]
position = Vector2(502, 0)
[node name="Top" type="Marker2D" parent="HazardSpots"]
position = Vector2(0, -228)
[node name="Down" type="Marker2D" parent="HazardSpots"]
position = Vector2(0, 212)
[node name="Left" type="Marker2D" parent="HazardSpots"]
position = Vector2(-500, 0)
[node name="Camera2D" type="Camera2D" parent="."] [node name="Camera2D" type="Camera2D" parent="."]
[connection signal="pressed" from="Ui/Win/MarginContainer/VBoxContainer/Next day" to="Systems/GameManager" method="on_next_day_pressed"] [connection signal="pressed" from="Ui/Win/MarginContainer/VBoxContainer/Next day" to="Systems/GameManager" method="on_next_day_pressed"]

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://fulcxnac5453"
path="res://.godot/imported/gym_bg.png-d2f4fcd719f5f9e1da9e916b8624c185.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/gym_bg.png"
dest_files=["res://.godot/imported/gym_bg.png-d2f4fcd719f5f9e1da9e916b8624c185.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -21,11 +21,15 @@ pub struct DeadliftSystem {
start_pos: Vector2, start_pos: Vector2,
#[export] #[export]
end_pos: Vector2, end_pos: Vector2,
#[export]
grace_duration: f32,
current_bar_height: f32, current_bar_height: f32,
hold_timer: f32, hold_timer: f32,
is_lift_complete: bool, is_lift_complete: bool,
active_hazard_count: i32, active_hazard_count: i32,
grace_timer: f32,
is_lifting: bool,
event_bus: Option<Gd<EventBus>>, event_bus: Option<Gd<EventBus>>,
base: Base<Node>, base: Base<Node>,
@@ -44,6 +48,9 @@ impl INode for DeadliftSystem {
bar_visual: None, bar_visual: None,
start_pos: Vector2::ZERO, start_pos: Vector2::ZERO,
end_pos: Vector2::ZERO, end_pos: Vector2::ZERO,
grace_duration: 1.5,
grace_timer: 1.5,
is_lifting: false,
current_bar_height: 0.0, current_bar_height: 0.0,
hold_timer: 0.0, hold_timer: 0.0,
@@ -74,7 +81,13 @@ impl INode for DeadliftSystem {
&self.base().callable("on_lift_completed"), &self.base().callable("on_lift_completed"),
); );
bus.connect(
consts::FOCUS_RELEASED,
&self.base().callable("on_focus_released"),
);
self.event_bus = Some(bus); self.event_bus = Some(bus);
self.grace_timer = self.grace_duration;
} }
fn process(&mut self, delta: f64) { fn process(&mut self, delta: f64) {
@@ -89,6 +102,22 @@ impl INode for DeadliftSystem {
let dt = delta as f32; let dt = delta as f32;
if !self.is_lifting && self.active_hazard_count > 0 {
self.grace_timer -= dt;
if self.grace_timer <= 0.0 {
godot_print!("Deadlift Failed: Dropped bar due to hazards!");
self.current_bar_height = 0.0;
bus.clone().bind_mut().publish_lift_completed(false);
self.is_lift_complete = true;
return;
}
} else {
self.grace_timer = self.grace_duration;
}
if self.current_bar_height > 0.0 { if self.current_bar_height > 0.0 {
self.current_bar_height -= self.gravity * dt; self.current_bar_height -= self.gravity * dt;
self.current_bar_height = self.current_bar_height.max(0.0); self.current_bar_height = self.current_bar_height.max(0.0);
@@ -131,6 +160,12 @@ impl DeadliftSystem {
return; return;
} }
self.is_lifting = true;
if self.active_hazard_count > 0 {
return;
}
self.current_bar_height += self.power_per_click * delta; self.current_bar_height += self.power_per_click * delta;
self.current_bar_height = self.current_bar_height.min(self.bar_height); self.current_bar_height = self.current_bar_height.min(self.bar_height);
} }
@@ -152,4 +187,9 @@ impl DeadliftSystem {
self.active_hazard_count = 0; self.active_hazard_count = 0;
} }
} }
#[func]
fn on_focus_released(&mut self) {
self.is_lifting = false;
}
} }