diff --git a/art/characters/yeli animierbar/yeli.png b/art/characters/yeli animierbar/yeli.png new file mode 100644 index 0000000..9e7afe4 Binary files /dev/null and b/art/characters/yeli animierbar/yeli.png differ diff --git a/art/characters/yeli animierbar/yeli.png.import b/art/characters/yeli animierbar/yeli.png.import new file mode 100644 index 0000000..41641b1 --- /dev/null +++ b/art/characters/yeli animierbar/yeli.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://g0b2lyc7vjy0" +path="res://.godot/imported/yeli.png-b3fc2088333075c4657e267b6ef0d181.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/characters/yeli animierbar/yeli.png" +dest_files=["res://.godot/imported/yeli.png-b3fc2088333075c4657e267b6ef0d181.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/art/characters/yeli animierbar/yeli_back.png b/art/characters/yeli animierbar/yeli_back.png new file mode 100644 index 0000000..382211b Binary files /dev/null and b/art/characters/yeli animierbar/yeli_back.png differ diff --git a/art/characters/yeli animierbar/yeli_back.png.import b/art/characters/yeli animierbar/yeli_back.png.import new file mode 100644 index 0000000..e29c6c4 --- /dev/null +++ b/art/characters/yeli animierbar/yeli_back.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6l5iqt2g7awf" +path="res://.godot/imported/yeli_back.png-d51d7df039bdd2bed899d224d21a4db6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/characters/yeli animierbar/yeli_back.png" +dest_files=["res://.godot/imported/yeli_back.png-d51d7df039bdd2bed899d224d21a4db6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/art/characters/yeli animierbar/yeli_frontal.png b/art/characters/yeli animierbar/yeli_frontal.png new file mode 100644 index 0000000..fce623b Binary files /dev/null and b/art/characters/yeli animierbar/yeli_frontal.png differ diff --git a/art/characters/yeli animierbar/yeli_frontal.png.import b/art/characters/yeli animierbar/yeli_frontal.png.import new file mode 100644 index 0000000..1b7a5f7 --- /dev/null +++ b/art/characters/yeli animierbar/yeli_frontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rhia755u2vq3" +path="res://.godot/imported/yeli_frontal.png-adbc3b4c96139c69f70ed9b2e8babd97.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/characters/yeli animierbar/yeli_frontal.png" +dest_files=["res://.godot/imported/yeli_frontal.png-adbc3b4c96139c69f70ed9b2e8babd97.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/art/characters/yeli animierbar/yeli_part_side.png b/art/characters/yeli animierbar/yeli_part_side.png new file mode 100644 index 0000000..0df5ab7 Binary files /dev/null and b/art/characters/yeli animierbar/yeli_part_side.png differ diff --git a/art/characters/yeli animierbar/yeli_part_side.png.import b/art/characters/yeli animierbar/yeli_part_side.png.import new file mode 100644 index 0000000..691012f --- /dev/null +++ b/art/characters/yeli animierbar/yeli_part_side.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jsyjnbieditr" +path="res://.godot/imported/yeli_part_side.png-5c782c8f796a5e6ea213aa65141bb7b6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/characters/yeli animierbar/yeli_part_side.png" +dest_files=["res://.godot/imported/yeli_part_side.png-5c782c8f796a5e6ea213aa65141bb7b6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/art/characters/yeli animierbar/yeli_side.png b/art/characters/yeli animierbar/yeli_side.png new file mode 100644 index 0000000..28b1baa Binary files /dev/null and b/art/characters/yeli animierbar/yeli_side.png differ diff --git a/art/characters/yeli animierbar/yeli_side.png.import b/art/characters/yeli animierbar/yeli_side.png.import new file mode 100644 index 0000000..17c4711 --- /dev/null +++ b/art/characters/yeli animierbar/yeli_side.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuofxoh46r4gl" +path="res://.godot/imported/yeli_side.png-63b94a883a334dc42be67e2fe8ea2670.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/characters/yeli animierbar/yeli_side.png" +dest_files=["res://.godot/imported/yeli_side.png-63b94a883a334dc42be67e2fe8ea2670.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/dialog/Yeli.dch b/dialog/Yeli.dch new file mode 100644 index 0000000..75af8b8 --- /dev/null +++ b/dialog/Yeli.dch @@ -0,0 +1,56 @@ +{ +"@path": "res://addons/dialogic/Resources/character.gd", +"@subpath": NodePath(""), +&"_translation_id": "", +&"color": Color(1, 1, 1, 1), +&"custom_info": { +"sound_mood_default": "", +"sound_moods": {}, +"style": "speechbubble" +}, +&"default_portrait": "_part_side", +&"description": "", +&"display_name": "Yelizaveta", +&"mirror": false, +&"nicknames": ["Yeli"], +&"offset": Vector2(0, 0), +&"portraits": { +"_back": { +"export_overrides": { +"image": "\"res://art/characters/yeli animierbar/yeli_back.png\"" +}, +"mirror": false, +"offset": Vector2(0, 0), +"scale": 1.0, +"scene": "" +}, +"_frontal": { +"export_overrides": { +"image": "\"res://art/characters/yeli animierbar/yeli_frontal.png\"" +}, +"mirror": false, +"offset": Vector2(0, 0), +"scale": 1, +"scene": "" +}, +"_part_side": { +"export_overrides": { +"image": "\"res://art/characters/yeli animierbar/yeli_part_side.png\"" +}, +"mirror": true, +"offset": Vector2(0, 0), +"scale": 1.0, +"scene": "" +}, +"_side": { +"export_overrides": { +"image": "\"res://art/characters/yeli animierbar/yeli_side.png\"" +}, +"mirror": false, +"offset": Vector2(0, 0), +"scale": 1, +"scene": "" +} +}, +&"scale": 0.5 +} \ No newline at end of file diff --git a/dialog/Yeli.dch.uid b/dialog/Yeli.dch.uid new file mode 100644 index 0000000..c72c8c0 --- /dev/null +++ b/dialog/Yeli.dch.uid @@ -0,0 +1 @@ +uid://dquv5kkqd7r1q diff --git a/dialog/speechbubble.tres b/dialog/speechbubble.tres new file mode 100644 index 0000000..a7433ac --- /dev/null +++ b/dialog/speechbubble.tres @@ -0,0 +1,37 @@ +[gd_resource type="Resource" script_class="DialogicStyle" load_steps=8 format=3 uid="uid://cdha3krdyppae"] + +[ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_6h8ua"] +[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="2_nr7l8"] +[ext_resource type="PackedScene" uid="uid://d2it0xiap3gnt" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.tscn" id="3_72bhh"] +[ext_resource type="Script" uid="uid://b14h380mah4av" path="res://addons/dialogic/Resources/dialogic_style.gd" id="4_r51oo"] + +[sub_resource type="Resource" id="Resource_vjkte"] +script = ExtResource("1_6h8ua") +overrides = { +"canvas_layer": "100.0" +} + +[sub_resource type="Resource" id="Resource_hklma"] +script = ExtResource("1_6h8ua") +scene = ExtResource("2_nr7l8") +overrides = {} + +[sub_resource type="Resource" id="Resource_rv2k1"] +script = ExtResource("1_6h8ua") +scene = ExtResource("3_72bhh") +overrides = { +"box_padding": "Vector2(10, 200)" +} + +[resource] +script = ExtResource("4_r51oo") +name = "speechbubble" +layer_list = Array[String](["10", "11"]) +layer_info = { +"": SubResource("Resource_vjkte"), +"10": SubResource("Resource_hklma"), +"11": SubResource("Resource_rv2k1") +} +base_overrides = {} +layers = Array[ExtResource("1_6h8ua")]([]) +metadata/_latest_layer = "" diff --git a/dialog/yeli_intro_01.dtl b/dialog/yeli_intro_01.dtl new file mode 100644 index 0000000..33a5809 --- /dev/null +++ b/dialog/yeli_intro_01.dtl @@ -0,0 +1,2 @@ +join Yeli center +Yeli (_part_side): Hi Vesna! Nice to see you! diff --git a/dialog/yeli_intro_01.dtl.uid b/dialog/yeli_intro_01.dtl.uid new file mode 100644 index 0000000..260d6f3 --- /dev/null +++ b/dialog/yeli_intro_01.dtl.uid @@ -0,0 +1 @@ +uid://cqxoxlgy7hxh0 diff --git a/prefabs/characters/Yeli.tscn b/prefabs/characters/Yeli.tscn new file mode 100644 index 0000000..015bbf5 --- /dev/null +++ b/prefabs/characters/Yeli.tscn @@ -0,0 +1,206 @@ +[gd_scene load_steps=45 format=3 uid="uid://dfvgp1my5rydh"] + +[ext_resource type="Texture2D" uid="uid://c34012j5ukiuf" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0001.png" id="1_03m0b"] +[ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="1_at1n1"] +[ext_resource type="Script" uid="uid://d0kgxh4ykuv23" path="res://scripts/CSharp/Common/NPC/TalkingCharacter.cs" id="1_hn8at"] +[ext_resource type="Texture2D" uid="uid://cksf38vypfsae" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0002.png" id="2_hn8at"] +[ext_resource type="Texture2D" uid="uid://e8dj27qcpuoo" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0003.png" id="3_ahrat"] +[ext_resource type="Texture2D" uid="uid://c5k63jgxqr0do" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0004.png" id="4_at1n1"] +[ext_resource type="Texture2D" uid="uid://b8lkbpi220b5h" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0005.png" id="5_aqu1t"] +[ext_resource type="Texture2D" uid="uid://bv5bxpx6vf2h0" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0006.png" id="6_pfk7p"] +[ext_resource type="Texture2D" uid="uid://cu277u0ulxww" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0007.png" id="7_55okt"] +[ext_resource type="Texture2D" uid="uid://f2bdvc7v1s4x" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0008.png" id="8_3ebj1"] +[ext_resource type="Texture2D" uid="uid://dn8agfeinv50g" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0009.png" id="9_ho0mu"] +[ext_resource type="Texture2D" uid="uid://bvxlsqarusqjs" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0010.png" id="10_xb64m"] +[ext_resource type="Texture2D" uid="uid://dy1lw4e1ff6gj" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0011.png" id="11_cim3h"] +[ext_resource type="Texture2D" uid="uid://bslu8aow07acc" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0012.png" id="12_njpxl"] +[ext_resource type="Texture2D" uid="uid://csf15c02mvo48" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0013.png" id="13_qbcgo"] +[ext_resource type="Texture2D" uid="uid://dpgvsn4wdbc46" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0014.png" id="14_7n5j4"] +[ext_resource type="Texture2D" uid="uid://l1h0f470dfjp" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0015.png" id="15_6twxa"] +[ext_resource type="Texture2D" uid="uid://da5ri7wid3qgw" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0016.png" id="16_a7v1a"] +[ext_resource type="Texture2D" uid="uid://bndc4f4qfi5s3" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0017.png" id="17_ngji7"] +[ext_resource type="Texture2D" uid="uid://dmm7yf3wk7wv3" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0018.png" id="18_dlhse"] +[ext_resource type="Texture2D" uid="uid://5nca0ckdjkhv" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0019.png" id="19_8wrmw"] +[ext_resource type="Texture2D" uid="uid://bqw8pmbmb2504" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0020.png" id="20_25toi"] +[ext_resource type="Texture2D" uid="uid://dcolf3jo54n07" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0001.png" id="21_ubc5g"] +[ext_resource type="Texture2D" uid="uid://cion2ef7r6h80" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0002.png" id="22_j7omx"] +[ext_resource type="Texture2D" uid="uid://c1jcwqj10ufw6" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0003.png" id="23_eknr7"] +[ext_resource type="Texture2D" uid="uid://cvj3eg6co3ge1" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0004.png" id="24_yewcr"] +[ext_resource type="Texture2D" uid="uid://1nc275blrwvg" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0005.png" id="25_txo6j"] +[ext_resource type="Texture2D" uid="uid://b5whaislh5srj" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0006.png" id="26_eonu8"] +[ext_resource type="Texture2D" uid="uid://dqatmhwwgoxbd" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0007.png" id="27_w1wr1"] +[ext_resource type="Texture2D" uid="uid://0d1ny0j6lgyt" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0008.png" id="28_3p61r"] +[ext_resource type="Texture2D" uid="uid://sjpcvsa7wdvt" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0009.png" id="29_aov8j"] +[ext_resource type="Texture2D" uid="uid://b61ev6xuu3f4m" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0010.png" id="30_2on03"] +[ext_resource type="Texture2D" uid="uid://dr0i8spptnvrl" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0011.png" id="31_8kwes"] +[ext_resource type="Texture2D" uid="uid://df7ucfcd8473u" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0012.png" id="32_nlvl6"] +[ext_resource type="Texture2D" uid="uid://ci2src546hup6" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0013.png" id="33_tp1p7"] +[ext_resource type="Texture2D" uid="uid://xciccbqf0wep" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0014.png" id="34_10bm1"] +[ext_resource type="Texture2D" uid="uid://kboavwsa7gb8" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0015.png" id="35_wkf7p"] +[ext_resource type="Texture2D" uid="uid://dndwh3k3il6wp" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0016.png" id="36_yxo0d"] +[ext_resource type="Texture2D" uid="uid://c77sabci6143j" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0017.png" id="37_1i73a"] +[ext_resource type="Texture2D" uid="uid://d0twp5m3vok3h" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0018.png" id="38_bkdq8"] +[ext_resource type="Texture2D" uid="uid://droj8w1mbm5k3" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0019.png" id="39_vg7xi"] +[ext_resource type="Texture2D" uid="uid://by5vtadhdwwag" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0020.png" id="40_ipyxb"] +[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="42_ahrat"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_f6hss"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_03m0b") +}, { +"duration": 1.0, +"texture": ExtResource("2_hn8at") +}, { +"duration": 1.0, +"texture": ExtResource("3_ahrat") +}, { +"duration": 1.0, +"texture": ExtResource("4_at1n1") +}, { +"duration": 1.0, +"texture": ExtResource("5_aqu1t") +}, { +"duration": 1.0, +"texture": ExtResource("6_pfk7p") +}, { +"duration": 1.0, +"texture": ExtResource("7_55okt") +}, { +"duration": 1.0, +"texture": ExtResource("8_3ebj1") +}, { +"duration": 1.0, +"texture": ExtResource("9_ho0mu") +}, { +"duration": 1.0, +"texture": ExtResource("10_xb64m") +}, { +"duration": 1.0, +"texture": ExtResource("11_cim3h") +}, { +"duration": 1.0, +"texture": ExtResource("12_njpxl") +}, { +"duration": 1.0, +"texture": ExtResource("13_qbcgo") +}, { +"duration": 1.0, +"texture": ExtResource("14_7n5j4") +}, { +"duration": 1.0, +"texture": ExtResource("15_6twxa") +}, { +"duration": 1.0, +"texture": ExtResource("16_a7v1a") +}, { +"duration": 1.0, +"texture": ExtResource("17_ngji7") +}, { +"duration": 1.0, +"texture": ExtResource("18_dlhse") +}, { +"duration": 1.0, +"texture": ExtResource("19_8wrmw") +}, { +"duration": 1.0, +"texture": ExtResource("20_25toi") +}], +"loop": true, +"name": &"idle", +"speed": 15.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("21_ubc5g") +}, { +"duration": 1.0, +"texture": ExtResource("22_j7omx") +}, { +"duration": 1.0, +"texture": ExtResource("23_eknr7") +}, { +"duration": 1.0, +"texture": ExtResource("24_yewcr") +}, { +"duration": 1.0, +"texture": ExtResource("25_txo6j") +}, { +"duration": 1.0, +"texture": ExtResource("26_eonu8") +}, { +"duration": 1.0, +"texture": ExtResource("27_w1wr1") +}, { +"duration": 1.0, +"texture": ExtResource("28_3p61r") +}, { +"duration": 1.0, +"texture": ExtResource("29_aov8j") +}, { +"duration": 1.0, +"texture": ExtResource("30_2on03") +}, { +"duration": 1.0, +"texture": ExtResource("31_8kwes") +}, { +"duration": 1.0, +"texture": ExtResource("32_nlvl6") +}, { +"duration": 1.0, +"texture": ExtResource("33_tp1p7") +}, { +"duration": 1.0, +"texture": ExtResource("34_10bm1") +}, { +"duration": 1.0, +"texture": ExtResource("35_wkf7p") +}, { +"duration": 1.0, +"texture": ExtResource("36_yxo0d") +}, { +"duration": 1.0, +"texture": ExtResource("37_1i73a") +}, { +"duration": 1.0, +"texture": ExtResource("38_bkdq8") +}, { +"duration": 1.0, +"texture": ExtResource("39_vg7xi") +}, { +"duration": 1.0, +"texture": ExtResource("40_ipyxb") +}], +"loop": true, +"name": &"talk", +"speed": 15.0 +}] + +[node name="Yeli" type="Node2D"] +script = ExtResource("1_at1n1") + +[node name="InteractionArea" parent="." instance=ExtResource("42_ahrat")] +scale = Vector2(1.72, 1.72) + +[node name="Label" parent="InteractionArea" index="1"] +visible = true +offset_left = -48.2558 +offset_right = 4.74419 +text = "[E] talk" + +[node name="TalkingControl" type="Node2D" parent="." node_paths=PackedStringArray("_sprite")] +script = ExtResource("1_hn8at") +_sprite = NodePath("AnimatedSprite") +_timelinesToPlay = PackedStringArray("yeli_intro_01") + +[node name="AnimatedSprite" type="AnimatedSprite2D" parent="TalkingControl"] +y_sort_enabled = true +sprite_frames = SubResource("SpriteFrames_f6hss") +animation = &"idle" +frame_progress = 0.437711 + +[connection signal="Interacted" from="InteractionArea" to="TalkingControl" method="ToggleTalking"] +[connection signal="Talking" from="TalkingControl" to="." method="open"] + +[editable path="InteractionArea"] diff --git a/scripts/CSharp/Common/NPC/TalkingCharacter.cs b/scripts/CSharp/Common/NPC/TalkingCharacter.cs new file mode 100644 index 0000000..0b8ea19 --- /dev/null +++ b/scripts/CSharp/Common/NPC/TalkingCharacter.cs @@ -0,0 +1,37 @@ +using Godot; + +namespace Babushka.scripts.CSharp.Common.NPC; + +public partial class TalkingCharacter : Node2D +{ + [Export] private AnimatedSprite2D _sprite; + [Export] private string[] _timelinesToPlay; + + + private bool _isTalking = true; + private int _timelineIndex = 0; + + [Signal] public delegate void TalkingEventHandler(string timelineName); + + public override void _Ready() + { + ToggleTalking(); + } + + public void ToggleTalking() + { + if (_isTalking || _timelineIndex >= _timelinesToPlay.Length) + { + _sprite.Animation = "idle"; + _isTalking = false; + } + else + { + _sprite.Animation = "talk"; + _isTalking = true; + EmitSignal(SignalName.Talking, _timelinesToPlay[_timelineIndex]); + _timelineIndex++; + } + _sprite.Play(); + } +} \ No newline at end of file diff --git a/scripts/CSharp/Common/NPC/TalkingCharacter.cs.uid b/scripts/CSharp/Common/NPC/TalkingCharacter.cs.uid new file mode 100644 index 0000000..cdc4242 --- /dev/null +++ b/scripts/CSharp/Common/NPC/TalkingCharacter.cs.uid @@ -0,0 +1 @@ +uid://d0kgxh4ykuv23