diff --git a/Assets/ColorPallet.ase b/Assets/ColorPallet.ase new file mode 100644 index 0000000..f96909c Binary files /dev/null and b/Assets/ColorPallet.ase differ diff --git a/Assets/ColorPallet.png b/Assets/ColorPallet.png new file mode 100644 index 0000000..d81afb6 Binary files /dev/null and b/Assets/ColorPallet.png differ diff --git a/Assets/Sprites/bunny_righ.png.import b/Assets/ColorPallet.png.import similarity index 65% rename from Assets/Sprites/bunny_righ.png.import rename to Assets/ColorPallet.png.import index baaf241..fa16fe8 100644 --- a/Assets/Sprites/bunny_righ.png.import +++ b/Assets/ColorPallet.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://qvq11powneve" -path="res://.godot/imported/bunny_righ.png-66416292c790a3c540d894b9b9f5a2c9.ctex" +uid="uid://dwkjfno8mjrdp" +path="res://.godot/imported/ColorPallet.png-9feaa0f98adb7b976a9666999fd546c6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/bunny_righ.png" -dest_files=["res://.godot/imported/bunny_righ.png-66416292c790a3c540d894b9b9f5a2c9.ctex"] +source_file="res://Assets/ColorPallet.png" +dest_files=["res://.godot/imported/ColorPallet.png-9feaa0f98adb7b976a9666999fd546c6.ctex"] [params] @@ -31,4 +31,4 @@ process/normal_map_invert_y=false process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 -detect_3d/compress_to=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/Bunny/bad_bunny_spritesheet.png b/Assets/Sprites/Bunny/bad_bunny_spritesheet.png new file mode 100644 index 0000000..dccef6d Binary files /dev/null and b/Assets/Sprites/Bunny/bad_bunny_spritesheet.png differ diff --git a/Assets/Sprites/Bunny/bad_bunny_spritesheet.png.import b/Assets/Sprites/Bunny/bad_bunny_spritesheet.png.import new file mode 100644 index 0000000..a8c77f8 --- /dev/null +++ b/Assets/Sprites/Bunny/bad_bunny_spritesheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://df2fluk0dlqar" +path="res://.godot/imported/bad_bunny_spritesheet.png-8145cd27d7de497a043aedfca5238e73.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Bunny/bad_bunny_spritesheet.png" +dest_files=["res://.godot/imported/bad_bunny_spritesheet.png-8145cd27d7de497a043aedfca5238e73.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/Bunny/good_bunny_spritesheet.png b/Assets/Sprites/Bunny/good_bunny_spritesheet.png new file mode 100644 index 0000000..2b1b04c Binary files /dev/null and b/Assets/Sprites/Bunny/good_bunny_spritesheet.png differ diff --git a/Assets/Sprites/Bunny/good_bunny_spritesheet.png.import b/Assets/Sprites/Bunny/good_bunny_spritesheet.png.import new file mode 100644 index 0000000..ee82786 --- /dev/null +++ b/Assets/Sprites/Bunny/good_bunny_spritesheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c54k7fn4fu42s" +path="res://.godot/imported/good_bunny_spritesheet.png-32ea29d3519f9bb76fce73fda32cc4c7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Bunny/good_bunny_spritesheet.png" +dest_files=["res://.godot/imported/good_bunny_spritesheet.png-32ea29d3519f9bb76fce73fda32cc4c7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/Jesus/jesus_down.ase b/Assets/Sprites/Jesus/jesus_down.ase new file mode 100644 index 0000000..a8f338a Binary files /dev/null and b/Assets/Sprites/Jesus/jesus_down.ase differ diff --git a/Assets/Sprites/Jesus/jesus_left.ase b/Assets/Sprites/Jesus/jesus_left.ase new file mode 100644 index 0000000..52e51f1 Binary files /dev/null and b/Assets/Sprites/Jesus/jesus_left.ase differ diff --git a/Assets/Sprites/Jesus/jesus_right.ase b/Assets/Sprites/Jesus/jesus_right.ase new file mode 100644 index 0000000..ed17a21 Binary files /dev/null and b/Assets/Sprites/Jesus/jesus_right.ase differ diff --git a/Assets/Sprites/Jesus/jesus_spritesheet.png b/Assets/Sprites/Jesus/jesus_spritesheet.png new file mode 100644 index 0000000..ab9a19d Binary files /dev/null and b/Assets/Sprites/Jesus/jesus_spritesheet.png differ diff --git a/Assets/Sprites/bunny_down.png.import b/Assets/Sprites/Jesus/jesus_spritesheet.png.import similarity index 60% rename from Assets/Sprites/bunny_down.png.import rename to Assets/Sprites/Jesus/jesus_spritesheet.png.import index 9d6d91d..8ccd198 100644 --- a/Assets/Sprites/bunny_down.png.import +++ b/Assets/Sprites/Jesus/jesus_spritesheet.png.import @@ -2,20 +2,20 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dyibsqvmfitux" -path="res://.godot/imported/bunny_down.png-6511b38862324c280c3e08af22b07ee9.ctex" +uid="uid://db70wcy5ua3jd" +path="res://.godot/imported/jesus_spritesheet.png-2f2e431acd4617eba93529f5420694c6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/bunny_down.png" -dest_files=["res://.godot/imported/bunny_down.png-6511b38862324c280c3e08af22b07ee9.ctex"] +source_file="res://Assets/Sprites/Jesus/jesus_spritesheet.png" +dest_files=["res://.godot/imported/jesus_spritesheet.png-2f2e431acd4617eba93529f5420694c6.ctex"] [params] -compress/mode=4 +compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 @@ -31,4 +31,4 @@ process/normal_map_invert_y=false process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 -detect_3d/compress_to=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/Jesus/jesus_up.ase b/Assets/Sprites/Jesus/jesus_up.ase new file mode 100644 index 0000000..bea1fda Binary files /dev/null and b/Assets/Sprites/Jesus/jesus_up.ase differ diff --git a/Assets/Sprites/TileMap.png b/Assets/Sprites/TileMap.png new file mode 100644 index 0000000..33988e1 Binary files /dev/null and b/Assets/Sprites/TileMap.png differ diff --git a/Assets/Sprites/bunny_up.png.import b/Assets/Sprites/TileMap.png.import similarity index 65% rename from Assets/Sprites/bunny_up.png.import rename to Assets/Sprites/TileMap.png.import index 52a2089..b55c6da 100644 --- a/Assets/Sprites/bunny_up.png.import +++ b/Assets/Sprites/TileMap.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://xbx6qrjbu5h7" -path="res://.godot/imported/bunny_up.png-d9c6d22cb180401f29d7e9a4fd388bb1.ctex" +uid="uid://bqi3ddjrcj2bh" +path="res://.godot/imported/TileMap.png-5a8ebee45e38c1e4c53b5e5cf69bfe18.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/bunny_up.png" -dest_files=["res://.godot/imported/bunny_up.png-d9c6d22cb180401f29d7e9a4fd388bb1.ctex"] +source_file="res://Assets/Sprites/TileMap.png" +dest_files=["res://.godot/imported/TileMap.png-5a8ebee45e38c1e4c53b5e5cf69bfe18.ctex"] [params] @@ -31,4 +31,4 @@ process/normal_map_invert_y=false process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 -detect_3d/compress_to=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/bunny_down.png b/Assets/Sprites/bunny_down.png deleted file mode 100644 index a80fdc6..0000000 Binary files a/Assets/Sprites/bunny_down.png and /dev/null differ diff --git a/Assets/Sprites/bunny_left.png b/Assets/Sprites/bunny_left.png deleted file mode 100644 index 82ec294..0000000 Binary files a/Assets/Sprites/bunny_left.png and /dev/null differ diff --git a/Assets/Sprites/bunny_righ.png b/Assets/Sprites/bunny_righ.png deleted file mode 100644 index f791943..0000000 Binary files a/Assets/Sprites/bunny_righ.png and /dev/null differ diff --git a/Assets/Sprites/bunny_up.png b/Assets/Sprites/bunny_up.png deleted file mode 100644 index 57c361f..0000000 Binary files a/Assets/Sprites/bunny_up.png and /dev/null differ diff --git a/Assets/Sprites/crucefix.png b/Assets/Sprites/crucefix.png new file mode 100644 index 0000000..05c087a Binary files /dev/null and b/Assets/Sprites/crucefix.png differ diff --git a/Assets/Sprites/bunny_left.png.import b/Assets/Sprites/crucefix.png.import similarity index 65% rename from Assets/Sprites/bunny_left.png.import rename to Assets/Sprites/crucefix.png.import index 79013f4..544c570 100644 --- a/Assets/Sprites/bunny_left.png.import +++ b/Assets/Sprites/crucefix.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dynqs8dq175ty" -path="res://.godot/imported/bunny_left.png-b0a65864e50a1d10579cf71a4bd59148.ctex" +uid="uid://c5jj6s5orw6mi" +path="res://.godot/imported/crucefix.png-cb219c7b600f79e2811b5e89faa1becb.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/bunny_left.png" -dest_files=["res://.godot/imported/bunny_left.png-b0a65864e50a1d10579cf71a4bd59148.ctex"] +source_file="res://Assets/Sprites/crucefix.png" +dest_files=["res://.godot/imported/crucefix.png-cb219c7b600f79e2811b5e89faa1becb.ctex"] [params] @@ -31,4 +31,4 @@ process/normal_map_invert_y=false process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 -detect_3d/compress_to=0 +detect_3d/compress_to=1 diff --git a/Assets/Tileset.tres b/Assets/Tileset.tres new file mode 100644 index 0000000..571b83b --- /dev/null +++ b/Assets/Tileset.tres @@ -0,0 +1,496 @@ +[gd_resource type="TileSet" load_steps=3 format=3 uid="uid://bj7uu2180mie3"] + +[ext_resource type="Texture2D" uid="uid://bqi3ddjrcj2bh" path="res://Assets/Sprites/TileMap.png" id="1_cl3se"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mgef5"] +texture = ExtResource("1_cl3se") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 +0:0/0/probability = 2.0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(12, 16, -12, 16, -12, -8, -8.5, -12, 8.5, -12, 12, -8) +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +1:0/0/physics_layer_0/angular_velocity = 0.0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, 12.5, 12, 16, -12, 16, -12, -8, -8, -12, 16, -12, 16, 12) +1:0/0/terrains_peering_bit/right_side = 0 +1:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/terrain = 0 +2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +2:0/0/physics_layer_0/angular_velocity = 0.0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, -16, -12, 16, -12, 16, 12, 12.5, 12.5, 12, 16, -12, 16, -12.5, 12.5) +2:0/0/terrains_peering_bit/right_side = 0 +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/left_side = 0 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +3:0/0/physics_layer_0/angular_velocity = 0.0 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, 12.5, -16, 12, -16, -12, 8, -12, 12, -8, 12, 16, -12, 16) +3:0/0/terrains_peering_bit/bottom_side = 0 +3:0/0/terrains_peering_bit/left_side = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +4:0/0/physics_layer_0/angular_velocity = 0.0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(12, 16, -12, 16, -12.5, 12.5, -16, 12, -16, -16, 12, -16, 12.5, -12.5, 16, -12, 16, 12, 12.5, 12.5) +4:0/0/terrains_peering_bit/right_side = 0 +4:0/0/terrains_peering_bit/bottom_side = 0 +4:0/0/terrains_peering_bit/left_side = 0 +4:0/0/terrains_peering_bit/top_left_corner = 0 +4:0/0/terrains_peering_bit/top_side = 0 +5:0/0 = 0 +5:0/0/terrain_set = 0 +5:0/0/terrain = 0 +5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +5:0/0/physics_layer_0/angular_velocity = 0.0 +5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, 12.5, -16, 12, -16, -12, 16, -12, 16, 16, -12, 16) +5:0/0/terrains_peering_bit/right_side = 0 +5:0/0/terrains_peering_bit/bottom_right_corner = 0 +5:0/0/terrains_peering_bit/bottom_side = 0 +5:0/0/terrains_peering_bit/left_side = 0 +6:0/0 = 0 +6:0/0/terrain_set = 0 +6:0/0/terrain = 0 +6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +6:0/0/physics_layer_0/angular_velocity = 0.0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, 12.5, 16, 12, 16, -12, -16, -12, -16, 16, 12, 16) +6:0/0/terrains_peering_bit/right_side = 0 +6:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0/terrains_peering_bit/bottom_left_corner = 0 +6:0/0/terrains_peering_bit/left_side = 0 +7:0/0 = 0 +7:0/0/terrain_set = 0 +7:0/0/terrain = 0 +7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +7:0/0/physics_layer_0/angular_velocity = 0.0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, -16, -12, -12.5, -12.5, -12, -16, 16, -16, 16, 12, 12.5, 12.5, 12, 16, -12, 16, -12.5, 12.5) +7:0/0/terrains_peering_bit/right_side = 0 +7:0/0/terrains_peering_bit/bottom_side = 0 +7:0/0/terrains_peering_bit/left_side = 0 +7:0/0/terrains_peering_bit/top_side = 0 +7:0/0/terrains_peering_bit/top_right_corner = 0 +8:0/0 = 0 +8:0/0/terrain_set = 0 +8:0/0/terrain = 0 +8:0/0/probability = 2.0 +8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +8:0/0/physics_layer_0/angular_velocity = 0.0 +8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, -12, 16, -12, -8, -8, -12, 16, -12) +8:0/0/terrains_peering_bit/right_side = 0 +8:0/0/terrains_peering_bit/bottom_right_corner = 0 +8:0/0/terrains_peering_bit/bottom_side = 0 +9:0/0 = 0 +9:0/0/terrain_set = 0 +9:0/0/terrain = 0 +9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +9:0/0/physics_layer_0/angular_velocity = 0.0 +9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, -12.5, 16, -12, 16, 16, -16, 16, -16, -12, -12.5, -12.5, -12, -16, 12, -16) +9:0/0/terrains_peering_bit/right_side = 0 +9:0/0/terrains_peering_bit/bottom_right_corner = 0 +9:0/0/terrains_peering_bit/bottom_side = 0 +9:0/0/terrains_peering_bit/bottom_left_corner = 0 +9:0/0/terrains_peering_bit/left_side = 0 +9:0/0/terrains_peering_bit/top_side = 0 +10:0/0 = 0 +10:0/0/terrain_set = 0 +10:0/0/terrain = 0 +10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +10:0/0/physics_layer_0/angular_velocity = 0.0 +10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, 16, 16, -16, 16, -16, -12) +10:0/0/terrains_peering_bit/right_side = 0 +10:0/0/terrains_peering_bit/bottom_right_corner = 0 +10:0/0/terrains_peering_bit/bottom_side = 0 +10:0/0/terrains_peering_bit/bottom_left_corner = 0 +10:0/0/terrains_peering_bit/left_side = 0 +11:0/0 = 0 +11:0/0/terrain_set = 0 +11:0/0/terrain = 0 +11:0/0/probability = 2.0 +11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +11:0/0/physics_layer_0/angular_velocity = 0.0 +11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 8, -12, 12, -8, 12, 16) +11:0/0/terrains_peering_bit/bottom_side = 0 +11:0/0/terrains_peering_bit/bottom_left_corner = 0 +11:0/0/terrains_peering_bit/left_side = 0 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:1/0/physics_layer_0/angular_velocity = 0.0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12, -16, 12, -16, 12, 16, -12, 16) +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +1:1/0/physics_layer_0/angular_velocity = 0.0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(12, 16, -12, 16, -12, -16, 12, -16, 12.5, -12.5, 16, -12, 16, 12, 12.5, 12.5) +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/top_side = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +2:1/0/physics_layer_0/angular_velocity = 0.0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, -16, -12, -12.5, -12.5, -12, -16, 12, -16, 12.5, -12.5, 16, -12, 16, 12, 12.5, 12.5, 12, 16, -12, 16, -12.5, 12.5) +2:1/0/terrains_peering_bit/right_side = 0 +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_side = 0 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 0 +3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +3:1/0/physics_layer_0/angular_velocity = 0.0 +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12, -16, 12, -16, 12, 16, -12, 16, -12.5, 12.5, -16, 12, -16, -12, -12.5, -12.5) +3:1/0/terrains_peering_bit/bottom_side = 0 +3:1/0/terrains_peering_bit/left_side = 0 +3:1/0/terrains_peering_bit/top_side = 0 +4:1/0 = 0 +4:1/0/terrain_set = 0 +4:1/0/terrain = 0 +4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +4:1/0/physics_layer_0/angular_velocity = 0.0 +4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, -12.5, 12, -16, -12, -16, -12, 16, 16, 16, 16, -12) +4:1/0/terrains_peering_bit/right_side = 0 +4:1/0/terrains_peering_bit/bottom_right_corner = 0 +4:1/0/terrains_peering_bit/bottom_side = 0 +4:1/0/terrains_peering_bit/top_side = 0 +5:1/0 = 0 +5:1/0/terrain_set = 0 +5:1/0/terrain = 0 +5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +5:1/0/physics_layer_0/angular_velocity = 0.0 +5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, -12.5, -12, -16, 16, -16, 16, 16, -16, 16, -16, -12) +5:1/0/terrains_peering_bit/right_side = 0 +5:1/0/terrains_peering_bit/bottom_right_corner = 0 +5:1/0/terrains_peering_bit/bottom_side = 0 +5:1/0/terrains_peering_bit/bottom_left_corner = 0 +5:1/0/terrains_peering_bit/left_side = 0 +5:1/0/terrains_peering_bit/top_side = 0 +5:1/0/terrains_peering_bit/top_right_corner = 0 +6:1/0 = 0 +6:1/0/terrain_set = 0 +6:1/0/terrain = 0 +6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +6:1/0/physics_layer_0/angular_velocity = 0.0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, -12.5, 16, -12, 16, 16, -16, 16, -16, -16, 12, -16) +6:1/0/terrains_peering_bit/right_side = 0 +6:1/0/terrains_peering_bit/bottom_right_corner = 0 +6:1/0/terrains_peering_bit/bottom_side = 0 +6:1/0/terrains_peering_bit/bottom_left_corner = 0 +6:1/0/terrains_peering_bit/left_side = 0 +6:1/0/terrains_peering_bit/top_left_corner = 0 +6:1/0/terrains_peering_bit/top_side = 0 +7:1/0 = 0 +7:1/0/terrain_set = 0 +7:1/0/terrain = 0 +7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +7:1/0/physics_layer_0/angular_velocity = 0.0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, -12.5, -12, -16, 12, -16, 12, 16, -16, 16, -16, -12) +7:1/0/terrains_peering_bit/bottom_side = 0 +7:1/0/terrains_peering_bit/bottom_left_corner = 0 +7:1/0/terrains_peering_bit/left_side = 0 +7:1/0/terrains_peering_bit/top_side = 0 +8:1/0 = 0 +8:1/0/terrain_set = 0 +8:1/0/terrain = 0 +8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +8:1/0/physics_layer_0/angular_velocity = 0.0 +8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12, -16, 16, -16, 16, 16, -12, 16) +8:1/0/terrains_peering_bit/right_side = 0 +8:1/0/terrains_peering_bit/bottom_right_corner = 0 +8:1/0/terrains_peering_bit/bottom_side = 0 +8:1/0/terrains_peering_bit/top_side = 0 +8:1/0/terrains_peering_bit/top_right_corner = 0 +9:1/0 = 0 +9:1/0/terrain_set = 0 +9:1/0/terrain = 0 +9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +9:1/0/physics_layer_0/angular_velocity = 0.0 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, 12.5, 12.5, 12, 16, -16, 16, -16, -12, -12.5, -12.5, -12, -16) +9:1/0/terrains_peering_bit/right_side = 0 +9:1/0/terrains_peering_bit/bottom_side = 0 +9:1/0/terrains_peering_bit/bottom_left_corner = 0 +9:1/0/terrains_peering_bit/left_side = 0 +9:1/0/terrains_peering_bit/top_side = 0 +9:1/0/terrains_peering_bit/top_right_corner = 0 +11:1/0 = 0 +11:1/0/terrain_set = 0 +11:1/0/terrain = 0 +11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) +11:1/0/physics_layer_0/angular_velocity = 0.0 +11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, 12.5, 12, 16, -16, 16, -16, -16, 12, -16, 12.5, -12.5, 16, -12, 16, 12) +11:1/0/terrains_peering_bit/right_side = 0 +11:1/0/terrains_peering_bit/bottom_side = 0 +11:1/0/terrains_peering_bit/bottom_left_corner = 0 +11:1/0/terrains_peering_bit/left_side = 0 +11:1/0/terrains_peering_bit/top_left_corner = 0 +11:1/0/terrains_peering_bit/top_side = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/probability = 2.0 +0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:2/0/physics_layer_0/angular_velocity = 0.0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12, -16, 12, -16, 12, 8, 8.5, 12, -8.5, 12, -12, 8) +0:2/0/terrains_peering_bit/top_side = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +1:2/0/physics_layer_0/angular_velocity = 0.0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, -12.5, 16, -12, 16, 12, -8, 12, -12, 8, -12, -16, 12, -16) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/top_side = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +2:2/0/physics_layer_0/angular_velocity = 0.0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, 16, 12, -16, 12, -16, -12, -12.5, -12.5, -12, -16, 12, -16, 12.5, -12.5) +2:2/0/terrains_peering_bit/right_side = 0 +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_side = 0 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +3:2/0/physics_layer_0/angular_velocity = 0.0 +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, -12.5, -12, -16, 12, -16, 12, 8, 8, 12, -16, 12, -16, -12) +3:2/0/terrains_peering_bit/left_side = 0 +3:2/0/terrains_peering_bit/top_side = 0 +4:2/0 = 0 +4:2/0/terrain_set = 0 +4:2/0/terrain = 0 +4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +4:2/0/physics_layer_0/angular_velocity = 0.0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, 12.5, 12, 16, -12, 16, -12, -16, 16, -16, 16, 12) +4:2/0/terrains_peering_bit/right_side = 0 +4:2/0/terrains_peering_bit/bottom_side = 0 +4:2/0/terrains_peering_bit/top_side = 0 +4:2/0/terrains_peering_bit/top_right_corner = 0 +5:2/0 = 0 +5:2/0/terrain_set = 0 +5:2/0/terrain = 0 +5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +5:2/0/physics_layer_0/angular_velocity = 0.0 +5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, 12.5, -16, 12, -16, -16, 16, -16, 16, 16, -12, 16) +5:2/0/terrains_peering_bit/right_side = 0 +5:2/0/terrains_peering_bit/bottom_right_corner = 0 +5:2/0/terrains_peering_bit/bottom_side = 0 +5:2/0/terrains_peering_bit/left_side = 0 +5:2/0/terrains_peering_bit/top_left_corner = 0 +5:2/0/terrains_peering_bit/top_side = 0 +5:2/0/terrains_peering_bit/top_right_corner = 0 +6:2/0 = 0 +6:2/0/terrain_set = 0 +6:2/0/terrain = 0 +6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +6:2/0/physics_layer_0/angular_velocity = 0.0 +6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, 12.5, 12, 16, -16, 16, -16, -16, 16, -16, 16, 12) +6:2/0/terrains_peering_bit/right_side = 0 +6:2/0/terrains_peering_bit/bottom_side = 0 +6:2/0/terrains_peering_bit/bottom_left_corner = 0 +6:2/0/terrains_peering_bit/left_side = 0 +6:2/0/terrains_peering_bit/top_left_corner = 0 +6:2/0/terrains_peering_bit/top_side = 0 +6:2/0/terrains_peering_bit/top_right_corner = 0 +7:2/0 = 0 +7:2/0/terrain_set = 0 +7:2/0/terrain = 0 +7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +7:2/0/physics_layer_0/angular_velocity = 0.0 +7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, 12.5, -12, 16, 12, 16, 12, -16, -16, -16, -16, 12) +7:2/0/terrains_peering_bit/bottom_side = 0 +7:2/0/terrains_peering_bit/left_side = 0 +7:2/0/terrains_peering_bit/top_left_corner = 0 +7:2/0/terrains_peering_bit/top_side = 0 +8:2/0 = 0 +8:2/0/terrain_set = 0 +8:2/0/terrain = 0 +8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +8:2/0/physics_layer_0/angular_velocity = 0.0 +8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, -12.5, -12, -16, 16, -16, 16, 16, -12, 16, -12.5, 12.5, -16, 12, -16, -12) +8:2/0/terrains_peering_bit/right_side = 0 +8:2/0/terrains_peering_bit/bottom_right_corner = 0 +8:2/0/terrains_peering_bit/bottom_side = 0 +8:2/0/terrains_peering_bit/left_side = 0 +8:2/0/terrains_peering_bit/top_side = 0 +8:2/0/terrains_peering_bit/top_right_corner = 0 +9:2/0 = 0 +9:2/0/terrain_set = 0 +9:2/0/terrain = 0 +9:2/0/probability = 2.0 +9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +9:2/0/physics_layer_0/angular_velocity = 0.0 +9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:2/0/terrains_peering_bit/right_side = 0 +9:2/0/terrains_peering_bit/bottom_right_corner = 0 +9:2/0/terrains_peering_bit/bottom_side = 0 +9:2/0/terrains_peering_bit/bottom_left_corner = 0 +9:2/0/terrains_peering_bit/left_side = 0 +9:2/0/terrains_peering_bit/top_left_corner = 0 +9:2/0/terrains_peering_bit/top_side = 0 +9:2/0/terrains_peering_bit/top_right_corner = 0 +10:2/0 = 0 +10:2/0/terrain_set = 0 +10:2/0/terrain = 0 +10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +10:2/0/physics_layer_0/angular_velocity = 0.0 +10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 12, -16, 12.5, -12.5, 16, -12, 16, 16, -12, 16, -12.5, 12.5, -16, 12) +10:2/0/terrains_peering_bit/right_side = 0 +10:2/0/terrains_peering_bit/bottom_right_corner = 0 +10:2/0/terrains_peering_bit/bottom_side = 0 +10:2/0/terrains_peering_bit/left_side = 0 +10:2/0/terrains_peering_bit/top_left_corner = 0 +10:2/0/terrains_peering_bit/top_side = 0 +11:2/0 = 0 +11:2/0/terrain_set = 0 +11:2/0/terrain = 0 +11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) +11:2/0/physics_layer_0/angular_velocity = 0.0 +11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(12, 16, -16, 16, -16, -16, 12, -16) +11:2/0/terrains_peering_bit/bottom_side = 0 +11:2/0/terrains_peering_bit/bottom_left_corner = 0 +11:2/0/terrains_peering_bit/left_side = 0 +11:2/0/terrains_peering_bit/top_left_corner = 0 +11:2/0/terrains_peering_bit/top_side = 0 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 0 +0:3/0/probability = 2.0 +0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:3/0/physics_layer_0/angular_velocity = 0.0 +0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 12, -12, 8, -12, -8, -8, -12, 8, -12, 12, -8.5, 12, 8.5, 8, 12) +1:3/0 = 0 +1:3/0/terrain_set = 0 +1:3/0/terrain = 0 +1:3/0/probability = 2.0 +1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +1:3/0/physics_layer_0/angular_velocity = 0.0 +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, 16, 12, -8, 12, -12, 8.5, -12, -8.5, -8, -12) +1:3/0/terrains_peering_bit/right_side = 0 +2:3/0 = 0 +2:3/0/terrain_set = 0 +2:3/0/terrain = 0 +2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +2:3/0/physics_layer_0/angular_velocity = 0.0 +2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, 16, 12, -16, 12, -16, -12) +2:3/0/terrains_peering_bit/right_side = 0 +2:3/0/terrains_peering_bit/left_side = 0 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 0 +3:3/0/probability = 2.0 +3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +3:3/0/physics_layer_0/angular_velocity = 0.0 +3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, -16, -12, 8, -12, 12, -8.5, 12, 8.5, 8, 12) +3:3/0/terrains_peering_bit/left_side = 0 +4:3/0 = 0 +4:3/0/terrain_set = 0 +4:3/0/terrain = 0 +4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +4:3/0/physics_layer_0/angular_velocity = 0.0 +4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, 16, 12, 12.5, 12.5, 12, 16, -16, 16, -16, -12, -12.5, -12.5, -12, -16, 12, -16, 12.5, -12.5) +4:3/0/terrains_peering_bit/right_side = 0 +4:3/0/terrains_peering_bit/bottom_side = 0 +4:3/0/terrains_peering_bit/bottom_left_corner = 0 +4:3/0/terrains_peering_bit/left_side = 0 +4:3/0/terrains_peering_bit/top_side = 0 +5:3/0 = 0 +5:3/0/terrain_set = 0 +5:3/0/terrain = 0 +5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +5:3/0/physics_layer_0/angular_velocity = 0.0 +5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, -12.5, -16, -12, -16, 12, 16, 12, 16, -16, -12, -16) +5:3/0/terrains_peering_bit/right_side = 0 +5:3/0/terrains_peering_bit/left_side = 0 +5:3/0/terrains_peering_bit/top_side = 0 +5:3/0/terrains_peering_bit/top_right_corner = 0 +6:3/0 = 0 +6:3/0/terrain_set = 0 +6:3/0/terrain = 0 +6:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +6:3/0/physics_layer_0/angular_velocity = 0.0 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(12.5, -12.5, 16, -12, 16, 12, -16, 12, -16, -16, 12, -16) +6:3/0/terrains_peering_bit/right_side = 0 +6:3/0/terrains_peering_bit/left_side = 0 +6:3/0/terrains_peering_bit/top_left_corner = 0 +6:3/0/terrains_peering_bit/top_side = 0 +7:3/0 = 0 +7:3/0/terrain_set = 0 +7:3/0/terrain = 0 +7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +7:3/0/physics_layer_0/angular_velocity = 0.0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12, -16, 12, -16, 12.5, -12.5, 16, -12, 16, 16, -12, 16, -12.5, 12.5, -16, 12, -16, -12, -12.5, -12.5) +7:3/0/terrains_peering_bit/right_side = 0 +7:3/0/terrains_peering_bit/bottom_right_corner = 0 +7:3/0/terrains_peering_bit/bottom_side = 0 +7:3/0/terrains_peering_bit/left_side = 0 +7:3/0/terrains_peering_bit/top_side = 0 +8:3/0 = 0 +8:3/0/terrain_set = 0 +8:3/0/terrain = 0 +8:3/0/probability = 2.0 +8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +8:3/0/physics_layer_0/angular_velocity = 0.0 +8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -8, 12, -12, 8, -12, -16) +8:3/0/terrains_peering_bit/right_side = 0 +8:3/0/terrains_peering_bit/top_side = 0 +8:3/0/terrains_peering_bit/top_right_corner = 0 +9:3/0 = 0 +9:3/0/terrain_set = 0 +9:3/0/terrain = 0 +9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +9:3/0/physics_layer_0/angular_velocity = 0.0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, -16, -16, 16, -16, 16, 12) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/left_side = 0 +9:3/0/terrains_peering_bit/top_left_corner = 0 +9:3/0/terrains_peering_bit/top_side = 0 +9:3/0/terrains_peering_bit/top_right_corner = 0 +10:3/0 = 0 +10:3/0/terrain_set = 0 +10:3/0/terrain = 0 +10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +10:3/0/physics_layer_0/angular_velocity = 0.0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-12.5, 12.5, -16, 12, -16, -16, 16, -16, 16, 12, 12.5, 12.5, 12, 16, -12, 16) +10:3/0/terrains_peering_bit/right_side = 0 +10:3/0/terrains_peering_bit/bottom_side = 0 +10:3/0/terrains_peering_bit/left_side = 0 +10:3/0/terrains_peering_bit/top_left_corner = 0 +10:3/0/terrains_peering_bit/top_side = 0 +10:3/0/terrains_peering_bit/top_right_corner = 0 +11:3/0 = 0 +11:3/0/terrain_set = 0 +11:3/0/terrain = 0 +11:3/0/probability = 2.0 +11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0) +11:3/0/physics_layer_0/angular_velocity = 0.0 +11:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 12, -16, 12, 8, 8, 12, -16, 12) +11:3/0/terrains_peering_bit/left_side = 0 +11:3/0/terrains_peering_bit/top_left_corner = 0 +11:3/0/terrains_peering_bit/top_side = 0 + +[resource] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +physics_layer_0/collision_mask = 0 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "Walls" +terrain_set_0/terrain_0/color = Color(1, 0.301961, 0.329412, 1) +sources/1 = SubResource("TileSetAtlasSource_mgef5") diff --git a/Prefabs/bunny.tscn b/Prefabs/bunny.tscn new file mode 100644 index 0000000..38a08f2 --- /dev/null +++ b/Prefabs/bunny.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=3 uid="uid://cpl4tllohhyel"] + +[ext_resource type="Script" path="res://Scripts/EntitySystem/Bunny.gd" id="1_1kj2b"] +[ext_resource type="Texture2D" uid="uid://df2fluk0dlqar" path="res://Assets/Sprites/Bunny/bad_bunny_spritesheet.png" id="2_v8p70"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_sedmr"] + +[node name="Bunny" type="CharacterBody2D"] +scale = Vector2(0.5, 0.5) +collision_layer = 4 +collision_mask = 11 +script = ExtResource("1_1kj2b") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_v8p70") +hframes = 5 +vframes = 4 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_sedmr") diff --git a/Prefabs/projectile.tscn b/Prefabs/projectile.tscn new file mode 100644 index 0000000..ad78eed --- /dev/null +++ b/Prefabs/projectile.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=3 uid="uid://csxh42o8twxwn"] + +[ext_resource type="Script" path="res://Scripts/WeaponSystem/Projectile.gd" id="1_os652"] +[ext_resource type="Texture2D" uid="uid://c5jj6s5orw6mi" path="res://Assets/Sprites/crucefix.png" id="2_ibs3t"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ki5cp"] +radius = 8.57143 +height = 22.8571 + +[node name="Projectile" type="Area2D"] +scale = Vector2(0.5, 0.5) +collision_layer = 8 +collision_mask = 5 +script = ExtResource("1_os652") +map_collision_layer = 1 +bunny_collision_layer = 4 + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_ibs3t") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CapsuleShape2D_ki5cp") + +[connection signal="body_entered" from="." to="." method="_on_collision"] diff --git a/Scenes/Test.tscn b/Scenes/Test.tscn deleted file mode 100644 index 2febfb7..0000000 --- a/Scenes/Test.tscn +++ /dev/null @@ -1,10 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://da014wltujtna"] - -[ext_resource type="Texture2D" uid="uid://dynqs8dq175ty" path="res://Assets/Sprites/bunny_left.png" id="1_m0oli"] - -[node name="Node2D" type="Node2D"] - -[node name="BunnyLeft" type="Sprite2D" parent="."] -position = Vector2(582, 355) -scale = Vector2(6.25553, 5.92647) -texture = ExtResource("1_m0oli") diff --git a/Scenes/WeaponSystem.tscn b/Scenes/WeaponSystem.tscn new file mode 100644 index 0000000..34ead69 --- /dev/null +++ b/Scenes/WeaponSystem.tscn @@ -0,0 +1,165 @@ +[gd_scene load_steps=16 format=3 uid="uid://cd45icxf4gxpp"] + +[ext_resource type="TileSet" uid="uid://bj7uu2180mie3" path="res://Assets/Tileset.tres" id="1_m1wkd"] +[ext_resource type="Script" path="res://Scripts/MapGenerator.gd" id="2_emsq7"] +[ext_resource type="Script" path="res://Scripts/EntitySystem/BunnyGenerator.gd" id="3_6eopc"] +[ext_resource type="Script" path="res://Scripts/PlayerController.gd" id="3_i7s0m"] +[ext_resource type="PackedScene" uid="uid://cpl4tllohhyel" path="res://Prefabs/bunny.tscn" id="4_vn6q1"] +[ext_resource type="Script" path="res://Scripts/WeaponSystem/WeaponController.gd" id="6_fdum6"] +[ext_resource type="Texture2D" uid="uid://db70wcy5ua3jd" path="res://Assets/Sprites/Jesus/jesus_spritesheet.png" id="6_xyyh7"] +[ext_resource type="PackedScene" uid="uid://csxh42o8twxwn" path="res://Prefabs/projectile.tscn" id="7_5vpb2"] + +[sub_resource type="Animation" id="Animation_kdxam"] +resource_name = "Idle" +length = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Player Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_dwpep"] +resource_name = "MoveDown" +length = 0.8 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Player Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = false +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7] +} + +[sub_resource type="Animation" id="Animation_2jvl5"] +resource_name = "MoveLeft" +length = 0.8 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Player Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [24, 25, 26, 27, 28, 29, 30, 31] +} + +[sub_resource type="Animation" id="Animation_4ig1u"] +resource_name = "MoveRight" +length = 0.8 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Player Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [8, 9, 10, 11, 12, 13, 14, 15] +} + +[sub_resource type="Animation" id="Animation_pswkh"] +resource_name = "MoveUp" +length = 0.8 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Player Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [16, 17, 18, 19, 20, 21, 22, 23] +} + +[sub_resource type="Animation" id="Animation_o3hln"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Player Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_bi1h3"] +_data = { +"Idle": SubResource("Animation_kdxam"), +"MoveDown": SubResource("Animation_dwpep"), +"MoveLeft": SubResource("Animation_2jvl5"), +"MoveRight": SubResource("Animation_4ig1u"), +"MoveUp": SubResource("Animation_pswkh"), +"RESET": SubResource("Animation_o3hln") +} + +[node name="Player Movement" type="Node2D"] + +[node name="Map Generator" type="TileMap" parent="."] +tile_set = ExtResource("1_m1wkd") +cell_quadrant_size = 32 +format = 2 +script = ExtResource("2_emsq7") +start_area_corner_size = 3 + +[node name="Bunny Generator" type="Node" parent="."] +script = ExtResource("3_6eopc") +bunny_prefab = ExtResource("4_vn6q1") + +[node name="Player" type="CharacterBody2D" parent="." node_paths=PackedStringArray("animation_player")] +position = Vector2(960, 512) +collision_layer = 0 +script = ExtResource("3_i7s0m") +speed = 60 +animation_player = NodePath("Player Animator") + +[node name="Player Sprite" type="Sprite2D" parent="Player"] +position = Vector2(0, -20) +texture = ExtResource("6_xyyh7") +hframes = 8 +vframes = 4 + +[node name="Player Collider" type="CollisionPolygon2D" parent="Player"] +polygon = PackedVector2Array(12, 32, -16, 32, -16, -24, 12, -24) + +[node name="Player Camera" type="Camera2D" parent="Player"] +zoom = Vector2(5, 5) +position_smoothing_enabled = true +drag_horizontal_enabled = true +drag_vertical_enabled = true +editor_draw_drag_margin = true + +[node name="Player Animator" type="AnimationPlayer" parent="Player"] +libraries = { +"": SubResource("AnimationLibrary_bi1h3") +} + +[node name="WeaponController" type="Node2D" parent="Player"] +position = Vector2(0, -16) +script = ExtResource("6_fdum6") +projectile_prefab = ExtResource("7_5vpb2") diff --git a/Scripts/EntitySystem/Bunny.gd b/Scripts/EntitySystem/Bunny.gd new file mode 100644 index 0000000..f5a3040 --- /dev/null +++ b/Scripts/EntitySystem/Bunny.gd @@ -0,0 +1,26 @@ +extends CharacterBody2D +class_name Bunny + +@export var health : int + +var team : int + +var on_death_callbacks : Array + +func damage(damage : int): + health -= damage + if(health <= 0): on_death() + pass + +func heal(health : int): + self.health += health + pass + +func on_death(): + for callback in on_death_callbacks: + callback.call(self) + pass + +func sub_on_death(callback : Callable): + on_death_callbacks.push_front(callback) + pass diff --git a/Scripts/EntitySystem/BunnyGenerator.gd b/Scripts/EntitySystem/BunnyGenerator.gd new file mode 100644 index 0000000..71bcc9f --- /dev/null +++ b/Scripts/EntitySystem/BunnyGenerator.gd @@ -0,0 +1,17 @@ +extends Node + +@export var bunny_prefab : Resource +@onready var BunnyPrefab : PackedScene = load(bunny_prefab.resource_path) + +func spawn_bunny(x : float, y : float, team : int, health : int) -> Bunny: + var bunny = BunnyPrefab.instantiate() + self.add_child(bunny) + bunny.global_position = Vector2(x,y) + bunny.health = health + bunny.team = team + return bunny + +func _ready(): + var bunny = spawn_bunny(960, 512, TEAM.EVIL, 3) + bunny.sub_on_death(func(bunny): bunny.queue_free()) + diff --git a/Scripts/EntitySystem/TEAM.gd b/Scripts/EntitySystem/TEAM.gd new file mode 100644 index 0000000..ff383b8 --- /dev/null +++ b/Scripts/EntitySystem/TEAM.gd @@ -0,0 +1,5 @@ +class_name TEAM +enum { + EVIL = 0, + GOOD = 1 +} diff --git a/Scripts/MapGenerator.gd b/Scripts/MapGenerator.gd new file mode 100644 index 0000000..d93c357 --- /dev/null +++ b/Scripts/MapGenerator.gd @@ -0,0 +1,269 @@ +extends TileMap + +@export var width := 60 +@export var height := 32 +@export var fill_percentage := 0.65 + +@export var solid_threshold := 7 +@export var nonsolid_threshold := 4 + +@export var start_area_size := 5 +@export var start_area_corner_size := 2 + +@export var cave_gen_iterations := 3 +@export var cave_mine_size_threshold := 80 + +var tile_array : Array + +func _ready(): + var time = generate() + print("time for generation: " + str(time)) + + pass + + +func generate() -> float: + var start_time = Time.get_unix_time_from_system() + + randomize() + setup_tile_data_array() + fill_random_noise() + + for i in cave_gen_iterations: + change_cells_by_neighbor_thresholds() + set_borders_solid() + prepare_player_start_area() + connect_caves(get_caves()) + for i in cave_gen_iterations: + change_cells_by_neighbor_thresholds() + set_borders_solid() + + tile_array_to_terrain() + return Time.get_unix_time_from_system() - start_time + +func setup_tile_data_array(): + tile_array.clear() + tile_array = [] + for x in width: + tile_array.append([]) + for y in height: + tile_array[x].append([]) + +func fill_random_noise(): + for x in width: + for y in height: + if randf() < fill_percentage: + set_tile_solid(x,y) + else: + set_tile_non_solid(x,y) + pass + +func set_borders_solid(): + for x in width: + set_tile_solid(x,0) + set_tile_solid(x,height-1) + for y in height: + set_tile_solid(0,y) + set_tile_solid(width-1,y) + pass + +func prepare_player_start_area(): + var center = Vector2i(width/2, height/2) + for x in range(center.x - start_area_size, center.x + start_area_size): + + # Getting a P factor for the corner "radius" Decission + var p := 0 + if x <= center.x - start_area_size + start_area_corner_size: + p = center.x - start_area_size + start_area_corner_size - x + if x >= center.x + start_area_size - start_area_corner_size: + p = x - ( center.x + start_area_size) + start_area_corner_size + 1 + var p2 = p + + for y in range(center.y - start_area_size, center.y + start_area_size): + # Decide if the tile is part of the Corner or not + if !(p2 > 0 or p2 <= - (start_area_size*2 - p*2)): + set_tile_non_solid(x,y) + p2 -= 1 + pass + +func change_cells_by_neighbor_thresholds(): + for x in range(1, width-1): + for y in range(1, height-1): + # Count Solid Neighbor Cells + var count := 0 + #y-1 + if get_tile_solid(x-1, y-1): count +=1 + if get_tile_solid(x, y-1): count +=1 + if get_tile_solid(x+1, y-1): count +=1 + #y + if get_tile_solid(x-1, y): count +=1 + if get_tile_solid(x+1, y): count +=1 + #y+1 + if get_tile_solid(x-1, y+1): count +=1 + if get_tile_solid(x, y+1): count +=1 + if get_tile_solid(x+1, y+1): count +=1 + + # Check Threshold + if count < nonsolid_threshold: + set_tile_non_solid(x,y) + if count >= solid_threshold: + set_tile_solid(x,y) + pass + +func get_caves() -> Array: + # get caves + var caves := [] + + for x in range (2, width-2): + for y in range (2, height-2): + if get_tile_non_solid(x, y): + flood_fill(x,y, caves) + + for cave in caves: + for tile in cave: + set_tile_non_solid(tile.x,tile.y) + return caves + +func flood_fill(tilex, tiley, caves) -> Array: + var cave := [] + var to_fill := [Vector2i(tilex, tiley)] + while to_fill: + var tile = to_fill.pop_back() + + if !cave.has(tile): + cave.append(tile) + set_tile_solid(tile.x,tile.y) + + #check adjacent cells + var north = Vector2i(tile.x, tile.y+1) + var south = Vector2i(tile.x, tile.y-1) + var east = Vector2i(tile.x+1, tile.y) + var west = Vector2i(tile.x-1, tile.y) + + for dir in [north,south,east,west]: + if get_tile_non_solid(dir.x, dir.y): + if !to_fill.has(dir) and !cave.has(dir): + to_fill.append(dir) + if cave.size() >= cave_mine_size_threshold: + caves.append(cave) + return caves + +func choose_rand(choices): + randomize() + + var rand_index = randi() % choices.size() + return choices[rand_index] + +func connect_caves(caves): + var prev_cave = null + var tunnel_caves = caves.duplicate() + + for cave in tunnel_caves: + if prev_cave: + var new_point = choose_rand(cave) + var prev_point = choose_rand(prev_cave) + + # ensure not the same point + if new_point != prev_point: + create_tunnel(new_point, prev_point, cave) + + prev_cave = cave + pass + +func create_tunnel(point1, point2, cave): + randomize() # for randf + var max_steps = 500 # so game won't hang if walk fails + var steps = 0 + var drunk_x = point2[0] + var drunk_y = point2[1] + + while steps < max_steps and !cave.has(Vector2i(drunk_x, drunk_y)): + steps += 1 + + # set initial dir weights + var n = 1.0 + var s = 1.0 + var e = 1.0 + var w = 1.0 + var weight = 1 + + # weight the random walk against edges + if drunk_x < point1.x: + e += weight + elif drunk_x > point1.x: + w += weight + if drunk_y < point1.y: + s += weight + elif drunk_y > point1.y: + n += weight + + # normalize probabilities so they form a range from 0 to 1 + var total = n + s + e + w + n /= total + s /= total + e /= total + w /= total + + var dx + var dy + + # choose_rand the direction + var choice = randf() + + if 0 <= choice and choice < n: + dx = 0 + dy = -1 + elif n <= choice and choice < (n+s): + dx = 0 + dy = 1 + elif (n+s) <= choice and choice < (n+s+e): + dx = 1 + dy = 0 + else: + dx = -1 + dy = 0 + + # ensure not to walk past edge of map + if (2 < drunk_x + dx and drunk_x + dx < width-2) and \ + (2 < drunk_y + dy and drunk_y + dy < height-2): + drunk_x += dx + drunk_y += dy + + if get_tile_solid(drunk_x, drunk_y): + set_tile_non_solid(drunk_x, drunk_y) + #make tunnel wider + set_tile_non_solid(drunk_x+1, drunk_y) + set_tile_non_solid(drunk_x+1, drunk_y+1) + pass + +func tile_array_to_terrain(): + for x in width: + for y in height: + match tile_array[x][y]: + 0: set_terrain_tile_non_solid(x,y) + 1: set_terrain_tile_solid(x,y) + pass + +# Getter +func get_tile_solid(x : int, y : int) -> bool: + return tile_array[x][y] == 1 + +func get_tile_non_solid(x : int, y : int) -> bool: + return tile_array[x][y] == 0 + +# Setter +func set_tile_solid(x : int, y : int): + tile_array[x][y] = 1 + pass + +func set_tile_non_solid(x : int, y : int): + tile_array[x][y] = 0 + pass + +func set_terrain_tile_solid(x : int, y : int): + self.set_cells_terrain_connect(0, [Vector2i(x,y)], 0, 0, false) + pass + +func set_terrain_tile_non_solid(x : int, y : int): + self.set_cell(0, Vector2i(x,y), -1) + pass diff --git a/Scripts/PlayerController.gd b/Scripts/PlayerController.gd new file mode 100644 index 0000000..584f977 --- /dev/null +++ b/Scripts/PlayerController.gd @@ -0,0 +1,43 @@ +extends CharacterBody2D + +@export var speed = 20 +@export_range(0, 1) var damping_factor = 0.6 +@export var animation_player : AnimationPlayer + +func _physics_process(delta : float): + update_player_movement(delta) + pass + +func get_move_input_vector() -> Vector2: + var input_direction = Input.get_vector("move_left", "move_right", "move_up", "move_down").normalized() + return input_direction + +func update_player_movement(delta : float): + var input = get_move_input_vector() + + # Damp Movement if not moving, Accelerate if Moving + var is_moving = input != Vector2.ZERO + self.velocity = input * speed * delta * 60 if is_moving else self.velocity * (1 - min(1, damping_factor * 60 * delta)) + + update_player_animation() + + # Update Objects Physics calculations + self.move_and_slide() + pass + +func update_player_animation(): + var move_vector = get_move_input_vector() + match move_vector: + Vector2.ZERO: animation_player.play("Idle") + Vector2.LEFT: animation_player.play("MoveLeft") + Vector2.RIGHT: animation_player.play("MoveRight") + Vector2.UP: animation_player.play("MoveUp") + Vector2.DOWN: animation_player.play("MoveDown") + _: handle_diagonal_animations(move_vector) + pass + +func handle_diagonal_animations(dir : Vector2): + if (dir.y > 0 and dir.x < 0) or (dir.y < 0 and dir.x < 0): animation_player.play("MoveLeft") + elif (dir.y > 0 and dir.x > 0) or (dir.y < 0 and dir.x > 0): animation_player.play("MoveRight") + else: animation_player.play("Idle") + pass diff --git a/Scripts/WeaponSystem/Projectile.gd b/Scripts/WeaponSystem/Projectile.gd new file mode 100644 index 0000000..96a7755 --- /dev/null +++ b/Scripts/WeaponSystem/Projectile.gd @@ -0,0 +1,27 @@ +extends Area2D + +@export var speed : float = 250.0 +@export var damage : int = 1 + +@export_flags_2d_physics var map_collision_layer : int +@export_flags_2d_physics var bunny_collision_layer : int + +func _process(delta): + self.translate(Vector2(cos(self.rotation), sin(self.rotation)) * speed * delta) + pass + +func _on_collision(body): + var collision_layer = null; + + if body.get_class() == "TileMap": + collision_layer = body.tile_set.get_physics_layer_collision_layer(0) + if(body.has_method("get_collision_layer")): + collision_layer = body.get_collision_layer() + + if collision_layer & map_collision_layer: + queue_free() + if collision_layer & bunny_collision_layer: + var bunny = body as Bunny + bunny.damage(damage) + queue_free() + pass diff --git a/Scripts/WeaponSystem/WeaponController.gd b/Scripts/WeaponSystem/WeaponController.gd new file mode 100644 index 0000000..f3b93ec --- /dev/null +++ b/Scripts/WeaponSystem/WeaponController.gd @@ -0,0 +1,22 @@ +extends Node2D + +@export var projectile_prefab : Resource +@onready var projectilePrefab : PackedScene = load(projectile_prefab.resource_path) + +func _process(delta): + rotate_to_pointer() + + if Input.is_action_just_pressed("attack"): + spawn_projectile(self.global_position, self.rotation, 100, 1) + pass + +func rotate_to_pointer(): + look_at(get_global_mouse_position()) + #TODO Implement Joystick Aiming + +func spawn_projectile(pos : Vector2, dir : float, speed: float, damage : int): + var projectile = projectilePrefab.instantiate() + projectile.global_position = pos + projectile.rotation = dir + get_tree().root.add_child(projectile) + pass diff --git a/project.godot b/project.godot index 7d4e427..d8c92a8 100644 --- a/project.godot +++ b/project.godot @@ -11,12 +11,61 @@ config_version=5 [application] config/name="HoppyEaster" -run/main_scene="res://Scenes/Test.tscn" +run/main_scene="res://Scenes/PlayerMovement.tscn" config/features=PackedStringArray("4.0", "GL Compatibility") config/icon="res://icon.svg" +[dotnet] + +project/assembly_name="HoppyEaster" + +[input] + +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) +] +} +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) +] +} +move_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) +] +} +move_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) +] +} +attack={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(139, 6),"global_position":Vector2(143, 49),"factor":1.0,"button_index":1,"pressed":true,"double_click":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +] +} + +[layer_names] + +2d_physics/layer_1="Map" +2d_physics/layer_2="Player" +2d_physics/layer_3="Bunny" +2d_physics/layer_4="Projectile" +2d_physics/layer_5="Layer 5" + [rendering] +textures/canvas_textures/default_texture_filter=0 renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" -textures/canvas_textures/default_texture_filter=0