diff --git a/project.godot b/project.godot index e8168f1..c407b19 100644 --- a/project.godot +++ b/project.godot @@ -11,26 +11,15 @@ config_version=5 [application] config/name="Dawn Godot" -run/main_scene="uid://w1q5eoiejmy3" +run/main_scene="uid://b16ysbx7ah03u" config/features=PackedStringArray("4.4", "GL Compatibility") config/icon="res://icon.svg" [autoload] -BATTLE="*res://scripts/Singleton/BattleSystem.gd" -COOKING="*res://scripts/Singleton/CookingSystem.gd" -OVERWORLD="*res://scripts/Singleton/OverworldSystem.gd" -ITEM="*res://scenes/Singletons/Item.tscn" -PAUSE="*res://scripts/Singleton/PauseSystem.gd" -QUEST="*res://scenes/Singletons/Quest.tscn" -SCENE_MANAGER="*res://scripts/Singleton/SceneSystem.gd" -UI="*res://scenes/Singletons/UI.tscn" -VN="*res://scripts/Singleton/VNSystem.gd" -LOAD="*res://scenes/Singletons/Load.tscn" -RECIPE="*res://scenes/Singletons/Recipe.tscn" -LOCALE="*res://scripts/Singleton/LocaleSystem.gd" -ControllerIcons="*res://addons/controller_icons/ControllerIcons.gd" -EVENT="*res://scenes/Singletons/Event.tscn" +PHYSICS="*res://scripts/singletons/GamePhysics.gd" +UI="*res://scenes/singletons/UI.tscn" +PAUSE="*res://scripts/singletons/Pause.gd" [debug] @@ -41,6 +30,8 @@ gdscript/warnings/shadowed_variable=0 window/size/viewport_width=480 window/size/viewport_height=270 +window/size/window_width_override=960 +window/size/window_height_override=540 window/stretch/mode="viewport" window/stretch/scale_mode="integer" @@ -64,7 +55,7 @@ theme/custom_font="uid://ck4rsg0nvvxtq" [input] -left={ +move_left={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) @@ -72,7 +63,7 @@ left={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":13,"pressure":0.0,"pressed":false,"script":null) ] } -right={ +move_right={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) @@ -80,7 +71,7 @@ right={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":false,"script":null) ] } -up={ +move_forward={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) @@ -88,7 +79,7 @@ up={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":11,"pressure":0.0,"pressed":false,"script":null) ] } -down={ +move_back={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) diff --git a/scenes/Entities/ItemOnGround.tscn b/scenes/Entities/ItemOnGround.tscn deleted file mode 100644 index cc2a1d7..0000000 --- a/scenes/Entities/ItemOnGround.tscn +++ /dev/null @@ -1,41 +0,0 @@ -[gd_scene load_steps=9 format=3 uid="uid://bes5p6ckw6d58"] - -[ext_resource type="Script" uid="uid://d2jqsiapy07ii" path="res://scripts/Entity/ItemOnGround.gd" id="1_pnyp6"] -[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="2_crfvs"] -[ext_resource type="Script" uid="uid://03dqknw7v4mr" path="res://scripts/Entity/Component/EntityInteractable.gd" id="3_7clu1"] -[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="4_w0eam"] -[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="5_5uma8"] - -[sub_resource type="BoxShape3D" id="BoxShape3D_cpa1u"] - -[sub_resource type="QuadMesh" id="QuadMesh_dyaax"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_fegux"] -render_priority = 0 -shader = ExtResource("4_w0eam") -shader_parameter/npcTexture = ExtResource("5_5uma8") -shader_parameter/color = Color(0.77816, 0.965494, 0.746061, 1) -shader_parameter/frame = 0 -shader_parameter/direction = 2 - -[node name="ItemOnGround" type="StaticBody3D"] -collision_layer = 2 -collision_mask = 258 -script = ExtResource("1_pnyp6") - -[node name="Entity" type="Node" parent="."] -script = ExtResource("2_crfvs") -metadata/_custom_type_script = "uid://dtjjqp2atjyhr" - -[node name="EntityInteractable" type="Node" parent="Entity" node_paths=PackedStringArray("entity")] -script = ExtResource("3_7clu1") -entity = NodePath("..") -metadata/_custom_type_script = "uid://03dqknw7v4mr" - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("BoxShape3D_cpa1u") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0, 0, 0) -mesh = SubResource("QuadMesh_dyaax") -surface_material_override/0 = SubResource("ShaderMaterial_fegux") diff --git a/scenes/Entities/Rosa.tscn b/scenes/Entities/Rosa.tscn deleted file mode 100644 index 01436e5..0000000 --- a/scenes/Entities/Rosa.tscn +++ /dev/null @@ -1,71 +0,0 @@ -[gd_scene load_steps=12 format=3 uid="uid://yhtpoum3eek7"] - -[ext_resource type="Script" uid="uid://ixwikdguyhf0" path="res://scripts/Entity/Rosa.gd" id="1_r5ufg"] -[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="1_rvn3n"] -[ext_resource type="Script" uid="uid://jd50n00bo05y" path="res://scripts/Entity/RosaCamera.gd" id="2_tr66j"] -[ext_resource type="Script" uid="uid://cjfcpi7sxentf" path="res://scripts/Entity/Component/EntityDirection.gd" id="2_vcxxc"] -[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="3_j5vis"] -[ext_resource type="Script" uid="uid://c5nfs0m6ua4eb" path="res://scripts/Entity/Component/EntityMovement.gd" id="4_7s3uq"] -[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="4_rvn3n"] -[ext_resource type="Script" uid="uid://dfh2rh8idx267" path="res://scripts/Entity/Component/EntityInteractor.gd" id="5_ug24t"] - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ls7r8"] -radius = 0.437175 -height = 0.945346 - -[sub_resource type="QuadMesh" id="QuadMesh_dyaax"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_fegux"] -render_priority = 0 -shader = ExtResource("3_j5vis") -shader_parameter/npcTexture = ExtResource("4_rvn3n") -shader_parameter/color = Color(1, 1, 1, 1) -shader_parameter/frame = 0 -shader_parameter/direction = 2 - -[node name="Rosa" type="CharacterBody3D"] -collision_layer = 2 -collision_mask = 258 -script = ExtResource("1_r5ufg") -metadata/_custom_type_script = "uid://ixwikdguyhf0" - -[node name="Entity" type="Node" parent="."] -script = ExtResource("1_rvn3n") -metadata/_custom_type_script = "uid://dtjjqp2atjyhr" - -[node name="EntityDirection" type="Node" parent="Entity" node_paths=PackedStringArray("meshInstance", "characterBody")] -script = ExtResource("2_vcxxc") -meshInstance = NodePath("../../MeshInstance3D") -direction = 2 -characterBody = NodePath("../..") -metadata/_custom_type_script = "uid://cjfcpi7sxentf" - -[node name="EntityMoving" type="Node" parent="Entity" node_paths=PackedStringArray("characterBody", "entity", "entityDirection")] -script = ExtResource("4_7s3uq") -characterBody = NodePath("../..") -entity = NodePath("..") -entityDirection = NodePath("../EntityDirection") -movementType = 0 - -[node name="EntityInteractor" type="Node" parent="Entity" node_paths=PackedStringArray("entityDirection", "characterBody", "entity")] -script = ExtResource("5_ug24t") -interactorType = 0 -entityDirection = NodePath("../EntityDirection") -characterBody = NodePath("../..") -entity = NodePath("..") -metadata/_custom_type_script = "uid://dfh2rh8idx267" - -[node name="Rosa Camera" type="Camera3D" parent="." node_paths=PackedStringArray("follow")] -transform = Transform3D(1, 0, 0, 0, 0.130388, 0.991463, 0, -0.991463, 0.130388, 0, 3.14994, 0.404846) -current = true -fov = 30.0 -script = ExtResource("2_tr66j") -follow = NodePath("..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("CapsuleShape3D_ls7r8") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0, 0, 0) -mesh = SubResource("QuadMesh_dyaax") -surface_material_override/0 = SubResource("ShaderMaterial_fegux") diff --git a/scenes/Entities/Sign.tscn b/scenes/Entities/Sign.tscn deleted file mode 100644 index 890ba67..0000000 --- a/scenes/Entities/Sign.tscn +++ /dev/null @@ -1,42 +0,0 @@ -[gd_scene load_steps=9 format=3 uid="uid://bkj630bhmnvsi"] - -[ext_resource type="Script" uid="uid://bitykguiignfu" path="res://scripts/Entity/Sign.gd" id="1_cpa1u"] -[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="2_obj4d"] -[ext_resource type="Script" uid="uid://03dqknw7v4mr" path="res://scripts/Entity/Component/EntityInteractable.gd" id="3_cpa1u"] -[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="7_vqvna"] -[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="8_on2eh"] - -[sub_resource type="BoxShape3D" id="BoxShape3D_cpa1u"] - -[sub_resource type="QuadMesh" id="QuadMesh_dyaax"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_fegux"] -render_priority = 0 -shader = ExtResource("7_vqvna") -shader_parameter/npcTexture = ExtResource("8_on2eh") -shader_parameter/color = Color(1, 1, 0, 1) -shader_parameter/frame = 0 -shader_parameter/direction = 2 - -[node name="Sign" type="StaticBody3D"] -collision_layer = 2 -collision_mask = 258 -script = ExtResource("1_cpa1u") -metadata/_custom_type_script = "uid://bitykguiignfu" - -[node name="Entity" type="Node" parent="."] -script = ExtResource("2_obj4d") -metadata/_custom_type_script = "uid://dtjjqp2atjyhr" - -[node name="EntityInteractable" type="Node" parent="Entity" node_paths=PackedStringArray("entity")] -script = ExtResource("3_cpa1u") -entity = NodePath("..") -metadata/_custom_type_script = "uid://03dqknw7v4mr" - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("BoxShape3D_cpa1u") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0, 0, 0) -mesh = SubResource("QuadMesh_dyaax") -surface_material_override/0 = SubResource("ShaderMaterial_fegux") diff --git a/scenes/Entities/TestNPC.tscn b/scenes/Entities/TestNPC.tscn deleted file mode 100644 index 341ccbe..0000000 --- a/scenes/Entities/TestNPC.tscn +++ /dev/null @@ -1,60 +0,0 @@ -[gd_scene load_steps=11 format=3 uid="uid://dr4b2pmsknuhc"] - -[ext_resource type="Script" uid="uid://d23qg1ovkbxst" path="res://scripts/Entity/BasicNPCEntity.gd" id="1_1muh7"] -[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="1_xgcv1"] -[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="2_ehu3x"] -[ext_resource type="Script" uid="uid://cjfcpi7sxentf" path="res://scripts/Entity/Component/EntityDirection.gd" id="3_gyi1p"] -[ext_resource type="Script" uid="uid://c5nfs0m6ua4eb" path="res://scripts/Entity/Component/EntityMovement.gd" id="4_3wesq"] -[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="4_vo0ku"] -[ext_resource type="Script" uid="uid://03dqknw7v4mr" path="res://scripts/Entity/Component/EntityInteractable.gd" id="5_gyi1p"] - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_dw1sy"] -radius = 0.420979 -height = 0.919425 - -[sub_resource type="QuadMesh" id="QuadMesh_xhkdv"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_l4utx"] -render_priority = 0 -shader = ExtResource("1_xgcv1") -shader_parameter/npcTexture = ExtResource("4_vo0ku") -shader_parameter/color = Color(0, 0.563816, 0, 1) -shader_parameter/frame = 0 -shader_parameter/direction = 0 - -[node name="TestNpc" type="CharacterBody3D"] -collision_layer = 2 -collision_mask = 258 -script = ExtResource("1_1muh7") -metadata/_custom_type_script = "uid://d23qg1ovkbxst" - -[node name="Entity" type="Node" parent="."] -script = ExtResource("2_ehu3x") -metadata/_custom_type_script = "uid://dtjjqp2atjyhr" - -[node name="EntityDirection" type="Node" parent="Entity" node_paths=PackedStringArray("meshInstance", "characterBody")] -script = ExtResource("3_gyi1p") -meshInstance = NodePath("../../MeshInstance3D") -characterBody = NodePath("../..") -metadata/_custom_type_script = "uid://cjfcpi7sxentf" - -[node name="EntityMoving" type="Node" parent="Entity" node_paths=PackedStringArray("characterBody", "entity", "entityDirection")] -script = ExtResource("4_3wesq") -characterBody = NodePath("../..") -entity = NodePath("..") -entityDirection = NodePath("../EntityDirection") -movementType = 2 - -[node name="EntityInteractable" type="Node" parent="Entity" node_paths=PackedStringArray("entityDirection", "entity")] -script = ExtResource("5_gyi1p") -entityDirection = NodePath("../EntityDirection") -entity = NodePath("..") -metadata/_custom_type_script = "uid://03dqknw7v4mr" - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("CapsuleShape3D_dw1sy") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0.00989294, 0, 0) -mesh = SubResource("QuadMesh_xhkdv") -surface_material_override/0 = SubResource("ShaderMaterial_l4utx") diff --git a/scenes/MainMenu.tscn b/scenes/MainMenu.tscn deleted file mode 100644 index 541c78a..0000000 --- a/scenes/MainMenu.tscn +++ /dev/null @@ -1,35 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://w1q5eoiejmy3"] - -[ext_resource type="Script" uid="uid://cak4lch21nq30" path="res://scripts/Scene/MainMenuScene.gd" id="1_yqorp"] -[ext_resource type="Script" uid="uid://cq6bvma0kk6tg" path="res://scripts/UI/AdvancedRichText.gd" id="2_0ykhv"] - -[node name="MainMenu" type="Node"] -script = ExtResource("1_yqorp") - -[node name="Control" type="Control" parent="."] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="Label" type="RichTextLabel" parent="Control"] -auto_translate_mode = 2 -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -133.5 -offset_top = -37.5 -offset_right = 133.5 -offset_bottom = 37.5 -grow_horizontal = 2 -grow_vertical = 2 -bbcode_enabled = true -text = "main_menu.label" -horizontal_alignment = 1 -script = ExtResource("2_0ykhv") -advancedText = "main_menu.label" diff --git a/scenes/Maps/TestMap/TestMap.tscn b/scenes/Maps/TestMap/TestMap.tscn deleted file mode 100644 index afd36ba..0000000 --- a/scenes/Maps/TestMap/TestMap.tscn +++ /dev/null @@ -1,156 +0,0 @@ -[gd_scene load_steps=17 format=3 uid="uid://dx6fv8n4jl5ku"] - -[ext_resource type="PackedScene" uid="uid://yhtpoum3eek7" path="res://scenes/Entities/Rosa.tscn" id="1_7b7hx"] -[ext_resource type="Script" uid="uid://c37crdel0m5mw" path="res://scripts/Map/Map.gd" id="1_ru75d"] -[ext_resource type="PackedScene" uid="uid://dr4b2pmsknuhc" path="res://scenes/Entities/TestNPC.tscn" id="2_cg1ph"] -[ext_resource type="PackedScene" uid="uid://lh713g04d3bg" path="res://scenes/Maps/TestMap/TestMapGround.tscn" id="3_gxq5o"] -[ext_resource type="PackedScene" uid="uid://boj5o4fx41rv8" path="res://scenes/Maps/TestMap/TestMapBuilding.tscn" id="4_brp0k"] -[ext_resource type="PackedScene" uid="uid://bes5p6ckw6d58" path="res://scenes/Entities/ItemOnGround.tscn" id="4_ejcqv"] -[ext_resource type="Script" uid="uid://tkfc88q8m86f" path="res://scripts/Event/EventConversation.gd" id="5_cg1ph"] -[ext_resource type="Script" uid="uid://y7ckj1tn5cro" path="res://scripts/Event/EventTextbox.gd" id="6_gxq5o"] -[ext_resource type="Script" uid="uid://c4d7nithqnx5y" path="res://scripts/Event/Quest/EventStartQuest.gd" id="7_brp0k"] -[ext_resource type="PackedScene" uid="uid://bkj630bhmnvsi" path="res://scenes/Entities/Sign.tscn" id="9_xfqoe"] -[ext_resource type="Script" uid="uid://b41umpbgqfuc2" path="res://scripts/Event/Item/EventGetItem.gd" id="10_avybc"] -[ext_resource type="Script" uid="uid://0ev1l0bf85gj" path="res://scripts/Event/Quest/EventIfQuest.gd" id="10_i48p6"] -[ext_resource type="Script" uid="uid://cs7voh47aoca8" path="res://scripts/Event/EventTrigger.gd" id="13_60ixl"] - -[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1h75"] -sky_horizon_color = Color(0.59625, 0.6135, 0.6375, 1) -sky_energy_multiplier = 0.0 -ground_bottom_color = Color(0, 0, 0, 1) -ground_horizon_color = Color(0.59625, 0.6135, 0.6375, 1) - -[sub_resource type="Sky" id="Sky_weucl"] -sky_material = SubResource("ProceduralSkyMaterial_e1h75") - -[sub_resource type="Environment" id="Environment_nyivo"] -sky = SubResource("Sky_weucl") -ambient_light_source = 1 - -[node name="TestMap" type="Node3D"] -script = ExtResource("1_ru75d") -title = "map.test_map.title" - -[node name="Entities" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19857, 0.684572, 0.968477) - -[node name="Rosa" parent="Entities" instance=ExtResource("1_7b7hx")] - -[node name="Green" parent="Entities" node_paths=PackedStringArray("interactEvent") instance=ExtResource("2_cg1ph")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.88604, -0.224994, -1.36774) -interactEvent = NodePath("../../Events/TestConversation") - -[node name="Sign" parent="Entities" node_paths=PackedStringArray("interactEvent") instance=ExtResource("9_xfqoe")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.56382, -0.547748, 1.61289) -interactEvent = NodePath("../../Events/TestConversation") - -[node name="Onion0" parent="Entities" instance=ExtResource("4_ejcqv")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.546944, -0.547748, -3.46628) -itemType = 2 -quantity = 2 - -[node name="Onion1" parent="Entities" instance=ExtResource("4_ejcqv")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.25922, -0.547748, -4.61426) -itemType = 2 -quantity = 2 - -[node name="Onion2" parent="Entities" instance=ExtResource("4_ejcqv")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.83853, -0.547748, -3.29584) -itemType = 2 -quantity = 2 - -[node name="SweetPotato0" parent="Entities" instance=ExtResource("4_ejcqv")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.31019, -0.547748, 3.74619) -itemType = 3 - -[node name="SweetPotato1" parent="Entities" instance=ExtResource("4_ejcqv")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0143311, -0.547748, 4.4158) -itemType = 3 - -[node name="SweetPotato2" parent="Entities" instance=ExtResource("4_ejcqv")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.05915, -0.547748, 5.04958) -itemType = 3 - -[node name="Map" type="Node3D" parent="."] -metadata/_edit_lock_ = true - -[node name="Ground" parent="Map" instance=ExtResource("3_gxq5o")] - -[node name="Building2" parent="Map" instance=ExtResource("4_brp0k")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.13514, 2.62692, -0.0984068) -collision_layer = 256 -collision_mask = 2 - -[node name="Building" parent="Map" instance=ExtResource("4_brp0k")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.92766, 2.37929, -4.38178) -collision_layer = 256 -collision_mask = 2 - -[node name="WorldEnvironment" type="WorldEnvironment" parent="Map"] -environment = SubResource("Environment_nyivo") - -[node name="OmniLight3D" type="OmniLight3D" parent="Map"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.20244, 3.80554) -light_energy = 3.375 -shadow_bias = 0.0 -shadow_normal_bias = 0.9 -omni_range = 281.646 - -[node name="Events" type="Node" parent="."] - -[node name="TestConversation" type="Node" parent="Events"] -script = ExtResource("5_cg1ph") - -[node name="After Quest Started" type="Node" parent="Events/TestConversation"] -script = ExtResource("10_i48p6") -type = 6 -metadata/_custom_type_script = "uid://0ev1l0bf85gj" - -[node name="EventIfQuest" type="Node" parent="Events/TestConversation/After Quest Started"] -script = ExtResource("10_i48p6") - -[node name="Text 2" type="Node" parent="Events/TestConversation/After Quest Started/EventIfQuest"] -script = ExtResource("6_gxq5o") -text = "You are reading the words fo god" - -[node name="EventIfQuest2" type="Node" parent="Events/TestConversation/After Quest Started"] -script = ExtResource("10_i48p6") -type = 2 - -[node name="Text 2" type="Node" parent="Events/TestConversation/After Quest Started/EventIfQuest2"] -script = ExtResource("6_gxq5o") -text = "map.test_map.event.gather_onion.text2" - -[node name="Before Quest Started" type="Node" parent="Events/TestConversation"] -script = ExtResource("10_i48p6") -type = 7 -metadata/_custom_type_script = "uid://0ev1l0bf85gj" - -[node name="Text 0" type="Node" parent="Events/TestConversation/Before Quest Started"] -script = ExtResource("6_gxq5o") -text = "map.test_map.event.gather_onion.text0" - -[node name="Quest" type="Node" parent="Events/TestConversation/Before Quest Started"] -script = ExtResource("7_brp0k") -metadata/_custom_type_script = "uid://c4d7nithqnx5y" - -[node name="Text 1" type="Node" parent="Events/TestConversation/Before Quest Started"] -script = ExtResource("6_gxq5o") -text = "map.test_map.event.gather_onion.text1" - -[node name="Get Item" type="Node" parent="Events/TestConversation/Before Quest Started"] -script = ExtResource("10_avybc") -getType = 1 -metadata/_custom_type_script = "uid://b41umpbgqfuc2" - -[node name="EventTrigger" type="Node" parent="Events"] -script = ExtResource("13_60ixl") - -[node name="EventIf" type="Node" parent="Events/EventTrigger"] -script = ExtResource("10_i48p6") -type = 6 -metadata/_custom_type_script = "uid://0ev1l0bf85gj" - -[node name="Text 0" type="Node" parent="Events/EventTrigger/EventIf"] -script = ExtResource("6_gxq5o") -text = "Triggered" diff --git a/scenes/Maps/TestMap/TestMapBuilding.tscn b/scenes/Maps/TestMap/TestMapBuilding.tscn deleted file mode 100644 index 160306e..0000000 --- a/scenes/Maps/TestMap/TestMapBuilding.tscn +++ /dev/null @@ -1,15 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://boj5o4fx41rv8"] - -[sub_resource type="BoxMesh" id="BoxMesh_22rim"] -size = Vector3(5, 5, 5) - -[sub_resource type="BoxShape3D" id="BoxShape3D_jh0ui"] -size = Vector3(5, 5, 5) - -[node name="Building" type="StaticBody3D"] - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("BoxMesh_22rim") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("BoxShape3D_jh0ui") diff --git a/scenes/Maps/TestMap/TestMapGround.tscn b/scenes/Maps/TestMap/TestMapGround.tscn deleted file mode 100644 index 3821439..0000000 --- a/scenes/Maps/TestMap/TestMapGround.tscn +++ /dev/null @@ -1,31 +0,0 @@ -[gd_scene load_steps=6 format=3 uid="uid://lh713g04d3bg"] - -[ext_resource type="Shader" uid="uid://67hsyo0qqlfm" path="res://shaders/Map Shader.gdshader" id="1_knx2j"] -[ext_resource type="Texture2D" uid="uid://cu1hvpqmqn31n" path="res://icon.svg" id="2_3bnhs"] - -[sub_resource type="BoxMesh" id="BoxMesh_s8iqe"] -lightmap_size_hint = Vector2i(504, 257) -uv2_padding = 0.0 -size = Vector3(50, 0.1, 50) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_s8iqe"] -render_priority = 0 -shader = ExtResource("1_knx2j") -shader_parameter/tileset = ExtResource("2_3bnhs") - -[sub_resource type="BoxShape3D" id="BoxShape3D_s8iqe"] -size = Vector3(50, 0.1, 50) - -[node name="Ground" type="StaticBody3D"] -collision_layer = 256 -collision_mask = 2 -metadata/_edit_lock_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("BoxMesh_s8iqe") -surface_material_override/0 = SubResource("ShaderMaterial_s8iqe") -metadata/_edit_lock_ = true - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("BoxShape3D_s8iqe") -metadata/_edit_lock_ = true diff --git a/scenes/Overworld.tscn b/scenes/Overworld.tscn deleted file mode 100644 index 96e6786..0000000 --- a/scenes/Overworld.tscn +++ /dev/null @@ -1,8 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://tmbx2kit0jyq"] - -[ext_resource type="Script" uid="uid://pcncoc6wum4q" path="res://scripts/Scene/OverworldScene.gd" id="1_rfscu"] - -[node name="Overworld" type="Node3D"] -script = ExtResource("1_rfscu") - -[node name="Map" type="Node3D" parent="."] diff --git a/scenes/Singletons/Event.tscn b/scenes/Singletons/Event.tscn deleted file mode 100644 index e1c074c..0000000 --- a/scenes/Singletons/Event.tscn +++ /dev/null @@ -1,9 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://dqde5pj14u71"] - -[ext_resource type="Script" uid="uid://dy8gbmwddma3b" path="res://scripts/Singleton/EventSystem.gd" id="1_pu13l"] - -[node name="EventSystem" type="Node"] -script = ExtResource("1_pu13l") -metadata/_custom_type_script = "uid://dy8gbmwddma3b" - -[node name="StartedEvents" type="Node" parent="."] diff --git a/scenes/Singletons/Item.tscn b/scenes/Singletons/Item.tscn deleted file mode 100644 index ff62d52..0000000 --- a/scenes/Singletons/Item.tscn +++ /dev/null @@ -1,44 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://mfxht4d8pvjj"] - -[ext_resource type="Script" uid="uid://bc4c4eqfrnegb" path="res://scripts/Singleton/ItemSystem.gd" id="1_sv510"] -[ext_resource type="Script" uid="uid://dipe47ljyvycv" path="res://scripts/Item/ingredients/ItemOnion.gd" id="2_w2ka5"] -[ext_resource type="Script" uid="uid://b6v2o563casay" path="res://scripts/Item/medicine/ItemPotion.gd" id="3_q4yin"] -[ext_resource type="Script" uid="uid://c6t5tprnd23t0" path="res://scripts/Item/Item.gd" id="3_v1lpn"] - -[node name="Item" type="Node"] -script = ExtResource("1_sv510") - -[node name="Ingredients" type="Node" parent="."] - -[node name="Onion" type="Node" parent="Ingredients"] -script = ExtResource("2_w2ka5") -title = "item.onion.title" -description_text = "item.onion.description" -type = 2 -metadata/_custom_type_script = "uid://b6v2o563casay" - -[node name="Item" type="Node" parent="Ingredients"] -script = ExtResource("3_v1lpn") -title = "item.sweet_potato.name" -description_text = "item.sweet_potato.description" -type = 3 -metadata/_custom_type_script = "uid://c6t5tprnd23t0" - -[node name="Medicine" type="Node" parent="."] - -[node name="Item" type="Node" parent="Medicine"] -script = ExtResource("3_q4yin") -title = "item.potion.name" -description_text = "item.potion.description" -category = 0 -metadata/_custom_type_script = "uid://b6v2o563casay" - -[node name="Food" type="Node" parent="."] - -[node name="Item" type="Node" parent="Food"] -script = ExtResource("3_v1lpn") -title = "item.baked_sweet_potato.name" -description_text = "item.baked_sweet_potato.description" -type = 4 -category = 3 -metadata/_custom_type_script = "uid://c6t5tprnd23t0" diff --git a/scenes/Singletons/Load.tscn b/scenes/Singletons/Load.tscn deleted file mode 100644 index 17795a8..0000000 --- a/scenes/Singletons/Load.tscn +++ /dev/null @@ -1,3 +0,0 @@ -[gd_scene format=3 uid="uid://dr2o6ymwbwxm1"] - -[node name="Load" type="Node"] diff --git a/scenes/Singletons/Quest.tscn b/scenes/Singletons/Quest.tscn deleted file mode 100644 index 6af5059..0000000 --- a/scenes/Singletons/Quest.tscn +++ /dev/null @@ -1,23 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://cs3kmmd0rfm8w"] - -[ext_resource type="Script" uid="uid://dnlg1e8une55l" path="res://scripts/Singleton/QuestSystem.gd" id="1_v2h4q"] -[ext_resource type="Script" uid="uid://dn0kxbe85n40f" path="res://scripts/Quest/Quest.gd" id="2_n4ii1"] -[ext_resource type="Script" uid="uid://de1ao4huhy0hm" path="res://scripts/Quest/QuestObjective.gd" id="3_l8p7p"] - -[node name="QuestSystem" type="Node"] -script = ExtResource("1_v2h4q") - -[node name="Quests" type="Node" parent="."] - -[node name="Test Quest" type="Node" parent="Quests"] -script = ExtResource("2_n4ii1") -title = "quest.test_quest.title" -metadata/_custom_type_script = "uid://dn0kxbe85n40f" - -[node name="Find Sweet Potato" type="Node" parent="Quests/Test Quest"] -script = ExtResource("3_l8p7p") -title = "quest.test_quest.sweet_potato.title" -description = "quest.test_quest.sweet_potato.description" -itemType = 3 -quantity = 2 -metadata/_custom_type_script = "uid://de1ao4huhy0hm" diff --git a/scenes/Singletons/Recipe.tscn b/scenes/Singletons/Recipe.tscn deleted file mode 100644 index 0cf2646..0000000 --- a/scenes/Singletons/Recipe.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=6 format=3 uid="uid://1l0tymk8cfxu"] - -[ext_resource type="Script" uid="uid://b83k8ksk1dpu2" path="res://scripts/Singleton/RecipeSystem.gd" id="1_o4nv4"] -[ext_resource type="Script" uid="uid://dipvg4uwjv6p2" path="res://scripts/Cooking/Recipe.gd" id="2_f5akq"] -[ext_resource type="Script" uid="uid://c26aptwsjs044" path="res://scripts/Item/ItemResource.gd" id="3_b8y03"] - -[sub_resource type="Resource" id="Resource_3dxl6"] -script = ExtResource("3_b8y03") -itemType = 3 -quantity = 1 -metadata/_custom_type_script = "uid://c26aptwsjs044" - -[sub_resource type="Resource" id="Resource_b8y03"] -script = ExtResource("3_b8y03") -itemType = 4 -quantity = 1 -metadata/_custom_type_script = "uid://c26aptwsjs044" - -[node name="RecipeSystem" type="Node"] -script = ExtResource("1_o4nv4") - -[node name="Baked Sweet Potato" type="Node" parent="."] -script = ExtResource("2_f5akq") -title = "recipe.baked_sweet_potato.title" -ingredients = Array[ExtResource("3_b8y03")]([SubResource("Resource_3dxl6")]) -outputs = Array[ExtResource("3_b8y03")]([SubResource("Resource_b8y03")]) -metadata/_custom_type_script = "uid://dipvg4uwjv6p2" diff --git a/scenes/Singletons/UI.tscn b/scenes/Singletons/UI.tscn deleted file mode 100644 index 2631efa..0000000 --- a/scenes/Singletons/UI.tscn +++ /dev/null @@ -1,45 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://b5bwpsh0gcicf"] - -[ext_resource type="Script" uid="uid://kvdgrmutu6hl" path="res://scripts/Singleton/UISystem.gd" id="1_g3au4"] -[ext_resource type="PackedScene" uid="uid://verg13jtqwvh" path="res://scenes/UI/DebugMenu.tscn" id="2_is0g4"] -[ext_resource type="PackedScene" uid="uid://bfioi52hjn2kf" path="res://scenes/UI/QuestMenu.tscn" id="2_mpokx"] -[ext_resource type="PackedScene" uid="uid://bkx3l0kckf4a8" path="res://scenes/UI/VNTextbox.tscn" id="3_btpxp"] -[ext_resource type="PackedScene" uid="uid://dl8iqhrpsplmk" path="res://scenes/UI/Inventory/FullInventoryMenu.tscn" id="5_6dyff"] -[ext_resource type="PackedScene" uid="uid://b6s1xdcfcp0xx" path="res://scenes/UI/EventFlagMenu.tscn" id="5_12prj"] - -[node name="UI" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -script = ExtResource("1_g3au4") - -[node name="QuestMenu" parent="." instance=ExtResource("2_mpokx")] -visible = false -layout_mode = 1 - -[node name="FullInventory" parent="." instance=ExtResource("5_6dyff")] -visible = false -layout_mode = 2 -anchors_preset = 0 - -[node name="EventFlagMenu" parent="." instance=ExtResource("5_12prj")] -layout_mode = 1 - -[node name="VNTextbox" parent="." instance=ExtResource("3_btpxp")] -visible = false -layout_mode = 1 - -[node name="DebugMenu" parent="." instance=ExtResource("2_is0g4")] -visible = false -layout_mode = 0 -anchors_preset = 0 -anchor_right = 0.0 -anchor_bottom = 0.0 -offset_right = 207.0 -offset_bottom = 206.0 -grow_horizontal = 1 -grow_vertical = 1 diff --git a/scenes/Singletons/barrel.mtl b/scenes/Singletons/barrel.mtl deleted file mode 100644 index 832f740..0000000 --- a/scenes/Singletons/barrel.mtl +++ /dev/null @@ -1,8 +0,0 @@ -# Material for Barrel -newmtl BarrelTexture -Ka 1.000 1.000 1.000 -Kd 1.000 1.000 1.000 -Ks 0.000 0.000 0.000 -d 1.0 -illum 1 -map_Kd barrel.png \ No newline at end of file diff --git a/scenes/TestScene.tscn b/scenes/TestScene.tscn new file mode 100644 index 0000000..0ec857f --- /dev/null +++ b/scenes/TestScene.tscn @@ -0,0 +1,71 @@ +[gd_scene load_steps=11 format=3 uid="uid://b16ysbx7ah03u"] + +[ext_resource type="PackedScene" uid="uid://d3rtd0ln7l2gr" path="res://scenes/maps/tundra/MapTundra.tscn" id="1_2gju5"] +[ext_resource type="PackedScene" uid="uid://2ch34sio36nv" path="res://scenes/entities/Player.tscn" id="2_rlkm5"] +[ext_resource type="Script" uid="uid://csb0i132lcu0w" path="res://scripts/entities/MapCamera.gd" id="3_n77mx"] +[ext_resource type="PackedScene" uid="uid://bng2mc7fu5aik" path="res://scenes/entities/NPC.tscn" id="4_nb1wl"] +[ext_resource type="Script" uid="uid://chxpes3546yoj" path="res://scripts/cutscene/Cutscene.gd" id="5_m5dm6"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_n77mx"] + +[sub_resource type="Sky" id="Sky_nb1wl"] +sky_material = SubResource("ProceduralSkyMaterial_n77mx") + +[sub_resource type="Environment" id="Environment_m5dm6"] +background_mode = 2 +sky = SubResource("Sky_nb1wl") +ambient_light_source = 3 + +[sub_resource type="Curve3D" id="Curve3D_n77mx"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -11.0524, 3.4238, 4.18537, -19.268, 11.502, 10.843, 2.59274, -0.402428, -8.58782, 16.504, 3.012, 2.882), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="Curve3D" id="Curve3D_nb1wl"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -12.26, 1.86, -3.89, 0, 0, 0, 0, 0, 0, 19.103, 1.11, -3.531), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[node name="TestScene" type="Node3D"] + +[node name="MapTundra" parent="." instance=ExtResource("1_2gju5")] + +[node name="Player" parent="." instance=ExtResource("2_rlkm5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.06402, 1.54702, -2.35884) + +[node name="NPC" parent="." instance=ExtResource("4_nb1wl")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.20455, 1.94676, -3.51349) +interactType = 1 +interactTexts = Array[String](["Hello interact 1", "test interact 2"]) + +[node name="Camera3D" type="Camera3D" parent="." node_paths=PackedStringArray("targetFollow", "pathFollow", "pathMap")] +transform = Transform3D(0.996991, 0.0418507, -0.0652558, 0, 0.841762, 0.539849, 0.0775229, -0.538225, 0.839228, 1.25757, 8.21861, 8.01254) +fov = 57.5 +script = ExtResource("3_n77mx") +targetFollow = NodePath("../Player") +pathFollow = NodePath("../PathCamera/PathFollow3D") +pathMap = NodePath("../PathWorld") +metadata/_custom_type_script = "uid://csb0i132lcu0w" + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_m5dm6") + +[node name="PathCamera" type="Path3D" parent="."] +curve = SubResource("Curve3D_n77mx") + +[node name="PathFollow3D" type="PathFollow3D" parent="PathCamera"] +transform = Transform3D(0.0672435, 0.0374997, -0.996973, -0.000525827, 0.999215, 0.0375501, 0.99767, -0.00200086, 0.0672163, 1.25757, 8.21861, 8.01254) +progress = 14.4593 +loop = false + +[node name="PathWorld" type="Path3D" parent="."] +curve = SubResource("Curve3D_nb1wl") + +[node name="Cutscenes" type="Node" parent="."] + +[node name="TestCutscene" type="Node" parent="Cutscenes"] +script = ExtResource("5_m5dm6") diff --git a/scenes/UI/DebugMenu.tscn b/scenes/UI/DebugMenu.tscn deleted file mode 100644 index 66288dd..0000000 --- a/scenes/UI/DebugMenu.tscn +++ /dev/null @@ -1,64 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://verg13jtqwvh"] - -[ext_resource type="Script" uid="uid://bn2kdjf586e5p" path="res://scripts/UI/DebugMenu.gd" id="1_pcsq6"] - -[node name="DebugMenu" type="VBoxContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_pcsq6") - -[node name="MainMenu" type="Button" parent="."] -layout_mode = 2 -text = "ui.debug_menu.main_menu" - -[node name="OverworldOption" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_vertical = 0 - -[node name="Overworld" type="Button" parent="OverworldOption"] -layout_mode = 2 -text = "ui.debug_menu.overworld" - -[node name="MapDropdown" type="OptionButton" parent="OverworldOption"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="Quest" type="Button" parent="."] -layout_mode = 2 -text = "ui.debug_menu.quest" - -[node name="Inventory" type="Button" parent="."] -layout_mode = 2 -text = "ui.debug_menu.inventory" - -[node name="Event" type="Button" parent="."] -layout_mode = 2 -text = "ui.debug_menu.event" - -[node name="Cutscene" type="Button" parent="."] -layout_mode = 2 -text = "ui.debug_menu.cutscene" - -[node name="Cooking" type="Button" parent="."] -layout_mode = 2 -text = "ui.debug_menu.cooking" - -[node name="Battle" type="Button" parent="."] -layout_mode = 2 -disabled = true -text = "ui.debug_menu.battle" - -[node name="LanguageOption" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_vertical = 0 - -[node name="LangDropdown" type="OptionButton" parent="LanguageOption"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="RegDropdown" type="OptionButton" parent="LanguageOption"] -layout_mode = 2 -size_flags_horizontal = 3 diff --git a/scenes/UI/EventFlagMenu.tscn b/scenes/UI/EventFlagMenu.tscn deleted file mode 100644 index ba2e104..0000000 --- a/scenes/UI/EventFlagMenu.tscn +++ /dev/null @@ -1,89 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://b6s1xdcfcp0xx"] - -[ext_resource type="Script" uid="uid://b4a3ne2vn36mt" path="res://scripts/UI/EventFlagMenu.gd" id="1_nnw5f"] - -[node name="EventFlagsMenu" type="Panel" node_paths=PackedStringArray("flagList", "grid", "btnClose")] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -script = ExtResource("1_nnw5f") -flagList = NodePath("HBoxContainer/FlagList") -grid = NodePath("HBoxContainer/VBoxContainer/Control") -btnClose = NodePath("HBoxContainer/VBoxContainer/HBoxContainer/Button") -metadata/_custom_type_script = "uid://b4a3ne2vn36mt" - -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="FlagList" type="ItemList" parent="HBoxContainer"] -clip_contents = false -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 3 -auto_width = true -item_count = 2 -item_0/text = "Item 0" -item_1/text = "Item 1" - -[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"] -clip_contents = true -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer"] -layout_mode = 2 -alignment = 2 - -[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "close" - -[node name="Control" type="GridContainer" parent="HBoxContainer/VBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -columns = 5 - -[node name="Flag0" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag1" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag2" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag3" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag4" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag5" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag6" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag7" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" - -[node name="Flag8" type="CheckBox" parent="HBoxContainer/VBoxContainer/Control"] -layout_mode = 2 -text = "Flag 0" diff --git a/scenes/UI/Inventory/FullInventoryMenu.tscn b/scenes/UI/Inventory/FullInventoryMenu.tscn deleted file mode 100644 index bc273b1..0000000 --- a/scenes/UI/Inventory/FullInventoryMenu.tscn +++ /dev/null @@ -1,42 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dl8iqhrpsplmk"] - -[ext_resource type="Script" uid="uid://cla3ph1j2ligp" path="res://scripts/UI/Inventory/FullInventoryMenu.gd" id="1_m5r8e"] -[ext_resource type="PackedScene" uid="uid://dmu8i175kp35q" path="res://scenes/UI/Inventory/ItemLine.tscn" id="1_mmy80"] - -[node name="FullInventory" type="Panel" node_paths=PackedStringArray("itemList")] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_m5r8e") -itemLine = ExtResource("1_mmy80") -itemList = NodePath("VBoxContainer/ScrollContainer/ItemList") -metadata/_custom_type_script = "uid://cla3ph1j2ligp" - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="ItemList" type="VBoxContainer" parent="VBoxContainer/ScrollContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ItemLine" parent="VBoxContainer/ScrollContainer/ItemList" instance=ExtResource("1_mmy80")] -layout_mode = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Add Item" diff --git a/scenes/UI/Inventory/ItemLine.tscn b/scenes/UI/Inventory/ItemLine.tscn deleted file mode 100644 index 349ede5..0000000 --- a/scenes/UI/Inventory/ItemLine.tscn +++ /dev/null @@ -1,22 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://dmu8i175kp35q"] - -[ext_resource type="Script" uid="uid://dgblia2ukssbe" path="res://scripts/UI/Inventory/ItemLine.gd" id="1_mcq7n"] - -[node name="ItemLine" type="HBoxContainer"] -anchors_preset = 10 -anchor_right = 1.0 -offset_bottom = 12.0 -grow_horizontal = 2 -script = ExtResource("1_mcq7n") -metadata/_custom_type_script = "uid://dgblia2ukssbe" - -[node name="ItemName" type="Label" parent="."] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Potion" - -[node name="ItemQuantity" type="Label" parent="."] -custom_minimum_size = Vector2(24, 0) -layout_mode = 2 -text = "255" -horizontal_alignment = 2 diff --git a/scenes/UI/QuestMenu.tscn b/scenes/UI/QuestMenu.tscn deleted file mode 100644 index 0e5a59d..0000000 --- a/scenes/UI/QuestMenu.tscn +++ /dev/null @@ -1,84 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://bfioi52hjn2kf"] - -[ext_resource type="Script" uid="uid://cbsrw36kkucje" path="res://scripts/UI/QuestMenu.gd" id="1_a7vj2"] - -[node name="QuestMenu" type="Panel" node_paths=PackedStringArray("questList", "questName", "closeButton", "questObjectiveList", "questObjectiveInfo")] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_a7vj2") -questList = NodePath("VBoxContainer/HBoxContainer/QuestList") -questName = NodePath("VBoxContainer/HBoxContainer/Control/VBoxContainer/QuestName") -closeButton = NodePath("VBoxContainer/HBoxContainer2/Close") -questObjectiveList = NodePath("VBoxContainer/HBoxContainer/Control/VBoxContainer/HBoxContainer/QuestObjectiveList") -questObjectiveInfo = NodePath("VBoxContainer/HBoxContainer/Control/VBoxContainer/HBoxContainer/QuestObjectiveInfo") -metadata/_custom_type_script = "uid://cbsrw36kkucje" - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Quests" type="Label" parent="VBoxContainer/HBoxContainer2"] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Quests" - -[node name="Close" type="Button" parent="VBoxContainer/HBoxContainer2"] -layout_mode = 2 -text = "Close" - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="QuestList" type="ItemList" parent="VBoxContainer/HBoxContainer"] -custom_minimum_size = Vector2(100, 0) -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 3 -item_count = 2 -item_0/text = "Quest Name 1" -item_1/text = "Quest Name 2" - -[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/Control"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="QuestName" type="Label" parent="VBoxContainer/HBoxContainer/Control/VBoxContainer"] -layout_mode = 2 -text = "QuestName" - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/Control/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="QuestObjectiveList" type="ItemList" parent="VBoxContainer/HBoxContainer/Control/VBoxContainer/HBoxContainer"] -custom_minimum_size = Vector2(110, 0) -layout_mode = 2 -item_count = 2 -item_0/text = "Quest Objective 1" -item_1/text = "Quest Objective 2" - -[node name="QuestObjectiveInfo" type="Label" parent="VBoxContainer/HBoxContainer/Control/VBoxContainer/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 1 -text = "Quest Objective Information" -autowrap_mode = 2 diff --git a/scenes/cutscenes/CutsceneTest.tscn b/scenes/cutscenes/CutsceneTest.tscn new file mode 100644 index 0000000..0b2ebec --- /dev/null +++ b/scenes/cutscenes/CutsceneTest.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://bhvoo48bpbkf3"] + +[ext_resource type="PackedScene" uid="uid://d3rtd0ln7l2gr" path="res://scenes/maps/tundra/MapTundra.tscn" id="1_fsb0j"] + +[node name="CutsceneTest" type="Node3D"] + +[node name="MapTundra" parent="." instance=ExtResource("1_fsb0j")] + +[node name="Camera3D" type="Camera3D" parent="."] diff --git a/scenes/entities/NPC.tscn b/scenes/entities/NPC.tscn new file mode 100644 index 0000000..58d2efb --- /dev/null +++ b/scenes/entities/NPC.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=9 format=3 uid="uid://bng2mc7fu5aik"] + +[ext_resource type="Script" uid="uid://jbarxyoib5a7" path="res://scripts/entities/NPC.gd" id="1_nnu5p"] +[ext_resource type="Script" uid="uid://b00rxpveu3v4m" path="res://scripts/InteractableArea.gd" id="2_mm6je"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_2m2ha"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_g13of"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nnu5p"] +albedo_color = Color(0.389287, 0.389287, 0.389287, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_g13of"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_g13of"] +albedo_color = Color(0.596173, 0.00177814, 0.790136, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_mm6je"] +size = Vector3(0.958008, 0.97168, 0.767578) + +[node name="NPC" type="CharacterBody3D"] +script = ExtResource("1_nnu5p") +metadata/_custom_type_script = "uid://jbarxyoib5a7" + +[node name="Scripts" type="Node" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("CapsuleShape3D_2m2ha") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("CapsuleMesh_g13of") +surface_material_override/0 = SubResource("StandardMaterial3D_nnu5p") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(0.598863, 0, 0, 0, 0.598863, 0, 0, 0, 0.598863, 0, 0.441532, 0.539694) +mesh = SubResource("BoxMesh_g13of") +surface_material_override/0 = SubResource("StandardMaterial3D_g13of") + +[node name="InteractableArea" type="Area3D" parent="."] +script = ExtResource("2_mm6je") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractableArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0152938, 0.00782323, 0.0022831) +shape = SubResource("BoxShape3D_mm6je") diff --git a/scenes/entities/Player.tscn b/scenes/entities/Player.tscn new file mode 100644 index 0000000..33acd9c --- /dev/null +++ b/scenes/entities/Player.tscn @@ -0,0 +1,49 @@ +[gd_scene load_steps=9 format=3 uid="uid://2ch34sio36nv"] + +[ext_resource type="Script" uid="uid://ylmy3nvpirgr" path="res://scripts/entities/player/Player.gd" id="1_24gqh"] +[ext_resource type="Script" uid="uid://bwxdv3kxrs4oj" path="res://scripts/entities/player/PlayerMovement.gd" id="2_o7et6"] +[ext_resource type="Script" uid="uid://b3nty7pvbo58d" path="res://scripts/entities/player/PlayerInteraction.gd" id="3_24gqh"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_2m2ha"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_g13of"] + +[sub_resource type="BoxMesh" id="BoxMesh_g13of"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_g13of"] +albedo_color = Color(0.0156863, 0.282353, 1, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_g13of"] +size = Vector3(0.705444, 0.680542, 1.17688) + +[node name="Player" type="CharacterBody3D"] +script = ExtResource("1_24gqh") +metadata/_custom_type_script = "uid://c0by5m1upv57h" + +[node name="Scripts" type="Node" parent="."] + +[node name="PlayerMovement" type="Node" parent="Scripts" node_paths=PackedStringArray("player")] +script = ExtResource("2_o7et6") +player = NodePath("../..") + +[node name="PlayerInteraction" type="Node" parent="Scripts" node_paths=PackedStringArray("interactableArea")] +script = ExtResource("3_24gqh") +interactableArea = NodePath("../../InteractableArea") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("CapsuleShape3D_2m2ha") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("CapsuleMesh_g13of") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(0.598863, 0, 0, 0, 0.598863, 0, 0, 0, 0.598863, 0, 0.441532, 0.539694) +mesh = SubResource("BoxMesh_g13of") +surface_material_override/0 = SubResource("StandardMaterial3D_g13of") + +[node name="InteractableArea" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.185831, 0.817421) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractableArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0123757, 0.0497631, 0.0865124) +shape = SubResource("BoxShape3D_g13of") diff --git a/scenes/maps/tundra/MapTundra.tscn b/scenes/maps/tundra/MapTundra.tscn new file mode 100644 index 0000000..246ab79 --- /dev/null +++ b/scenes/maps/tundra/MapTundra.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=3 uid="uid://d3rtd0ln7l2gr"] + +[ext_resource type="Texture2D" uid="uid://cu1hvpqmqn31n" path="res://icon.svg" id="1_gnws2"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_ee568"] +size = Vector3(100, 0.1, 100) + +[sub_resource type="PlaneMesh" id="PlaneMesh_gnws2"] +size = Vector2(100, 100) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2wcmd"] +albedo_texture = ExtResource("1_gnws2") + +[node name="MapTundra" type="Node3D"] + +[node name="Ground" type="Node3D" parent="."] + +[node name="RigidBody3D" type="StaticBody3D" parent="Ground"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground/RigidBody3D"] +shape = SubResource("BoxShape3D_ee568") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Ground"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.037714, 0, -0.0143986) +mesh = SubResource("PlaneMesh_gnws2") +surface_material_override/0 = SubResource("StandardMaterial3D_2wcmd") diff --git a/scenes/singletons/UI.tscn b/scenes/singletons/UI.tscn new file mode 100644 index 0000000..4de3d4b --- /dev/null +++ b/scenes/singletons/UI.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://baos0arpiskbp"] + +[ext_resource type="PackedScene" uid="uid://bkx3l0kckf4a8" path="res://scenes/ui/VNTextbox.tscn" id="1_1mtk3"] +[ext_resource type="Script" uid="uid://dq3qyyayugt5l" path="res://scripts/singletons/UI.gd" id="1_son71"] + +[node name="UI" type="Control" node_paths=PackedStringArray("TEXTBOX")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_son71") +TEXTBOX = NodePath("VNTextbox") + +[node name="VNTextbox" parent="." instance=ExtResource("1_1mtk3")] +layout_mode = 1 diff --git a/scenes/UI/VNTextbox.tscn b/scenes/ui/VNTextbox.tscn similarity index 68% rename from scenes/UI/VNTextbox.tscn rename to scenes/ui/VNTextbox.tscn index 97d3cbe..3bca9e2 100644 --- a/scenes/UI/VNTextbox.tscn +++ b/scenes/ui/VNTextbox.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://bkx3l0kckf4a8"] [ext_resource type="Theme" uid="uid://dm7ee4aqjr2dl" path="res://ui/UI Theme.tres" id="1_wx4lp"] -[ext_resource type="Script" uid="uid://ck62jug2gl4wk" path="res://scripts/UI/VNTextbox.gd" id="2_uo1gm"] -[ext_resource type="Script" uid="uid://cq6bvma0kk6tg" path="res://scripts/UI/AdvancedRichText.gd" id="3_j0315"] +[ext_resource type="Script" uid="uid://h8lw23ypcfty" path="res://scripts/ui/VNTextbox.gd" id="2_uo1gm"] +[ext_resource type="Script" uid="uid://bjj6upgk1uvxd" path="res://scripts/ui/AdvancedRichText.gd" id="3_m60k3"] [node name="VNTextbox" type="PanelContainer"] anchors_preset = 12 @@ -27,13 +27,12 @@ theme_override_constants/margin_bottom = 4 layout_mode = 2 theme = ExtResource("1_wx4lp") bbcode_enabled = true -text = "Text -Text -Text -Text" -script = ExtResource("3_j0315") -advancedText = "Text -Text -Text -Text" -metadata/_custom_type_script = "uid://cq6bvma0kk6tg" +text = "TEST +TEST +TEST +TEST" +script = ExtResource("3_m60k3") +advancedText = "TEST +TEST +TEST +TEST" diff --git a/scripts/Cooking/Recipe.gd b/scripts/Cooking/Recipe.gd deleted file mode 100644 index 8066270..0000000 --- a/scripts/Cooking/Recipe.gd +++ /dev/null @@ -1,39 +0,0 @@ -class_name Recipe extends Node - -enum Type { - BAKED_SWEET_POTATO, -} - -@export_multiline var title:String = "" -@export var type:Type = Type.BAKED_SWEET_POTATO -@export var ingredients:Array[ItemResource] = [] -@export var outputs:Array[ItemResource] = [] - -var learned:bool = false -var timesMade:int = 0 - -func hasIngredients(inventory:Inventory = null) -> bool: - if inventory == null: - inventory = ITEM.PLAYER_INVENTORY - - for ingredient in ingredients: - if !inventory.hasItem(ingredient.type, ingredient.quantity): - return false - return true - -func make(inventory:Inventory = null) -> void: - if inventory == null: - inventory = ITEM.PLAYER_INVENTORY - - for ingredient in ingredients: - inventory.removeItem(ingredient.type, ingredient.quantity) - - for output in outputs: - inventory.addItem(output.type, output.quantity) - - timesMade += 1 - -func getTransContext() -> TransContext: - var ctx = TransContext.new() - ctx.addTrans("title", title) - return ctx \ No newline at end of file diff --git a/scripts/Cooking/Recipe.gd.uid b/scripts/Cooking/Recipe.gd.uid deleted file mode 100644 index 23472d9..0000000 --- a/scripts/Cooking/Recipe.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dipvg4uwjv6p2 diff --git a/scripts/Cooking/RecipeIngredient.gd.uid b/scripts/Cooking/RecipeIngredient.gd.uid deleted file mode 100644 index 6c0891a..0000000 --- a/scripts/Cooking/RecipeIngredient.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cy01crjsvohfc diff --git a/scripts/Entity/BasicNPCEntity.gd b/scripts/Entity/BasicNPCEntity.gd deleted file mode 100644 index 38af235..0000000 --- a/scripts/Entity/BasicNPCEntity.gd +++ /dev/null @@ -1,22 +0,0 @@ -class_name BasicNPCEntity extends CharacterBody3D - -@export var interactEvent:Event = null - -func _ready() -> void: - $Entity/EntityInteractable.onInteract.connect( - self.onEntityInteract - ) - -func _exit_tree() -> void: - $Entity/EntityInteractable.onInteract.disconnect( - self.onEntityInteract - ) - -func onEntityInteract( - interactor:EntityInteractor, - interactee:EntityInteractable -) -> void: - if interactEvent == null || (interactEvent.started && !interactEvent.isDone()): - return - - interactEvent.onEntityInteract(interactor, $Entity/EntityInteractable) diff --git a/scripts/Entity/BasicNPCEntity.gd.uid b/scripts/Entity/BasicNPCEntity.gd.uid deleted file mode 100644 index e519a65..0000000 --- a/scripts/Entity/BasicNPCEntity.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d23qg1ovkbxst diff --git a/scripts/Entity/Component/EntityDirection.gd b/scripts/Entity/Component/EntityDirection.gd deleted file mode 100644 index 020fe4b..0000000 --- a/scripts/Entity/Component/EntityDirection.gd +++ /dev/null @@ -1,83 +0,0 @@ -@tool -class_name EntityDirection extends Node - -enum Direction { - SOUTH, - WEST, - NORTH, - EAST, -} - -@export var meshInstance:MeshInstance3D = null: - set(newInstance): - meshInstance = newInstance; - _updateMaterial(); - -@export var direction = Direction.SOUTH: - set(newDirection): - direction = newDirection; - _updateMaterial(); - -@export var characterBody:CharacterBody3D = null - -func _ready() -> void: - _updateMaterial(); - -func _updateMaterial() -> void: - if !meshInstance: - return - - for i in range(meshInstance.get_surface_override_material_count()): - var material:ShaderMaterial = meshInstance.get_surface_override_material(i) - if !material: - continue - material.set_shader_parameter("direction", direction) - -func getDirectionVector() -> Vector3: - match direction: - Direction.NORTH: - return Vector3(0, 0, -1); - Direction.SOUTH: - return Vector3(0, 0, 1); - Direction.WEST: - return Vector3(-1, 0, 0); - Direction.EAST: - return Vector3(1, 0, 0); - _: - assert(false, "Invalid direction"); - return Vector3(0, 0, 0); - -func updateDirectionFromMovement(movement:Vector2) -> void: - if movement.x >= abs(movement.y) and( - movement.y == 0 or - (movement.y > 0 and direction != Direction.SOUTH) or - (movement.y < 0 and direction != Direction.NORTH) - ): - direction = Direction.EAST; - elif (movement.x <= -abs(movement.y) and ( - movement.y == 0 or - (movement.y > 0 and direction != Direction.SOUTH) or - (movement.y < 0 and direction != Direction.NORTH) - )): - direction = Direction.WEST; - elif (movement.y > 0): - direction = Direction.SOUTH; - elif (movement.y < 0): - direction = Direction.NORTH; - -func getDirectionToFace(position:Vector3) -> Direction: - if !characterBody: - return Direction.SOUTH; - - var diff = position - characterBody.global_position; - if abs(diff.x) > abs(diff.z): - if diff.x > 0: - return Direction.EAST; - else: - return Direction.WEST; - else: - if diff.z > 0: - return Direction.SOUTH; - else: - return Direction.NORTH; - return Direction.SOUTH; diff --git a/scripts/Entity/Component/EntityDirection.gd.uid b/scripts/Entity/Component/EntityDirection.gd.uid deleted file mode 100644 index de4bfc5..0000000 --- a/scripts/Entity/Component/EntityDirection.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cjfcpi7sxentf diff --git a/scripts/Entity/Component/EntityInteractable.gd b/scripts/Entity/Component/EntityInteractable.gd deleted file mode 100644 index e9426b7..0000000 --- a/scripts/Entity/Component/EntityInteractable.gd +++ /dev/null @@ -1,10 +0,0 @@ -class_name EntityInteractable extends Node - -@export var entityDirection:EntityDirection = null -@export var entity:Entity = null -@export var characterBody:CharacterBody3D = null; - -signal onInteract(interactor:EntityInteractor, interactable:EntityInteractable) - -func interact(interactor:EntityInteractor) -> void: - onInteract.emit(interactor, self) \ No newline at end of file diff --git a/scripts/Entity/Component/EntityInteractable.gd.uid b/scripts/Entity/Component/EntityInteractable.gd.uid deleted file mode 100644 index 8107d96..0000000 --- a/scripts/Entity/Component/EntityInteractable.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://03dqknw7v4mr diff --git a/scripts/Entity/Component/EntityInteractor.gd b/scripts/Entity/Component/EntityInteractor.gd deleted file mode 100644 index ed2ac15..0000000 --- a/scripts/Entity/Component/EntityInteractor.gd +++ /dev/null @@ -1,65 +0,0 @@ -class_name EntityInteractor extends Node - -enum InteractorType { - PLAYER_INPUT, - UNDECIDED -} - -@export var interactorType:InteractorType = InteractorType.UNDECIDED; -@export var entityDirection:EntityDirection = null; -@export var characterBody:CharacterBody3D = null; -@export var interactRange = 0.7; -@export var entity:Entity = null -@export_flags_3d_physics() var interactLayers = 2; - -func interactWith(interactable:EntityInteractable) -> void: - interactable.interact(self) - -func getRaycastInteractable() -> EntityInteractable: - if !entityDirection or !characterBody: - return null - - var rayDirection = entityDirection.getDirectionVector() - var query = PhysicsRayQueryParameters3D.create( - characterBody.global_position, - characterBody.global_position + (rayDirection * interactRange) - ) - query.collide_with_bodies = true; - query.collide_with_areas = true; - query.collision_mask = interactLayers; - query.exclude = [ characterBody ]; - - var result = characterBody.get_world_3d().direct_space_state.intersect_ray(query) - if !result or !result.collider: - return null - - var coll:Node3D = result.collider; - var interactable:EntityInteractable = coll.find_child("EntityInteractable") - return interactable - -func _process(delta: float) -> void: - if !entity or entity.isPaused(): - return - - match interactorType: - InteractorType.PLAYER_INPUT: - _processPlayerInput() - InteractorType.UNDECIDED: - _processUndecided() - _: - assert(false, "Invalid interactor type") - -func _processPlayerInput() -> void: - if !Input.is_action_just_pressed("interact"): - return - - # Conditions where player cannot interact. - if UI.hasInteractionFocus(): - return - - var interactable:EntityInteractable = getRaycastInteractable() - if interactable: - self.interactWith(interactable) - -func _processUndecided() -> void: - pass \ No newline at end of file diff --git a/scripts/Entity/Component/EntityInteractor.gd.uid b/scripts/Entity/Component/EntityInteractor.gd.uid deleted file mode 100644 index f041a8b..0000000 --- a/scripts/Entity/Component/EntityInteractor.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dfh2rh8idx267 diff --git a/scripts/Entity/Component/EntityMovement.gd b/scripts/Entity/Component/EntityMovement.gd deleted file mode 100644 index 34cae79..0000000 --- a/scripts/Entity/Component/EntityMovement.gd +++ /dev/null @@ -1,77 +0,0 @@ -class_name EntityMovement extends Node - -enum MovementType { - PLAYER_INPUT, - STILL, - NPC_RANDOM_LOOK -}; - -@export var characterBody:CharacterBody3D = null; -@export var entity:Entity = null; -@export var entityDirection:EntityDirection = null; - -@export var speed:float = 200; -@export var runSpeed:float = 400; -@export var friction:float = 8.5; -@export var gravity:float = 30; - -@export var movementType:MovementType = MovementType.STILL; - -@export var randomLookMinTime:float = 1.5; -@export var randomLookMaxTime:float = 4.0; -var randomLookTimer:float = 0.0; - -func _physics_process(delta:float) -> void: - if !entity || entity.isPaused() || !characterBody: - return; - - # Update movement - _updateVelocity(delta) - - # Gravity and friction - if !characterBody.is_on_floor(): - characterBody.velocity.y -= gravity * delta; - else: - characterBody.velocity += -(characterBody.velocity * friction * delta); - # if velocity.length() != 0: - # _updateTileData(); - - # Update character controller. - characterBody.move_and_slide(); - -func _updateVelocity(delta:float): - match movementType: - MovementType.PLAYER_INPUT: - _updatePlayerInput(delta); - MovementType.STILL: - _updateStill(delta); - MovementType.NPC_RANDOM_LOOK: - _updateNPCRandomLook(delta); - -func _updatePlayerInput(delta:float) -> void: - var dir:Vector2 = Input.get_vector("left", "right", "up", "down"); - - var moveSpeed:float; - if Input.is_action_pressed("run"): - moveSpeed = runSpeed; - else: - moveSpeed = speed; - - if dir.x != 0 or dir.y != 0: - characterBody.velocity.x = dir.x * moveSpeed * delta; - characterBody.velocity.z = dir.y * moveSpeed * delta; - - if entityDirection: - entityDirection.updateDirectionFromMovement(dir); - -func _updateStill(delta:float): - pass - -func _updateNPCRandomLook(delta:float): - if !entityDirection: - return - randomLookTimer -= delta; - - if randomLookTimer <= 0: - randomLookTimer = randf_range(randomLookMinTime, randomLookMaxTime); - entityDirection.direction = randi_range(0, 3); diff --git a/scripts/Entity/Component/EntityMovement.gd.uid b/scripts/Entity/Component/EntityMovement.gd.uid deleted file mode 100644 index ab0a58c..0000000 --- a/scripts/Entity/Component/EntityMovement.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c5nfs0m6ua4eb diff --git a/scripts/Entity/Component/EntityMoving.gd.uid b/scripts/Entity/Component/EntityMoving.gd.uid deleted file mode 100644 index 12508f0..0000000 --- a/scripts/Entity/Component/EntityMoving.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dp6itsmbl0ucn diff --git a/scripts/Entity/Entity.gd b/scripts/Entity/Entity.gd deleted file mode 100644 index d5dd433..0000000 --- a/scripts/Entity/Entity.gd +++ /dev/null @@ -1,88 +0,0 @@ -class_name Entity extends Node - -# var meshInstance:MeshInstance3D; -# var underFootTile:int = -1; -# var underFootPosition:Vector3; -# var material:ShaderMaterial; - -# func updateMaterial() -> bool: -# if !meshInstance: -# return false -# if !material: -# return false -# return true - -# # Virtual Methods -# func updateMovement(delta) -> void: -# pass - -# func updateOverworldLogic(delta) -> void: -# pass - -func isPaused() -> bool: - var ps = PAUSE.getPauseState(); - match ps: - PauseSystem.PauseType.NOT_PAUSED: - return false; - PauseSystem.PauseType.FULLY_PAUSED: - return true; - PauseSystem.PauseType.ENTITY_PAUSED: - if PAUSE.entities.find(self) != -1: - return true; - return false; - PauseSystem.PauseType.CUTSCENE_PAUSED: - if PAUSE.entities.find(self) != -1: - return false; - return true; - _: - assert(false, "Invalid pause state"); - - return false; - -# Private methods -# func _updateTileData() -> void: -# # ray cast down -# var offset = Vector3(0, 0, 0.426); -# var query = PhysicsRayQueryParameters3D.create( -# position + offset, -# position + Vector3(0, -1, 0) + offset -# ) -# query.collide_with_areas = true -# query.exclude = [self] - -# var result = get_world_3d().direct_space_state.intersect_ray(query) -# if !result or !result.collider: -# return; - -# var collider = result.collider; -# var colliderMesh = collider.get_node("../"); -# if !colliderMesh or !(colliderMesh is ArrayMesh) or !colliderMesh.mesh or colliderMesh.mesh.get_surface_count() == 0: -# return; - -# # Get the face index (triangle) -# var arrays = colliderMesh.mesh.surface_get_arrays(0); -# var indiceIdx = result.face_index * 3; - -# # Get each indice of the triangle -# var index0 = arrays[Mesh.ARRAY_INDEX][indiceIdx+0]; -# var index1 = arrays[Mesh.ARRAY_INDEX][indiceIdx+1]; -# var index2 = arrays[Mesh.ARRAY_INDEX][indiceIdx+2]; - -# # Get each uv of each indice -# var uv0:Vector2 = arrays[Mesh.ARRAY_TEX_UV][index0]; -# var uv1:Vector2 = arrays[Mesh.ARRAY_TEX_UV][index1]; -# var uv2:Vector2 = arrays[Mesh.ARRAY_TEX_UV][index2]; - -# # Determine the lowest texture coordinate -# var min = Vector2(min(uv0.x, uv1.x, uv2.x), min(uv0.y, uv1.y, uv2.y)); - -# # Convert to column/row -# var w = 256; -# var h = w; -# var tw = 48; -# var th = tw; -# var column = int(roundf(min.x * w)) / tw; -# var row = int(roundf(min.y * h)) / th; -# var columns = 768 / tw; -# underFootPosition = result.position; -# underFootTile = column % columns + row * columns; diff --git a/scripts/Entity/Entity.gd.uid b/scripts/Entity/Entity.gd.uid deleted file mode 100644 index f416ee6..0000000 --- a/scripts/Entity/Entity.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dtjjqp2atjyhr diff --git a/scripts/Entity/ItemOnGround.gd b/scripts/Entity/ItemOnGround.gd deleted file mode 100644 index 83831a7..0000000 --- a/scripts/Entity/ItemOnGround.gd +++ /dev/null @@ -1,30 +0,0 @@ -class_name ItemOnGround extends StaticBody3D - -enum Type { - SPAWNS_WITH_MAP, - AQUIRED_ONCE -} - -@export var itemType:Item.Type = Item.Type.POTION; -@export var quantity:int = 1; - -func _ready() -> void: - $Entity/EntityInteractable.onInteract.connect( - self.onEntityInteract - ) - -func _exit_tree() -> void: - $Entity/EntityInteractable.onInteract.disconnect( - self.onEntityInteract - ) - -func onEntityInteract( - interactor:EntityInteractor, - interactee:EntityInteractable -) -> void: - var event = EventGetItem.new() - event.itemType = itemType; - event.quantity = quantity; - event.removeNode = self - EVENT.addEvent(event) - event.onEntityInteract(interactor, interactee) diff --git a/scripts/Entity/ItemOnGround.gd.uid b/scripts/Entity/ItemOnGround.gd.uid deleted file mode 100644 index eb5ab06..0000000 --- a/scripts/Entity/ItemOnGround.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d2jqsiapy07ii diff --git a/scripts/Entity/MovingEntity.gd.uid b/scripts/Entity/MovingEntity.gd.uid deleted file mode 100644 index c0b10cc..0000000 --- a/scripts/Entity/MovingEntity.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bcei5b2x3gu8y diff --git a/scripts/Entity/OnionSprig.gd.uid b/scripts/Entity/OnionSprig.gd.uid deleted file mode 100644 index 7b19aed..0000000 --- a/scripts/Entity/OnionSprig.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://0nn3ix2nwk3f diff --git a/scripts/Entity/OverworldEntity.gd.uid b/scripts/Entity/OverworldEntity.gd.uid deleted file mode 100644 index 58ce086..0000000 --- a/scripts/Entity/OverworldEntity.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bpwbaptqu4bm5 diff --git a/scripts/Entity/Rosa.gd b/scripts/Entity/Rosa.gd deleted file mode 100644 index 2937dde..0000000 --- a/scripts/Entity/Rosa.gd +++ /dev/null @@ -1 +0,0 @@ -class_name Rosa extends CharacterBody3D diff --git a/scripts/Entity/Rosa.gd.uid b/scripts/Entity/Rosa.gd.uid deleted file mode 100644 index e87d5ea..0000000 --- a/scripts/Entity/Rosa.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ixwikdguyhf0 diff --git a/scripts/Entity/RosaCamera.gd b/scripts/Entity/RosaCamera.gd deleted file mode 100644 index 0cd2737..0000000 --- a/scripts/Entity/RosaCamera.gd +++ /dev/null @@ -1,29 +0,0 @@ -extends Camera3D - -@export var pixelScale:float = 1.0; -@export var follow:Node3D; - -const WORLD_UNITS:float = 32.0; - -func _ready() -> void: - pass - - -func _process(delta: float) -> void: - # I tried a few things but this is most consistent for both backbuffer and - # framebuffer viewports. - var viewportHeight = get_viewport().get_visible_rect().size.y; - var unitScale = pixelScale * WORLD_UNITS; - - var z:float = ( - tan((deg_to_rad(180) - deg_to_rad(fov)) / 2.0) * - (viewportHeight / 2.0) - ) / unitScale; - - var look = follow.global_position; - var position = Vector3(0, 0, 2) + look; - - look_at_from_position( - Vector3(position.x, position.y + z, position.z), - look - ); diff --git a/scripts/Entity/RosaCamera.gd.uid b/scripts/Entity/RosaCamera.gd.uid deleted file mode 100644 index d640b6f..0000000 --- a/scripts/Entity/RosaCamera.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://jd50n00bo05y diff --git a/scripts/Entity/Sign.gd b/scripts/Entity/Sign.gd deleted file mode 100644 index 82606c9..0000000 --- a/scripts/Entity/Sign.gd +++ /dev/null @@ -1,22 +0,0 @@ -class_name Sign extends StaticBody3D - -@export var interactEvent:Event = null - -func _ready() -> void: - $Entity/EntityInteractable.onInteract.connect( - self.onEntityInteract - ) - -func _exit_tree() -> void: - $Entity/EntityInteractable.onInteract.disconnect( - self.onEntityInteract - ) - -func onEntityInteract( - interactor:EntityInteractor, - interactee:EntityInteractable -) -> void: - if interactEvent == null || (interactEvent.started && !interactEvent.isDone()): - return - - interactEvent.onEntityInteract(interactor, $Entity/EntityInteractable) diff --git a/scripts/Entity/Sign.gd.uid b/scripts/Entity/Sign.gd.uid deleted file mode 100644 index 8e80de8..0000000 --- a/scripts/Entity/Sign.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bitykguiignfu diff --git a/scripts/Event/Condition/EventIf.gd b/scripts/Event/Condition/EventIf.gd deleted file mode 100644 index 93bc108..0000000 --- a/scripts/Event/Condition/EventIf.gd +++ /dev/null @@ -1,34 +0,0 @@ -class_name EventIf extends "res://scripts/Event/Flow/EventGroup.gd" - -signal eventConditionMet - -func ifCondition() -> bool: - return false - -func subscribeEvents() -> void: - # Override this method to subscribe to any events needed for the condition check - pass - -func unsubscribeEvents() -> void: - # Override this method to unsubscribe from any events when the condition is no longer needed - pass - -func shouldAutoStart() -> bool: - return false - -func start() -> void: - super.start() - - if ifCondition(): - startEventGroup() - -func onEventTrigger() -> void: - if !ifCondition(): - return - eventConditionMet.emit() - -func onTriggerListening(_trigger:EventTrigger) -> void: - subscribeEvents() - -func onTriggerNotListening(_trigger:EventTrigger) -> void: - unsubscribeEvents() diff --git a/scripts/Event/Condition/EventIf.gd.uid b/scripts/Event/Condition/EventIf.gd.uid deleted file mode 100644 index 0b381c2..0000000 --- a/scripts/Event/Condition/EventIf.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bn2nw17cf11wp diff --git a/scripts/Event/Condition/EventIfFlag.gd b/scripts/Event/Condition/EventIfFlag.gd deleted file mode 100644 index 625217b..0000000 --- a/scripts/Event/Condition/EventIfFlag.gd +++ /dev/null @@ -1,58 +0,0 @@ -class_name EventIfFlag extends "res://scripts/Event/Condition/EventIf.gd" - -enum Type { - ANY_OF_FLAGS_ON, - ALL_OF_FLAGS_ON, - ANY_OF_FLAGS_OFF, - ALL_OF_FLAGS_OFF, -} - -@export var event:EventSystem.SpecialEvent; -@export var type:Type = Type.ANY_OF_FLAGS_ON; -@export_flags( - "1:1", - "2:2", - "3:4", - "4:8", - "5:16", - "6:32", - "7:64", - "8:128", - "9:256", - "10:512", - "11:1024", - "12:2048", - "13:4096", - "14:8192", - "15:16384", - "16:32768", - "17:65536", - "18:131072", - "19:262144", - "20:524288", - "21:1048576", - "22:2097152", - "23:4194304", - "24:8388608", - "25:16777216", - "26:33554432", - "27:67108864", - "28:134217728", - "29:268435456", - "30:536870912", - "31:1073741824", - "32:2147483648" -) -var eventFlag:int = 0; - -func ifCondition() -> bool: - match type: - Type.ANY_OF_FLAGS_ON: - return EVENT.eventIsAnyOfFlagsOn(event, eventFlag) - Type.ALL_OF_FLAGS_ON: - return EVENT.eventAreFlagsOn(event, eventFlag) - Type.ANY_OF_FLAGS_OFF: - return EVENT.eventIsAnyOfFlagsOff(event, eventFlag) - Type.ALL_OF_FLAGS_OFF: - return EVENT.eventAreFlagsOff(event, eventFlag) - return false \ No newline at end of file diff --git a/scripts/Event/Condition/EventIfFlag.gd.uid b/scripts/Event/Condition/EventIfFlag.gd.uid deleted file mode 100644 index 27bbe86..0000000 --- a/scripts/Event/Condition/EventIfFlag.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ccujhcc446mvh diff --git a/scripts/Event/Condition/EventIfQuest.gd.uid b/scripts/Event/Condition/EventIfQuest.gd.uid deleted file mode 100644 index 22c3718..0000000 --- a/scripts/Event/Condition/EventIfQuest.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dwcd277pv3p1t diff --git a/scripts/Event/Condition/EventIfQuestObjective.gd.uid b/scripts/Event/Condition/EventIfQuestObjective.gd.uid deleted file mode 100644 index df6600e..0000000 --- a/scripts/Event/Condition/EventIfQuestObjective.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cvrib7pjlip8g diff --git a/scripts/Event/Entity/EventEntityTurn.gd b/scripts/Event/Entity/EventEntityTurn.gd deleted file mode 100644 index e27ee33..0000000 --- a/scripts/Event/Entity/EventEntityTurn.gd +++ /dev/null @@ -1,9 +0,0 @@ -class_name EventEntityTurn extends "res://scripts/Event/Event.gd" - -@export var entity:EntityDirection = null -@export var direction:EntityDirection.Direction = EntityDirection.Direction.SOUTH - -func start(): - if entity == null: - return - entity.direction = direction diff --git a/scripts/Event/Entity/EventEntityTurn.gd.uid b/scripts/Event/Entity/EventEntityTurn.gd.uid deleted file mode 100644 index 0a15ed2..0000000 --- a/scripts/Event/Entity/EventEntityTurn.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bmcrd2ugqan43 diff --git a/scripts/Event/Event.gd b/scripts/Event/Event.gd deleted file mode 100644 index d34e4e3..0000000 --- a/scripts/Event/Event.gd +++ /dev/null @@ -1,62 +0,0 @@ -class_name Event extends Node - -const Entity = preload("res://scripts/Entity/Entity.gd"); - -var inEventSystemTree:bool = false; -var started:bool = false; -var ended:bool = false; -var interactor:EntityInteractor = null -var interactee:EntityInteractable = null - -signal eventEnded() - -# Godot Methods -func _process(delta: float) -> void: - if !started || ended: - return - self.update(delta) - - if self.isDone(): - self.end() - -# Event methods (cleaned up) -func start() -> void: - assert( - self.is_inside_tree(), - "Event is trying to start but the node is not part of the scene tree. "+ - "Refer to EventSystem.addEvent" - ) - assert(started == false) - started = true - -func update(_delta:float) -> void: - assert(started == true) - assert(ended == false) - -func isDone() -> bool: - return true - -func end() -> void: - assert(ended == false) - ended = true - self.eventEnded.emit() - if self.inEventSystemTree: - EVENT.removeEvent(self) - -func isEndingEvent() -> bool: - return false - -func reset() -> void: - started = false - ended = false - interactor = null - interactee = null - -func onEntityInteract( - interactor:EntityInteractor, - interactee:EntityInteractable -) -> void: - self.reset() - self.interactor = interactor - self.interactee = interactee - self.start() diff --git a/scripts/Event/Event.gd.uid b/scripts/Event/Event.gd.uid deleted file mode 100644 index c0074f4..0000000 --- a/scripts/Event/Event.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cl3vqv8bwyoeu diff --git a/scripts/Event/EventConversation.gd b/scripts/Event/EventConversation.gd deleted file mode 100644 index a29c9ea..0000000 --- a/scripts/Event/EventConversation.gd +++ /dev/null @@ -1,63 +0,0 @@ -class_name EventConversation extends "res://scripts/Event/Flow/EventGroup.gd" - -@export var startPauseType:PauseSystem.PauseType = PauseSystem.PauseType.ENTITY_PAUSED -@export var endPauseType:PauseSystem.PauseType = PauseSystem.PauseType.NOT_PAUSED - -@export var entities:Array[Entity] = [] - -@export var pauseInteractee:bool = true -@export var pauseInteractor:bool = true -@export var turnInteractee:bool = true -@export var turnInteractor:bool = true - -var endPauseEvent:EventPause = null - -func start() -> void: - # Turn events - if interactee && interactor: - if turnInteractee && interactee.entityDirection && interactor.characterBody: - var turn = EventEntityTurn.new() - turn.name = "Conversation Turn Interactee" - turn.entity = interactee.entityDirection - turn.direction = turn.entity.getDirectionToFace(interactor.characterBody.global_position) - addChildEvent(turn, 0) - - if turnInteractor && interactor.entityDirection && interactee.characterBody: - var turn = EventEntityTurn.new() - turn.name = "Conversation Turn Interactor" - turn.entity = interactor.entityDirection - turn.direction = turn.entity.getDirectionToFace(interactee.characterBody.global_position) - addChildEvent(turn, 0) - - # Create start pause event - if (pauseInteractee && interactee.entity) || (pauseInteractor && interactor.entity): - var startPause = EventPause.new() - startPause.name = "Conversation Start Pause" - startPause.pauseType = startPauseType - startPause.entities = entities - if pauseInteractee && interactee.entity: - startPause.includeInteractee = pauseInteractee - if pauseInteractor && interactor.entity: - startPause.includeInteractor = pauseInteractor - addChildEvent(startPause, 0) - - # Create end pause event. - endPauseEvent = EventPause.new() - endPauseEvent.name = "Conversation End Pause" - endPauseEvent.pauseType = endPauseType - endPauseEvent.entities = entities - if pauseInteractee && interactee.entity: - endPauseEvent.includeInteractee = pauseInteractee - if pauseInteractor && interactor.entity: - endPauseEvent.includeInteractor = pauseInteractor - addChildEvent(endPauseEvent, -1) - - # Pass off to event group - super.start() - -func end() -> void: - print("Ending conversation event: ", self) - # Manually end pause - if endPauseEvent != null && !endPauseEvent.started: - endPauseEvent.start() - super.end() diff --git a/scripts/Event/EventConversation.gd.uid b/scripts/Event/EventConversation.gd.uid deleted file mode 100644 index ff0c759..0000000 --- a/scripts/Event/EventConversation.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://tkfc88q8m86f diff --git a/scripts/Event/EventFlagChange.gd.uid b/scripts/Event/EventFlagChange.gd.uid deleted file mode 100644 index 432d3e4..0000000 --- a/scripts/Event/EventFlagChange.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dq35fj8r206nj diff --git a/scripts/Event/EventFlagModify.gd b/scripts/Event/EventFlagModify.gd deleted file mode 100644 index c0b0cbc..0000000 --- a/scripts/Event/EventFlagModify.gd +++ /dev/null @@ -1,63 +0,0 @@ -class_name EventFlagModify extends "res://scripts/Event/Event.gd" - -enum Action { - TURN_ON, - TURN_OFF, - SET_TO, - ALL_ON, - ALL_OFF -} - -@export var action:Action = Action.TURN_ON; -@export var event:EventSystem.SpecialEvent; -@export_flags( - "1:1", - "2:2", - "3:4", - "4:8", - "5:16", - "6:32", - "7:64", - "8:128", - "9:256", - "10:512", - "11:1024", - "12:2048", - "13:4096", - "14:8192", - "15:16384", - "16:32768", - "17:65536", - "18:131072", - "19:262144", - "20:524288", - "21:1048576", - "22:2097152", - "23:4194304", - "24:8388608", - "25:16777216", - "26:33554432", - "27:67108864", - "28:134217728", - "29:268435456", - "30:536870912", - "31:1073741824", - "32:2147483648" -) -var eventFlag:int = 0; - -func start() -> void: - super.start() - match action: - Action.TURN_ON: - EVENT.eventFlagOn(event, eventFlag) - Action.TURN_OFF: - EVENT.eventFlagOff(event, eventFlag) - Action.SET_TO: - EVENT.eventFlagSetTo(event, eventFlag) - Action.ALL_ON: - EVENT.eventFlagSetTo(event, 0xffffffff) - Action.ALL_OFF: - EVENT.eventFlagSetTo(event, 0) - _: - print("Invalid action: %s" % str(action)) \ No newline at end of file diff --git a/scripts/Event/EventFlagModify.gd.uid b/scripts/Event/EventFlagModify.gd.uid deleted file mode 100644 index 16ecd38..0000000 --- a/scripts/Event/EventFlagModify.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://0ygswaohp7kj diff --git a/scripts/Event/EventFlagOn.gd b/scripts/Event/EventFlagOn.gd deleted file mode 100644 index 635cefd..0000000 --- a/scripts/Event/EventFlagOn.gd +++ /dev/null @@ -1,42 +0,0 @@ -class_name EventFlagOn extends "res://scripts/Event/Event.gd" - -@export var event:EventSystem.SpecialEvent; -@export_flags( - "1:1", - "2:2", - "3:4", - "4:8", - "5:16", - "6:32", - "7:64", - "8:128", - "9:256", - "10:512", - "11:1024", - "12:2048", - "13:4096", - "14:8192", - "15:16384", - "16:32768", - "17:65536", - "18:131072", - "19:262144", - "20:524288", - "21:1048576", - "22:2097152", - "23:4194304", - "24:8388608", - "25:16777216", - "26:33554432", - "27:67108864", - "28:134217728", - "29:268435456", - "30:536870912", - "31:1073741824", - "32:2147483648" -) -var eventFlag:int = 0; - -func start() -> void: - super.start() - EVENT.eventFlagOn(event, eventFlag) diff --git a/scripts/Event/EventFlagOn.gd.uid b/scripts/Event/EventFlagOn.gd.uid deleted file mode 100644 index 16a1cfb..0000000 --- a/scripts/Event/EventFlagOn.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cbd7wpvkf76ux diff --git a/scripts/Event/EventGroup.gd.uid b/scripts/Event/EventGroup.gd.uid deleted file mode 100644 index e4e54b1..0000000 --- a/scripts/Event/EventGroup.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://sqi2ehu4sqa1 diff --git a/scripts/Event/EventPause.gd b/scripts/Event/EventPause.gd deleted file mode 100644 index f42ddfe..0000000 --- a/scripts/Event/EventPause.gd +++ /dev/null @@ -1,15 +0,0 @@ -class_name EventPause extends "res://scripts/Event/Event.gd" - -@export var pauseType:PauseSystem.PauseType = PauseSystem.PauseType.ENTITY_PAUSED -@export var entities:Array[Entity] = [] -@export var includeInteractee:bool = true -@export var includeInteractor:bool = true - -func end() -> void: - super.end() - var ents:Array[Entity] = entities - if interactor && includeInteractor && interactor.entity: - ents.append(interactor.entity) - if interactee && includeInteractee && interactee.entity: - ents.append(interactee.entity) - PAUSE.pause(pauseType, ents) \ No newline at end of file diff --git a/scripts/Event/EventPause.gd.uid b/scripts/Event/EventPause.gd.uid deleted file mode 100644 index 03b679d..0000000 --- a/scripts/Event/EventPause.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bv36suxm08vqe diff --git a/scripts/Event/EventTextbox.gd b/scripts/Event/EventTextbox.gd deleted file mode 100644 index 620de7a..0000000 --- a/scripts/Event/EventTextbox.gd +++ /dev/null @@ -1,25 +0,0 @@ -class_name EventTextbox extends "res://scripts/Event/Event.gd" - -@export_multiline var text:String = "" - -var textPlural:String = "" -var count:int = 1 -var transContext:TransContext = null - -func start() -> void: - super.start() - - if text.is_empty() && transContext == null: - push_error("EventTextbox text is empty and no TransContext provided.") - return - - if transContext == null: - transContext = TransContext.new() - - if textPlural.is_empty(): - VN.getTextbox().setText(transContext.trans(text)) - else: - VN.getTextbox().setText(transContext.transPlural(text, textPlural, count)); - -func isDone() -> bool: - return super.isDone() && VN.getTextbox().isClosed; diff --git a/scripts/Event/EventTextbox.gd.uid b/scripts/Event/EventTextbox.gd.uid deleted file mode 100644 index 1d25e5b..0000000 --- a/scripts/Event/EventTextbox.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://y7ckj1tn5cro diff --git a/scripts/Event/EventTrigger.gd b/scripts/Event/EventTrigger.gd deleted file mode 100644 index fce921d..0000000 --- a/scripts/Event/EventTrigger.gd +++ /dev/null @@ -1,32 +0,0 @@ -class_name EventTrigger extends Node - -@export var triggerMultipleTimes: bool = false - -var eventIf:EventIf = null - -func _enter_tree() -> void: - for child in get_children(): - if !(child is EventIf): - continue - eventIf = child - break - - if eventIf == null: - push_error(self, "requires an EventIf child to function properly") - return - - eventIf.eventConditionMet.connect(onConditionTriggered) - eventIf.onTriggerListening(self) - -func _exit_tree() -> void: - if eventIf != null: - eventIf.eventConditionMet.disconnect(onConditionTriggered) - eventIf.onTriggerNotListening(self) - - eventIf = null - -func onConditionTriggered() -> void: - if !triggerMultipleTimes: - eventIf.eventConditionMet.disconnect(onConditionTriggered) - eventIf.onTriggerNotListening(self) - eventIf.start() \ No newline at end of file diff --git a/scripts/Event/EventTrigger.gd.uid b/scripts/Event/EventTrigger.gd.uid deleted file mode 100644 index 83918a8..0000000 --- a/scripts/Event/EventTrigger.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cs7voh47aoca8 diff --git a/scripts/Event/EventWithChildren.gd.uid b/scripts/Event/EventWithChildren.gd.uid deleted file mode 100644 index 077e711..0000000 --- a/scripts/Event/EventWithChildren.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dj5wl682sbohc diff --git a/scripts/Event/Flow/EventGoTo.gd b/scripts/Event/Flow/EventGoTo.gd deleted file mode 100644 index acc9748..0000000 --- a/scripts/Event/Flow/EventGoTo.gd +++ /dev/null @@ -1,35 +0,0 @@ -class_name EventGoTo extends "res://scripts/Event/Event.gd" - -enum Type { - GO_TO, - GO_TO_AND_WAIT, - GO_TO_AND_CONTINUE -} - -@export var event:Event = null -@export var type:Type = Type.GO_TO - -func start() -> void: - super.start() - if event == null: - print("EventGoTo: No event set") - return - - event.start() - -func isDone(): - if !super.isDone(): - return false - - if event == null: - return true - - if type == Type.GO_TO_AND_WAIT: - return event.isDone() - - return true - -func isEndingEvent() -> bool: - if type == Type.GO_TO: - return true - return false \ No newline at end of file diff --git a/scripts/Event/Flow/EventGoTo.gd.uid b/scripts/Event/Flow/EventGoTo.gd.uid deleted file mode 100644 index 1802d89..0000000 --- a/scripts/Event/Flow/EventGoTo.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://da7fr2bave0c diff --git a/scripts/Event/Flow/EventGroup.gd b/scripts/Event/Flow/EventGroup.gd deleted file mode 100644 index a72b628..0000000 --- a/scripts/Event/Flow/EventGroup.gd +++ /dev/null @@ -1,83 +0,0 @@ -class_name EventGroup extends "res://scripts/Event/Flow/EventWithChildren.gd" - -enum ProcessType { - SEQUENTIAL, - PARALLEL, -} - -@export var processType:ProcessType = ProcessType.SEQUENTIAL; - -var childIndex:int = 0 -var eventGroupStarted:bool = false - -func shouldAutoStart() -> bool: - return true - -func start() -> void: - super.start() - - if shouldAutoStart(): - startEventGroup() - -func startEventGroup() -> void: - eventGroupStarted = true - - # This is called by the parent event to start the group - if processType == ProcessType.SEQUENTIAL: - childIndex = -1 - nextChild() - elif processType == ProcessType.PARALLEL: - for child in childEvents: - startChild(child) - -func update(delta:float) -> void: - super.update(delta) - - # If sequential, see if the current child is done, if so go to next child - if processType == ProcessType.SEQUENTIAL: - if childIndex < 0 || childIndex >= childEvents.size(): - return - if childEvents[childIndex].isDone(): - nextChild() - -func nextChild() -> void: - childIndex += 1 - if childIndex >= childEvents.size(): - return - startChild(childEvents[childIndex]) - -func isDone() -> bool: - if !super.isDone(): - return false - - if started && !eventGroupStarted: - return true - - # If sequential, check if we've reached the end of the children - if processType == ProcessType.SEQUENTIAL: - return childIndex >= childEvents.size() - - # If parallel, check if all children are done - elif processType == ProcessType.PARALLEL: - for child in childEvents: - if !child.isDone(): - return false - return true - - return false - -func end() -> void: - for child in childEvents: - if child.ended || !child.started: - continue - child.end() - # Send to the parent to end the extra events - super.end() - -func reset() -> void: - childIndex = -1 - eventGroupStarted = false - for child in childEvents: - child.reset() - # Send to the parent to reset the extra events - super.reset() \ No newline at end of file diff --git a/scripts/Event/Flow/EventGroup.gd.uid b/scripts/Event/Flow/EventGroup.gd.uid deleted file mode 100644 index fb3d73a..0000000 --- a/scripts/Event/Flow/EventGroup.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bb1qpptyr1rec diff --git a/scripts/Event/Flow/EventWithChildren.gd b/scripts/Event/Flow/EventWithChildren.gd deleted file mode 100644 index 9735c9f..0000000 --- a/scripts/Event/Flow/EventWithChildren.gd +++ /dev/null @@ -1,50 +0,0 @@ -class_name EventWithChildren extends "res://scripts/Event/Event.gd" - -var childEvents:Array[Event] = [] -var addedEvents:Array[Event] = [] - -func start(): - super.start() - _updateChildEvents() - -func reset() -> void: - super.reset() - _cleanupExtraEvents() - -func end() -> void: - super.end() - _cleanupExtraEvents() - -func _updateChildEvents() -> void: - childEvents = [] - for child in get_children(): - if child is Event: - childEvents.append(child) - -func _cleanupExtraEvents(): - for event in addedEvents: - remove_child(event) - event.queue_free() - addedEvents = [] - _updateChildEvents() - -func addChildEvent(child:Event, position:int = -1) -> void: - assert(started == false || ended == true) - if position < 0: - position = childEvents.size() + position + 1 - - add_child(child) - move_child(child, position) - addedEvents.append(child) - _updateChildEvents() - -func startChild(child:Event) -> void: - assert(child.get_parent() == self) - - # Inherits some properties from this event. - child.interactee = self.interactee - child.interactor = self.interactor - child.start() - - if child.isEndingEvent(): - self.end() diff --git a/scripts/Event/Flow/EventWithChildren.gd.uid b/scripts/Event/Flow/EventWithChildren.gd.uid deleted file mode 100644 index 0e153b1..0000000 --- a/scripts/Event/Flow/EventWithChildren.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bs78jtft61ro6 diff --git a/scripts/Event/Item/EventGetItem.gd b/scripts/Event/Item/EventGetItem.gd deleted file mode 100644 index d023fce..0000000 --- a/scripts/Event/Item/EventGetItem.gd +++ /dev/null @@ -1,74 +0,0 @@ -class_name EventGetItem extends "res://scripts/Event/Item/EventItem.gd" - -const EventConversation = preload("res://scripts/Event/EventConversation.gd") - -enum GetType { - FOUND, - GIVEN, -} - -@export var showText: bool = true -@export var getType:GetType = GetType.FOUND; -@export var removeNode:Node = null - -var conversationEvent:EventConversation = null -var textboxEvent:EventTextbox = null - -func start() -> void: - # Should show text? - if !showText: - super.start() - return - - # What text to show? - var textKey:String - match getType: - GetType.FOUND: - textKey = "event.get_item.found" - GetType.GIVEN: - textKey = "event.get_item.given" - _: - super.start() - return - - # Create translation context - var ctx = TransContext.new() - ctx.addInteger("quantity", quantity) - ctx.addContext("item", ITEM.getItem(itemType).getTransContext()) - - # Create conversation - conversationEvent = EventConversation.new() - addChildEvent(conversationEvent) - - # Create textbox - textboxEvent = EventTextbox.new() - textboxEvent.transContext = ctx - textboxEvent.text = textKey - textboxEvent.textPlural = textKey + "_plural" - textboxEvent.count = quantity - conversationEvent.addChildEvent(textboxEvent) - - # Begin processing - super.start() - startChild(conversationEvent) - -func rewardItem(): - getInventory().addItem(itemType, quantity) - -func isDone() -> bool: - if !super.isDone(): - return false - - if !showText: - return true - return conversationEvent.isDone() - -func end() -> void: - rewardItem() - if removeNode: - var parent = removeNode.get_parent() - if parent: - parent.remove_child(removeNode) - removeNode.queue_free() - removeNode = null - super.end() diff --git a/scripts/Event/Item/EventGetItem.gd.uid b/scripts/Event/Item/EventGetItem.gd.uid deleted file mode 100644 index 4dd8c20..0000000 --- a/scripts/Event/Item/EventGetItem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b41umpbgqfuc2 diff --git a/scripts/Event/Item/EventItem.gd b/scripts/Event/Item/EventItem.gd deleted file mode 100644 index fe4ab26..0000000 --- a/scripts/Event/Item/EventItem.gd +++ /dev/null @@ -1,11 +0,0 @@ -class_name EventItem extends "res://scripts/Event/Flow/EventWithChildren.gd" -const Inventory = preload("res://scripts/Item/Inventory.gd") - -@export var itemType:Item.Type = Item.Type.POTION -@export var quantity:int = 1 -var inventory:Inventory = null - -func getInventory() -> Inventory: - if inventory == null: - inventory = ITEM.PLAYER_INVENTORY - return inventory \ No newline at end of file diff --git a/scripts/Event/Item/EventItem.gd.uid b/scripts/Event/Item/EventItem.gd.uid deleted file mode 100644 index d829fef..0000000 --- a/scripts/Event/Item/EventItem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bgd2nkg5ni2et diff --git a/scripts/Event/Quest/EventIfQuest.gd b/scripts/Event/Quest/EventIfQuest.gd deleted file mode 100644 index 1f47542..0000000 --- a/scripts/Event/Quest/EventIfQuest.gd +++ /dev/null @@ -1,77 +0,0 @@ -class_name EventIfQuest extends "res://scripts/Event/Condition/EventIf.gd" -## Event that checks if a quest is in a specific state, if the condition is met -## then all children events will be run through. -## -## Can also be used as part of a trigger condition to fire if the quest state -## is updated. - -enum Type { - ANY_OF_OBJECTIVES_COMPLETED, - ALL_OF_OBJECTIVES_COMPLETED, - ANY_OF_OBJECTIVES_NOT_COMPLETED, - ALL_OF_OBJECTIVES_NOT_COMPLETED, - SPECIFIC_OBJECTIVE_COMPLETED, - SPECIFIC_OBJECTIVE_NOT_COMPLETED, - QUEST_STARTED, - QUEST_NOT_STARTED, -} - -@export var questKey:QuestSystem.QuestKey = QuestSystem.QuestKey.TEST_QUEST -@export var type:Type = Type.ALL_OF_OBJECTIVES_COMPLETED -@export var objective:int = 0 - -func ifCondition() -> bool: - var quest:Quest = QUEST.quests.get(questKey) - - match type: - Type.ANY_OF_OBJECTIVES_COMPLETED: - for objective in quest.objecitves: - if !objective.isCompleted(): - return true - - Type.ALL_OF_OBJECTIVES_COMPLETED: - for objective in quest.objectives: - if !objective.isCompleted(): - return false - return true - - Type.ANY_OF_OBJECTIVES_NOT_COMPLETED: - for objective in quest.objectives: - if !objective.isCompleted(): - return true - - Type.ALL_OF_OBJECTIVES_NOT_COMPLETED: - for objective in quest.objectives: - if objective.isCompleted(): - return false - return true - - Type.SPECIFIC_OBJECTIVE_COMPLETED: - if quest.objectives[objective].isCompleted(): - return true - - Type.SPECIFIC_OBJECTIVE_NOT_COMPLETED: - if quest.objectives[objective].isCompleted(): - return false - return true - - Type.QUEST_STARTED: - if quest.isStarted(): - return true - - Type.QUEST_NOT_STARTED: - if !quest.isStarted(): - return true - - return false - -func subscribeEvents() -> void: - QUEST.questUpdated.connect(onQuestUpdated) - -func unsubscribeEvents() -> void: - QUEST.questUpdated.disconnect(onQuestUpdated) - -func onQuestUpdated(quest:Quest) -> void: - if quest.questKey != questKey: - return - self.onEventTrigger() diff --git a/scripts/Event/Quest/EventIfQuest.gd.uid b/scripts/Event/Quest/EventIfQuest.gd.uid deleted file mode 100644 index b85422b..0000000 --- a/scripts/Event/Quest/EventIfQuest.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://0ev1l0bf85gj diff --git a/scripts/Event/Quest/EventQuestAllObjectivesComplete.gd.uid b/scripts/Event/Quest/EventQuestAllObjectivesComplete.gd.uid deleted file mode 100644 index f51265d..0000000 --- a/scripts/Event/Quest/EventQuestAllObjectivesComplete.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://0aipsu5ele44 diff --git a/scripts/Event/Quest/EventQuestObjectiveComplete.gd.uid b/scripts/Event/Quest/EventQuestObjectiveComplete.gd.uid deleted file mode 100644 index f69a1e5..0000000 --- a/scripts/Event/Quest/EventQuestObjectiveComplete.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cnbl4x8p2xsx5 diff --git a/scripts/Event/Quest/EventQuestObjectiveUpdate.gd.uid b/scripts/Event/Quest/EventQuestObjectiveUpdate.gd.uid deleted file mode 100644 index d632248..0000000 --- a/scripts/Event/Quest/EventQuestObjectiveUpdate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c2aj13e48jjd4 diff --git a/scripts/Event/Quest/EventShowQuest.gd b/scripts/Event/Quest/EventShowQuest.gd deleted file mode 100644 index baed943..0000000 --- a/scripts/Event/Quest/EventShowQuest.gd +++ /dev/null @@ -1,19 +0,0 @@ -class_name EventShowQuest extends "res://scripts/Event/Event.gd" - -@export var quest:QuestSystem.QuestKey = QuestSystem.QuestKey.TEST_QUEST -@export var waitUntilClosed:bool = true -@export var showQuest:bool = true - -func start(): - if showQuest: - UI.QUEST_MENU.open(quest) - pass - -func isDone() -> bool: - if !super.isDone(): - return false - - if waitUntilClosed and showQuest: - return !UI.QUEST_MENU.isOpen() - - return true diff --git a/scripts/Event/Quest/EventShowQuest.gd.uid b/scripts/Event/Quest/EventShowQuest.gd.uid deleted file mode 100644 index fc58dd8..0000000 --- a/scripts/Event/Quest/EventShowQuest.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dd6ppw243a5x7 diff --git a/scripts/Event/Quest/EventStartQuest.gd b/scripts/Event/Quest/EventStartQuest.gd deleted file mode 100644 index 8b09473..0000000 --- a/scripts/Event/Quest/EventStartQuest.gd +++ /dev/null @@ -1,9 +0,0 @@ -class_name EventStartQuest extends "res://scripts/Event/Quest/EventShowQuest.gd" - -@export_category("Event Start Quest") -var nothing:bool = false - -func start(): - assert(QUEST.quests.has(quest), "Quest not found.") - QUEST.quests[quest].start() - super.start() \ No newline at end of file diff --git a/scripts/Event/Quest/EventStartQuest.gd.uid b/scripts/Event/Quest/EventStartQuest.gd.uid deleted file mode 100644 index 639bfb3..0000000 --- a/scripts/Event/Quest/EventStartQuest.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c4d7nithqnx5y diff --git a/scripts/InteractableArea.gd b/scripts/InteractableArea.gd new file mode 100644 index 0000000..752233c --- /dev/null +++ b/scripts/InteractableArea.gd @@ -0,0 +1,3 @@ +class_name InteractableArea extends Area3D + +signal interactEvent \ No newline at end of file diff --git a/scripts/InteractableArea.gd.uid b/scripts/InteractableArea.gd.uid new file mode 100644 index 0000000..ea0fb31 --- /dev/null +++ b/scripts/InteractableArea.gd.uid @@ -0,0 +1 @@ +uid://b00rxpveu3v4m diff --git a/scripts/Item/Inventory.gd b/scripts/Item/Inventory.gd deleted file mode 100644 index 5242043..0000000 --- a/scripts/Item/Inventory.gd +++ /dev/null @@ -1,114 +0,0 @@ -class_name Inventory - -enum ItemSortType { - NAME, - TYPE -}; - -class ItemStackNameComparator: - static func _sort(a, b): - assert(false, "Going to change implementation of this later.") - # return ITEM.getItemName(a).to_lower() < ITEM.getItemName(b).to_lower() - -class ItemStackTypeComparator: - static func _sort(a, b): - return a.item.getCategory() < b.item.getCategory() - -const ITEM_STACK_SIZE_MAX = 99; - -var contents:Array[ItemStack] = []; -signal inventoryUpdated() - -func isPlayerInventory() -> bool: - return self == ITEM.PLAYER_INVENTORY - -func addItem(type:Item.Type, quantity: int = 1) -> void: - if !ITEM.isStackable(type): - # Item cannot be stacked, add each item to inv - for i in range(quantity): - contents.append(ItemStack.new(type, 1)) - _contentsUpdated() - return - - # Check for existing stacks - for stack in contents: - if stack.type != type or stack.quantity >= ITEM_STACK_SIZE_MAX: - continue - - var spaceAvailable = ITEM_STACK_SIZE_MAX - stack.quantity - - if quantity <= spaceAvailable: - stack.quantity += quantity; - _contentsUpdated() - return - - stack.quantity = ITEM_STACK_SIZE_MAX; - quantity -= spaceAvailable; - - # Add any remaining inventory as new stack. - while quantity > 0: - var newStackQuantity = min(quantity, ITEM_STACK_SIZE_MAX); - contents.append(ItemStack.new(type, newStackQuantity)); - quantity -= newStackQuantity; - _contentsUpdated() - -func removeItem(type:Item.Type, quantity:int) -> void: - var totalQuantity = 0 - - # Calculate total quantity of the item in the inventory - for stack in contents: - if stack.type != type: - continue - totalQuantity += stack.quantity - - if totalQuantity < quantity: - push_error("Not enough quantity to remove"); - return - - # Remove the quantity from the stacks - for stack in contents: - if stack.type != type: - continue - - if stack.quantity < quantity: - quantity -= stack.quantity - contents.erase(stack) - - stack.quantity -= quantity - if stack.quantity == 0: - contents.erase(stack) - - if quantity == 0: - self._contentsUpdated() - return - -func removeStack(stack: ItemStack) -> void: - self.removeItem(stack.item, stack.quantity); - -func hasItem(type:Item.Type, quantity: int = 1) -> bool: - var totalQuantity = 0 - - for stack in contents: - if stack.type != type: - continue - - totalQuantity += stack.quantity - - if totalQuantity >= quantity: - return true - - return false - -func sortBy(by:ItemSortType) -> void: - match by: - ItemSortType.NAME: - contents.sort_custom(ItemStackNameComparator._sort) - ItemSortType.TYPE: - contents.sort_custom(ItemStackTypeComparator._sort) - _: - assert(false, "Invalid sort type: %s" % by) - -func _contentsUpdated() -> void: - inventoryUpdated.emit() - if isPlayerInventory(): - QUEST.playerInventoryUpdated.emit() diff --git a/scripts/Item/Inventory.gd.uid b/scripts/Item/Inventory.gd.uid deleted file mode 100644 index c9b8af7..0000000 --- a/scripts/Item/Inventory.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dgunweso54t2t diff --git a/scripts/Item/Item.gd b/scripts/Item/Item.gd deleted file mode 100644 index 946dba1..0000000 --- a/scripts/Item/Item.gd +++ /dev/null @@ -1,37 +0,0 @@ -class_name Item extends Node - -enum Type { - # Items - POTION = 1, - - # Ingredients - ONION = 2, - SWEET_POTATO = 3, - - # Recipe outputs - BAKED_SWEET_POTATO = 4, -}; - -enum Category { - MEDICINE, - KEY_ITEM, - INGREDIENT, - FOOD -}; - -static func getCategoryTitleKey(cat:Category) -> String: - return "item.category." + str(cat).to_lower() + ".title" - -@export var title:String = "" -@export var description_text:String = "" -@export var type:Type = Type.POTION -@export var category:Category = Category.INGREDIENT -@export var stackable:bool = true - -func getTransContext() -> TransContext: - var ctx:TransContext = TransContext.new() - ctx.addTransPlural("title", title) - ctx.addTrans("description", description_text) - ctx.addTrans("category", getCategoryTitleKey(category)) - ctx.addBool("stackable", stackable) - return ctx diff --git a/scripts/Item/Item.gd.uid b/scripts/Item/Item.gd.uid deleted file mode 100644 index 5662c8c..0000000 --- a/scripts/Item/Item.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c6t5tprnd23t0 diff --git a/scripts/Item/ItemResource.gd b/scripts/Item/ItemResource.gd deleted file mode 100644 index 729b9cf..0000000 --- a/scripts/Item/ItemResource.gd +++ /dev/null @@ -1,4 +0,0 @@ -class_name ItemResource extends Resource - -@export var itemType:Item.Type = Item.Type.ONION; -@export var quantity:int = 1; \ No newline at end of file diff --git a/scripts/Item/ItemResource.gd.uid b/scripts/Item/ItemResource.gd.uid deleted file mode 100644 index 45a2954..0000000 --- a/scripts/Item/ItemResource.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c26aptwsjs044 diff --git a/scripts/Item/ItemStack.gd b/scripts/Item/ItemStack.gd deleted file mode 100644 index 6373a87..0000000 --- a/scripts/Item/ItemStack.gd +++ /dev/null @@ -1,8 +0,0 @@ -class_name ItemStack - -var type:Item.Type; -var quantity:int; - -func _init(type:Item.Type, quantity:int = 1): - self.type = type; - self.quantity = quantity; diff --git a/scripts/Item/ItemStack.gd.uid b/scripts/Item/ItemStack.gd.uid deleted file mode 100644 index a3212a8..0000000 --- a/scripts/Item/ItemStack.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://re7dg4hpp804 diff --git a/scripts/Item/ItemType.gd.uid b/scripts/Item/ItemType.gd.uid deleted file mode 100644 index cbf0331..0000000 --- a/scripts/Item/ItemType.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://nibssdy3ardv diff --git a/scripts/Item/Potion.gd.uid b/scripts/Item/Potion.gd.uid deleted file mode 100644 index ddf79b1..0000000 --- a/scripts/Item/Potion.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dpns5iesd08rl diff --git a/scripts/Item/ingredients/ItemOnion.gd b/scripts/Item/ingredients/ItemOnion.gd deleted file mode 100644 index e920a35..0000000 --- a/scripts/Item/ingredients/ItemOnion.gd +++ /dev/null @@ -1 +0,0 @@ -class_name ItemOnion extends "res://scripts/Item/Item.gd" diff --git a/scripts/Item/ingredients/ItemOnion.gd.uid b/scripts/Item/ingredients/ItemOnion.gd.uid deleted file mode 100644 index 8e84340..0000000 --- a/scripts/Item/ingredients/ItemOnion.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dipe47ljyvycv diff --git a/scripts/Item/medicine/ItemPotion.gd b/scripts/Item/medicine/ItemPotion.gd deleted file mode 100644 index baab434..0000000 --- a/scripts/Item/medicine/ItemPotion.gd +++ /dev/null @@ -1 +0,0 @@ -class_name ItemPotion extends Item \ No newline at end of file diff --git a/scripts/Item/medicine/ItemPotion.gd.uid b/scripts/Item/medicine/ItemPotion.gd.uid deleted file mode 100644 index f0d1657..0000000 --- a/scripts/Item/medicine/ItemPotion.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b6v2o563casay diff --git a/scripts/Map/Map.gd b/scripts/Map/Map.gd deleted file mode 100644 index ac18c8a..0000000 --- a/scripts/Map/Map.gd +++ /dev/null @@ -1,13 +0,0 @@ -class_name Map extends Node - -@export_multiline var title:String = "" -@export var mapEnterEvent:Event = null - -func _ready() -> void: - if mapEnterEvent: - mapEnterEvent.start() - -func getTransContext() -> TransContext: - var ctx = TransContext.new() - ctx.set("title", title) - return ctx \ No newline at end of file diff --git a/scripts/Map/Map.gd.uid b/scripts/Map/Map.gd.uid deleted file mode 100644 index dc67b0b..0000000 --- a/scripts/Map/Map.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c37crdel0m5mw diff --git a/scripts/Quest/Quest.gd b/scripts/Quest/Quest.gd deleted file mode 100644 index a1b8c64..0000000 --- a/scripts/Quest/Quest.gd +++ /dev/null @@ -1,36 +0,0 @@ -class_name Quest extends Node - -@export_multiline var title:String = "" -@export var questKey:QuestSystem.QuestKey = QuestSystem.QuestKey.TEST_QUEST - -var questStarted:bool = false -var questComplete:bool = false - -var objectives:Array[QuestObjective] - -func _ready() -> void: - objectives = [] - for child in get_children(): - if child is QuestObjective: - objectives.append(child) - child.onQuestReady(self) - -func start() -> void: - questStarted = true - questComplete = false - QUEST.questStarted.emit(self) - QUEST.questUpdated.emit(self) - -func isCompleted() -> bool: - return questComplete - -func isStarted() -> bool: - return questStarted - -func objectiveUpdated(_objective:QuestObjective) -> void: - QUEST.questUpdated.emit(self) - -func getTransContext() -> TransContext: - var ctx:TransContext = TransContext.new() - ctx.addTransPlural("title", title) - return ctx diff --git a/scripts/Quest/Quest.gd.uid b/scripts/Quest/Quest.gd.uid deleted file mode 100644 index dcaaee9..0000000 --- a/scripts/Quest/Quest.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dn0kxbe85n40f diff --git a/scripts/Quest/QuestObjective.gd b/scripts/Quest/QuestObjective.gd deleted file mode 100644 index df81035..0000000 --- a/scripts/Quest/QuestObjective.gd +++ /dev/null @@ -1,53 +0,0 @@ -class_name QuestObjective extends Node - -enum Type { - Item, -} - -@export_multiline var title:String = "" -@export_multiline var description:String = "" -@export var objectiveType:Type = Type.Item - -@export var itemType:Item.Type = Item.Type.POTION -@export var quantity:int = 1 - -var completed:bool = false -var quest:Quest = null - -func onQuestReady(_quest:Quest) -> void: - self.quest = _quest - if objectiveType == Type.Item: - QUEST.playerInventoryUpdated.connect(_onPlayerInventoryUpdated) - _onPlayerInventoryUpdated() - -func _exit_tree() -> void: - QUEST.playerInventoryUpdated.disconnect(_onPlayerInventoryUpdated) - -func _onPlayerInventoryUpdated() -> void: - if !quest.isStarted(): - return - - # Ensure player has the item - var hasItem = ITEM.PLAYER_INVENTORY.hasItem(itemType, quantity) - - if hasItem && !completed: - self.completed = true - quest.objectiveUpdated(self) - else: - self.completed = false - quest.objectiveUpdated(self) - -func isCompleted() -> bool: - return completed - -func getTransContext() -> TransContext: - var ctx = TransContext.new() - - ctx.addTrans("title", title) - ctx.addTrans("description", description) - - if objectiveType == Type.Item: - ctx.addInteger("quantity", quantity) - ctx.addContext("item", ITEM.getItem(itemType).getTransContext()) - - return ctx diff --git a/scripts/Quest/QuestObjective.gd.uid b/scripts/Quest/QuestObjective.gd.uid deleted file mode 100644 index 5eeb5c5..0000000 --- a/scripts/Quest/QuestObjective.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://de1ao4huhy0hm diff --git a/scripts/Quest/QuestStage.gd.uid b/scripts/Quest/QuestStage.gd.uid deleted file mode 100644 index bc3e9b9..0000000 --- a/scripts/Quest/QuestStage.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://db4yhcxyhiosq diff --git a/scripts/Scene/CookingScene.gd.uid b/scripts/Scene/CookingScene.gd.uid deleted file mode 100644 index 7f7ab0a..0000000 --- a/scripts/Scene/CookingScene.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ckxjs4wty6sju diff --git a/scripts/Scene/CuttingScene.gd.uid b/scripts/Scene/CuttingScene.gd.uid deleted file mode 100644 index ca9cb2b..0000000 --- a/scripts/Scene/CuttingScene.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://kwnx0enmgk54 diff --git a/scripts/Scene/MainMenuScene.gd b/scripts/Scene/MainMenuScene.gd deleted file mode 100644 index 0b35009..0000000 --- a/scripts/Scene/MainMenuScene.gd +++ /dev/null @@ -1,4 +0,0 @@ -class_name MainMenuScene extends Node - -func _enter_tree() -> void: - pass diff --git a/scripts/Scene/MainMenuScene.gd.uid b/scripts/Scene/MainMenuScene.gd.uid deleted file mode 100644 index 935ab8f..0000000 --- a/scripts/Scene/MainMenuScene.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cak4lch21nq30 diff --git a/scripts/Scene/OverworldScene.gd b/scripts/Scene/OverworldScene.gd deleted file mode 100644 index ac1acc4..0000000 --- a/scripts/Scene/OverworldScene.gd +++ /dev/null @@ -1,25 +0,0 @@ -class_name OverworldScene extends Node3D - -func _ready() -> void: - _updateMap() - - OVERWORLD.mapChanged.connect(_onMapChanged) - -func _exit_tree() -> void: - OVERWORLD.mapChanged.disconnect(_onMapChanged) - -func _updateMap() -> void: - # Remove all children - for child in $Map.get_children(): - child.queue_free() - $Map.remove_child(child) - - # Load the new map - if not OVERWORLD.MAPS.has(OVERWORLD.currentMap): - return - var map = load(OVERWORLD.MAPS[OVERWORLD.currentMap]) - var mapInstance = map.instantiate() - $Map.add_child(mapInstance) - -func _onMapChanged(mapHandle:String, mapScene:String) -> void: - _updateMap() diff --git a/scripts/Scene/OverworldScene.gd.uid b/scripts/Scene/OverworldScene.gd.uid deleted file mode 100644 index c6f6c64..0000000 --- a/scripts/Scene/OverworldScene.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://pcncoc6wum4q diff --git a/scripts/Scene/RootScene.gd.uid b/scripts/Scene/RootScene.gd.uid deleted file mode 100644 index 3ca9094..0000000 --- a/scripts/Scene/RootScene.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cj4jxqpykhteg diff --git a/scripts/Scene/UIScene.gd.uid b/scripts/Scene/UIScene.gd.uid deleted file mode 100644 index 397aff8..0000000 --- a/scripts/Scene/UIScene.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://vjr7s045ri4a diff --git a/scripts/Singleton/Battle.gd.uid b/scripts/Singleton/Battle.gd.uid deleted file mode 100644 index d9b04c6..0000000 --- a/scripts/Singleton/Battle.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://2ejo2auklqhu diff --git a/scripts/Singleton/BattleSystem.gd b/scripts/Singleton/BattleSystem.gd deleted file mode 100644 index b807dee..0000000 --- a/scripts/Singleton/BattleSystem.gd +++ /dev/null @@ -1 +0,0 @@ -class_name BattleSystem extends Node \ No newline at end of file diff --git a/scripts/Singleton/BattleSystem.gd.uid b/scripts/Singleton/BattleSystem.gd.uid deleted file mode 100644 index c24dab8..0000000 --- a/scripts/Singleton/BattleSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://mr6i8copcn37 diff --git a/scripts/Singleton/Cooking.gd.uid b/scripts/Singleton/Cooking.gd.uid deleted file mode 100644 index e5944fe..0000000 --- a/scripts/Singleton/Cooking.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dnnr0o0af78jl diff --git a/scripts/Singleton/CookingSystem.gd b/scripts/Singleton/CookingSystem.gd deleted file mode 100644 index 8f22e42..0000000 --- a/scripts/Singleton/CookingSystem.gd +++ /dev/null @@ -1 +0,0 @@ -class_name CookingSystem extends Node \ No newline at end of file diff --git a/scripts/Singleton/CookingSystem.gd.uid b/scripts/Singleton/CookingSystem.gd.uid deleted file mode 100644 index 58c20fe..0000000 --- a/scripts/Singleton/CookingSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://drcaiuyla2psa diff --git a/scripts/Singleton/Cutscene.gd.uid b/scripts/Singleton/Cutscene.gd.uid deleted file mode 100644 index e158fcd..0000000 --- a/scripts/Singleton/Cutscene.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b83dwcvh76qs7 diff --git a/scripts/Singleton/CutsceneSystem.gd.uid b/scripts/Singleton/CutsceneSystem.gd.uid deleted file mode 100644 index df3c33a..0000000 --- a/scripts/Singleton/CutsceneSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d2b7r3t5ownc5 diff --git a/scripts/Singleton/Event.gd.uid b/scripts/Singleton/Event.gd.uid deleted file mode 100644 index e3d48fc..0000000 --- a/scripts/Singleton/Event.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cde8ji6yll5sl diff --git a/scripts/Singleton/EventSystem.gd b/scripts/Singleton/EventSystem.gd deleted file mode 100644 index e4be8d4..0000000 --- a/scripts/Singleton/EventSystem.gd +++ /dev/null @@ -1,71 +0,0 @@ -class_name EventSystem extends Node - -const EVENT_FLAG_COUNT = 32 - -enum SpecialEvent { - INVALID = 0, - TEST_QUEST = 1, -}; - -var eventFlags:Dictionary[int, int] = {} -signal eventFlagUpdated(event:SpecialEvent, flags:int) - -func eventFlagOn(event:SpecialEvent, flagsToTurnOn:int) -> void: - if !eventFlags.has(event): - eventFlags[event] = 0; - - eventFlags[event] |= flagsToTurnOn; - eventFlagUpdated.emit(event, eventFlags[event]); - -func eventFlagOff(event:SpecialEvent, flagsToTurnOff:int) -> void: - if !eventFlags.has(event): - eventFlags[event] = 0; - eventFlags[event] &= ~flagsToTurnOff; - eventFlagUpdated.emit(event, eventFlags[event]); - -func eventFlagSetTo(event:SpecialEvent, flagsToSet:int) -> void: - if !eventFlags.has(event): - eventFlags[event] = 0; - eventFlags[event] = flagsToSet; - eventFlagUpdated.emit(event, eventFlags[event]); - -func eventAreFlagsOn(event:SpecialEvent, flagsToCheck:int) -> bool: - if !eventFlags.has(event): - eventFlags[event] = 0; - return (eventFlags[event] & flagsToCheck) == flagsToCheck; - -func eventIsAnyOfFlagsOn(event:SpecialEvent, flagsToCheck:int) -> bool: - if !eventFlags.has(event): - eventFlags[event] = 0; - return (eventFlags[event] & flagsToCheck) != 0; - -func eventAreFlagsOff(event:SpecialEvent, flagsToCheck:int) -> bool: - if !eventFlags.has(event): - eventFlags[event] = 0; - return (eventFlags[event] & flagsToCheck) == 0; - -func eventIsAnyOfFlagsOff(event:SpecialEvent, flagsToCheck:int) -> bool: - if !eventFlags.has(event): - eventFlags[event] = 0; - return (eventFlags[event] & flagsToCheck) != flagsToCheck; - -# Adds an event that is created by code into the scene tree and lets it be -# managed properly by the event system. -func addEvent(event:Event) -> void: - assert( - !event.is_inside_tree(), - "Event is already inside the scene tree, cannot add it again." - ) - - $StartedEvents.add_child(event) - event.inEventSystemTree = true - -func removeEvent(event:Event) -> void: - assert( - event.inEventSystemTree, - "Event is not inside event system tree." - ) - - event.inEventSystemTree = false - $StartedEvents.remove_child(event) - event.queue_free() \ No newline at end of file diff --git a/scripts/Singleton/EventSystem.gd.uid b/scripts/Singleton/EventSystem.gd.uid deleted file mode 100644 index 1d66f0e..0000000 --- a/scripts/Singleton/EventSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dy8gbmwddma3b diff --git a/scripts/Singleton/Item.gd.uid b/scripts/Singleton/Item.gd.uid deleted file mode 100644 index 9c71ebf..0000000 --- a/scripts/Singleton/Item.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://1vd57s0j3b2o diff --git a/scripts/Singleton/ItemSystem.gd b/scripts/Singleton/ItemSystem.gd deleted file mode 100644 index bf6c17d..0000000 --- a/scripts/Singleton/ItemSystem.gd +++ /dev/null @@ -1,35 +0,0 @@ -class_name ItemSystem extends Node -const Inventory = preload("res://scripts/Item/Inventory.gd") - - -static var PLAYER_INVENTORY = Inventory.new(); -static var ITEM_MAP:Dictionary[Item.Type,Item] - -func _addItemRecursively(node:Node) -> void: - if node is Item: - if ITEM_MAP.has(node.type): - assert(false, "Duplicate item type found: " + str(node.type)) - ITEM_MAP[node.type] = node - - for childIndex in node.get_child_count(): - _addItemRecursively(node.get_child(childIndex)) - -func _enter_tree() -> void: - # Add all items - ITEM_MAP = {} - _addItemRecursively(self) - - # Check if we are missing any item types. - for itemType in Item.Type.values(): - if !ITEM_MAP.has(itemType): - assert(false, "Missing item type: " + Item.Type.find_key(itemType)) - -func getItem(type:Item.Type) -> Item: - if !ITEM_MAP.has(type): - assert(false, "Item type not found: " + Item.Type.find_key(type)) - return null - - return ITEM_MAP[type] - -func isStackable(itemType:Item.Type) -> bool: - return getItem(itemType).stackable diff --git a/scripts/Singleton/ItemSystem.gd.uid b/scripts/Singleton/ItemSystem.gd.uid deleted file mode 100644 index 97d3562..0000000 --- a/scripts/Singleton/ItemSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bc4c4eqfrnegb diff --git a/scripts/Singleton/Load.gd.uid b/scripts/Singleton/Load.gd.uid deleted file mode 100644 index 3324715..0000000 --- a/scripts/Singleton/Load.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://whqkvjhckgb0 diff --git a/scripts/Singleton/LoadSystem.gd b/scripts/Singleton/LoadSystem.gd deleted file mode 100644 index 31662b0..0000000 --- a/scripts/Singleton/LoadSystem.gd +++ /dev/null @@ -1 +0,0 @@ -class_name LoadSystem extends Node \ No newline at end of file diff --git a/scripts/Singleton/LoadSystem.gd.uid b/scripts/Singleton/LoadSystem.gd.uid deleted file mode 100644 index 31d1741..0000000 --- a/scripts/Singleton/LoadSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://07tsn64m0l1y diff --git a/scripts/Singleton/Locale.gd.uid b/scripts/Singleton/Locale.gd.uid deleted file mode 100644 index ecc6985..0000000 --- a/scripts/Singleton/Locale.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bv8v8hdhnio1h diff --git a/scripts/Singleton/LocaleSystem.gd b/scripts/Singleton/LocaleSystem.gd deleted file mode 100644 index 3629b57..0000000 --- a/scripts/Singleton/LocaleSystem.gd +++ /dev/null @@ -1,109 +0,0 @@ -class_name LocaleSystem extends Node - -enum Language { - ENGLISH, - JAPANESE, - SPANISH, -}; - -enum Region { - US, - EU, - AU, - JP -} - -const LANGUAGE_MATCH:Dictionary[String, Language] = { - "EN": Language.ENGLISH, - "JA": Language.JAPANESE, - "ES": Language.SPANISH -} - -const REGION_MATCH:Dictionary[String, Region] = { - "US": Region.US, - "AU": Region.AU, - "EU": Region.EU, - "JP": Region.JP -} - -const DEFAULT_LANGUAGE:Language = Language.ENGLISH -const DEFAULT_REGION:Region = Region.US - -var locale:String = ""; -var language:Language = -1 -var region:Region = -1 - -signal localeChanged - -func _init() -> void: - var preferred = OS.get_locale() - self.setLocaleFromLocaleString(preferred) - -func setLocaleFromLocaleString(localeString:String) -> void: - var parts:PackedStringArray = localeString.split("_") - - var strLang:String - var strReg:String - - # Default missing region or language to "??", will default lower - if parts.size() == 0: - strLang = "??".to_upper() - strReg = "??".to_upper() - elif parts.size() == 1: - strLang = parts[0].to_upper() - strReg = "??".to_upper() - else: - strLang = parts[0].to_upper() - strReg = parts[1].to_upper() - - # Select matching internal language and region - var lang:Language - var reg:Region - - if LANGUAGE_MATCH.has(strLang): - lang = LANGUAGE_MATCH[strLang] - else: - print("Unknown language: " + strLang) - lang = DEFAULT_LANGUAGE - reg = DEFAULT_REGION - - if REGION_MATCH.has(strReg): - reg = REGION_MATCH[strReg] - else: - print("Unknown region: " + strReg) - reg = DEFAULT_REGION - - # Set locale. - self.setLocale(lang, reg) - -func setLocale(language:Language, region:Region) -> void: - if self.language == language and self.region == region: - return - - var l:String = "" - - var matchLang = LANGUAGE_MATCH.find_key(language) - if matchLang: - l = matchLang.to_lower() - else: - print("Invalid language: " + str(language)) - l = LANGUAGE_MATCH.find_key(DEFAULT_LANGUAGE).to_lower() - - l += "_" - - var matchRegion = REGION_MATCH.find_key(region) - if matchRegion: - l += matchRegion.to_upper() - else: - print("Invalid region: " + str(region)) - l += REGION_MATCH.find_key(DEFAULT_REGION).to_upper() - - self.language = language - self.region = region - self.locale = l - TranslationServer.set_locale(l) - localeChanged.emit(l) - print("Locale set to: " + l) - -func formatInteger(integer:int) -> String: - return TextServerManager.get_primary_interface().format_number(str(integer)) diff --git a/scripts/Singleton/LocaleSystem.gd.uid b/scripts/Singleton/LocaleSystem.gd.uid deleted file mode 100644 index f295f0f..0000000 --- a/scripts/Singleton/LocaleSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ggg3o3aawvh5 diff --git a/scripts/Singleton/Overworld.gd.uid b/scripts/Singleton/Overworld.gd.uid deleted file mode 100644 index dfcccb4..0000000 --- a/scripts/Singleton/Overworld.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cnc1qkusjrf3k diff --git a/scripts/Singleton/OverworldSystem.gd b/scripts/Singleton/OverworldSystem.gd deleted file mode 100644 index a565bcd..0000000 --- a/scripts/Singleton/OverworldSystem.gd +++ /dev/null @@ -1,16 +0,0 @@ -class_name OverworldSystem extends Node - -const MAPS:Dictionary[String, String] = { - "TestMap": "res://scenes/Maps/TestMap/TestMap.tscn" -}; - -var currentMap:String = ""; - -signal mapChanged(mapHandle:String, mapScene:String); - -func setMap(map:String) -> void: - assert(MAPS.has(map), "Map not found: " + map) - if currentMap == map: - return - currentMap = map - mapChanged.emit(map, MAPS[map]) \ No newline at end of file diff --git a/scripts/Singleton/OverworldSystem.gd.uid b/scripts/Singleton/OverworldSystem.gd.uid deleted file mode 100644 index a2d1e1a..0000000 --- a/scripts/Singleton/OverworldSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://btowswycywrgc diff --git a/scripts/Singleton/Pause.gd.uid b/scripts/Singleton/Pause.gd.uid deleted file mode 100644 index e1d7baf..0000000 --- a/scripts/Singleton/Pause.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cr0ne40l5jf7m diff --git a/scripts/Singleton/PauseSystem.gd b/scripts/Singleton/PauseSystem.gd deleted file mode 100644 index ee831ff..0000000 --- a/scripts/Singleton/PauseSystem.gd +++ /dev/null @@ -1,37 +0,0 @@ -class_name PauseSystem extends Node - -enum PauseType { - # Completely unpaused - NOT_PAUSED, - # Fully paused, with no exceptions to anything - FULLY_PAUSED, - # Specific entities are paused - ENTITY_PAUSED, - # All entities are paused unless specified - CUTSCENE_PAUSED -}; - -var pauseType:PauseType = PauseType.NOT_PAUSED; -var entities:Array[Entity] = []; -var playerPaused:bool = false; - -func getPauseState() -> PauseType: - if isPlayerPaused(): - return PauseType.FULLY_PAUSED; - return pauseType; - -func pause( - pauseType:PauseType, - entities:Array = [], -) -> void: - self.pauseType = pauseType; - self.entities = entities; - -func unpause() -> void: - self.pauseType = PauseType.NOT_PAUSED; - -func isPlayerPaused() -> bool: - return playerPaused; - -func playerPauseToggle() -> void: - playerPaused = !playerPaused; diff --git a/scripts/Singleton/PauseSystem.gd.uid b/scripts/Singleton/PauseSystem.gd.uid deleted file mode 100644 index d525882..0000000 --- a/scripts/Singleton/PauseSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bontk8ex2kxkb diff --git a/scripts/Singleton/Quest.gd.uid b/scripts/Singleton/Quest.gd.uid deleted file mode 100644 index fd22101..0000000 --- a/scripts/Singleton/Quest.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d0060jeyftia7 diff --git a/scripts/Singleton/QuestSystem.gd b/scripts/Singleton/QuestSystem.gd deleted file mode 100644 index 84bd08f..0000000 --- a/scripts/Singleton/QuestSystem.gd +++ /dev/null @@ -1,27 +0,0 @@ -class_name QuestSystem extends Node - -enum QuestKey { - TEST_QUEST -}; - -var quests:Dictionary[int, Quest] - -signal questStarted(quest:Quest) -signal questUpdated(quest:Quest) -signal questCompleted(quest:Quest) -signal playerInventoryUpdated() -# signal questObjectiveCompleted(quest:Quest, objective:QuestObjective) - -func _ready() -> void: - _updateQuests() - -func _updateQuests() -> void: - quests = {} - for quest in $Quests.get_children(): - if quest is Quest: - if quests.has(quest.questKey): - assert(false, "Quest with key %s already exists" % quest.questKey) - quests[quest.questKey] = quest - - for quest in QuestKey: - assert(quests.has(QuestKey[quest]), "Quest with key %s does not exist" % quest) \ No newline at end of file diff --git a/scripts/Singleton/QuestSystem.gd.uid b/scripts/Singleton/QuestSystem.gd.uid deleted file mode 100644 index 0391ec6..0000000 --- a/scripts/Singleton/QuestSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dnlg1e8une55l diff --git a/scripts/Singleton/Recipe.gd.uid b/scripts/Singleton/Recipe.gd.uid deleted file mode 100644 index 42171a5..0000000 --- a/scripts/Singleton/Recipe.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://j87s6jrx8unn diff --git a/scripts/Singleton/RecipeSystem.gd b/scripts/Singleton/RecipeSystem.gd deleted file mode 100644 index 71368c7..0000000 --- a/scripts/Singleton/RecipeSystem.gd +++ /dev/null @@ -1,34 +0,0 @@ -class_name RecipeSystem extends Node - -var RECIPE_MAP:Dictionary[Recipe.Type, Recipe] = {} - -func _recurseChildren(node:Node) -> void: - if node is Recipe: - var recipe:Recipe = node as Recipe - if recipe.type in RECIPE_MAP: - assert(false, "Duplicate recipe type found: " + str(recipe.type)) - RECIPE_MAP[recipe.type] = recipe - else: - for child in node.get_children(): - _recurseChildren(child) - -func _updateRecipes() -> void: - RECIPE_MAP = {} - _recurseChildren(self) - -func _enter_tree() -> void: - _updateRecipes() - - for recipeType in Recipe.Type.values(): - if !RECIPE_MAP.has(recipeType): - assert(false, "Missing recipe type: " + Recipe.Type.find_key(recipeType)) - -func _init() -> void: - _updateRecipes() - -func getRecipe(recipeType:Recipe.Type) -> Recipe: - if RECIPE_MAP.has(recipeType): - return RECIPE_MAP[recipeType] - else: - assert(false, "Recipe type not found: " + Recipe.Type.find_key(recipeType)) - return null diff --git a/scripts/Singleton/RecipeSystem.gd.uid b/scripts/Singleton/RecipeSystem.gd.uid deleted file mode 100644 index 87a9cd3..0000000 --- a/scripts/Singleton/RecipeSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b83k8ksk1dpu2 diff --git a/scripts/Singleton/SceneManager.gd.uid b/scripts/Singleton/SceneManager.gd.uid deleted file mode 100644 index 9863a3c..0000000 --- a/scripts/Singleton/SceneManager.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ciexpxnj51uux diff --git a/scripts/Singleton/SceneSystem.gd b/scripts/Singleton/SceneSystem.gd deleted file mode 100644 index c1ff31e..0000000 --- a/scripts/Singleton/SceneSystem.gd +++ /dev/null @@ -1,34 +0,0 @@ -class_name SceneSystem extends Node - -const MainMenu = preload("res://scenes/MainMenu.tscn"); -const OverworldScene = preload("res://scenes/Overworld.tscn"); - -const SCENES:Dictionary[String, PackedScene] = { - "Initial": MainMenu, - "MainMenu": MainMenu, - "Overworld": OverworldScene -}; - -var scene = "Initial"; -var currentScene:Node = null; - -func _ready() -> void: - currentScene = get_tree().root.get_child(-1); - -func setScene(newScene:String) -> void: - print("Setting scene to " + str(newScene)); - scene = newScene; - - if not SCENES.has(newScene): - push_error("Scene not found: " + newScene); - return; - - var root = get_tree().root; - print("Current scene: " + str(currentScene)); - if currentScene: - currentScene.queue_free(); - - var newSceneInstance = SCENES[newScene].instantiate(); - if newSceneInstance: - root.add_child(newSceneInstance); - currentScene = newSceneInstance; diff --git a/scripts/Singleton/SceneSystem.gd.uid b/scripts/Singleton/SceneSystem.gd.uid deleted file mode 100644 index 6b09fe3..0000000 --- a/scripts/Singleton/SceneSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bbd8gcx6byjhf diff --git a/scripts/Singleton/Systems.gd.uid b/scripts/Singleton/Systems.gd.uid deleted file mode 100644 index d85a21a..0000000 --- a/scripts/Singleton/Systems.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cj8athi16655p diff --git a/scripts/Singleton/UI.gd.uid b/scripts/Singleton/UI.gd.uid deleted file mode 100644 index 50f5b6a..0000000 --- a/scripts/Singleton/UI.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dahhuhiu8u88b diff --git a/scripts/Singleton/UISystem.gd b/scripts/Singleton/UISystem.gd deleted file mode 100644 index 2054712..0000000 --- a/scripts/Singleton/UISystem.gd +++ /dev/null @@ -1,39 +0,0 @@ -class_name UISystem extends Control - -var QUEST_MENU:QuestMenu -var DEBUG_MENU:DebugMenu -var INVENTORY_MENU:FullInventoryMenu -var EVENT_FLAG_MENU:EventFlagMenu -var VN_TEXTBOX:VNTextbox - -func _ready() -> void: - QUEST_MENU = $QuestMenu - DEBUG_MENU = $DebugMenu - INVENTORY_MENU = $FullInventory - EVENT_FLAG_MENU = $EventFlagMenu - VN_TEXTBOX = $VNTextbox - -func _process(delta: float) -> void: - # This needs to always be at the end of the parent node's tree - get_parent().move_child(self, get_parent().get_child_count() - 1) - -func hasInteractionFocus() -> bool: - # Returns true if the UI system has focus, basically if any UI menu or - # element is open in a way that prevents interaction with the game world. - - if QUEST_MENU.isOpen(): - return true - - if DEBUG_MENU.isOpen(): - return true - - if INVENTORY_MENU.isOpen(): - return true - - if EVENT_FLAG_MENU.isOpen(): - return true - - if !VN_TEXTBOX.isClosed: - return true - - return false \ No newline at end of file diff --git a/scripts/Singleton/UISystem.gd.uid b/scripts/Singleton/UISystem.gd.uid deleted file mode 100644 index 323dfd5..0000000 --- a/scripts/Singleton/UISystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://kvdgrmutu6hl diff --git a/scripts/Singleton/VN.gd.uid b/scripts/Singleton/VN.gd.uid deleted file mode 100644 index 0a8ceb8..0000000 --- a/scripts/Singleton/VN.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://benvf7v4p4i2l diff --git a/scripts/Singleton/VNSystem.gd b/scripts/Singleton/VNSystem.gd deleted file mode 100644 index ac1cdec..0000000 --- a/scripts/Singleton/VNSystem.gd +++ /dev/null @@ -1,10 +0,0 @@ -class_name VNSystem extends Node -const VNTextbox = preload("res://scripts/UI/VNTextbox.gd") - -var vnTextbox:VNTextbox = null - -func _ready() -> void: - vnTextbox = UI.get_node("VNTextbox") - -func getTextbox() -> VNTextbox: - return vnTextbox diff --git a/scripts/Singleton/VNSystem.gd.uid b/scripts/Singleton/VNSystem.gd.uid deleted file mode 100644 index 138dd54..0000000 --- a/scripts/Singleton/VNSystem.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://chux5imw4pse6 diff --git a/scripts/TransContext.gd b/scripts/TransContext.gd deleted file mode 100644 index 6040b13..0000000 --- a/scripts/TransContext.gd +++ /dev/null @@ -1,133 +0,0 @@ -class_name TransContext - -var default:String = "title" -var pluralContext:String = "quantity" -var transBool:Dictionary[String, bool] = {} -var transInteger:Dictionary[String, int] = {} -var transFloat:Dictionary[String, float] = {} -var transStrings:Dictionary[String, String] = {} -var transStringsPlural:Dictionary[String, String] = {} -var subContexts:Dictionary[String, TransContext] = {} - -func setDefault(key:String) -> void: - default = key - -func setPluralContext(key:String) -> void: - pluralContext = key - -func addContext(key:String, ctx:TransContext) -> void: - if subContexts.has(key): - assert(false, "Context already exists: " + key) - subContexts[key] = ctx - -func addTrans(key:String, transl:String) -> void: - if transStrings.has(key): - assert(false, "Trans String already exists: " + key) - transStrings[key] = transl - -func addTransPlural(key:String, transl:String, suffix:String = "_plural") -> void: - if transStringsPlural.has(key + suffix) || transStringsPlural.has(key): - assert(false, "Trans Plural String already exists: " + key) - transStrings[key] = transl - transStringsPlural[key] = transl + suffix - -func addBool(key:String, value:bool) -> void: - if transBool.has(key): - assert(false, "Trans Bool String already exists: " + key) - transBool[key] = value - -func addInteger(key:String, value:int) -> void: - if transInteger.has(key): - assert(false, "Trans Integer String already exists: " + key) - transInteger[key] = value - -func addFloat(key:String, value:float) -> void: - if transFloat.has(key): - assert(false, "Trans Float String already exists: " + key) - transFloat[key] = value - -func build( - parent:TransContext = null, - parentDict:Dictionary[String, String] = {}, - key:String = "" -) -> Dictionary[String, String]: - var dict:Dictionary[String, String] = {} - - # Handle basic types - for boolKey in transBool.keys(): - var value:bool = transBool[boolKey] - dict[boolKey] = str(value).to_lower()# TODO: Change to yes/no? - - for intKey in transInteger.keys(): - var value:int = transInteger[intKey] - dict[intKey] = str(value) - - for floatKey in transFloat.keys(): - var value:float = transFloat[floatKey] - dict[floatKey] = str(value) - - # Determine the pluralized strings context - var count:int = -1 - if dict.has(pluralContext): - count = int(dict[pluralContext]) - elif parentDict.has(pluralContext): - count = int(parentDict[pluralContext]) - else: - count = 1 # Default to 1 if no count is specified - - # Handle pluralized strings - for strKey in transStringsPlural.keys(): - assert(transStrings.has(strKey), "Missing singular translation for: " + strKey) - dict[strKey] = tr_n( - transStrings[strKey], - transStringsPlural[strKey], - count - ) - - # Handle non pluralized strings - for strKey in transStrings.keys(): - # Already handled in pluralized strings? - if dict.has(strKey): - continue - dict[strKey] = tr(transStrings[strKey]) - - # Create a super context that contains all the parent translations and ours - var superDict = dict.duplicate() - superDict.merge(parentDict) - - # Generate sub contexts - for subKey in subContexts.keys(): - var subCtx:TransContext = subContexts[subKey] - var subDict:Dictionary[String, String] = subCtx.build( - self, - superDict, - subKey + "." - ) - # Merge with our dictionary - dict.merge(subDict) - - if key != "": - # Now prepend the parent key to all keys in the dictionary - var newDict:Dictionary[String, String] = {} - for k in dict.keys(): - var newKey:String = key + k - newDict[newKey] = dict[k] - - # Handle default key, this turns say "item.title" into just "item" - if dict.has(default): - var k2 = key.substr(0, key.length() - 1) # Remove trailing dot - newDict[k2] = dict[default] - - dict = newDict - - return dict - -func _trReplace(val:String) -> String: - var dict = self.build() - return val.format(dict) - -func trans(key:String) -> String: - return _trReplace(tr(key)) - -func transPlural(keySingle:String, keyPlural:String, count:int) -> String: - return _trReplace(tr_n(keySingle, keyPlural, count)) diff --git a/scripts/UI/AdvancedRichText.gd.uid b/scripts/UI/AdvancedRichText.gd.uid deleted file mode 100644 index b10a11b..0000000 --- a/scripts/UI/AdvancedRichText.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cq6bvma0kk6tg diff --git a/scripts/UI/DebugMenu.gd b/scripts/UI/DebugMenu.gd deleted file mode 100644 index e9d2c89..0000000 --- a/scripts/UI/DebugMenu.gd +++ /dev/null @@ -1,111 +0,0 @@ -class_name DebugMenu extends VBoxContainer - -func _ready() -> void: - show() - - $MainMenu.connect("pressed", _on_MainMenu_pressed); - $OverworldOption/Overworld.connect("pressed", _on_Overworld_pressed); - $Quest.connect("pressed", _on_Quests_pressed); - $Inventory.connect("pressed", _on_Inventory_pressed); - $Event.connect("pressed", _on_Event_pressed); - $Cutscene.connect("pressed", _on_Custscene_pressed); - $Cooking.connect("pressed", _on_Cooking_pressed); - $Battle.connect("pressed", _on_Battle_pressed); - - $LanguageOption/LangDropdown.item_selected.connect(_on_LanguageSelected) - $LanguageOption/RegDropdown.item_selected.connect(_on_RegionSelected) - - # Overworld List - var i:int = 0; - for map in OVERWORLD.MAPS.keys(): - $OverworldOption/MapDropdown.add_item(map, i); - i = i + 1; - - # Language list - i = 0 - for lang in LOCALE.LANGUAGE_MATCH.keys(): - $LanguageOption/LangDropdown.add_item(lang, i); - if LOCALE.LANGUAGE_MATCH[lang] == LOCALE.language: - $LanguageOption/LangDropdown.selected = i - i = i + 1; - - # Region list - i = 0 - for reg in LOCALE.REGION_MATCH.keys(): - $LanguageOption/RegDropdown.add_item(reg, i); - if LOCALE.REGION_MATCH[reg] == LOCALE.region: - $LanguageOption/RegDropdown.selected = i - i = i + 1; - -func _exit_tree() -> void: - $MainMenu.disconnect("pressed", _on_MainMenu_pressed); - $OverworldOption/Overworld.disconnect("pressed", _on_Overworld_pressed); - $Quest.disconnect("pressed", _on_Quests_pressed); - $Cutscene.disconnect("pressed", _on_Custscene_pressed); - $Cooking.disconnect("pressed", _on_Cooking_pressed); - $Battle.disconnect("pressed", _on_Battle_pressed); - -func _process(delta: float) -> void: - if Input.is_action_just_pressed("debug"): - print("Debug key pressed") - if isOpen(): - close() - else: - open() - -func _on_MainMenu_pressed(): - SCENE_MANAGER.setScene("MainMenu"); - close() - -func _on_Overworld_pressed(): - var keys:Array[String] = OVERWORLD.MAPS.keys() - OVERWORLD.setMap(keys[$OverworldOption/MapDropdown.selected]) - SCENE_MANAGER.setScene("Overworld"); - close() - -func _on_Quests_pressed(): - close() - if UI.QUEST_MENU.isOpen(): - UI.QUEST_MENU.close() - else: - UI.QUEST_MENU.open() - -func _on_Custscene_pressed(): - print("Cutscene pressed") - -func _on_Cooking_pressed(): - print("Cooking pressed") - -func _on_Battle_pressed(): - print("Battle pressed") - -func _on_Event_pressed(): - close() - if UI.EVENT_FLAG_MENU.isOpen(): - UI.EVENT_FLAG_MENU.close() - else: - UI.EVENT_FLAG_MENU.open() - -func _on_Inventory_pressed(): - close() - if UI.INVENTORY_MENU.isOpen(): - UI.INVENTORY_MENU.close() - else: - UI.INVENTORY_MENU.open() - -func _on_LanguageSelected(index:int) -> void: - var lang:String = $LanguageOption/LangDropdown.get_item_text(index) - LOCALE.setLocale(LOCALE.LANGUAGE_MATCH[lang], LOCALE.region) - -func _on_RegionSelected(index:int) -> void: - var reg:String = $LanguageOption/RegDropdown.get_item_text(index) - LOCALE.setLocale(LOCALE.language, LOCALE.REGION_MATCH[reg]) - -func open() -> void: - show() - -func close() -> void: - hide() - -func isOpen() -> bool: - return visible diff --git a/scripts/UI/DebugMenu.gd.uid b/scripts/UI/DebugMenu.gd.uid deleted file mode 100644 index df1b2d1..0000000 --- a/scripts/UI/DebugMenu.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bn2kdjf586e5p diff --git a/scripts/UI/EventFlagMenu.gd b/scripts/UI/EventFlagMenu.gd deleted file mode 100644 index b69609d..0000000 --- a/scripts/UI/EventFlagMenu.gd +++ /dev/null @@ -1,86 +0,0 @@ -class_name EventFlagMenu extends Panel - -@export var flagList:ItemList -@export var grid:GridContainer -@export var btnClose:Button - -var checkboxes:Array[CheckBox] = [] -var selectedEvent:int = -1 - -func _ready() -> void: - while grid.get_child_count() > 0: - var child = grid.get_child(0) - grid.remove_child(child) - child.queue_free() - - for i in range(0, EventSystem.EVENT_FLAG_COUNT): - var checkbox:CheckBox = CheckBox.new() - checkbox.text = "Flag %s" % str(i+1) - grid.add_child(checkbox) - checkboxes.append(checkbox) - checkbox.pressed.connect(_on_CheckboxPressed) - - hide() - _updateEventList() - _updateSelectedEvent() - - EVENT.eventFlagUpdated.connect(_on_EventFlagUpdated) - flagList.item_selected.connect(_on_EventSelected) - btnClose.pressed.connect(close) - -func _exit_tree() -> void: - EVENT.eventFlagUpdated.disconnect(_on_EventFlagUpdated) - flagList.item_selected.disconnect(_on_EventSelected) - - for checkbox in checkboxes: - grid.remove_child(checkbox) - checkbox.queue_free() - checkboxes.clear() - -func _updateEventList() -> void: - flagList.clear() - flagList.deselect_all() - - for event in EventSystem.SpecialEvent: - flagList.add_item(event) - -func _updateSelectedEvent() -> void: - if selectedEvent == -1: - for i in range(0, EventSystem.EVENT_FLAG_COUNT): - checkboxes[i].visible = false - return - - for i in range(0, EventSystem.EVENT_FLAG_COUNT): - var cb = checkboxes[i] - cb.visible = true - cb.button_pressed = EVENT.eventIsAnyOfFlagsOn(selectedEvent, 1 << i) - -func open() -> void: - show() - -func close() -> void: - selectedEvent = -1 - _updateSelectedEvent() - hide() - -func isOpen() -> bool: - return self.visible - -func _on_EventFlagUpdated(event:EventSystem.SpecialEvent, flags:int) -> void: - _updateEventList() - _updateSelectedEvent() - -func _on_EventSelected(index:int) -> void: - selectedEvent = index - _updateSelectedEvent() - -func _on_CheckboxPressed() -> void: - if selectedEvent == -1: - return - - var value = 0 - for i in range(0, EventSystem.EVENT_FLAG_COUNT): - if checkboxes[i].button_pressed: - value |= (1 << i) - - EVENT.eventFlagSetTo(selectedEvent, value) diff --git a/scripts/UI/EventFlagMenu.gd.uid b/scripts/UI/EventFlagMenu.gd.uid deleted file mode 100644 index c5b2d0a..0000000 --- a/scripts/UI/EventFlagMenu.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b4a3ne2vn36mt diff --git a/scripts/UI/ExtendedRichText.gd.uid b/scripts/UI/ExtendedRichText.gd.uid deleted file mode 100644 index 0701470..0000000 --- a/scripts/UI/ExtendedRichText.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bxj2865tb1u8r diff --git a/scripts/UI/FullInventoryMenu.gd.uid b/scripts/UI/FullInventoryMenu.gd.uid deleted file mode 100644 index c6f8e94..0000000 --- a/scripts/UI/FullInventoryMenu.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bqe8ve2hn3coc diff --git a/scripts/UI/Inventory/FullInventoryMenu.gd b/scripts/UI/Inventory/FullInventoryMenu.gd deleted file mode 100644 index 4543468..0000000 --- a/scripts/UI/Inventory/FullInventoryMenu.gd +++ /dev/null @@ -1,46 +0,0 @@ -class_name FullInventoryMenu extends Panel - -@export var itemLine:PackedScene = null; -@export var itemList:Control = null; -var inventory:Inventory = null; - -func _ready() -> void: - hide() - - _updateItemList() - -func _exit_tree() -> void: - pass - -func open(inventory:Inventory = null) -> void: - if self.inventory != null: - self.inventory.inventoryUpdated.disconnect(_updateItemList) - - if inventory == null: - inventory = ITEM.PLAYER_INVENTORY; - - self.inventory = inventory; - self.inventory.inventoryUpdated.connect(_updateItemList) - _updateItemList() - self.show() - -func close() -> void: - self.hide() - -func isOpen() -> bool: - return self.visible - -func _updateItemList() -> void: - if inventory == null: - return - - # Clear item list - while itemList.get_child_count() > 0: - var child = itemList.get_child(0) - itemList.remove_child(child) - child.queue_free() - - for stack in inventory.contents: - var node = itemLine.instantiate() - node.setStack(stack) - itemList.add_child(node) diff --git a/scripts/UI/Inventory/FullInventoryMenu.gd.uid b/scripts/UI/Inventory/FullInventoryMenu.gd.uid deleted file mode 100644 index 076793a..0000000 --- a/scripts/UI/Inventory/FullInventoryMenu.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cla3ph1j2ligp diff --git a/scripts/UI/Inventory/ItemLine.gd b/scripts/UI/Inventory/ItemLine.gd deleted file mode 100644 index caaff1a..0000000 --- a/scripts/UI/Inventory/ItemLine.gd +++ /dev/null @@ -1,5 +0,0 @@ -class_name ItemLine extends HBoxContainer - -func setStack(stack:ItemStack) -> void: - $ItemName.text = ITEM.getItemName(stack.type, 1) - $ItemQuantity.text = str(stack.quantity) diff --git a/scripts/UI/Inventory/ItemLine.gd.uid b/scripts/UI/Inventory/ItemLine.gd.uid deleted file mode 100644 index a2bd75d..0000000 --- a/scripts/UI/Inventory/ItemLine.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dgblia2ukssbe diff --git a/scripts/UI/QuestMenu.gd b/scripts/UI/QuestMenu.gd deleted file mode 100644 index 1f40d0a..0000000 --- a/scripts/UI/QuestMenu.gd +++ /dev/null @@ -1,103 +0,0 @@ -class_name QuestMenu extends Panel - -@export var questList:ItemList -@export var questName:Label -@export var closeButton:Button -@export var questObjectiveList:ItemList -@export var questObjectiveInfo:Label - -var currentQuestKey -var currentQuestObjective - -func _ready() -> void: - hide() - - # Setup quests - _updateQuestList() - setQuest(null) - - # Connect signals - questList.item_selected.connect(_onQuestSelected) - closeButton.pressed.connect(_onCloseClicked) - questObjectiveList.item_selected.connect(_onQuestObjectiveSelected) - QUEST.questUpdated.connect(_onQuestUpdated) - -func _exit_tree() -> void: - questList.item_selected.disconnect(_onQuestSelected) - closeButton.pressed.disconnect(_onCloseClicked) - questObjectiveList.item_selected.disconnect(_onQuestObjectiveSelected) - QUEST.questUpdated.disconnect(_onQuestUpdated) - -func setQuest(questKey = null): - if questKey == null || questKey == -1: - currentQuestKey = -1 - setQuestObjective(-1) - questList.deselect_all() - return - - assert(QUEST.quests.has(questKey), "Quest with key %s does not exist" % questKey) - - currentQuestKey = questKey - setQuestObjective(-1) - var quest = QUEST.quests[questKey]; - questList.select(questKey) - - questName.text = quest.title - questObjectiveList.clear() - questObjectiveList.deselect_all() - for objective in quest.objectives: - questObjectiveList.add_item(objective.title) - - -func setQuestObjective(objective = null): - if objective == null || objective == -1: - currentQuestObjective = -1 - questObjectiveList.deselect_all() - questObjectiveList.clear() - return - - assert(QUEST.quests.has(objective), "Quest with key %s does not exist" % objective) - currentQuestObjective = objective - var quest = QUEST.quests[currentQuestKey]; - var questObjective = quest.objectives[objective] - questObjectiveList.select(objective) - - # Setup Description - var ctx = questObjective.getTransContext() - ctx.addContext("quest", quest.getTransContext()) - questObjectiveInfo.text = ctx.trans(questObjective.description) - - -func open(questKey = null) -> void: - setQuest(questKey) - self.show() - - -func close() -> void: - self.hide() - - -func isOpen() -> bool: - return self.visible - -# Private methods -func _updateQuestList(): - questList.clear() - questList.deselect_all() - for questKey in QUEST.quests: - var q = QUEST.quests[questKey] - questList.add_item(q.title) - - -# Event handlers -func _onQuestSelected(index:int) -> void: - setQuest(index) - -func _onQuestObjectiveSelected(index:int) -> void: - setQuestObjective(index) - -func _onQuestUpdated(_q:Quest) -> void: - _updateQuestList() - -func _onCloseClicked() -> void: - self.close() diff --git a/scripts/UI/QuestMenu.gd.uid b/scripts/UI/QuestMenu.gd.uid deleted file mode 100644 index 376d98b..0000000 --- a/scripts/UI/QuestMenu.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cbsrw36kkucje diff --git a/scripts/UI/RichTextInputAction.gd.uid b/scripts/UI/RichTextInputAction.gd.uid deleted file mode 100644 index 4046e3e..0000000 --- a/scripts/UI/RichTextInputAction.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bemtfi2rxy7ls diff --git a/scripts/UI/VNTextbox.gd.uid b/scripts/UI/VNTextbox.gd.uid deleted file mode 100644 index 0c8a032..0000000 --- a/scripts/UI/VNTextbox.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ck62jug2gl4wk diff --git a/scripts/cutscene/Cutscene.gd b/scripts/cutscene/Cutscene.gd new file mode 100644 index 0000000..c04a425 --- /dev/null +++ b/scripts/cutscene/Cutscene.gd @@ -0,0 +1,4 @@ +class_name Cutscene extends Node + +func start() -> void: + pass \ No newline at end of file diff --git a/scripts/cutscene/Cutscene.gd.uid b/scripts/cutscene/Cutscene.gd.uid new file mode 100644 index 0000000..f548dfb --- /dev/null +++ b/scripts/cutscene/Cutscene.gd.uid @@ -0,0 +1 @@ +uid://chxpes3546yoj diff --git a/scripts/entities/MapCamera.gd b/scripts/entities/MapCamera.gd new file mode 100644 index 0000000..a1a0ba0 --- /dev/null +++ b/scripts/entities/MapCamera.gd @@ -0,0 +1,15 @@ +@tool +class_name MapCamera extends Camera3D + +@export var targetFollow:Node3D = null +@export var pathFollow:PathFollow3D = null +@export var pathMap:Path3D = null + +func _process(delta): + if !pathMap || !targetFollow || !pathMap.curve: + return + + var point = pathMap.curve.get_closest_point(targetFollow.global_transform.origin) + pathFollow.progress_ratio = pathMap.curve.get_closest_offset(point) / pathMap.curve.get_baked_length() + global_transform.origin = pathFollow.global_transform.origin + look_at(targetFollow.global_transform.origin, Vector3.UP) \ No newline at end of file diff --git a/scripts/entities/MapCamera.gd.uid b/scripts/entities/MapCamera.gd.uid new file mode 100644 index 0000000..34ec410 --- /dev/null +++ b/scripts/entities/MapCamera.gd.uid @@ -0,0 +1 @@ +uid://csb0i132lcu0w diff --git a/scripts/entities/NPC.gd b/scripts/entities/NPC.gd new file mode 100644 index 0000000..4d6c32f --- /dev/null +++ b/scripts/entities/NPC.gd @@ -0,0 +1,48 @@ +class_name NPC extends CharacterBody3D + +enum InteractType { + NONE, + TEXTBOX, + CUTSCENE +} + +# Movement speed in units per second +@export var gravity: float = 24.8 +@export var interactType:InteractType = InteractType.NONE +@export_multiline var interactTexts:Array[String] = [] +@export var cutscene:Cutscene = null +var nextTextIndex:int = 0 + +func _enter_tree() -> void: + $InteractableArea.interactEvent.connect(_on_interact) + +func _exit_tree() -> void: + $InteractableArea.interactEvent.disconnect(_on_interact) + UI.TEXTBOX.textboxClosing.disconnect(onTextboxClosing) + +func _physics_process(delta): + # Apply gravity if not on floor + if !is_on_floor(): + velocity += PHYSICS.GRAVITY * delta + + move_and_slide() + +func _on_interact() -> void: + nextTextIndex = 0 + match interactType: + InteractType.TEXTBOX: + UI.TEXTBOX.setText(interactTexts[nextTextIndex]) + UI.TEXTBOX.textboxClosing.connect(onTextboxClosing) + InteractType.CUTSCENE: + if cutscene: + cutscene.start() + _: + return + + +func onTextboxClosing() -> void: + nextTextIndex += 1 + if nextTextIndex < interactTexts.size(): + UI.TEXTBOX.setText(interactTexts[nextTextIndex]) + else: + UI.TEXTBOX.textboxClosing.disconnect(onTextboxClosing) diff --git a/scripts/entities/NPC.gd.uid b/scripts/entities/NPC.gd.uid new file mode 100644 index 0000000..b7b4292 --- /dev/null +++ b/scripts/entities/NPC.gd.uid @@ -0,0 +1 @@ +uid://jbarxyoib5a7 diff --git a/scripts/entities/PathFollowEntity.gd.uid b/scripts/entities/PathFollowEntity.gd.uid new file mode 100644 index 0000000..97fbdac --- /dev/null +++ b/scripts/entities/PathFollowEntity.gd.uid @@ -0,0 +1 @@ +uid://b26ki3ljfkulh diff --git a/scripts/entities/Player.gd.uid b/scripts/entities/Player.gd.uid new file mode 100644 index 0000000..30b3636 --- /dev/null +++ b/scripts/entities/Player.gd.uid @@ -0,0 +1 @@ +uid://c0by5m1upv57h diff --git a/scripts/entities/player/Player.gd b/scripts/entities/player/Player.gd new file mode 100644 index 0000000..a95f96c --- /dev/null +++ b/scripts/entities/player/Player.gd @@ -0,0 +1 @@ +class_name Player extends CharacterBody3D diff --git a/scripts/entities/player/Player.gd.uid b/scripts/entities/player/Player.gd.uid new file mode 100644 index 0000000..aa1ef15 --- /dev/null +++ b/scripts/entities/player/Player.gd.uid @@ -0,0 +1 @@ +uid://ylmy3nvpirgr diff --git a/scripts/entities/player/PlayerInteraction.gd b/scripts/entities/player/PlayerInteraction.gd new file mode 100644 index 0000000..164cacf --- /dev/null +++ b/scripts/entities/player/PlayerInteraction.gd @@ -0,0 +1,29 @@ +class_name PlayerInteraction extends Node + +@export var interactableArea:Area3D + +func canInteract() -> bool: + if PAUSE.isMovementPaused(): + return false + return true + +func _process(delta: float) -> void: + if !canInteract(): + return + + if !Input.is_action_just_pressed("interact"): + return + + var overlapping = interactableArea.get_overlapping_areas() + var interactable: InteractableArea = null + + for node in overlapping: + if !(node is InteractableArea): + continue + interactable = node + break + + if !interactable: + return + + interactable.interactEvent.emit() diff --git a/scripts/entities/player/PlayerInteraction.gd.uid b/scripts/entities/player/PlayerInteraction.gd.uid new file mode 100644 index 0000000..cab9a84 --- /dev/null +++ b/scripts/entities/player/PlayerInteraction.gd.uid @@ -0,0 +1 @@ +uid://b3nty7pvbo58d diff --git a/scripts/entities/player/PlayerMovement.gd b/scripts/entities/player/PlayerMovement.gd new file mode 100644 index 0000000..969d8f4 --- /dev/null +++ b/scripts/entities/player/PlayerMovement.gd @@ -0,0 +1,51 @@ +class_name PlayerMovement extends Node + +const TURN_SPEED = 12.0 +const SPEED = 8.0 + +@export var player:CharacterBody3D + +func _ready() -> void: + player = get_parent().get_parent() + +func canMove() -> bool: + if PAUSE.isMovementPaused(): + return false + return true + +func _physics_process(delta:float) -> void: + var cameraCurrent = get_viewport().get_camera_3d() + if !cameraCurrent: + return + + # Player movement + var directionAdjusted = Vector3.ZERO + if canMove(): + var inputDir = Input.get_vector("move_left", "move_right", "move_back", "move_forward").normalized() + + # Use camera orientation for movement direction + var cam_basis = cameraCurrent.global_transform.basis + # Forward and right vectors, ignore vertical component + var forward = -cam_basis.z + forward.y = 0 + forward = forward.normalized() + var right = cam_basis.x + right.y = 0 + right = right.normalized() + directionAdjusted = (forward * inputDir.y + right * inputDir.x).normalized() + + # Rotate player to face movement direction if moving + if directionAdjusted.length() > 0.01: + var targetRot = atan2(directionAdjusted.x, directionAdjusted.z) + player.rotation.y = lerp_angle( + player.rotation.y, targetRot, TURN_SPEED * delta + ) + + # Apply gravity if not on floor + if !player.is_on_floor(): + player.velocity += PHYSICS.GRAVITY * delta + + # Set velocity and move + player.velocity.x = directionAdjusted.x * SPEED + player.velocity.z = directionAdjusted.z * SPEED + player.move_and_slide() diff --git a/scripts/entities/player/PlayerMovement.gd.uid b/scripts/entities/player/PlayerMovement.gd.uid new file mode 100644 index 0000000..5b277fe --- /dev/null +++ b/scripts/entities/player/PlayerMovement.gd.uid @@ -0,0 +1 @@ +uid://bwxdv3kxrs4oj diff --git a/scripts/singletons/GamePhysics.gd b/scripts/singletons/GamePhysics.gd new file mode 100644 index 0000000..0ec3b8e --- /dev/null +++ b/scripts/singletons/GamePhysics.gd @@ -0,0 +1,3 @@ +class_name GamePhysicsSingleton extends Node + +const GRAVITY = Vector3.DOWN * 9.8 \ No newline at end of file diff --git a/scripts/singletons/GamePhysics.gd.uid b/scripts/singletons/GamePhysics.gd.uid new file mode 100644 index 0000000..b31ca2b --- /dev/null +++ b/scripts/singletons/GamePhysics.gd.uid @@ -0,0 +1 @@ +uid://bj8jxbaikqrhf diff --git a/scripts/singletons/Input.gd.uid b/scripts/singletons/Input.gd.uid new file mode 100644 index 0000000..66d5eb5 --- /dev/null +++ b/scripts/singletons/Input.gd.uid @@ -0,0 +1 @@ +uid://cxx6dl53tc5ym diff --git a/scripts/singletons/Pause.gd b/scripts/singletons/Pause.gd new file mode 100644 index 0000000..4e5a072 --- /dev/null +++ b/scripts/singletons/Pause.gd @@ -0,0 +1,6 @@ +class_name PauseSingleton extends Node + +func isMovementPaused() -> bool: + if !UI.TEXTBOX.isClosed: + return true + return false \ No newline at end of file diff --git a/scripts/singletons/Pause.gd.uid b/scripts/singletons/Pause.gd.uid new file mode 100644 index 0000000..4630761 --- /dev/null +++ b/scripts/singletons/Pause.gd.uid @@ -0,0 +1 @@ +uid://dmm23kdp5xcx diff --git a/scripts/singletons/UI.gd b/scripts/singletons/UI.gd new file mode 100644 index 0000000..d5e56ed --- /dev/null +++ b/scripts/singletons/UI.gd @@ -0,0 +1,3 @@ +class_name UISingleton extends Control + +@export var TEXTBOX: VNTextbox \ No newline at end of file diff --git a/scripts/singletons/UI.gd.uid b/scripts/singletons/UI.gd.uid new file mode 100644 index 0000000..a68d4e0 --- /dev/null +++ b/scripts/singletons/UI.gd.uid @@ -0,0 +1 @@ +uid://dq3qyyayugt5l diff --git a/scripts/UI/AdvancedRichText.gd b/scripts/ui/AdvancedRichText.gd similarity index 100% rename from scripts/UI/AdvancedRichText.gd rename to scripts/ui/AdvancedRichText.gd diff --git a/scripts/ui/AdvancedRichText.gd.uid b/scripts/ui/AdvancedRichText.gd.uid new file mode 100644 index 0000000..4a92090 --- /dev/null +++ b/scripts/ui/AdvancedRichText.gd.uid @@ -0,0 +1 @@ +uid://bjj6upgk1uvxd diff --git a/scripts/UI/VNTextbox.gd b/scripts/ui/VNTextbox.gd similarity index 98% rename from scripts/UI/VNTextbox.gd rename to scripts/ui/VNTextbox.gd index 1c05350..ce04ab5 100644 --- a/scripts/UI/VNTextbox.gd +++ b/scripts/ui/VNTextbox.gd @@ -18,12 +18,15 @@ var isSpeedupDown = false; var isMoreViews = false; var isClosed = true; +signal textboxClosing + func _ready() -> void: label = $MarginContainer/Label self.visible = false; func _process(delta: float) -> void: if text == "": + isClosed = true; return; if currentViewScrolled: @@ -34,8 +37,8 @@ func _process(delta: float) -> void: currentViewScrolled = false; recalculateWrapping(); return - isClosed = true; setText(""); + textboxClosing.emit(); return; if visibleCharacters >= getCountOfCharactersToScrollInView(): @@ -108,7 +111,6 @@ func recalculateWrapping(): func setText(text:String) -> void: self.text = text; if text == "": - isClosed = true; self.visible = false; return; diff --git a/scripts/ui/VNTextbox.gd.uid b/scripts/ui/VNTextbox.gd.uid new file mode 100644 index 0000000..d27edd9 --- /dev/null +++ b/scripts/ui/VNTextbox.gd.uid @@ -0,0 +1 @@ +uid://h8lw23ypcfty diff --git a/shaders/Map Shader.gdshader b/shaders/Map Shader.gdshader deleted file mode 100644 index 1cffcb5..0000000 --- a/shaders/Map Shader.gdshader +++ /dev/null @@ -1,16 +0,0 @@ -shader_type spatial; -render_mode cull_disabled; - -uniform sampler2D tileset : filter_nearest; - -void vertex() { -} - -void fragment() { - vec4 textureColor = texture(tileset, UV) * COLOR; - - if(textureColor.a == 0.0) - discard; - - ALBEDO = textureColor.rgb; -} diff --git a/shaders/Map Shader.gdshader.uid b/shaders/Map Shader.gdshader.uid deleted file mode 100644 index e823eea..0000000 --- a/shaders/Map Shader.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://67hsyo0qqlfm diff --git a/shaders/NPC Shader.gdshader b/shaders/NPC Shader.gdshader index 8df3fd4..e69de29 100644 --- a/shaders/NPC Shader.gdshader +++ b/shaders/NPC Shader.gdshader @@ -1,50 +0,0 @@ -shader_type spatial; -render_mode cull_disabled; - -uniform sampler2D npcTexture : filter_nearest; -uniform vec4 color : source_color; -uniform int frame; -uniform int direction; - -const int FRAMES = 1; -const int DIRECTIONS = 4; -const float PIXEL_UNIT = 1.0 / 32.0; // Define pixel-perfect unit - -void vertex() { - vec2 tileSize = vec2(1.0 / float(DIRECTIONS), 1.0 / float(FRAMES)); - vec2 topLeft = tileSize * vec2( - float(direction % DIRECTIONS), - float(frame % FRAMES) - ); - vec2 bottomRight = topLeft + tileSize; - - if(VERTEX_ID == 3) { - UV = topLeft; - } else if(VERTEX_ID == 2) { - UV = vec2(bottomRight.x, topLeft.y); - } else if(VERTEX_ID == 1) { - UV = vec2(topLeft.x, bottomRight.y); - } else if(VERTEX_ID == 0) { - UV = bottomRight; - } - - // Round UV to the nearest pixel-perfect unit - UV = floor(UV / PIXEL_UNIT + 0.5) * PIXEL_UNIT; -} - -void fragment() { - vec4 npcColor = texture(npcTexture, UV); - - if(npcColor.a == 0.0) - discard; - - // Remove PINK background - if(npcColor.r == 1.0 && npcColor.g == 0.0 && npcColor.b == 1.0) - discard; - - // Remove GREEN borders - if(npcColor.r == 0.00392156862745 && npcColor.g == 1.0 && npcColor.b == 0.0) - discard; - - ALBEDO.rgb = npcColor.rgb * color.rgb; -} diff --git a/shaders/NPC Shader.gdshader.uid b/shaders/NPC Shader.gdshader.uid index 7ff2aba..9a2a20a 100644 --- a/shaders/NPC Shader.gdshader.uid +++ b/shaders/NPC Shader.gdshader.uid @@ -1 +1 @@ -uid://7h2axb2tsh17 +uid://c0tg4gbvrk0wv diff --git a/textures/human.png b/textures/human.png deleted file mode 100644 index fd25354..0000000 Binary files a/textures/human.png and /dev/null differ diff --git a/textures/human.png.import b/textures/human.png.import deleted file mode 100644 index 27ffefd..0000000 --- a/textures/human.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cofrgefp8e617" -path.s3tc="res://.godot/imported/human.png-1880dba459540c27ee8035fcec96bd0b.s3tc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://textures/human.png" -dest_files=["res://.godot/imported/human.png-1880dba459540c27ee8035fcec96bd0b.s3tc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -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=0