diff --git a/dialogic/timelines/guild_entrance.dtl b/dialogic/timelines/guild_entrance.dtl index b205560..f18c1de 100644 --- a/dialogic/timelines/guild_entrance.dtl +++ b/dialogic/timelines/guild_entrance.dtl @@ -1,3 +1,6 @@ +And after that, all that was left was to... just open the guild gate, I guess? +It took me a little while to find the thing in the middle of Nestor's Woods despite growing up there. I knew Guildhalls were hidden in another dimension, but I'd always pictured the Guild Gates would be more... magical looking? +do Game.switch_scenes("first_guildhall") player: (Wow this is a mess... nobody's been here for a while. I should...) - set up some lights. Hey, no touching! This isn't your home! Get out! diff --git a/external/questor-shadow.png b/external/questor-shadow.png new file mode 100644 index 0000000..e597f89 Binary files /dev/null and b/external/questor-shadow.png differ diff --git a/external/questor-shadow.png.import b/external/questor-shadow.png.import new file mode 100644 index 0000000..19dd7fb --- /dev/null +++ b/external/questor-shadow.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://67wavev1pifc" +path="res://.godot/imported/questor-shadow.png-fc6ac833a5cd35215e2d6ed257e929bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://external/questor-shadow.png" +dest_files=["res://.godot/imported/questor-shadow.png-fc6ac833a5cd35215e2d6ed257e929bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/active_scene.tscn b/scenes/active_scene.tscn index 5188682..d2de485 100644 --- a/scenes/active_scene.tscn +++ b/scenes/active_scene.tscn @@ -104,6 +104,7 @@ total_visitors = 1 [node name="Timer" type="Timer" parent="Guildhall/VisitorSpawner"] [node name="UI" type="CanvasLayer" parent="."] +visible = false [node name="VBoxContainer" type="VBoxContainer" parent="UI"] offset_left = 1485.0 diff --git a/scenes/first_guildhall.tscn b/scenes/first_guildhall.tscn new file mode 100644 index 0000000..d6a6daa --- /dev/null +++ b/scenes/first_guildhall.tscn @@ -0,0 +1,431 @@ +[gd_scene load_steps=42 format=3 uid="uid://bd1wvujdcnpqk"] + +[ext_resource type="Script" uid="uid://cci652umkym1f" path="res://scripts/test_scene.gd" id="1_7nayx"] +[ext_resource type="Texture2D" uid="uid://c5yxq22ao1oyf" path="res://graphics/doorlight.png" id="2_ivnss"] +[ext_resource type="Script" uid="uid://ccorfvcfa84gf" path="res://scripts/guildhall.gd" id="3_sxwyg"] +[ext_resource type="Shader" uid="uid://hr8vdp56p4yo" path="res://shaders/void.tres" id="4_ej4lk"] +[ext_resource type="PackedScene" uid="uid://c8ofw6na082gv" path="res://templates/main_panel.tscn" id="5_blfjh"] +[ext_resource type="Texture2D" uid="uid://bbh444vapab3y" path="res://graphics/voidcircle.png" id="5_dpsgu"] +[ext_resource type="PackedScene" uid="uid://c7jagw4y7w42l" path="res://templates/top_menu.tscn" id="6_2j6ej"] +[ext_resource type="Shader" uid="uid://cenbje61a2wi6" path="res://shaders/void_composite.gdshader" id="6_l1y25"] +[ext_resource type="AudioStream" uid="uid://cmray2frojcd" path="res://sounds/Door Hinge Creaking Door.wav" id="7_g53ee"] +[ext_resource type="Script" uid="uid://2g4ja3a7o2l" path="res://scripts/void_ripple.gd" id="7_us1d4"] +[ext_resource type="Texture2D" uid="uid://do4gn21x5bmdm" path="res://graphics/first-guild-base.png" id="8_kc45t"] +[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="9_5rxjm"] +[ext_resource type="Script" uid="uid://dyn5wwocvkqds" path="res://scripts/guild_facade.gd" id="9_64ojl"] +[ext_resource type="Texture2D" uid="uid://bg5ip7ni3n7qd" path="res://graphics/first-guild-front.png" id="10_q48tf"] +[ext_resource type="Script" uid="uid://bh54wpqgau8hc" path="res://scripts/npc.gd" id="11_1w0p3"] +[ext_resource type="Texture2D" uid="uid://dcrhry67g00vk" path="res://graphics/pom.png" id="12_1i8kt"] +[ext_resource type="PackedScene" uid="uid://jbqw0n6dlj08" path="res://templates/speech_bubble.tscn" id="13_qcjjg"] +[ext_resource type="Script" uid="uid://dolqtw1ye4ras" path="res://scripts/player.gd" id="16_olx4l"] +[ext_resource type="Texture2D" uid="uid://cg6ptmynq0aq0" path="res://graphics/basic-sprite.png" id="17_fufi5"] +[ext_resource type="Shader" uid="uid://dvdm8x66gwu2v" path="res://shaders/starfield.tres" id="19_3llh7"] +[ext_resource type="Texture2D" uid="uid://bhupleoa6pkkb" path="res://external/test_star.png" id="20_jgl1l"] +[ext_resource type="Texture2D" uid="uid://ct7y401wpmcdf" path="res://external/test_star2.png" id="21_iy8s4"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_sxwyg"] +viewport_path = NodePath("Guildhall/SubViewport") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_0ypcf"] +resource_local_to_scene = true +shader = ExtResource("4_ej4lk") +shader_parameter/void_view = SubResource("ViewportTexture_sxwyg") + +[sub_resource type="Curve" id="Curve_0aygh"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_nfvtf"] +shader = ExtResource("6_l1y25") +shader_parameter/line_thickness = 3.8570001832075 +shader_parameter/line_color = Color(0.7666664, 0, 1, 1) + +[sub_resource type="Gradient" id="Gradient_ggqxp"] +offsets = PackedFloat32Array(0, 0.27842227, 0.7447796, 0.9976798, 1) +colors = PackedColorArray(1, 0, 1, 1, 0.6414714, 0, 1, 1, 0.3529412, 0, 1, 1, 0.13464576, 8.6924134e-05, 0.43542284, 1, 0.3529412, 0, 1, 1) + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_28dkg"] +vertices = PackedVector2Array(318, 11, 318, -19, 689, -14, 689, 12, 493, 432, 702, 15, 703, 416, 694, 416, 493, 578, 399, 578, 399, 431, 694, 431, 305, 431, 302, 51, 307, 31) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3, 4), PackedInt32Array(5, 6, 7), PackedInt32Array(4, 8, 9, 10), PackedInt32Array(7, 11, 4), PackedInt32Array(10, 12, 13), PackedInt32Array(5, 7, 4, 3), PackedInt32Array(13, 14, 0, 4, 10)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(689, 12, 702, 15, 703, 416, 694, 416, 694, 431, 493, 432, 493, 578, 399, 578, 399, 431, 305, 431, 302, 51, 307, 31, 318, 11, 318, -19, 689, -14)]) +source_geometry_mode = 2 +source_geometry_group_name = &"room_obstacles" +agent_radius = 0.0 + +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_752n1"] +blend_mode = 3 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_a3e6t"] +size = Vector2(211, 203) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_lsfle"] +size = Vector2(91.5, 203) + +[sub_resource type="Animation" id="Animation_p1w2f"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_4k18p"] +resource_name = "open" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.099999994, 0.13333333, 0.16666667, 0.2, 0.23333333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.09737283), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_dtjin"] +_data = { +&"RESET": SubResource("Animation_p1w2f"), +&"open": SubResource("Animation_4k18p") +} + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_l3mu1"] +radius = 15.0 +height = 54.0 + +[sub_resource type="Gradient" id="Gradient_28dkg"] +offsets = PackedFloat32Array(0, 0.15085158, 0.63017035, 1) +colors = PackedColorArray(0, 0, 0, 1, 0, 0.07479378, 0.21630663, 1, 0.11818864, 0.00013856843, 0.3326036, 1, 1.1310726e-06, 1.2032687e-07, 0.37330782, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_ggqxp"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_lsfle"] +width = 384 +height = 216 +noise = SubResource("FastNoiseLite_ggqxp") +color_ramp = SubResource("Gradient_28dkg") +seamless = true +normalize = false + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ggqxp"] +shader = ExtResource("19_3llh7") +shader_parameter/stars_speed = Vector2(25, 0) +shader_parameter/stars_density = 0.0050000002375 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_b2pr6"] +shader = ExtResource("19_3llh7") +shader_parameter/stars_speed = Vector2(10, 0) +shader_parameter/stars_density = 0.0030000001425 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_o230c"] +shader = ExtResource("19_3llh7") +shader_parameter/stars_speed = Vector2(15, 0) +shader_parameter/stars_density = 0.0 + +[node name="Active Scene" type="Node2D"] +script = ExtResource("1_7nayx") + +[node name="Guildhall" type="Node2D" parent="."] +position = Vector2(421, 289) +script = ExtResource("3_sxwyg") + +[node name="CanvasLayer" type="CanvasLayer" parent="Guildhall"] +layer = -1 +scale = Vector2(2, 2) +transform = Transform2D(2, 0, 0, 2, 0, 0) + +[node name="ColorRect" type="ColorRect" parent="Guildhall/CanvasLayer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -801.5 +offset_top = -413.5 +offset_right = -801.5 +offset_bottom = -413.5 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(0.018666686, 0, 0.08, 1) + +[node name="CPUParticles2D2" type="CPUParticles2D" parent="Guildhall"] +visible = false +material = SubResource("ShaderMaterial_0ypcf") +position = Vector2(-800, 176) +scale = Vector2(4.9999995, 4.9999995) +amount = 1000 +texture = ExtResource("5_dpsgu") +preprocess = 5.0 +speed_scale = 0.13 +emission_shape = 2 +emission_sphere_radius = 30.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 100.0 +initial_velocity_max = 120.0 +linear_accel_min = -300.0 +linear_accel_max = -150.0 +scale_amount_min = 1.1 +scale_amount_max = 4.2 +scale_amount_curve = SubResource("Curve_0aygh") + +[node name="CanvasGroup" type="CanvasGroup" parent="Guildhall"] +material = SubResource("ShaderMaterial_nfvtf") +position = Vector2(509, 176) +scale = Vector2(5, 5) + +[node name="CPUParticles2D" type="CPUParticles2D" parent="Guildhall/CanvasGroup"] +material = SubResource("ShaderMaterial_0ypcf") +scale = Vector2(0.99999994, 0.99999994) +amount = 1000 +texture = ExtResource("5_dpsgu") +preprocess = 5.0 +speed_scale = 0.13 +emission_shape = 2 +emission_sphere_radius = 30.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 100.0 +initial_velocity_max = 120.0 +linear_accel_min = -300.0 +linear_accel_max = -150.0 +scale_amount_min = 1.1 +scale_amount_max = 4.2 +scale_amount_curve = SubResource("Curve_0aygh") + +[node name="VoidRipple" type="Node2D" parent="Guildhall"] +z_index = 1 +script = ExtResource("7_us1d4") +speed = 0.01000000000931322 +ripple_width = 4.5 +gradient = SubResource("Gradient_ggqxp") + +[node name="Center" type="Node2D" parent="Guildhall/VoidRipple"] +position = Vector2(486, 158) + +[node name="Line2D" type="Line2D" parent="Guildhall/VoidRipple"] +visible = false +points = PackedVector2Array(312, 440, 312, 480, 241, 479, 250, 417, 279, 417, 253, 17, 244, 17, 241, -51, 303, -51, 306, -21, 701, -20, 701, -47, 771, -47, 770, 16, 759, 17, 732, 418, 763, 419, 769, 482, 700, 481, 698, 441, 543, 441, 544, 454, 507, 454, 501, 439, 389, 439, 385, 452, 347, 452, 347, 440, 312, 440) +width = 5.0 + +[node name="Line2D2" type="Line2D" parent="Guildhall/VoidRipple"] +z_index = -1 +points = PackedVector2Array(312, 440, 312, 480, 241, 479, 250, 417, 279, 417, 253, 17, 244, 17, 241, -51, 303, -51, 306, -21, 701, -20, 701, -47, 771, -47, 770, 16, 759, 17, 732, 418, 763, 419, 769, 482, 700, 481, 698, 441, 543, 441, 544, 454, 507, 454, 501, 439, 389, 439, 385, 452, 347, 452, 347, 440, 312, 440) +width = 50.0 +default_color = Color(0, 0, 0, 0.46666667) +joint_mode = 2 +round_precision = 16 +antialiased = true + +[node name="RoomRegion" type="NavigationRegion2D" parent="Guildhall"] +z_index = 1 +navigation_polygon = SubResource("NavigationPolygon_28dkg") + +[node name="Base" type="TextureRect" parent="Guildhall"] +clip_children = 2 +z_index = 1 +clip_contents = true +offset_left = 200.0 +offset_top = -265.0 +offset_right = 810.0 +offset_bottom = 480.0 +texture = ExtResource("8_kc45t") + +[node name="ColorRect" type="ColorRect" parent="Guildhall/Base"] +material = SubResource("CanvasItemMaterial_752n1") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(0.2925, 0.29512504, 0.45, 1) + +[node name="TextureRect" type="TextureRect" parent="Guildhall/Base"] +visible = false +layout_mode = 0 +offset_left = -54.0 +offset_top = -27.0 +offset_right = 74.0 +offset_bottom = 101.0 +texture = ExtResource("9_5rxjm") + +[node name="Facade" type="Area2D" parent="Guildhall"] +z_index = 50 +position = Vector2(473, 427) +script = ExtResource("9_64ojl") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Guildhall/Facade"] +position = Vector2(130.5, -78.5) +shape = SubResource("RectangleShape2D_a3e6t") + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="Guildhall/Facade"] +position = Vector2(-127.25, -78.5) +shape = SubResource("RectangleShape2D_lsfle") + +[node name="Front" type="Sprite2D" parent="Guildhall/Facade"] +z_index = 1 +position = Vector2(32, -86) +texture = ExtResource("10_q48tf") + +[node name="DoorLight" type="Sprite2D" parent="Guildhall"] +visible = false +self_modulate = Color(2.5713813, 2.5713813, 2.5713813, 0.36078432) +z_index = 1 +position = Vector2(447, 373) +scale = Vector2(2, 2) +texture = ExtResource("2_ivnss") +hframes = 5 +frame = 4 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Guildhall/DoorLight"] +libraries = { +&"": SubResource("AnimationLibrary_dtjin") +} + +[node name="Sprites" type="Node2D" parent="Guildhall"] +z_index = 20 +y_sort_enabled = true + +[node name="Pom" type="CharacterBody2D" parent="Guildhall/Sprites"] +z_index = 1 +position = Vector2(357, -27) +script = ExtResource("11_1w0p3") +metadata/_custom_type_script = "uid://bh54wpqgau8hc" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Guildhall/Sprites/Pom"] +position = Vector2(1, 16) +rotation = 1.5707964 +shape = SubResource("CapsuleShape2D_l3mu1") + +[node name="Sprite2D" type="Sprite2D" parent="Guildhall/Sprites/Pom"] +texture = ExtResource("12_1i8kt") + +[node name="SpeechBubble" parent="Guildhall/Sprites/Pom" instance=ExtResource("13_qcjjg")] +position = Vector2(44, -93) + +[node name="NavigationAgent2D" type="NavigationAgent2D" parent="Guildhall/Sprites/Pom"] +path_desired_distance = 30.0 +avoidance_enabled = true + +[node name="Player" type="CharacterBody2D" parent="Guildhall/Sprites"] +position = Vector2(451, 430) +script = ExtResource("16_olx4l") +stop_range = 15.0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Guildhall/Sprites/Player"] +rotation = 1.5707964 +shape = SubResource("CapsuleShape2D_l3mu1") + +[node name="Sprite2D" type="Sprite2D" parent="Guildhall/Sprites/Player"] +position = Vector2(0, -43) +texture = ExtResource("17_fufi5") + +[node name="NavigationAgent2D" type="NavigationAgent2D" parent="Guildhall/Sprites/Player"] +path_desired_distance = 30.0 +avoidance_enabled = true + +[node name="SubViewport" type="SubViewport" parent="Guildhall"] +size = Vector2i(1920, 1080) + +[node name="ColorRect" type="ColorRect" parent="Guildhall/SubViewport"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(0, 0, 0.12941177, 1) + +[node name="Parallax2D" type="Parallax2D" parent="Guildhall/SubViewport"] +repeat_size = Vector2(1920, 1080) +autoscroll = Vector2(-10, 0) +follow_viewport = false +ignore_camera_scroll = true + +[node name="TextureRect2" type="TextureRect" parent="Guildhall/SubViewport/Parallax2D"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 1920.0 +offset_bottom = 1080.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = SubResource("NoiseTexture2D_lsfle") + +[node name="TextureRect" type="TextureRect" parent="Guildhall/SubViewport"] +modulate = Color(0.45840502, 0.45840508, 0.45840502, 1) +material = SubResource("ShaderMaterial_ggqxp") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("20_jgl1l") + +[node name="TextureRect4" type="TextureRect" parent="Guildhall/SubViewport"] +modulate = Color(0.45840502, 0.45840508, 0.45840502, 1) +material = SubResource("ShaderMaterial_b2pr6") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("20_jgl1l") + +[node name="TextureRect3" type="TextureRect" parent="Guildhall/SubViewport"] +material = SubResource("ShaderMaterial_o230c") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("21_iy8s4") + +[node name="UI" type="CanvasLayer" parent="."] +visible = false + +[node name="VBoxContainer" type="VBoxContainer" parent="UI"] +offset_left = 1485.0 +offset_top = 23.0 +offset_right = 1886.0 +offset_bottom = 351.0 + +[node name="MainPanel" parent="UI/VBoxContainer" instance=ExtResource("5_blfjh")] +layout_mode = 2 + +[node name="Notices" type="Control" parent="UI/VBoxContainer"] +layout_mode = 2 + +[node name="Control" parent="UI" instance=ExtResource("6_2j6ej")] + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("7_g53ee") +volume_db = -24.535 + +[connection signal="body_entered" from="Guildhall/Facade" to="Guildhall/Facade" method="_on_body_entered"] +[connection signal="body_exited" from="Guildhall/Facade" to="Guildhall/Facade" method="_on_body_exited"] diff --git a/scenes/guild_card.tscn b/scenes/guild_card.tscn index 9b7fedf..d9e736e 100644 --- a/scenes/guild_card.tscn +++ b/scenes/guild_card.tscn @@ -1,10 +1,12 @@ -[gd_scene load_steps=17 format=3 uid="uid://dcpuaq3fcwyxs"] +[gd_scene load_steps=19 format=3 uid="uid://dcpuaq3fcwyxs"] [ext_resource type="Script" uid="uid://dkrxdaq8d6q55" path="res://scripts/guild_card_scene.gd" id="1_hj0e5"] [ext_resource type="Texture2D" uid="uid://c5hcva1k5qee0" path="res://external/guildcard-portrait-placeholder.png" id="1_mmvi8"] [ext_resource type="Shader" uid="uid://uxrvcuhjnjgl" path="res://shaders/animated_gradient.gdshader" id="3_3vymb"] +[ext_resource type="PackedScene" uid="uid://drshemnag35re" path="res://templates/hero_portrait.tscn" id="3_tnttg"] [ext_resource type="Texture2D" uid="uid://hdjte1ipyyio" path="res://external/signature.png" id="4_ht11g"] [ext_resource type="AudioStream" uid="uid://bmm8jhojdt31a" path="res://sounds/Writing in paper 19.wav" id="5_ht11g"] +[ext_resource type="PackedScene" uid="uid://dno0a4457twd4" path="res://templates/portrait_customizer.tscn" id="7_q4kfw"] [sub_resource type="Gradient" id="Gradient_hj0e5"] colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1) @@ -205,6 +207,41 @@ mouse_filter = 2 texture = ExtResource("1_mmvi8") expand_mode = 1 +[node name="PortraitContainer" type="Control" parent="GuildCard"] +unique_name_in_owner = true +visible = false +anchors_preset = 0 +offset_left = 9.0 +offset_top = 58.0 +offset_right = 213.0 +offset_bottom = 263.0 +mouse_filter = 2 + +[node name="ColorRect" type="ColorRect" parent="GuildCard/PortraitContainer"] +layout_mode = 0 +offset_right = 204.8 +offset_bottom = 205.0 +mouse_filter = 2 + +[node name="ColorRect2" type="ColorRect" parent="GuildCard/PortraitContainer"] +clip_contents = true +layout_mode = 0 +offset_left = 14.0 +offset_top = 14.0 +offset_right = 189.0 +offset_bottom = 189.0 +mouse_filter = 2 +color = Color(0.48570347, 0.48570353, 0.48570347, 1) + +[node name="HeroPortrait" parent="GuildCard/PortraitContainer/ColorRect2" instance=ExtResource("3_tnttg")] +unique_name_in_owner = true +layout_mode = 0 +offset_left = -2.0 +offset_right = 510.0 +offset_bottom = 512.0 +scale = Vector2(0.35, 0.35) +mouse_filter = 1 + [node name="Label" type="Label" parent="GuildCard"] layout_mode = 0 offset_left = 187.0 @@ -272,6 +309,7 @@ offset_bottom = 380.0 theme_override_colors/font_color = Color(0.2775273, 0.27752793, 0.27752748, 1) theme_override_font_sizes/font_size = 48 theme_override_styles/normal = SubResource("StyleBoxFlat_q4kfw") +disabled = true text = "(Sign Here)" [node name="HSeparator" type="HSeparator" parent="GuildCard"] @@ -317,7 +355,13 @@ texture = ExtResource("4_ht11g") [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = ExtResource("5_ht11g") +[node name="PortraitCustomizer" parent="." instance=ExtResource("7_q4kfw")] +visible = false +z_index = 10 +layout_mode = 1 + [connection signal="pressed" from="GuildCard/PortraitButton" to="." method="_on_portrait_button_pressed"] [connection signal="text_changed" from="GuildCard/FirstNameEdit" to="." method="_on_first_name_edit_text_changed"] [connection signal="text_changed" from="GuildCard/LastNameEdit" to="." method="_on_last_name_edit_text_changed"] [connection signal="pressed" from="GuildCard/SignButton" to="." method="_on_sign_button_pressed"] +[connection signal="portrait_customized" from="PortraitCustomizer" to="." method="_on_portrait_customized"] diff --git a/scripts/adventurer.gd b/scripts/adventurer.gd index 12bf0ef..79385fc 100644 --- a/scripts/adventurer.gd +++ b/scripts/adventurer.gd @@ -1,11 +1,5 @@ class_name Adventurer extends Node -class Appearance extends Resource: - var hair_color : String - var hair_type : int - var skin_color : String - var eye_color : String - var eye_type : int enum Gender{ MASC, @@ -23,7 +17,7 @@ var max_energy : int = 1 var level : int = 1 var exp : int = 0 var job : JobData -var appearance : Appearance +var appearance : Dictionary var stats : StatBlock var gold : int = 0 var quest : Quest @@ -177,11 +171,24 @@ func move_item(from : Vector2, to: Vector2) -> void: func generate_appearance(features=null) -> void: if features == null: - appearance = Appearance.new() + appearance = { + "hair":{ + "color":"", + "type":"" + }, + "skin":{ + "color":"", + "type":"" + }, + "eyes":{ + "color":"", + "type":"" + } + } #TODO: Handle different types of hair and eyes - appearance.hair_color = AdventurerPortrait.random_color(ColorVariant.Types.HAIR) + appearance.hair.color = AdventurerPortrait.random_color(ColorVariant.Types.HAIR) #appearance.hair_type = randi_range(0,len(job.portrait.hair_types) - 1) - appearance.eye_color = AdventurerPortrait.random_color(ColorVariant.Types.EYES) + appearance.eyes.color = AdventurerPortrait.random_color(ColorVariant.Types.EYES) #appearance.eye_type = randi_range(0,len(job.portrait.eye_types) - 1) - appearance.skin_color = AdventurerPortrait.random_color(ColorVariant.Types.SKIN) + appearance.skin.color = AdventurerPortrait.random_color(ColorVariant.Types.SKIN) changed.emit() diff --git a/scripts/adventurer_portrait.gd b/scripts/adventurer_portrait.gd index d25037a..0058235 100644 --- a/scripts/adventurer_portrait.gd +++ b/scripts/adventurer_portrait.gd @@ -22,9 +22,29 @@ func add_color_variants(list : Array) -> void: func set_appearance(appearance) -> void: - set_color(ColorVariant.Types.HAIR, appearance.hair_color) - set_color(ColorVariant.Types.SKIN, appearance.skin_color) - set_color(ColorVariant.Types.EYES, appearance.eye_color) + set_color(ColorVariant.Types.HAIR, appearance.hair.color) + #set_type(ColorVariant.Types.HAIR, appearance.hair.type) + set_color(ColorVariant.Types.SKIN, appearance.skin.color) + #set_color(ColorVariant.Types.SKIN, appearance.skin.type) + set_color(ColorVariant.Types.EYES, appearance.eyes.color) + #set_color(ColorVariant.Types.EYES, appearance.eyes.type) + +func get_random_appearance() -> Dictionary: + var app = { + "hair":{ + "type":"", + "color": random_color(ColorVariant.Types.HAIR) + }, + "skin":{ + "type":"", + "color": random_color(ColorVariant.Types.SKIN) + }, + "eyes":{ + "type":"", + "color": random_color(ColorVariant.Types.EYES) + }, + } + return app static func random_color(type : ColorVariant.Types) -> String: var lst diff --git a/scripts/guild_card_scene.gd b/scripts/guild_card_scene.gd index f986d11..33191bf 100644 --- a/scripts/guild_card_scene.gd +++ b/scripts/guild_card_scene.gd @@ -1,26 +1,39 @@ extends Control -@onready var firstEdit : TextEdit = %FirstNameEdit -@onready var lastEdit : TextEdit = %LastNameEdit -@onready var signButton : Button = %SignButton -@onready var portraitButton : TextureButton = %PortraitButton + + +@onready var first_edit : TextEdit = %FirstNameEdit +@onready var last_edit : TextEdit = %LastNameEdit +@onready var sign_button : Button = %SignButton +@onready var portrait_button : TextureButton = %PortraitButton @onready var signature : TextureRect = %Signature @onready var write_sound : AudioStreamPlayer = $AudioStreamPlayer +@onready var portrait_customizer = $PortraitCustomizer +@onready var portrait : AdventurerPortrait = %HeroPortrait +@onready var portrait_container = %PortraitContainer var first_set : bool = false var last_set : bool = false var portrait_set : bool = false func validate_signature() -> void: - signButton.disabled = !(first_set and last_set and portrait_set) - -func _on_portrait_button_pressed() -> void: - #Open the Portrait Screesn + sign_button.disabled = !(first_set and last_set and portrait_set) + +func _on_portrait_customized() -> void: + Game.player_data.appearance = portrait_customizer.appearance + portrait.set_appearance(portrait_customizer.appearance) + portrait_container.visible = true + portrait_customizer.visible = false portrait_set = true validate_signature() + +func _on_portrait_button_pressed() -> void: + #Open the Portrait Screen + portrait_customizer.visible = true + func _on_first_name_edit_text_changed() -> void: - if firstEdit.text != "": + if first_edit.text != "": first_set = true else: last_set = true @@ -28,7 +41,7 @@ func _on_first_name_edit_text_changed() -> void: func _on_last_name_edit_text_changed() -> void: - if lastEdit.text != "": + if last_edit.text != "": last_set = true else: last_set = false @@ -38,7 +51,7 @@ func update_signature_threshold(value : float) -> void: signature.set_instance_shader_parameter("threshold", value) func _on_sign_button_pressed() -> void: - signButton.visible = false + sign_button.visible = false var tween = create_tween() Game.player_data.name = %FirstNameEdit.text Game.player_data.surname = %LastNameEdit.text diff --git a/scripts/portrait_customizer.gd b/scripts/portrait_customizer.gd index eb32f73..79cab8c 100644 --- a/scripts/portrait_customizer.gd +++ b/scripts/portrait_customizer.gd @@ -1,11 +1,20 @@ extends Control @onready var portrait : AdventurerPortrait = $HeroPortrait + var option = 0 var opt_key : String = "" var choices : Array = [] +var appearance : Dictionary + +signal portrait_customized() func _ready() -> void: + if Game.player_data.appearance.size() != 0: + appearance = Game.player_data.appearance + else: + appearance = portrait.get_random_appearance() + portrait.set_appearance(appearance) choices.resize(portrait.option_sets.size()) choices.fill(0) opt_key = portrait.option_sets.keys()[option] @@ -16,7 +25,9 @@ func _on_left_button_pressed() -> void: choices[option] -= 1 if choices[option] < 0: choices[option] = portrait.option_sets[opt_key].get_child_count() - 1 - portrait.option_sets[opt_key].get_child(choices[option]).visible = true + var node = portrait.option_sets[opt_key].get_child(choices[option]) + appearance[opt_key].type = node.name + node.visible = true func _on_right_button_pressed() -> void: @@ -24,8 +35,9 @@ func _on_right_button_pressed() -> void: choices[option] += 1 if choices[option] >= portrait.option_sets[opt_key].get_child_count(): choices[option] -= portrait.option_sets[opt_key].get_child_count() - portrait.option_sets[opt_key].get_child(choices[option]).visible = true - pass # Replace with function body. + var node = portrait.option_sets[opt_key].get_child(choices[option]) + appearance[opt_key].type = node.name + node.visible = true func _on_up_button_pressed() -> void: @@ -47,4 +59,19 @@ func _on_down_button_pressed() -> void: func _on_color_pressed(slot : ColorVariant.Types, col : String) -> void: + var key : String + match(slot): + ColorVariant.Types.SKIN: key = "skin" + ColorVariant.Types.HAIR: key = "hair" + ColorVariant.Types.EYES: key = "eyes" + appearance[key].color = col portrait.set_color(slot, col) + + +func _on_accept_button_pressed() -> void: + portrait_customized.emit() + + +func _on_random_button_pressed() -> void: + appearance = portrait.get_random_appearance() + portrait.set_appearance(appearance) diff --git a/scripts/quest_event_location.gd b/scripts/quest_event_location.gd new file mode 100644 index 0000000..93243b6 --- /dev/null +++ b/scripts/quest_event_location.gd @@ -0,0 +1,14 @@ +extends Control + +var view : QuestView +var quest : Quest +var event : Quest.Event +var speed : float +func _ready(): + position.x = (quest.progress - event.progress_point) * quest.length + +func _process(delta: float) -> void: + position.x -= view.base_speed * delta + +func activate(...params): + pass diff --git a/scripts/quest_event_location.gd.uid b/scripts/quest_event_location.gd.uid new file mode 100644 index 0000000..f2fab5d --- /dev/null +++ b/scripts/quest_event_location.gd.uid @@ -0,0 +1 @@ +uid://b0majitpmpdoq diff --git a/scripts/quest_sprite.gd b/scripts/quest_sprite.gd index 13cc1da..f18c7aa 100644 --- a/scripts/quest_sprite.gd +++ b/scripts/quest_sprite.gd @@ -1,5 +1,8 @@ class_name QuestSprite extends Control + +@onready var lifebar : TextureProgressBar = $LifeBar + var life : int = 1 var max_life : int = 1 var energy : int = 1 @@ -25,6 +28,7 @@ func attack(target : QuestSprite) -> void: func take_damage(source : QuestSprite, amount : int) -> void: busy.emit() life = clampi(life - amount, 0, max_life) + lifebar.value = life * 100 / max_life if life == 0: print("%s killed %s!" % [source.name, name]) die(source) diff --git a/scripts/questor_sprite.gd b/scripts/questor_sprite.gd index d9d63e9..f8ae506 100644 --- a/scripts/questor_sprite.gd +++ b/scripts/questor_sprite.gd @@ -14,6 +14,7 @@ func _ready() -> void: exp = data.exp stats = StatBlock.copy(data.stats) gold = data.gold + data.changed.connect(_on_questor_changed) func _process(delta) -> void: if banner_lag > 0: diff --git a/scripts/set_shifts.gd b/scripts/set_shifts.gd index 7972a05..4bf1476 100644 --- a/scripts/set_shifts.gd +++ b/scripts/set_shifts.gd @@ -31,4 +31,9 @@ func _on_add_shift_button_pressed() -> void: func _on_accept_button_pressed() -> void: + var schedule = [] + for child : ShiftCycle in cycle_list: + schedule.append([child.work_shift, child.open_shift]) + Guild.shift_schedule = schedule + Game.switch_dialogue("game_start", "") pass # Replace with function body. diff --git a/templates/hero_portrait.tscn b/templates/hero_portrait.tscn index ca26880..2536896 100644 --- a/templates/hero_portrait.tscn +++ b/templates/hero_portrait.tscn @@ -117,6 +117,7 @@ layout_mode = 3 anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 script = ExtResource("1_ovplg") metadata/_custom_type_script = "uid://m86jmtwv1a22" @@ -125,6 +126,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("2_rvj82") [node name="Head" type="TextureRect" parent="."] @@ -134,6 +136,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("4_dcd5x") script = ExtResource("5_riel4") @@ -144,6 +147,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("10_3uw50") script = ExtResource("5_riel4") @@ -154,11 +158,13 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 [node name="A" type="Control" parent="Hair"] anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 [node name="FG Shadow" type="TextureRect" parent="Hair/A"] z_index = 4 @@ -167,6 +173,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("8_2gbpo") script = ExtResource("5_riel4") @@ -177,6 +184,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("7_nwmjm") script = ExtResource("5_riel4") type = 1 @@ -188,6 +196,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("14_wbk3e") script = ExtResource("5_riel4") type = 1 @@ -197,6 +206,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("17_m1scf") [node name="Hat FG" type="TextureRect" parent="."] @@ -205,6 +215,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("18_prh5n") [node name="Eyes" type="Control" parent="."] @@ -214,11 +225,13 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 [node name="A" type="Control" parent="Eyes"] anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 [node name="Eyelids" type="TextureRect" parent="Eyes/A"] z_index = 4 @@ -227,6 +240,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("13_riel4") script = ExtResource("5_riel4") @@ -235,6 +249,7 @@ visible = false anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 [node name="Eyelids" type="TextureRect" parent="Eyes/B"] z_index = 4 @@ -243,6 +258,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("14_yemgt") script = ExtResource("5_riel4") @@ -251,6 +267,7 @@ visible = false anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 [node name="Eyelids" type="TextureRect" parent="Eyes/C"] z_index = 4 @@ -259,6 +276,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("15_nwmjm") script = ExtResource("5_riel4") @@ -267,6 +285,7 @@ visible = false anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 [node name="Eyelids" type="TextureRect" parent="Eyes/D"] z_index = 4 @@ -275,6 +294,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("16_grsle") script = ExtResource("5_riel4") @@ -284,6 +304,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("11_06xpe") [node name="Irises" type="TextureRect" parent="Eyes/D"] @@ -293,6 +314,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("13_h52hx") script = ExtResource("5_riel4") type = 2 @@ -301,11 +323,13 @@ type = 2 anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 [node name="A" type="Control" parent="Brows"] anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 [node name="Brows" type="TextureRect" parent="Brows/A"] z_index = 6 @@ -314,6 +338,7 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("15_dx3tu") script = ExtResource("5_riel4") type = 1 @@ -325,5 +350,6 @@ custom_minimum_size = Vector2(512, 512) layout_mode = 0 offset_right = 512.0 offset_bottom = 512.0 +mouse_filter = 2 texture = ExtResource("9_qslms") script = ExtResource("5_riel4") diff --git a/templates/portrait_customizer.tscn b/templates/portrait_customizer.tscn index efd6568..a3f0cdb 100644 --- a/templates/portrait_customizer.tscn +++ b/templates/portrait_customizer.tscn @@ -53,6 +53,15 @@ grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_qv0tv") +[node name="ColorRect3" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.5686275) + [node name="ColorRect" type="ColorRect" parent="."] custom_minimum_size = Vector2(600, 600) layout_mode = 0 @@ -136,19 +145,13 @@ offset_bottom = 1059.0 layout_mode = 2 alignment = 1 -[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -theme_override_font_sizes/font_size = 100 -text = "RESET" - -[node name="Button2" type="Button" parent="VBoxContainer/HBoxContainer"] +[node name="RandomButton" type="Button" parent="VBoxContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_font_sizes/font_size = 100 text = "Random" -[node name="Button3" type="Button" parent="VBoxContainer"] +[node name="AcceptButton" type="Button" parent="VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 100 text = "ACCEPT" @@ -186,76 +189,48 @@ theme_override_constants/h_separation = 20 theme_override_constants/v_separation = 20 columns = 5 -[node name="BlondHairButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="BlondeButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 -[node name="BrownHairButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="BrownButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_uwnmi") ignore_texture_size = true stretch_mode = 0 -[node name="RedHairButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="RedButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_72sxj") ignore_texture_size = true stretch_mode = 0 -[node name="BlackHairButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="BlackButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_ac3np") ignore_texture_size = true stretch_mode = 0 -[node name="BlueHairButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="BlueButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_5l84q") ignore_texture_size = true stretch_mode = 0 -[node name="BlondHairButton2" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="SilverButton" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 -[node name="BrownHairButton2" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_uwnmi") -ignore_texture_size = true -stretch_mode = 0 - -[node name="RedHairButton2" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_72sxj") -ignore_texture_size = true -stretch_mode = 0 - -[node name="BlackHairButton2" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_ac3np") -ignore_texture_size = true -stretch_mode = 0 - -[node name="BlueHairButton2" type="TextureButton" parent="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_5l84q") -ignore_texture_size = true -stretch_mode = 0 - [node name="SkinPanel" type="PanelContainer" parent="VBoxContainer2"] layout_mode = 2 @@ -275,79 +250,52 @@ theme_override_font_sizes/font_size = 48 text = "Skin" horizontal_alignment = 1 -[node name="HairGrid" type="GridContainer" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer"] +[node name="SkinGrid" type="GridContainer" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer"] +custom_minimum_size = Vector2(0, 220) layout_mode = 2 theme_override_constants/h_separation = 20 theme_override_constants/v_separation = 20 columns = 5 -[node name="BlondHairButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="PaleButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 -[node name="BrownHairButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_uwnmi") -ignore_texture_size = true -stretch_mode = 0 - -[node name="RedHairButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_72sxj") -ignore_texture_size = true -stretch_mode = 0 - -[node name="BlackHairButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_ac3np") -ignore_texture_size = true -stretch_mode = 0 - -[node name="BlueHairButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_5l84q") -ignore_texture_size = true -stretch_mode = 0 - -[node name="BlondHairButton2" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="MediumButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 -[node name="BrownHairButton2" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="OliveButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_uwnmi") +texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 -[node name="RedHairButton2" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="BrownButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_72sxj") +texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 -[node name="BlackHairButton2" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="RedButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_ac3np") +texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 -[node name="BlueHairButton2" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/HairGrid"] +[node name="BlueButton" type="TextureButton" parent="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid"] custom_minimum_size = Vector2(100, 100) layout_mode = 2 -texture_normal = SubResource("GradientTexture1D_5l84q") +texture_normal = SubResource("GradientTexture1D_6y6h7") ignore_texture_size = true stretch_mode = 0 @@ -450,13 +398,17 @@ stretch_mode = 0 [connection signal="pressed" from="UpButton" to="." method="_on_up_button_pressed"] [connection signal="pressed" from="DownButton" to="." method="_on_down_button_pressed"] [connection signal="pressed" from="RightButton" to="." method="_on_right_button_pressed"] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlondHairButton" to="." method="_on_color_pressed" binds= [1, "blonde"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BrownHairButton" to="." method="_on_color_pressed" binds= [1, "brown"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/RedHairButton" to="." method="_on_color_pressed" binds= [1, "red"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlackHairButton" to="." method="_on_color_pressed" binds= [1, "black"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlueHairButton" to="." method="_on_color_pressed" binds= [1, "blue"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlondHairButton2" to="." method="_on_color_pressed" binds= [1, "blonde"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BrownHairButton2" to="." method="_on_color_pressed" binds= [1, "brown"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/RedHairButton2" to="." method="_on_color_pressed" binds= [1, "red"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlackHairButton2" to="." method="_on_color_pressed" binds= [1, "black"]] -[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlueHairButton2" to="." method="_on_color_pressed" binds= [1, "blue"]] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/RandomButton" to="." method="_on_random_button_pressed"] +[connection signal="pressed" from="VBoxContainer/AcceptButton" to="." method="_on_accept_button_pressed"] +[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlondeButton" to="." method="_on_color_pressed" binds= [1, "blonde"]] +[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BrownButton" to="." method="_on_color_pressed" binds= [1, "brown"]] +[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/RedButton" to="." method="_on_color_pressed" binds= [1, "red"]] +[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlackButton" to="." method="_on_color_pressed" binds= [1, "black"]] +[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/BlueButton" to="." method="_on_color_pressed" binds= [1, "blue"]] +[connection signal="pressed" from="VBoxContainer2/HairPanel/MarginContainer/HBoxContainer/HairGrid/SilverButton" to="." method="_on_color_pressed" binds= [1, "silver"]] +[connection signal="pressed" from="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid/PaleButton" to="." method="_on_color_pressed" binds= [0, "pale"]] +[connection signal="pressed" from="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid/MediumButton" to="." method="_on_color_pressed" binds= [0, "medium"]] +[connection signal="pressed" from="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid/OliveButton" to="." method="_on_color_pressed" binds= [0, "olive"]] +[connection signal="pressed" from="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid/BrownButton" to="." method="_on_color_pressed" binds= [0, "brown"]] +[connection signal="pressed" from="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid/RedButton" to="." method="_on_color_pressed" binds= [0, "red"]] +[connection signal="pressed" from="VBoxContainer2/SkinPanel/MarginContainer/HBoxContainer/SkinGrid/BlueButton" to="." method="_on_color_pressed" binds= [0, "blue"]] diff --git a/templates/quest_event_location.tscn b/templates/quest_event_location.tscn new file mode 100644 index 0000000..c84a6ef --- /dev/null +++ b/templates/quest_event_location.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=3 format=3 uid="uid://b4u7eih00dhdu"] + +[ext_resource type="Script" uid="uid://b0majitpmpdoq" path="res://scripts/quest_event_location.gd" id="1_1dp57"] +[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="2_dcjvv"] + +[node name="Quest Event Location" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_1dp57") + +[node name="TextureRect" type="Sprite2D" parent="."] +visible = false +texture = ExtResource("2_dcjvv") +offset = Vector2(0, -64) + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 0 +offset_left = -49.0 +offset_top = -100.0 +offset_right = 51.0 +color = Color(0, 0, 0, 1) + +[node name="Label" type="Label" parent="ColorRect"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Event +Location" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/templates/questor_sprite.tscn b/templates/questor_sprite.tscn index fdef2fe..e88ef89 100644 --- a/templates/questor_sprite.tscn +++ b/templates/questor_sprite.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=8 format=3 uid="uid://cdtpyg5ohniax"] +[gd_scene load_steps=13 format=3 uid="uid://cdtpyg5ohniax"] [ext_resource type="Script" uid="uid://ce0vugvrwvppb" path="res://scripts/questor_sprite.gd" id="1_0ev5i"] [ext_resource type="Texture2D" uid="uid://bu0e077vc8qo1" path="res://graphics/questview/lvlup-circle.png" id="2_nqdtq"] [ext_resource type="Texture2D" uid="uid://c5d0u7ir1y0t2" path="res://graphics/testchar.png" id="2_w1b7t"] +[ext_resource type="Texture2D" uid="uid://67wavev1pifc" path="res://external/questor-shadow.png" id="3_cr46e"] [sub_resource type="Animation" id="Animation_7jhts"] length = 0.001 @@ -18,6 +19,42 @@ tracks/0/keys = { "update": 1, "values": [0] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, -45)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:self_modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} [sub_resource type="Animation" id="Animation_gy3gd"] resource_name = "idle" @@ -50,6 +87,42 @@ tracks/0/keys = { "update": 1, "values": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:self_modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.2, 0.4, 0.53333336, 0.6666667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0.88235295), Color(1, 1, 1, 0.78431374), Color(1, 1, 1, 1), Color(1, 1, 1, 0.78431374), Color(1, 1, 1, 1), Color(1, 1, 1, 0.88235587)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.2, 0.4, 0.53333336, 0.6666062), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(0.9, 0.9), Vector2(1, 1), Vector2(0.9, 0.9), Vector2(1, 1), Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.20000002, 0.4, 0.53333336), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(0, -45), Vector2(0, -40), Vector2(0, -45), Vector2(0, -40), Vector2(0, -45)] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_pylgq"] _data = { @@ -58,8 +131,25 @@ _data = { &"running": SubResource("Animation_5om5g") } +[sub_resource type="Gradient" id="Gradient_nqdtq"] +offsets = PackedFloat32Array(0) +colors = PackedColorArray(0, 0, 0, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_36qe6"] +gradient = SubResource("Gradient_nqdtq") +width = 1 + +[sub_resource type="Gradient" id="Gradient_yy18h"] +offsets = PackedFloat32Array(1) +colors = PackedColorArray(1, 1, 1, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_3ywd1"] +gradient = SubResource("Gradient_yy18h") +width = 1 + [node name="QuestorSprite" type="Control"] layout_mode = 3 +anchors_preset = 0 offset_left = 89.0 offset_top = 274.0 offset_right = 89.0 @@ -76,6 +166,11 @@ texture = ExtResource("2_nqdtq") hframes = 4 vframes = 2 +[node name="Sprite2D" type="Sprite2D" parent="."] +modulate = Color(0, 0, 0, 0.39215687) +position = Vector2(0, -45) +texture = ExtResource("3_cr46e") + [node name="Sprite" type="Sprite2D" parent="."] position = Vector2(0, -53) texture = ExtResource("2_w1b7t") @@ -90,3 +185,15 @@ autoplay = "running" [node name="BannerOffset" type="Node2D" parent="."] position = Vector2(0, -94) + +[node name="LifeBar" type="TextureProgressBar" parent="."] +layout_mode = 0 +offset_left = -37.0 +offset_top = 16.0 +offset_right = 38.0 +offset_bottom = 26.0 +nine_patch_stretch = true +texture_under = SubResource("GradientTexture1D_36qe6") +texture_progress = SubResource("GradientTexture1D_3ywd1") +tint_over = Color(1, 0, 0, 1) +tint_progress = Color(1, 0, 0, 1)