Compare commits

..

12 commits

Author SHA1 Message Date
AXVIII3
2f960fc2cc Music bug fixed 2023-04-16 13:23:02 +05:30
91920d15b1 Part one of Setting up Collider (it so tidoius, gonna sleep now) 2023-04-15 06:24:21 +02:00
a1bdddb849 Fixing Imports 2023-04-15 06:10:43 +02:00
c3e43aa5e4 Set Projectile Sounds to SFX audiobus 2023-04-15 06:09:35 +02:00
ea3192a894 Repair Bunny Projectile Collisions 2023-04-15 06:08:49 +02:00
2c0a0673da Update Settings Menu.tscn 2023-04-15 05:59:23 +02:00
d3fd2f0a6a ReAdd Theme.tres because it was accedently removed by merge 2023-04-15 05:59:14 +02:00
04d5d2422c Merge Weapon SF from branch 'dev-sfx'
Conflicts:
	Assets/UI/Theme.tres
2023-04-15 05:51:16 +02:00
2fc9af744d Merge branch 'dev-reset-rebind'
Conflicts:
	Assets/UI/Theme.tres
2023-04-12 21:26:40 +02:00
c0cf72a6d1 Improve Bunny AI Performance Impact 2023-04-12 21:16:14 +02:00
AXVIII3
0905212626 Added reset keybinds to default button 2023-04-12 14:18:21 +05:30
khushmmehta
a26e37d301 Audio And Stuff 2023-04-12 12:56:44 +05:30
44 changed files with 708 additions and 612 deletions

View file

@ -0,0 +1,99 @@
name: "godot-ci export"
on:
push:
branches:
- stable
jobs:
export_game:
runs-on: ubuntu-latest
name: Export Game
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v3.3.0
- name: Install Packages
id: wine_install
run: |
apt update -y && apt upgrade -y
apt install -y wine64 nodejs p7zip-full ca-certificates tree jq curl zip
echo "WINE_PATH=$(which wine64)" >> $GITHUB_OUTPUT
- name: Download Godot build-libs
run: |
mkdir -p /root/.local/share/godot/
wget -nv https://github.com/godotengine/godot/releases/download/4.0.2-stable/Godot_v4.0.2-stable_linux.x86_64.zip -O "/root/.local/share/godot/godot.zip"
wget -nv https://github.com/godotengine/godot/releases/download/4.0.2-stable/Godot_v4.0.2-stable_export_templates.tpz -O /root/.local/share/godot/godot_templates.tpz
- name: Setup Godot build-libs
run: |
7z x /root/.local/share/godot/godot.zip -o/root/.local/share/godot/godot_executable -y
chmod +x /root/.local/share/godot/godot_executable/Godot_v4.0.2-stable_linux.x86_64
unzip /root/.local/share/godot/godot_templates.tpz -d /root/.local/share/godot
mv /root/.local/share/godot/templates /root/.local/share/godot/4.0.2.stable
mkdir -p /root/.local/share/godot/export_templates
mv /root/.local/share/godot/4.0.2.stable /root/.local/share/godot/export_templates
/root/.local/share/godot/godot_executable/Godot_v4.0.2-stable_linux.x86_64 --version
- name: Export for Web
run: |
mkdir -p ./builds/web/
/root/.local/share/godot/godot_executable/Godot_v4.0.2-stable_linux.x86_64 /var/lib/actions/project.godot -q --headless --export-release "Web" ./builds/web/Game.html
- name: Package for Web
run: |
cd builds
tar -czvf web.zip -C web/ .
- name: Export for Linux
run: |
mkdir -p ./builds/linux/
/root/.local/share/godot/godot_executable/Godot_v4.0.2-stable_linux.x86_64 /var/lib/actions/project.godot -q --headless --export-release "Linux/X11" ./builds/linux/Game.x86_64
- name: Package for Linux
run: |
cd builds
tar -czvf linux.tar.gz -C linux/ .
- name: Export for Windows
run: |
mkdir -p ./builds/windows/
/root/.local/share/godot/godot_executable/Godot_v4.0.2-stable_linux.x86_64 /var/lib/actions/project.godot -q --headless --export-release "Windows Desktop" ./builds/windows/Game.exe
- name: Package for Windows
run: |
cd builds
cd windows; zip -r ../windows.zip *
cd ..
- name: Create Release
run: |
echo "Getting last Release Tag"
VERSION=$(curl -X 'GET' 'https://git.euph.dev/api/v1/repos/${{ github.repository }}/releases?page=1&limit=1' -H 'accept: application/json' -H 'Authorization: token ${{ secrets.RELEASE_TOKEN }}' )
echo $VERSION | jq -r '.[0].tag_name'
VERSION=$(echo $VERSION | jq -r '.[0].tag_name' | awk -F. -v OFS=. '{$NF += 1 ; print}')
echo "Generate new Release with tag: $VERSION"
ID=$(curl -X 'POST' \
'https://git.euph.dev/api/v1/repos/${{ github.repository }}/releases' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: token ${{ secrets.RELEASE_TOKEN }}' \
-d "{
\"body\": \"Automated Build\",
\"draft\": true,
\"name\": \"Automated Release $VERSION\",
\"prerelease\": true,
\"tag_name\": \"$VERSION\"
}")
ID=$(echo $ID | jq -r '.id')
echo $ID Upload Web
curl -X 'POST' \
"https://git.euph.dev/api/v1/repos/${{ github.repository }}/releases/$ID/assets?name=Web.zip" \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: token ${{ secrets.RELEASE_TOKEN }}' \
-F 'attachment=@./builds/web.zip;type=application/gzip'
echo $ID Upload Linux
curl -X 'POST' \
"https://git.euph.dev/api/v1/repos/${{ github.repository }}/releases/$ID/assets?name=Linux.tar.gz" \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: token ${{ secrets.RELEASE_TOKEN }}' \
-F 'attachment=@./builds/linux.tar.gz;type=application/gzip'
echo $ID Upload Windows
curl -X 'POST' \
"https://git.euph.dev/api/v1/repos/${{ github.repository }}/releases/$ID/assets?name=Windows.zip" \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: token ${{ secrets.RELEASE_TOKEN }}' \
-F 'attachment=@./builds/windows.zip;type=application/gzip'

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dornq2kwau6bg"
path="res://.godot/imported/Throw Variation 1.wav-cb6e200c1a7508bd3b1eaae71204fc57.sample"
[deps]
source_file="res://Assets/SFX/Jesus/Projectile/Throw Variation 1.wav"
dest_files=["res://.godot/imported/Throw Variation 1.wav-cb6e200c1a7508bd3b1eaae71204fc57.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b2pd7efb2r7g5"
path="res://.godot/imported/Throw Variation 2.wav-29a6debbe12d45d7a1d5ed60acdd2d8f.sample"
[deps]
source_file="res://Assets/SFX/Jesus/Projectile/Throw Variation 2.wav"
dest_files=["res://.godot/imported/Throw Variation 2.wav-29a6debbe12d45d7a1d5ed60acdd2d8f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cqxnclejfbmvb"
path="res://.godot/imported/Throw Variation 3.wav-6149b642d398d05b4c6ebfab8846c3e5.sample"
[deps]
source_file="res://Assets/SFX/Jesus/Projectile/Throw Variation 3.wav"
dest_files=["res://.godot/imported/Throw Variation 3.wav-6149b642d398d05b4c6ebfab8846c3e5.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvji70p68eae8"
path="res://.godot/imported/bunny_righ.png-087dbfde3e26335391f6eb0d1a0f9a4a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/EvilBunny/bunny_righ.png"
dest_files=["res://.godot/imported/bunny_righ.png-087dbfde3e26335391f6eb0d1a0f9a4a.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ep63wy3imw2d"
path="res://.godot/imported/bunny_down.png-ea09ce83bcf9875fa961a56145d1a045.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/GoodBunny/bunny_down.png"
dest_files=["res://.godot/imported/bunny_down.png-ea09ce83bcf9875fa961a56145d1a045.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0x834s5l1qot"
path="res://.godot/imported/bunny_left.png-91e2fa49ed65451bd7003fe4ee0265af.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/GoodBunny/bunny_left.png"
dest_files=["res://.godot/imported/bunny_left.png-91e2fa49ed65451bd7003fe4ee0265af.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c7nmf03fho3m"
path="res://.godot/imported/bunny_righ.png-22915acce3c057f7ae0e80e8a00e8f45.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/GoodBunny/bunny_righ.png"
dest_files=["res://.godot/imported/bunny_righ.png-22915acce3c057f7ae0e80e8a00e8f45.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d2m2jsxx5xpxx"
path="res://.godot/imported/bunny_up.png-d5ed05cbbf36f84feb579ad11c8b8aca.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/GoodBunny/bunny_up.png"
dest_files=["res://.godot/imported/bunny_up.png-d5ed05cbbf36f84feb579ad11c8b8aca.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 597 B

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ct2del6b6jorm"
path="res://.godot/imported/Jesus Back.png-6132a4979edf4d1442fefae322c4ce7c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Jesus/Jesus Back.png"
dest_files=["res://.godot/imported/Jesus Back.png-6132a4979edf4d1442fefae322c4ce7c.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 714 B

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c03lntytfivr1"
path="res://.godot/imported/Jesus Front.png-b78bfa6c3ed674009555f7ab3f93e778.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Jesus/Jesus Front.png"
dest_files=["res://.godot/imported/Jesus Front.png-b78bfa6c3ed674009555f7ab3f93e778.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 665 B

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cn4kqa1p845wl"
path="res://.godot/imported/Jesus Left.png-2949c2879ed5f5e8def57f2eb1498de4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Jesus/Jesus Left.png"
dest_files=["res://.godot/imported/Jesus Left.png-2949c2879ed5f5e8def57f2eb1498de4.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bl7vfn05ul1vu"
path="res://.godot/imported/Jesus Spritesheet.png-821a08dd328b5743c2bc86e42539e57a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Jesus/Jesus Spritesheet.png"
dest_files=["res://.godot/imported/Jesus Spritesheet.png-821a08dd328b5743c2bc86e42539e57a.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cubc3m81pdyvq"
path="res://.godot/imported/Shadow.png-e182ddfbb5e0bd7753fe3ec1e6b362c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Jesus/Shadow.png"
dest_files=["res://.godot/imported/Shadow.png-e182ddfbb5e0bd7753fe3ec1e6b362c7.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

View file

@ -1,12 +1,14 @@
[gd_resource type="TileSet" load_steps=4 format=3 uid="uid://bj7uu2180mie3"] [gd_resource type="TileSet" load_steps=5 format=3 uid="uid://bj7uu2180mie3"]
[ext_resource type="Texture2D" uid="uid://dl2qogjortsbo" path="res://Assets/Sprites/TileMap.png" id="1_cl3se"] [ext_resource type="Texture2D" uid="uid://dl2qogjortsbo" path="res://Assets/Sprites/TileMap.png" id="1_cl3se"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_fhapu"] [sub_resource type="NavigationPolygon" id="NavigationPolygon_l6uwm"]
vertices = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) vertices = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)]) outlines = Array[PackedVector2Array]([PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)])
[sub_resource type="NavigationPolygon" id="NavigationPolygon_dkm5b"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mgef5"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mgef5"]
texture = ExtResource("1_cl3se") texture = ExtResource("1_cl3se")
texture_region_size = Vector2i(32, 32) texture_region_size = Vector2i(32, 32)
@ -16,12 +18,14 @@ texture_region_size = Vector2i(32, 32)
0:0/0/probability = 2.0 0:0/0/probability = 2.0
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -6, 16, -6, 16, 16, -16, 16)
0:0/0/terrains_peering_bit/bottom_side = 0 0:0/0/terrains_peering_bit/bottom_side = 0
1:0/0 = 0 1:0/0 = 0
1:0/0/terrain_set = 0 1:0/0/terrain_set = 0
1:0/0/terrain = 0 1:0/0/terrain = 0
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:0/0/terrains_peering_bit/right_side = 0 1:0/0/terrains_peering_bit/right_side = 0
1:0/0/terrains_peering_bit/bottom_side = 0 1:0/0/terrains_peering_bit/bottom_side = 0
2:0/0 = 0 2:0/0 = 0
@ -29,6 +33,7 @@ texture_region_size = Vector2i(32, 32)
2:0/0/terrain = 0 2:0/0/terrain = 0
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:0/0/terrains_peering_bit/right_side = 0 2:0/0/terrains_peering_bit/right_side = 0
2:0/0/terrains_peering_bit/bottom_side = 0 2:0/0/terrains_peering_bit/bottom_side = 0
2:0/0/terrains_peering_bit/left_side = 0 2:0/0/terrains_peering_bit/left_side = 0
@ -37,6 +42,7 @@ texture_region_size = Vector2i(32, 32)
3:0/0/terrain = 0 3:0/0/terrain = 0
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
3:0/0/terrains_peering_bit/bottom_side = 0 3:0/0/terrains_peering_bit/bottom_side = 0
3:0/0/terrains_peering_bit/left_side = 0 3:0/0/terrains_peering_bit/left_side = 0
4:0/0 = 0 4:0/0 = 0
@ -44,6 +50,7 @@ texture_region_size = Vector2i(32, 32)
4:0/0/terrain = 0 4:0/0/terrain = 0
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
4:0/0/terrains_peering_bit/right_side = 0 4:0/0/terrains_peering_bit/right_side = 0
4:0/0/terrains_peering_bit/bottom_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/left_side = 0
@ -72,6 +79,7 @@ texture_region_size = Vector2i(32, 32)
7:0/0/terrain = 0 7:0/0/terrain = 0
7:0/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
7:0/0/terrains_peering_bit/right_side = 0 7:0/0/terrains_peering_bit/right_side = 0
7:0/0/terrains_peering_bit/bottom_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/left_side = 0
@ -92,6 +100,7 @@ texture_region_size = Vector2i(32, 32)
9:0/0/terrain = 0 9:0/0/terrain = 0
9:0/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
9:0/0/terrains_peering_bit/right_side = 0 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_right_corner = 0
9:0/0/terrains_peering_bit/bottom_side = 0 9:0/0/terrains_peering_bit/bottom_side = 0
@ -124,6 +133,7 @@ texture_region_size = Vector2i(32, 32)
0:1/0/terrain = 0 0:1/0/terrain = 0
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
0:1/0/terrains_peering_bit/bottom_side = 0 0:1/0/terrains_peering_bit/bottom_side = 0
0:1/0/terrains_peering_bit/top_side = 0 0:1/0/terrains_peering_bit/top_side = 0
1:1/0 = 0 1:1/0 = 0
@ -131,6 +141,7 @@ texture_region_size = Vector2i(32, 32)
1:1/0/terrain = 0 1:1/0/terrain = 0
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:1/0/terrains_peering_bit/right_side = 0 1:1/0/terrains_peering_bit/right_side = 0
1:1/0/terrains_peering_bit/bottom_side = 0 1:1/0/terrains_peering_bit/bottom_side = 0
1:1/0/terrains_peering_bit/top_side = 0 1:1/0/terrains_peering_bit/top_side = 0
@ -139,6 +150,7 @@ texture_region_size = Vector2i(32, 32)
2:1/0/terrain = 0 2:1/0/terrain = 0
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:1/0/terrains_peering_bit/right_side = 0 2:1/0/terrains_peering_bit/right_side = 0
2:1/0/terrains_peering_bit/bottom_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/left_side = 0
@ -148,6 +160,7 @@ texture_region_size = Vector2i(32, 32)
3:1/0/terrain = 0 3:1/0/terrain = 0
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
3:1/0/terrains_peering_bit/bottom_side = 0 3:1/0/terrains_peering_bit/bottom_side = 0
3:1/0/terrains_peering_bit/left_side = 0 3:1/0/terrains_peering_bit/left_side = 0
3:1/0/terrains_peering_bit/top_side = 0 3:1/0/terrains_peering_bit/top_side = 0
@ -220,6 +233,7 @@ texture_region_size = Vector2i(32, 32)
11:1/0/terrain = 0 11:1/0/terrain = 0
11:1/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 4, 16, 4, -1, 16, -1)
11:1/0/terrains_peering_bit/right_side = 0 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_side = 0
11:1/0/terrains_peering_bit/bottom_left_corner = 0 11:1/0/terrains_peering_bit/bottom_left_corner = 0
@ -232,12 +246,14 @@ texture_region_size = Vector2i(32, 32)
0:2/0/probability = 2.0 0:2/0/probability = 2.0
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1, -16, -1)
0:2/0/terrains_peering_bit/top_side = 0 0:2/0/terrains_peering_bit/top_side = 0
1:2/0 = 0 1:2/0 = 0
1:2/0/terrain_set = 0 1:2/0/terrain_set = 0
1:2/0/terrain = 0 1:2/0/terrain = 0
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1, -16, -1)
1:2/0/terrains_peering_bit/right_side = 0 1:2/0/terrains_peering_bit/right_side = 0
1:2/0/terrains_peering_bit/top_side = 0 1:2/0/terrains_peering_bit/top_side = 0
2:2/0 = 0 2:2/0 = 0
@ -245,6 +261,7 @@ texture_region_size = Vector2i(32, 32)
2:2/0/terrain = 0 2:2/0/terrain = 0
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1, -16, -1)
2:2/0/terrains_peering_bit/right_side = 0 2:2/0/terrains_peering_bit/right_side = 0
2:2/0/terrains_peering_bit/left_side = 0 2:2/0/terrains_peering_bit/left_side = 0
2:2/0/terrains_peering_bit/top_side = 0 2:2/0/terrains_peering_bit/top_side = 0
@ -253,6 +270,7 @@ texture_region_size = Vector2i(32, 32)
3:2/0/terrain = 0 3:2/0/terrain = 0
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1, -16, -1)
3:2/0/terrains_peering_bit/left_side = 0 3:2/0/terrains_peering_bit/left_side = 0
3:2/0/terrains_peering_bit/top_side = 0 3:2/0/terrains_peering_bit/top_side = 0
4:2/0 = 0 4:2/0 = 0
@ -302,6 +320,7 @@ texture_region_size = Vector2i(32, 32)
8:2/0/terrain = 0 8:2/0/terrain = 0
8:2/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -3, 16, -3, -1, -16, -1)
8:2/0/terrains_peering_bit/right_side = 0 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_right_corner = 0
8:2/0/terrains_peering_bit/bottom_side = 0 8:2/0/terrains_peering_bit/bottom_side = 0
@ -351,18 +370,21 @@ texture_region_size = Vector2i(32, 32)
0:3/0/probability = 2.0 0:3/0/probability = 2.0
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(12, -16, -12, -16, -12, -1, 12, -1)
1:3/0 = 0 1:3/0 = 0
1:3/0/terrain_set = 0 1:3/0/terrain_set = 0
1:3/0/terrain = 0 1:3/0/terrain = 0
1:3/0/probability = 2.0 1:3/0/probability = 2.0
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-4, -16, 16, -16, 16, -1, -4, -1)
1:3/0/terrains_peering_bit/right_side = 0 1:3/0/terrains_peering_bit/right_side = 0
2:3/0 = 0 2:3/0 = 0
2:3/0/terrain_set = 0 2:3/0/terrain_set = 0
2:3/0/terrain = 0 2:3/0/terrain = 0
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1, -16, -1)
2:3/0/terrains_peering_bit/right_side = 0 2:3/0/terrains_peering_bit/right_side = 0
2:3/0/terrains_peering_bit/left_side = 0 2:3/0/terrains_peering_bit/left_side = 0
3:3/0 = 0 3:3/0 = 0
@ -371,6 +393,7 @@ texture_region_size = Vector2i(32, 32)
3:3/0/probability = 2.0 3:3/0/probability = 2.0
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -16, -16, -16, -16, -1, 4, -1)
3:3/0/terrains_peering_bit/left_side = 0 3:3/0/terrains_peering_bit/left_side = 0
4:3/0 = 0 4:3/0 = 0
4:3/0/terrain_set = 0 4:3/0/terrain_set = 0
@ -387,6 +410,7 @@ texture_region_size = Vector2i(32, 32)
5:3/0/terrain = 0 5:3/0/terrain = 0
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1, -16, -1)
5:3/0/terrains_peering_bit/right_side = 0 5:3/0/terrains_peering_bit/right_side = 0
5:3/0/terrains_peering_bit/left_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_side = 0
@ -396,6 +420,7 @@ texture_region_size = Vector2i(32, 32)
6:3/0/terrain = 0 6:3/0/terrain = 0
6:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1, -16, -1)
6:3/0/terrains_peering_bit/right_side = 0 6:3/0/terrains_peering_bit/right_side = 0
6:3/0/terrains_peering_bit/left_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_left_corner = 0
@ -405,6 +430,7 @@ texture_region_size = Vector2i(32, 32)
7:3/0/terrain = 0 7:3/0/terrain = 0
7:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -3, 16, -4, 7, -16, -1)
7:3/0/terrains_peering_bit/right_side = 0 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_right_corner = 0
7:3/0/terrains_peering_bit/bottom_side = 0 7:3/0/terrains_peering_bit/bottom_side = 0
@ -416,7 +442,7 @@ texture_region_size = Vector2i(32, 32)
8:3/0/probability = 2.0 8:3/0/probability = 2.0
8:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, -1, -4, -1, -4, -16) 8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -16, 16, -16, 16, -1, -3, -1)
8:3/0/terrains_peering_bit/right_side = 0 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_side = 0
8:3/0/terrains_peering_bit/top_right_corner = 0 8:3/0/terrains_peering_bit/top_right_corner = 0
@ -431,11 +457,13 @@ texture_region_size = Vector2i(32, 32)
9:3/0/terrains_peering_bit/top_left_corner = 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_side = 0
9:3/0/terrains_peering_bit/top_right_corner = 0 9:3/0/terrains_peering_bit/top_right_corner = 0
9:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_dkm5b")
10:3/0 = 0 10:3/0 = 0
10:3/0/terrain_set = 0 10:3/0/terrain_set = 0
10:3/0/terrain = 0 10:3/0/terrain = 0
10:3/0/physics_layer_0/linear_velocity = Vector2(0, 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/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
10:3/0/terrains_peering_bit/right_side = 0 10:3/0/terrains_peering_bit/right_side = 0
10:3/0/terrains_peering_bit/bottom_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/left_side = 0
@ -452,12 +480,21 @@ texture_region_size = Vector2i(32, 32)
11:3/0/terrains_peering_bit/left_side = 0 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_left_corner = 0
11:3/0/terrains_peering_bit/top_side = 0 11:3/0/terrains_peering_bit/top_side = 0
10:1/next_alternative_id = 11
10:1/0 = 0 10:1/0 = 0
10:1/0/terrain_set = 0 10:1/0/terrain_set = 0
10:1/0/terrain = 1 10:1/0/terrain = 1
10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) 10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
10:1/0/physics_layer_0/angular_velocity = 0.0 10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_fhapu") 10:1/0/terrains_peering_bit/right_side = 1
10:1/0/terrains_peering_bit/bottom_right_corner = 1
10:1/0/terrains_peering_bit/bottom_side = 1
10:1/0/terrains_peering_bit/bottom_left_corner = 1
10:1/0/terrains_peering_bit/left_side = 1
10:1/0/terrains_peering_bit/top_left_corner = 1
10:1/0/terrains_peering_bit/top_side = 1
10:1/0/terrains_peering_bit/top_right_corner = 1
10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_l6uwm")
[resource] [resource]
tile_size = Vector2i(32, 32) tile_size = Vector2i(32, 32)

View file

@ -1,4 +1,4 @@
[gd_resource type="Theme" load_steps=47 format=3 uid="uid://babphdknr2kkd"] [gd_resource type="Theme" load_steps=47 format=3 uid="uid://b0b3fxesfrpb7"]
[ext_resource type="StyleBox" uid="uid://bmeh7kt6t886w" path="res://Assets/UI/Button/disabled.tres" id="1_n3up8"] [ext_resource type="StyleBox" uid="uid://bmeh7kt6t886w" path="res://Assets/UI/Button/disabled.tres" id="1_n3up8"]
[ext_resource type="StyleBox" uid="uid://gxy851bdkmb0" path="res://Assets/UI/Button/focus.tres" id="2_ukct7"] [ext_resource type="StyleBox" uid="uid://gxy851bdkmb0" path="res://Assets/UI/Button/focus.tres" id="2_ukct7"]
@ -41,7 +41,7 @@
[ext_resource type="StyleBox" uid="uid://0jfr1uwuog0s" path="res://Assets/UI/Slider/v/background.tres" id="39_dl1e4"] [ext_resource type="StyleBox" uid="uid://0jfr1uwuog0s" path="res://Assets/UI/Slider/v/background.tres" id="39_dl1e4"]
[ext_resource type="FontFile" uid="uid://dqdeftjkwxe64" path="res://Assets/Fonts/Dogica/dogicapixel.ttf" id="40_bmcvq"] [ext_resource type="FontFile" uid="uid://dqdeftjkwxe64" path="res://Assets/Fonts/Dogica/dogicapixel.ttf" id="40_bmcvq"]
[sub_resource type="Image" id="Image_fjlcl"] [sub_resource type="Image" id="Image_1o7tw"]
data = { data = {
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0), "data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 64, 255, 255, 255, 64, 255, 255, 255, 0),
"format": "RGBA8", "format": "RGBA8",
@ -51,7 +51,7 @@ data = {
} }
[sub_resource type="ImageTexture" id="ImageTexture_g5bup"] [sub_resource type="ImageTexture" id="ImageTexture_g5bup"]
image = SubResource("Image_fjlcl") image = SubResource("Image_1o7tw")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_sj7h5"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_sj7h5"]

View file

@ -1,8 +1,9 @@
[gd_scene load_steps=5 format=3 uid="uid://cbfcolm6mjolp"] [gd_scene load_steps=6 format=3 uid="uid://btxarutbkchmb"]
[ext_resource type="Script" path="res://Scripts/UI/SettingsMenu.gd" id="1_2rgd2"] [ext_resource type="Script" path="res://Scripts/UI/SettingsMenu.gd" id="1_2rgd2"]
[ext_resource type="Script" path="res://Scripts/UI/Remaping/RemapController.gd" id="2_2f8ap"] [ext_resource type="Script" path="res://Scripts/UI/Remaping/RemapController.gd" id="2_2f8ap"]
[ext_resource type="Script" path="res://Scripts/UI/Remaping/RemapButton.gd" id="2_4asaa"] [ext_resource type="Script" path="res://Scripts/UI/Remaping/RemapButton.gd" id="2_4asaa"]
[ext_resource type="Theme" uid="uid://b0b3fxesfrpb7" path="res://Assets/UI/Theme.tres" id="3_ajuuh"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_02uod"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_02uod"]
bg_color = Color(0.439216, 0.631373, 0.537255, 1) bg_color = Color(0.439216, 0.631373, 0.537255, 1)
@ -22,7 +23,7 @@ master_volume_slider = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTab
music_volume_slider = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MusicVolSlider") music_volume_slider = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MusicVolSlider")
sfx_volume_slider = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider") sfx_volume_slider = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider")
[node name="Remap Controller" type="Control" parent="."] [node name="Remap Controller" type="Control" parent="." node_paths=PackedStringArray("remap_buttons_holder")]
visible = false visible = false
layout_mode = 3 layout_mode = 3
anchors_preset = 0 anchors_preset = 0
@ -31,6 +32,7 @@ offset_top = 12.0
offset_right = 12.0 offset_right = 12.0
offset_bottom = 12.0 offset_bottom = 12.0
script = ExtResource("2_2f8ap") script = ExtResource("2_2f8ap")
remap_buttons_holder = NodePath("../Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item")
[node name="Panel" type="Panel" parent="."] [node name="Panel" type="Panel" parent="."]
anchors_preset = 15 anchors_preset = 15
@ -38,6 +40,7 @@ anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme = ExtResource("3_ajuuh")
theme_override_styles/panel = SubResource("StyleBoxFlat_02uod") theme_override_styles/panel = SubResource("StyleBoxFlat_02uod")
[node name="MarginContainer" type="MarginContainer" parent="Panel"] [node name="MarginContainer" type="MarginContainer" parent="Panel"]
@ -61,7 +64,6 @@ size_flags_vertical = 3
tabs_rearrange_group = 0 tabs_rearrange_group = 0
[node name="Video" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs"] [node name="Video" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs"]
visible = false
layout_mode = 2 layout_mode = 2
theme_override_constants/margin_left = 4 theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4 theme_override_constants/margin_top = 4
@ -232,6 +234,7 @@ min_value = -72.0
max_value = 0.0 max_value = 0.0
[node name="Controls" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs"] [node name="Controls" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs"]
visible = false
layout_mode = 2 layout_mode = 2
theme_override_constants/margin_left = 4 theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4 theme_override_constants/margin_top = 4
@ -341,6 +344,16 @@ layout_mode = 2
text = "Attack Controller text = "Attack Controller
" "
[node name="Spacer2" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
size_flags_horizontal = 3
[node name="ResetLabel" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Reset to Defaults"
[node name="Spacer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"] [node name="Spacer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
@ -469,6 +482,16 @@ script = ExtResource("2_4asaa")
input_action_name = "attack_controller" input_action_name = "attack_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller") remap_controller = NodePath("../../../../../../../../../../Remap Controller")
[node name="Spacers2" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
size_flags_horizontal = 3
[node name="ResetButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(400, 40)
layout_mode = 2
text = "Reset"
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer"] [node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
theme_override_constants/margin_top = 32 theme_override_constants/margin_top = 32
@ -501,4 +524,5 @@ text = "Back"
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimLeftControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimLeftControllerRemapButton" method="_on_pressed"] [connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimLeftControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimLeftControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimRightControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimRightControllerRemapButton" method="_on_pressed"] [connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimRightControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimRightControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackControllerRemapButton" method="_on_pressed"] [connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/ResetButton" to="Remap Controller" method="_on_reset_button_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/MarginContainer/Back Button" to="." method="_on_back_pressed"] [connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/MarginContainer/Back Button" to="." method="_on_back_pressed"]

View file

@ -1,13 +1,8 @@
[gd_scene load_steps=12 format=3 uid="uid://cpl4tllohhyel"] [gd_scene load_steps=11 format=3 uid="uid://cpl4tllohhyel"]
[ext_resource type="Script" path="res://Scripts/EntitySystem/Bunny.gd" id="1_1kj2b"] [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"] [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"]
[sub_resource type="CircleShape2D" id="CircleShape2D_itvjj"]
radius = 14.0
[sub_resource type="Animation" id="Animation_6br4g"] [sub_resource type="Animation" id="Animation_6br4g"]
resource_name = "Idle" resource_name = "Idle"
tracks/0/type = "value" tracks/0/type = "value"
@ -116,9 +111,12 @@ _data = {
"RESET": SubResource("Animation_mp212") "RESET": SubResource("Animation_mp212")
} }
[node name="Bunny" type="CharacterBody2D" node_paths=PackedStringArray("animation_player", "agent")] [sub_resource type="CircleShape2D" id="CircleShape2D_nil6g"]
radius = 11.0
[node name="Bunny" type="Area2D" node_paths=PackedStringArray("animation_player", "agent")]
collision_layer = 4 collision_layer = 4
collision_mask = 15 collision_mask = 0
script = ExtResource("1_1kj2b") script = ExtResource("1_1kj2b")
animation_player = NodePath("BunnyAnimator") animation_player = NodePath("BunnyAnimator")
agent = NodePath("NavigationAgent") agent = NodePath("NavigationAgent")
@ -129,23 +127,13 @@ texture = ExtResource("2_v8p70")
hframes = 5 hframes = 5
vframes = 4 vframes = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_sedmr")
[node name="NavigationAgent" type="NavigationAgent2D" parent="."] [node name="NavigationAgent" type="NavigationAgent2D" parent="."]
path_metadata_flags = 0 path_metadata_flags = 0
[node name="Area2D" type="Area2D" parent="."]
collision_layer = 64
collision_mask = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("CircleShape2D_itvjj")
[node name="BunnyAnimator" type="AnimationPlayer" parent="."] [node name="BunnyAnimator" type="AnimationPlayer" parent="."]
libraries = { libraries = {
"": SubResource("AnimationLibrary_uuf00") "": SubResource("AnimationLibrary_uuf00")
} }
[connection signal="body_entered" from="Area2D" to="." method="_on_collision"] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
[connection signal="body_exited" from="Area2D" to="." method="_of_collision"] shape = SubResource("CircleShape2D_nil6g")

View file

@ -1,7 +1,10 @@
[gd_scene load_steps=4 format=3 uid="uid://csxh42o8twxwn"] [gd_scene load_steps=7 format=3 uid="uid://csxh42o8twxwn"]
[ext_resource type="Script" path="res://Scripts/WeaponSystem/Projectile.gd" id="1_os652"] [ext_resource type="Script" path="res://Scripts/WeaponSystem/Projectile.gd" id="1_os652"]
[ext_resource type="Texture2D" uid="uid://dlxjdb0tchrps" path="res://Assets/Sprites/crucefix.png" id="2_ibs3t"] [ext_resource type="Texture2D" uid="uid://dlxjdb0tchrps" path="res://Assets/Sprites/crucefix.png" id="2_ibs3t"]
[ext_resource type="AudioStream" uid="uid://dornq2kwau6bg" path="res://Assets/SFX/Jesus/Projectile/Throw Variation 1.wav" id="4_11fc8"]
[ext_resource type="AudioStream" uid="uid://b2pd7efb2r7g5" path="res://Assets/SFX/Jesus/Projectile/Throw Variation 2.wav" id="5_njike"]
[ext_resource type="AudioStream" uid="uid://cqxnclejfbmvb" path="res://Assets/SFX/Jesus/Projectile/Throw Variation 3.wav" id="6_ky3xa"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ki5cp"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ki5cp"]
radius = 8.57143 radius = 8.57143
@ -11,6 +14,7 @@ height = 22.8571
collision_layer = 8 collision_layer = 8
collision_mask = 5 collision_mask = 5
script = ExtResource("1_os652") script = ExtResource("1_os652")
audio_pool = [NodePath("Audio Sources/Audio1"), NodePath("Audio Sources/Audio2"), NodePath("Audio Sources/Audio3")]
map_collision_layer = 1 map_collision_layer = 1
bunny_collision_layer = 4 bunny_collision_layer = 4
@ -20,4 +24,19 @@ texture = ExtResource("2_ibs3t")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CapsuleShape2D_ki5cp") shape = SubResource("CapsuleShape2D_ki5cp")
[node name="Audio Sources" type="Node" parent="."]
[node name="Audio1" type="AudioStreamPlayer" parent="Audio Sources"]
stream = ExtResource("4_11fc8")
bus = &"SFX"
[node name="Audio2" type="AudioStreamPlayer" parent="Audio Sources"]
stream = ExtResource("5_njike")
bus = &"SFX"
[node name="Audio3" type="AudioStreamPlayer" parent="Audio Sources"]
stream = ExtResource("6_ky3xa")
bus = &"SFX"
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
[connection signal="body_entered" from="." to="." method="_on_collision"] [connection signal="body_entered" from="." to="." method="_on_collision"]

View file

@ -1,14 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://chfp8mm3vwh2e"]
[ext_resource type="TileSet" uid="uid://bj7uu2180mie3" path="res://Assets/Tileset.tres" id="1_a2htf"]
[ext_resource type="Script" path="res://Scripts/MapGenerator.gd" id="2_qvwn8"]
[node name="Node2D" type="Node2D"]
[node name="TileMap" type="TileMap" parent="."]
tile_set = ExtResource("1_a2htf")
cell_quadrant_size = 8
collision_visibility_mode = 1
format = 2
script = ExtResource("2_qvwn8")
height = 33

View file

@ -0,0 +1,286 @@
[gd_scene load_steps=16 format=3 uid="uid://bnutmwl2vuvqe"]
[ext_resource type="Script" path="res://Scripts/UI/MainMenuManager.gd" id="1_35kaq"]
[ext_resource type="PackedScene" uid="uid://c4btepmue6d7p" path="res://Scenes/Game.tscn" id="2_kitxe"]
[ext_resource type="PackedScene" uid="uid://btxarutbkchmb" path="res://Prefabs/Settings Menu.tscn" id="3_q44re"]
[ext_resource type="Theme" uid="uid://b0b3fxesfrpb7" path="res://Assets/UI/Theme.tres" id="4_bajby"]
[ext_resource type="Texture2D" uid="uid://tjxkew3m4v8m" path="res://Assets/Sprites/UI/Shadow.png" id="5_btlv0"]
[ext_resource type="Texture2D" uid="uid://ojlfqxj5bilo" path="res://Assets/Sprites/Jesus/jesus_spritesheet.png" id="6_sfeq6"]
[ext_resource type="Texture2D" uid="uid://dlr823rtwhtq2" path="res://Assets/Sprites/EasterEgg.png" id="7_hhotb"]
[ext_resource type="Texture2D" uid="uid://c54k7fn4fu42s" path="res://Assets/Sprites/Bunny/good_bunny_spritesheet.png" id="8_kscix"]
[ext_resource type="AudioStream" uid="uid://c6nf5s6xy2uii" path="res://Assets/Music/omw-to-beat-the-big-bad.wav" id="9_gyelf"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5uvie"]
bg_color = Color(0.439216, 0.631373, 0.537255, 1)
[sub_resource type="Animation" id="Animation_iq7o3"]
resource_name = "Walk"
length = 0.8
loop_mode = 1
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, 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="AnimationLibrary" id="AnimationLibrary_xufdy"]
_data = {
"Autostart": SubResource("Animation_iq7o3")
}
[sub_resource type="Animation" id="Animation_53kbk"]
resource_name = "Autostart"
length = 0.5
loop_mode = 1
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, 0.1, 0.2, 0.3, 0.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_5tgwk"]
_data = {
"Autostart": SubResource("Animation_53kbk")
}
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h5db4"]
bg_color = Color(0, 0, 0, 0.313726)
[node name="MainMenu" type="Control" node_paths=PackedStringArray("default_focus", "music_player")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 6
size_flags_vertical = 3
script = ExtResource("1_35kaq")
game_scene = ExtResource("2_kitxe")
settings_scene = ExtResource("3_q44re")
default_focus = NodePath("VBoxContainer/MarginBox2/ButtonsVbox/PlayButton")
autostart_animations = Array[NodePath]([NodePath("Decorations/Left Decor/Jesus/AnimationPlayer"), NodePath("Decorations/Right Decor/GoodBunny/AnimationPlayer")])
music_player = NodePath("MusicPlayer")
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("4_bajby")
theme_override_styles/panel = SubResource("StyleBoxFlat_5uvie")
[node name="Decorations" type="Control" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Left Decor" type="CenterContainer" parent="Decorations"]
custom_minimum_size = Vector2(576, 0)
layout_mode = 1
anchors_preset = 9
anchor_bottom = 1.0
grow_vertical = 2
[node name="Shadow" type="Sprite2D" parent="Decorations/Left Decor"]
position = Vector2(272, 686)
scale = Vector2(10, 10)
texture = ExtResource("5_btlv0")
[node name="Jesus" type="Sprite2D" parent="Decorations/Left Decor"]
position = Vector2(279, 408)
scale = Vector2(10, 10)
texture = ExtResource("6_sfeq6")
hframes = 8
vframes = 4
[node name="AnimationPlayer" type="AnimationPlayer" parent="Decorations/Left Decor/Jesus"]
libraries = {
"": SubResource("AnimationLibrary_xufdy")
}
[node name="EasterEgg" type="Sprite2D" parent="Decorations/Left Decor"]
position = Vector2(142, 555)
scale = Vector2(10, 10)
texture = ExtResource("7_hhotb")
hframes = 6
[node name="EasterEgg2" type="Sprite2D" parent="Decorations/Left Decor"]
position = Vector2(450, 572)
rotation = 0.633555
scale = Vector2(10, 10)
texture = ExtResource("7_hhotb")
hframes = 6
frame = 4
[node name="Right Decor" type="CenterContainer" parent="Decorations"]
custom_minimum_size = Vector2(576, 0)
layout_mode = 1
anchors_preset = 11
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 0
grow_vertical = 2
[node name="Shadow" type="Sprite2D" parent="Decorations/Right Decor"]
position = Vector2(300, 681)
scale = Vector2(10, 10)
texture = ExtResource("5_btlv0")
[node name="EasterEgg" type="Sprite2D" parent="Decorations/Right Decor"]
position = Vector2(416, 537)
rotation = 0.289725
scale = Vector2(10, 10)
texture = ExtResource("7_hhotb")
hframes = 6
frame = 2
[node name="GoodBunny" type="Sprite2D" parent="Decorations/Right Decor"]
position = Vector2(235, 579)
scale = Vector2(10, 10)
texture = ExtResource("8_kscix")
hframes = 5
vframes = 4
[node name="AnimationPlayer" type="AnimationPlayer" parent="Decorations/Right Decor/GoodBunny"]
libraries = {
"": SubResource("AnimationLibrary_5tgwk")
}
[node name="Panel" type="Panel" parent="Decorations"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_h5db4")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 0
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 5
theme_override_font_sizes/font_size = 96
text = "Happy Easter Game Thing"
horizontal_alignment = 1
autowrap_mode = 2
[node name="MarginBox2" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="ButtonsVbox" type="VBoxContainer" parent="VBoxContainer/MarginBox2"]
custom_minimum_size = Vector2(0, 495)
layout_mode = 2
size_flags_horizontal = 4
theme = ExtResource("4_bajby")
theme_override_constants/separation = 8
alignment = 1
[node name="Spacer" type="MarginContainer" parent="VBoxContainer/MarginBox2/ButtonsVbox"]
layout_mode = 2
size_flags_vertical = 3
[node name="PlayButton" type="Button" parent="VBoxContainer/MarginBox2/ButtonsVbox"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
focus_neighbor_left = NodePath("../QuitButton")
focus_neighbor_top = NodePath("../QuitButton")
focus_neighbor_right = NodePath("../SettingsButton")
focus_neighbor_bottom = NodePath("../SettingsButton")
focus_next = NodePath("../SettingsButton")
focus_previous = NodePath("../QuitButton")
theme = ExtResource("4_bajby")
theme_override_font_sizes/font_size = 64
text = "Play"
[node name="SettingsButton" type="Button" parent="VBoxContainer/MarginBox2/ButtonsVbox"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
focus_neighbor_left = NodePath("../PlayButton")
focus_neighbor_top = NodePath("../PlayButton")
focus_neighbor_right = NodePath("../AboutButton")
focus_neighbor_bottom = NodePath("../AboutButton")
focus_next = NodePath("../AboutButton")
focus_previous = NodePath("../PlayButton")
theme = ExtResource("4_bajby")
theme_override_font_sizes/font_size = 64
text = "Settings"
[node name="AboutButton" type="Button" parent="VBoxContainer/MarginBox2/ButtonsVbox"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
focus_neighbor_left = NodePath("../SettingsButton")
focus_neighbor_top = NodePath("../SettingsButton")
focus_neighbor_right = NodePath("../QuitButton")
focus_neighbor_bottom = NodePath("../QuitButton")
focus_next = NodePath("../QuitButton")
focus_previous = NodePath("../SettingsButton")
theme = ExtResource("4_bajby")
theme_override_font_sizes/font_size = 64
text = "About"
[node name="Spacer2" type="MarginContainer" parent="VBoxContainer/MarginBox2/ButtonsVbox"]
layout_mode = 2
size_flags_vertical = 3
[node name="QuitButton" type="Button" parent="VBoxContainer/MarginBox2/ButtonsVbox"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
focus_neighbor_left = NodePath("../AboutButton")
focus_neighbor_top = NodePath("../AboutButton")
focus_neighbor_right = NodePath("../PlayButton")
focus_neighbor_bottom = NodePath("../PlayButton")
focus_next = NodePath("../PlayButton")
focus_previous = NodePath("../AboutButton")
theme = ExtResource("4_bajby")
theme_override_font_sizes/font_size = 64
text = "Quit"
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("9_gyelf")
bus = &"Music"
[connection signal="pressed" from="VBoxContainer/MarginBox2/ButtonsVbox/PlayButton" to="." method="_on_play_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MarginBox2/ButtonsVbox/SettingsButton" to="." method="_on_settings_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MarginBox2/ButtonsVbox/AboutButton" to="." method="_on_about_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MarginBox2/ButtonsVbox/QuitButton" to="." method="_on_quit_button_pressed"]

View file

@ -2,8 +2,8 @@
[ext_resource type="Script" path="res://Scripts/UI/MainMenuManager.gd" id="1_qepq0"] [ext_resource type="Script" path="res://Scripts/UI/MainMenuManager.gd" id="1_qepq0"]
[ext_resource type="PackedScene" uid="uid://c4btepmue6d7p" path="res://Scenes/Game.tscn" id="2_28004"] [ext_resource type="PackedScene" uid="uid://c4btepmue6d7p" path="res://Scenes/Game.tscn" id="2_28004"]
[ext_resource type="PackedScene" uid="uid://cbfcolm6mjolp" path="res://Prefabs/Settings Menu.tscn" id="3_r3r61"] [ext_resource type="PackedScene" uid="uid://btxarutbkchmb" path="res://Prefabs/Settings Menu.tscn" id="3_r3r61"]
[ext_resource type="Theme" uid="uid://babphdknr2kkd" path="res://Assets/UI/Theme.tres" id="4_bmt8e"] [ext_resource type="Theme" uid="uid://b0b3fxesfrpb7" path="res://Assets/UI/Theme.tres" id="4_bmt8e"]
[ext_resource type="Texture2D" uid="uid://tjxkew3m4v8m" path="res://Assets/Sprites/UI/Shadow.png" id="5_wt601"] [ext_resource type="Texture2D" uid="uid://tjxkew3m4v8m" path="res://Assets/Sprites/UI/Shadow.png" id="5_wt601"]
[ext_resource type="Texture2D" uid="uid://ojlfqxj5bilo" path="res://Assets/Sprites/Jesus/jesus_spritesheet.png" id="7_g28i1"] [ext_resource type="Texture2D" uid="uid://ojlfqxj5bilo" path="res://Assets/Sprites/Jesus/jesus_spritesheet.png" id="7_g28i1"]
[ext_resource type="Texture2D" uid="uid://dlr823rtwhtq2" path="res://Assets/Sprites/EasterEgg.png" id="7_wokip"] [ext_resource type="Texture2D" uid="uid://dlr823rtwhtq2" path="res://Assets/Sprites/EasterEgg.png" id="7_wokip"]

View file

@ -1,154 +0,0 @@
[gd_scene load_steps=12 format=3 uid="uid://ccgpsim5nfxd6"]
[ext_resource type="TileSet" uid="uid://bj7uu2180mie3" path="res://Assets/Tileset.tres" id="1_wkp62"]
[ext_resource type="Script" path="res://Scripts/PlayerController.gd" id="1_x3102"]
[ext_resource type="Script" path="res://Scripts/MapGenerator.gd" id="4_8st0q"]
[ext_resource type="Texture2D" uid="uid://bl7vfn05ul1vu" path="res://Assets/Sprites/Jesus/Jesus Spritesheet.png" id="4_e5cec"]
[sub_resource type="Animation" id="Animation_kdxam"]
resource_name = "Idle"
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.2, 0.4, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3]
}
[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.2, 0.4, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [12, 13, 14, 15]
}
[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.2, 0.4, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [4, 5, 6, 7]
}
[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.2, 0.4, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11]
}
[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_wkp62")
cell_quadrant_size = 32
collision_visibility_mode = 1
format = 2
script = ExtResource("4_8st0q")
start_area_size = 3
start_area_corner_size = 1
[node name="Player" type="CharacterBody2D" parent="." node_paths=PackedStringArray("animation_player")]
position = Vector2(960, 512)
scale = Vector2(0.5, 0.5)
collision_layer = 0
script = ExtResource("1_x3102")
speed = 60
animation_player = NodePath("Player Animator")
[node name="Player Sprite" type="Sprite2D" parent="Player"]
position = Vector2(0, -20)
texture = ExtResource("4_e5cec")
hframes = 4
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(3, 3)
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")
}

View file

@ -1,53 +1,75 @@
extends CharacterBody2D extends Node2D
class_name Bunny class_name Bunny
@export var animation_player : AnimationPlayer @export var animation_player : AnimationPlayer
@export var min_distance_to_player := 80.0 @export var min_distance_to_player := 20.0
@export var max_distance_to_player := 800.0 @export var max_distance_to_player := 500.0
@export var agent : NavigationAgent2D @export var agent : NavigationAgent2D
@export var speed := 100.0 @export var speed := 3.0
var health : int var health : int
var team : int var team : int
var player : Node2D var player : Node2D
var on_death_callbacks : Array var on_death_callbacks : Array
var move_velocity : Vector2
var next_location : Vector2
var randomized_next_location : Vector2
var dir : Vector2 var dir : Vector2
var spread_time : float
var current_time : float var time_since_got_player := 100.0
var collisions : int var time_since_got_move_location := 100.0
var last_player_velocity := 0.0
var last_target_position : Vector2
var max_pos_check_time := 0.5
var max_pos_check_time_inactive_scalar := 10.0
var max_get_move_location_time := 0.125
var random_goal_spread_factor := 2.5
var random_move_location_spread_factor := 8.0
var random_angle_change := deg_to_rad(4.0)
func _ready(): func _ready():
seed(int(str(self))) pass
spread_time = randf() * 2 + 0.1
current_time = spread_time
func _physics_process(delta): func _physics_process(delta):
current_time -= delta randomize()
if player != null and self.global_position.distance_to(player.global_position) < max_distance_to_player and collisions <= 3:
if current_time <= 0: if abs(player.velocity.length() - last_player_velocity) > 100.0:
current_time = spread_time time_since_got_player = max_pos_check_time
agent.target_position = player.global_position if time_since_got_player >= max_pos_check_time and player.velocity.length() > 0.1:
if min_distance_to_player and agent.is_target_reachable(): time_since_got_player = randf() * max_pos_check_time * 0.5
var next_location = agent.get_next_path_position() + Vector2(randf() - 0.5 * 2, randf() - 0.5 * 2) update_target_pos()
dir = self.global_position.direction_to(next_location).normalized() if time_since_got_player >= max_pos_check_time * max_pos_check_time_inactive_scalar and player.velocity.length() < 0.1:
if self.global_position.distance_to(player.global_position) > min_distance_to_player: time_since_got_player = -(randf() * max_pos_check_time * 0.5)
self.velocity = dir * delta * 60 * speed update_target_pos()
update_animation() if self.global_position.distance_to(player.global_position) < max_distance_to_player and time_since_got_move_location > max_get_move_location_time:
if delta > 0.5: time_since_got_move_location = 0
print(delta) if agent.is_target_reachable():
move_and_slide() next_location = agent.get_next_path_position()
randomized_next_location = next_location + Vector2(randf() - 0.5, randf() - 0.5 ) * 2 * random_move_location_spread_factor
dir = self.global_position.direction_to(randomized_next_location).normalized().rotated((randf() - 0.5) * 2 * random_angle_change)
if self.global_position.distance_to(player.global_position) >= min_distance_to_player:
move_velocity = dir * delta * 60 * speed
update_animation()
if self.global_position.distance_to(next_location) < move_velocity.length():
self.global_position = next_location
time_since_got_player = 10.0
time_since_got_move_location = 10.0
else: else:
animation_player.stop() self.translate(move_velocity)
else:
animation_player.stop()
time_since_got_player += delta
time_since_got_move_location += delta
last_player_velocity = player.velocity.length()
last_target_position = agent.target_position
pass pass
func _on_collision(body): func update_target_pos():
if body != self: collisions += 1 agent.target_position = Vector2(player.global_position) + Vector2(randf() - 0.5 , randf() - 0.5) * 2 * random_goal_spread_factor
pass
func _of_collision(body):
if body != self: collisions-= 1
pass pass
func damage(damage_amount : int): func damage(damage_amount : int):
@ -69,13 +91,13 @@ func sub_on_death(callback : Callable):
pass pass
func update_animation(): func update_animation():
match self.velocity: match self.move_velocity:
Vector2.ZERO: animation_player.play("Idle") Vector2.ZERO: animation_player.play("Idle")
_: _:
var left_dot = Vector2.LEFT.dot(self.velocity) var left_dot = Vector2.LEFT.dot(self.move_velocity)
var right_dot = Vector2.RIGHT.dot(self.velocity) var right_dot = Vector2.RIGHT.dot(self.move_velocity)
var up_dot = Vector2.UP.dot(self.velocity) var up_dot = Vector2.UP.dot(self.move_velocity)
var down_dot = Vector2.DOWN.dot(self.velocity) var down_dot = Vector2.DOWN.dot(self.move_velocity)
var max_dot = maxf(left_dot, maxf(right_dot, maxf(up_dot, down_dot))) var max_dot = maxf(left_dot, maxf(right_dot, maxf(up_dot, down_dot)))
match max_dot: match max_dot:

View file

@ -17,7 +17,7 @@ func _process(_delta):
if bunnys.size() == 0 and !in_wave_gen: if bunnys.size() == 0 and !in_wave_gen:
in_wave_gen = true in_wave_gen = true
wave += 1 wave += 1
bunnys = await bunny_generator.spawn_batched_wave(5.0, 0.25, gen_data.free_tiles.duplicate(), TEAM.EVIL, wave * 10.0, 3) bunnys = await bunny_generator.spawn_batched_wave(25, 0.25, gen_data.free_tiles.duplicate(), TEAM.EVIL, wave * 250, 3)
for bunny in bunnys: for bunny in bunnys:
bunny.sub_on_death(func(bunny): bunnys.erase(bunny)) bunny.sub_on_death(func(bunny): bunnys.erase(bunny))
bunny.sub_on_death(func(bunny): bunny.queue_free()) bunny.sub_on_death(func(bunny): bunny.queue_free())

View file

@ -2,6 +2,30 @@ extends Node
const SAVE_FILE : String = "user://SAVEFILE.save" const SAVE_FILE : String = "user://SAVEFILE.save"
var game_data = {} var game_data = {}
var default_game_data = {
"display_mode": 0,
"vsync_on": false,
"current_resolution_index": 0,
"master_volume": 0,
"music_volume": 0,
"sfx_volume": 0,
"controls": {
"move_up": KEY_W,
"move_left": KEY_A,
"move_down": KEY_S,
"move_right": KEY_D,
"attack": "m" + str(MOUSE_BUTTON_LEFT),
"move_up_controller": "j" + str(JOY_AXIS_LEFT_Y) + "/-1.00",
"move_left_controller": "j" + str(JOY_AXIS_LEFT_X) + "/-1.00",
"move_down_controller": "j" + str(JOY_AXIS_LEFT_Y) + "/1.00",
"move_right_controller": "j" + str(JOY_AXIS_LEFT_X) + "/1.00",
"attack_controller": "b" + str(JOY_BUTTON_A),
"aim_up_controller": "j" + str(JOY_AXIS_RIGHT_Y) + "/-1.00",
"aim_left_controller": "j" + str(JOY_AXIS_RIGHT_X) + "/-1.00",
"aim_down_controller": "j" + str(JOY_AXIS_RIGHT_Y) + "/1.00",
"aim_right_controller": "j" + str(JOY_AXIS_RIGHT_X) + "/1.00",
}
}
func _ready(): func _ready():
load_data() load_data()
@ -9,28 +33,7 @@ func _ready():
func load_data(): func load_data():
var file = FileAccess.open(SAVE_FILE, FileAccess.READ) var file = FileAccess.open(SAVE_FILE, FileAccess.READ)
if file == null: if file == null:
game_data = { game_data = default_game_data
"display_mode": 0,
"vsync_on": false,
"current_resolution_index": 0,
"master_volume": 0,
"music_volume": 0,
"sfx_volume": 0,
"move_up": KEY_W,
"move_left": KEY_A,
"move_down": KEY_S,
"move_right": KEY_D,
"attack": "m" + str(MOUSE_BUTTON_LEFT),
"move_up_controller": "j" + str(JOY_AXIS_LEFT_Y) + "/-1.00",
"move_left_controller": "j" + str(JOY_AXIS_LEFT_X) + "/-1.00",
"move_down_controller": "j" + str(JOY_AXIS_LEFT_Y) + "/1.00",
"move_right_controller": "j" + str(JOY_AXIS_LEFT_X) + "/1.00",
"attack_controller": "b" + str(JOY_BUTTON_A),
"aim_up_controller": "j" + str(JOY_AXIS_RIGHT_Y) + "/-1.00",
"aim_left_controller": "j" + str(JOY_AXIS_RIGHT_X) + "/-1.00",
"aim_down_controller": "j" + str(JOY_AXIS_RIGHT_Y) + "/1.00",
"aim_right_controller": "j" + str(JOY_AXIS_RIGHT_X) + "/1.00",
}
save_data() save_data()
else: else:
game_data = file.get_var() game_data = file.get_var()

View file

@ -81,10 +81,38 @@ func update_sfx_volume(vol : int) -> void:
# Controls # Controls
func set_controls_from_save_file() -> void: func set_controls_from_save_file() -> void:
for remappable_input_action in remappable_input_actions: for remappable_input_action in remappable_input_actions:
var action = Save.game_data.keys().find(remappable_input_action) var action = Save.game_data.controls.keys().find(remappable_input_action)
for key in InputMap.action_get_events(remappable_input_action): for key in InputMap.action_get_events(remappable_input_action):
InputMap.action_erase_event(remappable_input_action, key) InputMap.action_erase_event(remappable_input_action, key)
var binding = Save.game_data.values()[action] var binding = Save.game_data.controls.values()[action]
var control_event
match str(binding)[0]:
"m":
binding = int(binding.right(binding.length()-1))
control_event = InputEventMouseButton.new()
control_event.button_index = binding
"b":
binding = int(binding.right(binding.length()-1))
control_event = InputEventJoypadButton.new()
control_event.button_index = binding
"j":
binding = binding.right(binding.length()-1)
binding = binding.split("/")
control_event = InputEventJoypadMotion.new()
control_event.axis = int(binding[0])
control_event.axis_value = float(binding[1])
_:
control_event = InputEventKey.new()
control_event.set_keycode(binding)
InputMap.action_add_event(remappable_input_action, control_event)
pass
func reset_controls_to_save_file() -> void:
for remappable_input_action in remappable_input_actions:
var action = Save.default_game_data.controls.keys().find(remappable_input_action)
for key in InputMap.action_get_events(remappable_input_action):
InputMap.action_erase_event(remappable_input_action, key)
var binding = Save.default_game_data.controls.values()[action]
var control_event var control_event
match str(binding)[0]: match str(binding)[0]:
"m": "m":

View file

@ -4,6 +4,7 @@ extends Node
@export var settings_scene : Resource @export var settings_scene : Resource
@export var default_focus : Control @export var default_focus : Control
@export var autostart_animations : Array[NodePath] @export var autostart_animations : Array[NodePath]
@export var music_player : AudioStreamPlayer
# Engine Callbackss # Engine Callbackss
func _ready(): func _ready():
@ -18,6 +19,7 @@ func _ready():
default_focus.grab_focus() default_focus.grab_focus()
for animation in autostart_animations: for animation in autostart_animations:
(get_node(animation) as AnimationPlayer).play("Autostart") (get_node(animation) as AnimationPlayer).play("Autostart")
music_player.play(0.0)
pass pass
func _on_play_button_pressed(): func _on_play_button_pressed():

View file

@ -4,7 +4,8 @@ extends Button
@export var remap_controller : Node @export var remap_controller : Node
func _ready(): func _ready():
display_key() self.add_to_group("RemappableButton")
self.display_key()
func display_key (): func display_key ():
self.text = "%s" % InputMap.action_get_events(input_action_name)[0].as_text() self.text = "%s" % InputMap.action_get_events(input_action_name)[0].as_text()

View file

@ -2,6 +2,7 @@ extends Control
class_name RemapController class_name RemapController
@export var min_time_between_remaps := 0.4 @export var min_time_between_remaps := 0.4
@export var remap_buttons_holder : VBoxContainer
var remap_button : Button var remap_button : Button
var remap_action : String var remap_action : String
@ -52,14 +53,14 @@ func start_remap(button : Button, action : String):
func remap_key(event): func remap_key(event):
match str(event.get_class()): match str(event.get_class()):
"InputEventJoypadButton": "InputEventJoypadButton":
Save.game_data["%s" % [remap_action]] = "b" + str(event.button_index) Save.game_data.controls["%s" % [remap_action]] = "b" + str(event.button_index)
"InputEventJoypadMotion": "InputEventJoypadMotion":
if abs(event.axis_value) < 0.5: return if abs(event.axis_value) < 0.5: return
Save.game_data["%s" % [remap_action]] = "j" + str(event.axis) + str("/1.00" if event.axis_value > 0 else "/-1.00") Save.game_data.controls["%s" % [remap_action]] = "j" + str(event.axis) + str("/1.00" if event.axis_value > 0 else "/-1.00")
"InputEventMouseButton": "InputEventMouseButton":
Save.game_data["%s" % [remap_action]] = "m" + str(event.button_index) Save.game_data.controls["%s" % [remap_action]] = "m" + str(event.button_index)
"InputEventKey": "InputEventKey":
Save.game_data["%s" % [remap_action]] = event.keycode Save.game_data.controls["%s" % [remap_action]] = event.keycode
set_process_unhandled_key_input(false) set_process_unhandled_key_input(false)
for key in InputMap.action_get_events(remap_action): for key in InputMap.action_get_events(remap_action):
InputMap.action_erase_event(remap_action, key) InputMap.action_erase_event(remap_action, key)
@ -70,3 +71,10 @@ func remap_key(event):
time_since_remap = 0 time_since_remap = 0
remap_button = null remap_button = null
pass pass
func _on_reset_button_pressed():
GlobalSettings.reset_controls_to_save_file()
for child in remap_buttons_holder.get_children():
if child is Button and child.is_in_group("RemappableButton"):
child.display_key()
pass

View file

@ -2,12 +2,17 @@ extends Area2D
@export var speed : float = 80.0 @export var speed : float = 80.0
@export var damage : int = 1 @export var damage : int = 1
@export var audio_pool := []
@export_flags_2d_physics var map_collision_layer : int @export_flags_2d_physics var map_collision_layer : int
@export_flags_2d_physics var bunny_collision_layer : int @export_flags_2d_physics var bunny_collision_layer : int
var dir : float var dir : float
func _ready():
get_node(audio_pool[randi_range(0, 2)]).play()
pass
func _process(delta): func _process(delta):
self.translate(Vector2(cos(dir), sin(dir)) * speed * delta) self.translate(Vector2(cos(dir), sin(dir)) * speed * delta)
self.rotate(delta * 30) self.rotate(delta * 30)
@ -23,8 +28,17 @@ func _on_collision(body):
if collided_layer & map_collision_layer: if collided_layer & map_collision_layer:
queue_free() queue_free()
pass
func _on_area_entered(area):
var collided_layer = null;
if(area.has_method("get_collision_layer")):
collided_layer = area.get_collision_layer()
if collided_layer & bunny_collision_layer: if collided_layer & bunny_collision_layer:
var bunny = body as Bunny var bunny = area as Bunny
bunny.damage(damage) bunny.damage(damage)
queue_free() queue_free()
pass pass

View file

@ -11,7 +11,7 @@ config_version=5
[application] [application]
config/name="HoppyEaster" config/name="HoppyEaster"
run/main_scene="res://Scenes/Main Menu.tscn" run/main_scene="res://Scenes/Main Menu Music Fix.tscn"
config/features=PackedStringArray("4.0", "GL Compatibility") config/features=PackedStringArray("4.0", "GL Compatibility")
config/icon="res://icon.svg" config/icon="res://icon.svg"
@ -26,8 +26,8 @@ Save="*res://Scripts/SaveSystem/GameDataSaver.gd"
[display] [display]
window/size/viewport_width=640 window/size/viewport_width=1280
window/size/viewport_height=1000 window/size/viewport_height=800
window/stretch/mode="canvas_items" window/stretch/mode="canvas_items"
window/stretch/aspect="expand" window/stretch/aspect="expand"
@ -187,6 +187,7 @@ ui_tab_right={
2d_physics/layer_3="Bunny" 2d_physics/layer_3="Bunny"
2d_physics/layer_4="Projectile" 2d_physics/layer_4="Projectile"
2d_physics/layer_5="Layer 5" 2d_physics/layer_5="Layer 5"
2d_navigation/layer_5="Map Solid"
2d_physics/layer_7="bunny_check" 2d_physics/layer_7="bunny_check"
[rendering] [rendering]