diff --git a/scenes/Babushka_scene_indoor_common_room.tscn b/scenes/Babushka_scene_indoor_common_room.tscn index e2616ec..e3c15bc 100644 --- a/scenes/Babushka_scene_indoor_common_room.tscn +++ b/scenes/Babushka_scene_indoor_common_room.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=3 uid="uid://bm21nqepnwaik"] +[gd_scene load_steps=27 format=3 uid="uid://bm21nqepnwaik"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_3vr4f"] [ext_resource type="Texture2D" uid="uid://cnhsxxps2cw5" path="res://art/indoor/room export/Room_01_table.png" id="2_ubg3a"] @@ -11,10 +11,12 @@ [ext_resource type="Texture2D" uid="uid://dhvi5404cqioa" path="res://art/indoor/room export/Room_01_window.png" id="9_aoesu"] [ext_resource type="Texture2D" uid="uid://bpi35nxbhput8" path="res://art/indoor/room export/Room_01_pechkaDoor.png" id="10_xcryd"] [ext_resource type="Texture2D" uid="uid://tyypifpte0pb" path="res://art/indoor/room export/Room_01_chugun.png" id="11_as3nm"] +[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="11_gpagp"] [ext_resource type="Texture2D" uid="uid://cop1vjvhwlsec" path="res://art/indoor/room export/Room_01_shelf.png" id="12_bu2a1"] [ext_resource type="Texture2D" uid="uid://404glx32r1w8" path="res://art/indoor/room export/Room_01_bench.png" id="13_rongr"] [ext_resource type="Texture2D" uid="uid://ckvytnpi8gcxq" path="res://art/eyes_atlas.png" id="14_d7yky"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="15_7a68a"] +[ext_resource type="Script" uid="uid://31p67cdowuw4" path="res://scripts/CSharp/Common/Animation/AnimationStarter.cs" id="15_27bwy"] [ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="16_dhsxs"] [ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="17_k0k8c"] [ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="18_dw4nn"] @@ -23,6 +25,10 @@ resource_local_to_scene = true size = Vector2(3836, 1086) +[sub_resource type="CircleShape2D" id="CircleShape2D_gpagp"] +resource_local_to_scene = true +radius = 300.0 + [sub_resource type="Animation" id="Animation_j5d18"] length = 0.001 tracks/0/type = "value" @@ -47,7 +53,7 @@ tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(-710, 0)] +"values": [Vector2(-240, -100)] } tracks/2/type = "value" tracks/2/imported = false @@ -61,10 +67,46 @@ tracks/2/keys = { "update": 1, "values": [false] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("BackWall/Room assets/offerings/apple:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(229.5, 331.5)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("BackWall/Room assets/offerings/apple:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("BackWall/Room assets/Domovoi:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} [sub_resource type="Animation" id="Animation_8o6or"] resource_name = "hand_stretch" -length = 4.0 +length = 5.0 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -72,10 +114,10 @@ tracks/0/path = NodePath("BackWall/Room assets/hand:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0.133333, 3), -"transitions": PackedFloat32Array(0.406126, 2.46229), +"times": PackedFloat32Array(0.7, 3.5, 3.93333), +"transitions": PackedFloat32Array(0.406126, 2.46229, 1), "update": 0, -"values": [Vector2(0, 0), Vector2(1, 1)] +"values": [Vector2(0, 0), Vector2(1.38, 1.38), Vector2(0, 0)] } tracks/1/type = "value" tracks/1/imported = false @@ -84,10 +126,10 @@ tracks/1/path = NodePath("BackWall/Room01PechkaDoor:position") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(-0.0333333, 2.96667), -"transitions": PackedFloat32Array(0.101532, 1), +"times": PackedFloat32Array(0, 2.97015, 3.96667, 4.93333), +"transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, -"values": [Vector2(-710, 0), Vector2(-760, 0)] +"values": [Vector2(-240, -101), Vector2(-362, -99), Vector2(-360.955, -99), Vector2(-240, -99)] } tracks/2/type = "value" tracks/2/imported = false @@ -96,10 +138,46 @@ tracks/2/path = NodePath("BackWall/Room assets/eyes:visible") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(2.26667, 3.7, 3.9), +"times": PackedFloat32Array(0.0333333, 3.3, 3.7, 3.9, 4.2), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [false, true, false, true, false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("BackWall/Room assets/offerings/apple:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.0333333, 3.53333, 4), "transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(229.5, 331.5), Vector2(229.5, 331.5), Vector2(76, -15)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("BackWall/Room assets/offerings/apple:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 3.96667), +"transitions": PackedFloat32Array(1, 1), "update": 1, -"values": [true, false, true] +"values": [true, false] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("BackWall/Room assets/Domovoi:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 2.33333, 2.63333, 2.76667, 2.86667, 3, 3.1, 3.26667, 4.96667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1.03526, 1, 1), +"update": 0, +"values": [0.0, 0.0, -0.1309, -0.0558505, 0.144862, -0.0593412, 0.205949, 0.0, 0.0] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_ciwvv"] @@ -235,11 +313,17 @@ region_rect = Rect2(1020, 338, 607, 757) [node name="Room01PechkaDoor" type="Sprite2D" parent="BackWall"] z_index = -50 -position = Vector2(-248, -96) +position = Vector2(-240, -100) texture = ExtResource("10_xcryd") region_enabled = true region_rect = Rect2(2360, 864, 356, 251) +[node name="InteractionArea" parent="BackWall/Room01PechkaDoor" instance=ExtResource("11_gpagp")] +scale = Vector2(1.8, 1.96) + +[node name="CollisionShape3D" parent="BackWall/Room01PechkaDoor/InteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_gpagp") + [node name="Room01Chugun" type="Sprite2D" parent="BackWall"] z_index = -40 position = Vector2(16, -560) @@ -284,9 +368,9 @@ region_rect = Rect2(2244, 763, 274, 91) [node name="Domovoi" type="Sprite2D" parent="BackWall/Room assets"] z_index = -10 y_sort_enabled = true -position = Vector2(335, 474.5) +position = Vector2(336.487, 275.616) texture = ExtResource("4_27bwy") -offset = Vector2(0, -296) +offset = Vector2(-14.6475, -97.651) region_enabled = true region_rect = Rect2(3157, 688, 118.519, 221) @@ -309,19 +393,22 @@ offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2624, 435, 49, 76) -[node name="hand" type="Sprite2D" parent="BackWall/Room assets"] +[node name="hand" type="Sprite2D" parent="BackWall/Room assets" node_paths=PackedStringArray("_animationPlayer")] z_index = -10 y_sort_enabled = true -position = Vector2(47.5969, 6.18) +position = Vector2(-101, -6) rotation = -0.0663225 scale = Vector2(1e-05, 1e-05) texture = ExtResource("4_27bwy") offset = Vector2(43.3898, 128.128) region_enabled = true region_rect = Rect2(3362, 139, 101, 269) +script = ExtResource("15_27bwy") +_animationPlayer = NodePath("SpiritAnimation") +_animationName = "hand_stretch" +_repeatable = false [node name="SpiritAnimation" type="AnimationPlayer" parent="BackWall/Room assets/hand"] -active = false root_node = NodePath("../../../..") libraries = { &"": SubResource("AnimationLibrary_ciwvv") @@ -356,13 +443,14 @@ region_rect = Rect2(2761, 161, 135, 199) [node name="eyes" type="Sprite2D" parent="BackWall/Room assets"] visible = false z_index = -10 -position = Vector2(32, -72) +position = Vector2(-169, -80) scale = Vector2(0.4, 0.4) texture = ExtResource("14_d7yky") region_enabled = true region_rect = Rect2(2647, 15, 286, 183) [node name="offerings" type="Node2D" parent="BackWall/Room assets"] +position = Vector2(-205, -8) [node name="apple" type="Sprite2D" parent="BackWall/Room assets/offerings"] z_index = -1 @@ -418,8 +506,11 @@ editor_draw_limits = true script = ExtResource("18_dw4nn") _followNode = NodePath("../Vesna/CharacterBody2D") +[connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room01PechkaDoor/InteractionArea" method="ToggleActive"] +[connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room assets/hand" method="PlayAnimation"] [connection signal="timelineEnded" from="Yeli/dialogic_toggle" to="." method="Quit"] +[editable path="BackWall/Room01PechkaDoor/InteractionArea"] [editable path="Vesna"] [editable path="Yeli"] [editable path="Yeli/InteractionArea"] diff --git a/scripts/CSharp/Common/Animation/AnimationStarter.cs b/scripts/CSharp/Common/Animation/AnimationStarter.cs new file mode 100644 index 0000000..e3d8974 --- /dev/null +++ b/scripts/CSharp/Common/Animation/AnimationStarter.cs @@ -0,0 +1,24 @@ +using Godot; +using System; + +public partial class AnimationStarter : Node2D +{ + [Export] private AnimationPlayer _animationPlayer; + [Export] private string _animationName; + [Export] private bool _repeatable = true; + + private bool _played; + + public void PlayAnimation() + { + if (_animationPlayer == null || string.IsNullOrEmpty(_animationName)) + return; + + if (!_repeatable && _played) + return; + + _animationPlayer.Play(_animationName); + _played = true; + } + +} diff --git a/scripts/CSharp/Common/Animation/AnimationStarter.cs.uid b/scripts/CSharp/Common/Animation/AnimationStarter.cs.uid new file mode 100644 index 0000000..28b1378 --- /dev/null +++ b/scripts/CSharp/Common/Animation/AnimationStarter.cs.uid @@ -0,0 +1 @@ +uid://31p67cdowuw4 diff --git a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs index 057a24f..5c741fe 100644 --- a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs +++ b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs @@ -13,19 +13,30 @@ public partial class InteractionArea2D : Node2D [Signal] public delegate void InteractedToolEventHandler(int id); // TODO: remove [Signal] public delegate void InteractedEventHandler(); + public bool IsActive { get; set; } = true; + public void OnPlayerEntered(Node2D player) { + if (!IsActive) + return; + if(_showLabel) _label.Show(); } public void OnPlayerExited(Node2D player) { + if (!IsActive) + return; + _label.Hide(); } public override void _Input(InputEvent @event) { + if (!IsActive) + return; + if (@event.IsAction("interact") && @event.IsPressed() && _area.HasOverlappingBodies()) { _label.Hide(); @@ -36,9 +47,18 @@ public partial class InteractionArea2D : Node2D public void SetSpriteActiveState(bool success, int id) // TODO: remove { + if(!IsActive) + return; + if (_id == id) { _sprites.SwitchState(!success); } } + + public void ToggleActive() + { + IsActive = !IsActive; + _label.Hide(); + } } \ No newline at end of file