diff --git a/Assets/Spritesheets/Farmer_Pants_1_Black.png b/Assets/Spritesheets/Farmer_Pants_1_Black.png new file mode 100644 index 0000000..e499505 Binary files /dev/null and b/Assets/Spritesheets/Farmer_Pants_1_Black.png differ diff --git a/Assets/Spritesheets/Farmer_Pants_1_Black.png.import b/Assets/Spritesheets/Farmer_Pants_1_Black.png.import new file mode 100644 index 0000000..e643fa4 --- /dev/null +++ b/Assets/Spritesheets/Farmer_Pants_1_Black.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://lqrfxvrdc4qq" +path="res://.godot/imported/Farmer_Pants_1_Black.png-15e7c43d1c5fcd845f700269afa2515d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Spritesheets/Farmer_Pants_1_Black.png" +dest_files=["res://.godot/imported/Farmer_Pants_1_Black.png-15e7c43d1c5fcd845f700269afa2515d.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/Assets/Spritesheets/Farmer_Shirt_1_Black.png b/Assets/Spritesheets/Farmer_Shirt_1_Black.png new file mode 100644 index 0000000..e2b31d2 Binary files /dev/null and b/Assets/Spritesheets/Farmer_Shirt_1_Black.png differ diff --git a/Assets/Spritesheets/Farmer_Shirt_1_Black.png.import b/Assets/Spritesheets/Farmer_Shirt_1_Black.png.import new file mode 100644 index 0000000..835b21b --- /dev/null +++ b/Assets/Spritesheets/Farmer_Shirt_1_Black.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4mpha6wuvyfy" +path="res://.godot/imported/Farmer_Shirt_1_Black.png-8b1dcf36a150d6b480fd95c8990539fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Spritesheets/Farmer_Shirt_1_Black.png" +dest_files=["res://.godot/imported/Farmer_Shirt_1_Black.png-8b1dcf36a150d6b480fd95c8990539fe.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/Assets/Spritesheets/Hair_1_Blonde.png b/Assets/Spritesheets/Hair_1_Blonde.png new file mode 100644 index 0000000..6b14a80 Binary files /dev/null and b/Assets/Spritesheets/Hair_1_Blonde.png differ diff --git a/Assets/Spritesheets/Hair_1_Blonde.png.import b/Assets/Spritesheets/Hair_1_Blonde.png.import new file mode 100644 index 0000000..de2737b --- /dev/null +++ b/Assets/Spritesheets/Hair_1_Blonde.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1g5dx0dbupwk" +path="res://.godot/imported/Hair_1_Blonde.png-e93c90625ead2d832d7ef1b83045cb77.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Spritesheets/Hair_1_Blonde.png" +dest_files=["res://.godot/imported/Hair_1_Blonde.png-e93c90625ead2d832d7ef1b83045cb77.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/Assets/Spritesheets/Hands_1_Bare.png b/Assets/Spritesheets/Hands_1_Bare.png new file mode 100644 index 0000000..b66aad1 Binary files /dev/null and b/Assets/Spritesheets/Hands_1_Bare.png differ diff --git a/Assets/Spritesheets/Hands_1_Bare.png.import b/Assets/Spritesheets/Hands_1_Bare.png.import new file mode 100644 index 0000000..a108da9 --- /dev/null +++ b/Assets/Spritesheets/Hands_1_Bare.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1yikmomtafpg" +path="res://.godot/imported/Hands_1_Bare.png-5e14424b29c52ecfcfe6e04a36bdd9d4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Spritesheets/Hands_1_Bare.png" +dest_files=["res://.godot/imported/Hands_1_Bare.png-5e14424b29c52ecfcfe6e04a36bdd9d4.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/Assets/Spritesheets/Player_Base_animations.png b/Assets/Spritesheets/Player_Base_animations.png new file mode 100644 index 0000000..4f1fa27 Binary files /dev/null and b/Assets/Spritesheets/Player_Base_animations.png differ diff --git a/Assets/Spritesheets/Player_Base_animations.png.import b/Assets/Spritesheets/Player_Base_animations.png.import new file mode 100644 index 0000000..ac68ec5 --- /dev/null +++ b/Assets/Spritesheets/Player_Base_animations.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de0ihg453ruyi" +path="res://.godot/imported/Player_Base_animations.png-af4aa0d38534a90566ea24fc25956ca2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Spritesheets/Player_Base_animations.png" +dest_files=["res://.godot/imported/Player_Base_animations.png-af4aa0d38534a90566ea24fc25956ca2.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/Assets/Spritesheets/Shoes_1_Black.png b/Assets/Spritesheets/Shoes_1_Black.png new file mode 100644 index 0000000..2796f86 Binary files /dev/null and b/Assets/Spritesheets/Shoes_1_Black.png differ diff --git a/Assets/Spritesheets/Shoes_1_Black.png.import b/Assets/Spritesheets/Shoes_1_Black.png.import new file mode 100644 index 0000000..09bc253 --- /dev/null +++ b/Assets/Spritesheets/Shoes_1_Black.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dw03nnfxdpb85" +path="res://.godot/imported/Shoes_1_Black.png-f4d9e6fa7fc208e65e537b49e204cfda.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Spritesheets/Shoes_1_Black.png" +dest_files=["res://.godot/imported/Shoes_1_Black.png-f4d9e6fa7fc208e65e537b49e204cfda.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/Resources/Fonts/JetBrainsMono (Regular).tres b/Resources/Fonts/JetBrainsMono (Regular).tres new file mode 100644 index 0000000..1b55ee0 --- /dev/null +++ b/Resources/Fonts/JetBrainsMono (Regular).tres @@ -0,0 +1,4 @@ +[gd_resource type="SystemFont" format=3 uid="uid://c4uck407a6w56"] + +[resource] +font_names = PackedStringArray("JetBrains Mono") diff --git a/Scenes/Characters/Player/player.tscn b/Scenes/Characters/Player/player.tscn new file mode 100644 index 0000000..ee952aa --- /dev/null +++ b/Scenes/Characters/Player/player.tscn @@ -0,0 +1,19 @@ +[gd_scene format=3 uid="uid://6athlweutl2g"] + +[ext_resource type="PackedScene" uid="uid://uyl0s1e67x6s" path="res://Scenes/Characters/Player/sprite.tscn" id="1_27cb7"] +[ext_resource type="PackedScene" uid="uid://c2ydbmmvnfca6" path="res://Scenes/Characters/Player/state_machine.tscn" id="1_lyjr2"] +[ext_resource type="Script" uid="uid://b0l02v61if6k8" path="res://Scripts/Components/FacingDirectionComponent.gd" id="1_siygm"] + +[node name="Player" type="CharacterBody2D" unique_id=1502234578] + +[node name="Components" type="Node" parent="." unique_id=567893784] + +[node name="FacingDirectionComponent" type="Node" parent="Components" unique_id=408127032] +script = ExtResource("1_siygm") +current_direction = 0 + +[node name="StateMachine" parent="." unique_id=732559774 instance=ExtResource("1_lyjr2")] + +[node name="Sprite" parent="." unique_id=1169131604 node_paths=PackedStringArray("state_machine", "direction_component") instance=ExtResource("1_27cb7")] +state_machine = NodePath("../StateMachine") +direction_component = NodePath("../Components/FacingDirectionComponent") diff --git a/Scenes/Characters/Player/sprite.tscn b/Scenes/Characters/Player/sprite.tscn new file mode 100644 index 0000000..237d21f --- /dev/null +++ b/Scenes/Characters/Player/sprite.tscn @@ -0,0 +1,624 @@ +[gd_scene format=3 uid="uid://uyl0s1e67x6s"] + +[ext_resource type="Texture2D" uid="uid://de0ihg453ruyi" path="res://Assets/Spritesheets/Player_Base_animations.png" id="1_45g06"] +[ext_resource type="Script" uid="uid://cuar23q48cbja" path="res://Scripts/Characters/Player/sprite.gd" id="1_jqxwg"] +[ext_resource type="Texture2D" uid="uid://1g5dx0dbupwk" path="res://Assets/Spritesheets/Hair_1_Blonde.png" id="2_jqxwg"] +[ext_resource type="Texture2D" uid="uid://4mpha6wuvyfy" path="res://Assets/Spritesheets/Farmer_Shirt_1_Black.png" id="3_ndjja"] +[ext_resource type="Texture2D" uid="uid://lqrfxvrdc4qq" path="res://Assets/Spritesheets/Farmer_Pants_1_Black.png" id="4_nwemi"] +[ext_resource type="Texture2D" uid="uid://b1yikmomtafpg" path="res://Assets/Spritesheets/Hands_1_Bare.png" id="5_jlj55"] +[ext_resource type="Texture2D" uid="uid://dw03nnfxdpb85" path="res://Assets/Spritesheets/Shoes_1_Black.png" id="6_h1kk7"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_40svl"] +atlas = ExtResource("1_45g06") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_al8ar"] +atlas = ExtResource("1_45g06") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gy20a"] +atlas = ExtResource("1_45g06") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cqrjx"] +atlas = ExtResource("1_45g06") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_khnq4"] +atlas = ExtResource("1_45g06") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_utp2y"] +atlas = ExtResource("1_45g06") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jqxwg"] +atlas = ExtResource("1_45g06") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ndjja"] +atlas = ExtResource("1_45g06") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nwemi"] +atlas = ExtResource("1_45g06") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jlj55"] +atlas = ExtResource("1_45g06") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_h1kk7"] +atlas = ExtResource("1_45g06") +region = Rect2(256, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ekpmn"] +atlas = ExtResource("1_45g06") +region = Rect2(320, 64, 64, 64) + +[sub_resource type="SpriteFrames" id="SpriteFrames_gdgf0"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_40svl") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_al8ar") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gy20a") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cqrjx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_khnq4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_utp2y") +}], +"loop": true, +"name": &"idle-down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_jqxwg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ndjja") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_nwemi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jlj55") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_h1kk7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ekpmn") +}], +"loop": true, +"name": &"idle-side", +"speed": 5.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_gdgf0"] +atlas = ExtResource("2_jqxwg") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xo8ps"] +atlas = ExtResource("2_jqxwg") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fcmex"] +atlas = ExtResource("2_jqxwg") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_25bbb"] +atlas = ExtResource("2_jqxwg") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cueqf"] +atlas = ExtResource("2_jqxwg") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_01b8d"] +atlas = ExtResource("2_jqxwg") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_l06vn"] +atlas = ExtResource("2_jqxwg") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3uap6"] +atlas = ExtResource("2_jqxwg") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mxids"] +atlas = ExtResource("2_jqxwg") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_va54l"] +atlas = ExtResource("2_jqxwg") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7txqm"] +atlas = ExtResource("2_jqxwg") +region = Rect2(256, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fol0j"] +atlas = ExtResource("2_jqxwg") +region = Rect2(320, 64, 64, 64) + +[sub_resource type="SpriteFrames" id="SpriteFrames_xccyk"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_gdgf0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xo8ps") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fcmex") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_25bbb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cueqf") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_01b8d") +}], +"loop": true, +"name": &"idle-down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_l06vn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3uap6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mxids") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_va54l") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7txqm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fol0j") +}], +"loop": true, +"name": &"idle-side", +"speed": 5.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_h1n2f"] +atlas = ExtResource("3_ndjja") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dxpk4"] +atlas = ExtResource("3_ndjja") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_15c3i"] +atlas = ExtResource("3_ndjja") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yt1oc"] +atlas = ExtResource("3_ndjja") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jnx77"] +atlas = ExtResource("3_ndjja") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hy8lp"] +atlas = ExtResource("3_ndjja") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_33tm7"] +atlas = ExtResource("3_ndjja") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bod5r"] +atlas = ExtResource("3_ndjja") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hh1q3"] +atlas = ExtResource("3_ndjja") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pdl7v"] +atlas = ExtResource("3_ndjja") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_45axt"] +atlas = ExtResource("3_ndjja") +region = Rect2(256, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5c16u"] +atlas = ExtResource("3_ndjja") +region = Rect2(320, 64, 64, 64) + +[sub_resource type="SpriteFrames" id="SpriteFrames_uxymp"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_h1n2f") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dxpk4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_15c3i") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yt1oc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jnx77") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hy8lp") +}], +"loop": true, +"name": &"idle-down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_33tm7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bod5r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hh1q3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pdl7v") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_45axt") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5c16u") +}], +"loop": true, +"name": &"idle-side", +"speed": 5.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_fepmq"] +atlas = ExtResource("4_nwemi") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ddhxa"] +atlas = ExtResource("4_nwemi") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3k74t"] +atlas = ExtResource("4_nwemi") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_v8iml"] +atlas = ExtResource("4_nwemi") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ojpki"] +atlas = ExtResource("4_nwemi") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rv8bj"] +atlas = ExtResource("4_nwemi") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ykn0l"] +atlas = ExtResource("4_nwemi") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0umab"] +atlas = ExtResource("4_nwemi") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1hx1l"] +atlas = ExtResource("4_nwemi") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_t8o0d"] +atlas = ExtResource("4_nwemi") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d7qj2"] +atlas = ExtResource("4_nwemi") +region = Rect2(256, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1vxrf"] +atlas = ExtResource("4_nwemi") +region = Rect2(320, 64, 64, 64) + +[sub_resource type="SpriteFrames" id="SpriteFrames_inlw8"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_fepmq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ddhxa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3k74t") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_v8iml") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ojpki") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rv8bj") +}], +"loop": true, +"name": &"idle-down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_ykn0l") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0umab") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1hx1l") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_t8o0d") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d7qj2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1vxrf") +}], +"loop": true, +"name": &"idle-side", +"speed": 5.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_xccyk"] +atlas = ExtResource("5_jlj55") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_uxymp"] +atlas = ExtResource("5_jlj55") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_inlw8"] +atlas = ExtResource("5_jlj55") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f2s78"] +atlas = ExtResource("5_jlj55") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hwltk"] +atlas = ExtResource("5_jlj55") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hhnlt"] +atlas = ExtResource("5_jlj55") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8yclo"] +atlas = ExtResource("5_jlj55") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_txuvg"] +atlas = ExtResource("5_jlj55") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n6hxx"] +atlas = ExtResource("5_jlj55") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ejtmi"] +atlas = ExtResource("5_jlj55") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j71g1"] +atlas = ExtResource("5_jlj55") +region = Rect2(256, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_m74eu"] +atlas = ExtResource("5_jlj55") +region = Rect2(320, 64, 64, 64) + +[sub_resource type="SpriteFrames" id="SpriteFrames_m75h8"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_xccyk") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_uxymp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_inlw8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_f2s78") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hwltk") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hhnlt") +}], +"loop": true, +"name": &"idle-down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_8yclo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_txuvg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n6hxx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ejtmi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_j71g1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_m74eu") +}], +"loop": true, +"name": &"idle-side", +"speed": 5.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_m75h8"] +atlas = ExtResource("6_h1kk7") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2dmea"] +atlas = ExtResource("6_h1kk7") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lml76"] +atlas = ExtResource("6_h1kk7") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ste30"] +atlas = ExtResource("6_h1kk7") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6kewp"] +atlas = ExtResource("6_h1kk7") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j3fsp"] +atlas = ExtResource("6_h1kk7") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kqg7n"] +atlas = ExtResource("6_h1kk7") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_w15w3"] +atlas = ExtResource("6_h1kk7") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_82p57"] +atlas = ExtResource("6_h1kk7") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_v84eh"] +atlas = ExtResource("6_h1kk7") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_l8x7m"] +atlas = ExtResource("6_h1kk7") +region = Rect2(256, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_y387u"] +atlas = ExtResource("6_h1kk7") +region = Rect2(320, 64, 64, 64) + +[sub_resource type="SpriteFrames" id="SpriteFrames_2davj"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_m75h8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2dmea") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lml76") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ste30") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6kewp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_j3fsp") +}], +"loop": true, +"name": &"idle-down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_kqg7n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w15w3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_82p57") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_v84eh") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_l8x7m") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_y387u") +}], +"loop": true, +"name": &"idle-side", +"speed": 5.0 +}] + +[node name="Sprite" type="Node2D" unique_id=1169131604] +script = ExtResource("1_jqxwg") + +[node name="Base" type="AnimatedSprite2D" parent="." unique_id=2054948028] +sprite_frames = SubResource("SpriteFrames_gdgf0") +animation = &"idle-side" +autoplay = "idle-down" + +[node name="Hair" type="AnimatedSprite2D" parent="." unique_id=231591242] +sprite_frames = SubResource("SpriteFrames_xccyk") +animation = &"idle-side" +autoplay = "idle-down" + +[node name="Shirt" type="AnimatedSprite2D" parent="." unique_id=973518035] +sprite_frames = SubResource("SpriteFrames_uxymp") +animation = &"idle-side" +autoplay = "idle-down" + +[node name="Pants" type="AnimatedSprite2D" parent="." unique_id=1239862223] +sprite_frames = SubResource("SpriteFrames_inlw8") +animation = &"idle-side" +autoplay = "idle-down" + +[node name="Hands" type="AnimatedSprite2D" parent="." unique_id=1598152304] +sprite_frames = SubResource("SpriteFrames_m75h8") +animation = &"idle-side" +autoplay = "idle-down" + +[node name="Shoes" type="AnimatedSprite2D" parent="." unique_id=482154148] +sprite_frames = SubResource("SpriteFrames_2davj") +animation = &"idle-side" +autoplay = "idle-down" diff --git a/Scenes/Characters/Player/state_machine.tscn b/Scenes/Characters/Player/state_machine.tscn new file mode 100644 index 0000000..39fa686 --- /dev/null +++ b/Scenes/Characters/Player/state_machine.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://c2ydbmmvnfca6"] + +[ext_resource type="Script" uid="uid://c74mhfemxuuco" path="res://Scripts/Characters/Player/state_machine.gd" id="1_clu2m"] + +[node name="StateMachine" type="Node" unique_id=732559774] +script = ExtResource("1_clu2m") diff --git a/Scenes/shop.tscn b/Scenes/shop.tscn new file mode 100644 index 0000000..715eacc --- /dev/null +++ b/Scenes/shop.tscn @@ -0,0 +1,12 @@ +[gd_scene format=3 uid="uid://bwt0ijoq4qmhn"] + +[ext_resource type="PackedScene" uid="uid://6athlweutl2g" path="res://Scenes/Characters/Player/player.tscn" id="1_a0mxf"] + +[node name="Shop" type="Node2D" unique_id=547318403] + +[node name="Player" parent="." unique_id=1502234578 instance=ExtResource("1_a0mxf")] +position = Vector2(289, 174) + +[node name="Camera2D" type="Camera2D" parent="." unique_id=1684491254] +position = Vector2(307, 165) +zoom = Vector2(3, 3) diff --git a/Scripts/Characters/Player/sprite.gd b/Scripts/Characters/Player/sprite.gd new file mode 100644 index 0000000..298e261 --- /dev/null +++ b/Scripts/Characters/Player/sprite.gd @@ -0,0 +1,42 @@ +extends Node2D + +@export var state_machine: PlayerStateMachine +@export var direction_component: FacingDirectionComponent + +@onready var base: AnimatedSprite2D = $Base +@onready var hair: AnimatedSprite2D = $Hair +@onready var pants: AnimatedSprite2D = $Pants +@onready var hands: AnimatedSprite2D = $Hands +@onready var shoes: AnimatedSprite2D = $Shoes + +var all_parts: Array[AnimatedSprite2D] + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + all_parts = [ + base, hair, pants, hands, shoes + ] + + var animation := _build_animation_name(state_machine.GetCurrentState(), direction_component.GetCurrentDirection()) + var should_flip := _should_flip_horizontal() + for part in all_parts: + part.animation = animation + part.play() + part.flip_h = should_flip + + +func _build_animation_name(state: PlayerStateMachine.States, direction: Enums.Directions) -> String: + # e.g. "idle-down", "walking-up" + var state_str = PlayerStateMachine.States.keys()[state].to_lower() + var direction_str = _direction_to_animation_state(direction) + return "%s-%s" % [state_str, direction_str] + + +func _direction_to_animation_state(direction: Enums.Directions) -> String: + if direction == Enums.Directions.LEFT or direction == Enums.Directions.RIGHT: + return "side" + return Enums.Directions.keys()[direction].to_lower() + + +func _should_flip_horizontal() -> bool: + return direction_component.GetCurrentDirection() == Enums.Directions.LEFT diff --git a/Scripts/Characters/Player/sprite.gd.uid b/Scripts/Characters/Player/sprite.gd.uid new file mode 100644 index 0000000..9f25092 --- /dev/null +++ b/Scripts/Characters/Player/sprite.gd.uid @@ -0,0 +1 @@ +uid://cuar23q48cbja diff --git a/Scripts/Characters/Player/state_machine.gd b/Scripts/Characters/Player/state_machine.gd new file mode 100644 index 0000000..008c2db --- /dev/null +++ b/Scripts/Characters/Player/state_machine.gd @@ -0,0 +1,19 @@ +extends Node +class_name PlayerStateMachine + +enum States { + IDLE, WALKING +} + +# Public Methods +func GetCurrentState() -> States: + return States.IDLE + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/Scripts/Characters/Player/state_machine.gd.uid b/Scripts/Characters/Player/state_machine.gd.uid new file mode 100644 index 0000000..40155e7 --- /dev/null +++ b/Scripts/Characters/Player/state_machine.gd.uid @@ -0,0 +1 @@ +uid://c74mhfemxuuco diff --git a/Scripts/Components/FacingDirectionComponent.gd b/Scripts/Components/FacingDirectionComponent.gd new file mode 100644 index 0000000..48c4fb6 --- /dev/null +++ b/Scripts/Components/FacingDirectionComponent.gd @@ -0,0 +1,8 @@ +extends Node +class_name FacingDirectionComponent + +@export var current_direction := Enums.Directions.DOWN + +# Public Methods +func GetCurrentDirection() -> Enums.Directions: + return current_direction diff --git a/Scripts/Components/FacingDirectionComponent.gd.uid b/Scripts/Components/FacingDirectionComponent.gd.uid new file mode 100644 index 0000000..726d694 --- /dev/null +++ b/Scripts/Components/FacingDirectionComponent.gd.uid @@ -0,0 +1 @@ +uid://b0l02v61if6k8 diff --git a/Scripts/enums.gd b/Scripts/enums.gd new file mode 100644 index 0000000..42170c0 --- /dev/null +++ b/Scripts/enums.gd @@ -0,0 +1,5 @@ +extends Node + +enum Directions { + LEFT, RIGHT, UP, DOWN +} diff --git a/Scripts/enums.gd.uid b/Scripts/enums.gd.uid new file mode 100644 index 0000000..2dce374 --- /dev/null +++ b/Scripts/enums.gd.uid @@ -0,0 +1 @@ +uid://bfddgy6gohdj3 diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..49d7338 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co6u4rcvycv0n" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..4e88c36 --- /dev/null +++ b/project.godot @@ -0,0 +1,29 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Archipelago Game" +run/main_scene="uid://bwt0ijoq4qmhn" +config/features=PackedStringArray("4.6", "Forward Plus") +config/icon="res://icon.svg" + +[autoload] + +Enums="*uid://bfddgy6gohdj3" + +[physics] + +3d/physics_engine="Jolt Physics" + +[rendering] + +textures/canvas_textures/default_texture_filter=0 +rendering_device/driver.windows="d3d12"