Compare commits

..

21 commits

Author SHA1 Message Date
6c5c5138c2 Merge pull request 'dev-health-attack2' (#66) from dev-health-attack2 into dev-base
Reviewed-on: #66
2023-04-23 13:25:39 +00:00
2a9b0bbef0 Implement Player Taking Damage 2023-04-23 15:21:22 +02:00
66ae4054c6 Adding Bunny Attackspeed and Basic Attack Logic 2023-04-23 15:00:28 +02:00
71e3b6ae4a Adding Damage stat to bunnys 2023-04-23 14:50:34 +02:00
fe89b4a00d Improved Bunny Map collisions 2023-04-16 14:36:10 +02:00
5b71f2c3de Setting up new Tileset Colliders 2023-04-16 14:28:17 +02:00
6d3b64014b Merge Bugfix for #63 2023-04-16 14:13:16 +02:00
AXVIII3
2f960fc2cc Music bug fixed 2023-04-16 13:23:02 +05:30
AXVIII3
26a3226fe0 Fixed settings going brr 2023-04-16 12:48:42 +05:30
AXVIII3
c4f75e56e9 Pause Menu 2023-04-15 17:00:52 +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
52 changed files with 1275 additions and 624 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"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_fhapu"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_l6uwm"]
vertices = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
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"]
texture = ExtResource("1_cl3se")
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/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(-16, -6, 16, -6, 16, 16, -16, 16)
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(-16, -16, 16, -16, 16, 16, -16, 16)
1:0/0/terrains_peering_bit/right_side = 0
1:0/0/terrains_peering_bit/bottom_side = 0
2:0/0 = 0
@ -29,6 +33,7 @@ texture_region_size = Vector2i(32, 32)
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, -16, 16, -16, 16, 16, -16, 16)
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
@ -37,6 +42,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -16, 16)
3:0/0/terrains_peering_bit/bottom_side = 0
3:0/0/terrains_peering_bit/left_side = 0
4:0/0 = 0
@ -44,6 +50,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -16, 16)
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
@ -54,6 +61,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -5, 16, 16, -3, 16, -16, -1)
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
@ -63,6 +71,7 @@ texture_region_size = Vector2i(32, 32)
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(16, -16, -16, -5, -16, 16, 4, 16, 16, -1)
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
@ -72,6 +81,7 @@ texture_region_size = Vector2i(32, 32)
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, -16, 16, -16, 16, 16, -16, 16)
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
@ -92,6 +102,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -16, 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
@ -124,6 +135,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -16, 16)
0:1/0/terrains_peering_bit/bottom_side = 0
0:1/0/terrains_peering_bit/top_side = 0
1:1/0 = 0
@ -131,6 +143,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -16, 16)
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
@ -139,6 +152,7 @@ texture_region_size = Vector2i(32, 32)
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, -16, 16, -16, 16, 16, -16, 16)
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
@ -148,6 +162,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -16, 16)
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
@ -156,6 +171,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -3, 16, -16, -8.5)
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
@ -165,6 +181,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, 16, 16, 16, 16, -16, -3, -16, -16, -5)
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
@ -177,6 +194,7 @@ texture_region_size = Vector2i(32, 32)
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(16, 16, -16, 16, -16, -16, 4, -16, 16, -5)
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
@ -189,6 +207,7 @@ texture_region_size = Vector2i(32, 32)
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(16, -16, -16, -16, -16, 16, 4, 16, 16, -2.5)
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
@ -209,6 +228,7 @@ texture_region_size = Vector2i(32, 32)
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, -5, -3, -16, 16, -16, 16, -1, 4, 16, -16, 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
@ -220,6 +240,7 @@ texture_region_size = Vector2i(32, 32)
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(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/bottom_side = 0
11:1/0/terrains_peering_bit/bottom_left_corner = 0
@ -232,12 +253,14 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, -1, -16, -1)
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(-16, -16, 16, -16, 16, -1, -16, -1)
1:2/0/terrains_peering_bit/right_side = 0
1:2/0/terrains_peering_bit/top_side = 0
2:2/0 = 0
@ -245,6 +268,7 @@ texture_region_size = Vector2i(32, 32)
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, -16, 16, -16, 16, -1, -16, -1)
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
@ -253,6 +277,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, -1, -16, -1)
3:2/0/terrains_peering_bit/left_side = 0
3:2/0/terrains_peering_bit/top_side = 0
4:2/0 = 0
@ -260,6 +285,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, 16, 16, 16, 16, -16, -3, -16, -16, 2.5)
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
@ -269,6 +295,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, 16, -3, 16, -16, -1)
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
@ -281,6 +308,7 @@ texture_region_size = Vector2i(32, 32)
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(16, -16, -16, -16, -16, 16, 4, 16, 16, -1)
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
@ -293,6 +321,7 @@ texture_region_size = Vector2i(32, 32)
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(16, 16, -16, 16, -16, -16, 4, -16, 16, 2.5)
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
@ -302,6 +331,7 @@ texture_region_size = Vector2i(32, 32)
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(-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/bottom_right_corner = 0
8:2/0/terrains_peering_bit/bottom_side = 0
@ -328,6 +358,7 @@ texture_region_size = Vector2i(32, 32)
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, -5, 4, -16, -16, -16, -16, -1, -3, 16, 16, 16)
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
@ -351,18 +382,21 @@ texture_region_size = Vector2i(32, 32)
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(12, -16, -12, -16, -12, -1, 12, -1)
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(-4, -16, 16, -16, 16, -1, -4, -1)
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, -16, 16, -16, 16, -1, -16, -1)
2:3/0/terrains_peering_bit/right_side = 0
2:3/0/terrains_peering_bit/left_side = 0
3:3/0 = 0
@ -371,12 +405,14 @@ texture_region_size = Vector2i(32, 32)
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(4, -16, -16, -16, -16, -1, 4, -1)
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, -16, 16, -16, 16, -1, 4, 16, -16, 16)
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
@ -387,6 +423,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, -1, -16, -1)
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
@ -396,6 +433,7 @@ texture_region_size = Vector2i(32, 32)
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(-16, -16, 16, -16, 16, -1, -16, -1)
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
@ -405,6 +443,7 @@ texture_region_size = Vector2i(32, 32)
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(-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/bottom_right_corner = 0
7:3/0/terrains_peering_bit/bottom_side = 0
@ -416,7 +455,7 @@ texture_region_size = Vector2i(32, 32)
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, -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/top_side = 0
8:3/0/terrains_peering_bit/top_right_corner = 0
@ -431,11 +470,13 @@ texture_region_size = Vector2i(32, 32)
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
9:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_dkm5b")
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(-16, -16, 16, -16, 16, 16, -16, 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
@ -452,12 +493,21 @@ texture_region_size = Vector2i(32, 32)
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
10:1/next_alternative_id = 11
10:1/0 = 0
10:1/0/terrain_set = 0
10:1/0/terrain = 1
10:1/0/physics_layer_0/linear_velocity = Vector2(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]
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://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="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_dx2gc"]
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),
"format": "RGBA8",
@ -51,7 +51,7 @@ data = {
}
[sub_resource type="ImageTexture" id="ImageTexture_g5bup"]
image = SubResource("Image_fjlcl")
image = SubResource("Image_dx2gc")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_sj7h5"]

View file

@ -1,28 +1,29 @@
[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/Remaping/RemapController.gd" id="2_2f8ap"]
[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"]
bg_color = Color(0.439216, 0.631373, 0.537255, 1)
[node name="SettingsMenu" type="Node" node_paths=PackedStringArray("back_button", "tab_container", "bottom_item_video", "bottom_item_audio", "bottom_item_controls", "remap_controller", "display_options_button", "vsync_toggle", "resolutions_options_button", "master_volume_slider", "music_volume_slider", "sfx_volume_slider")]
script = ExtResource("1_2rgd2")
back_button = NodePath("Panel/MarginContainer/VBoxContainer/MarginContainer/Back Button")
tab_container = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs")
bottom_item_video = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/ResolutionsOptions")
bottom_item_audio = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider")
bottom_item_controls = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackRemapButton")
back_button = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/MarginContainer/Back Button")
tab_container = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs")
bottom_item_video = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/ResolutionsOptions")
bottom_item_audio = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider")
bottom_item_controls = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackRemapButton")
remap_controller = NodePath("Remap Controller")
display_options_button = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/DisplayModeOptions")
vsync_toggle = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/VsyncButton")
resolutions_options_button = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/ResolutionsOptions")
master_volume_slider = NodePath("Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MasterVolumeSlider")
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")
display_options_button = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/DisplayModeOptions")
vsync_toggle = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/VsyncButton")
resolutions_options_button = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/ResolutionsOptions")
master_volume_slider = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MasterVolumeSlider")
music_volume_slider = NodePath("CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MusicVolSlider")
sfx_volume_slider = NodePath("CanvasLayer/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
layout_mode = 3
anchors_preset = 0
@ -31,16 +32,22 @@ offset_top = 12.0
offset_right = 12.0
offset_bottom = 12.0
script = ExtResource("2_2f8ap")
remap_buttons_holder = NodePath("../CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item")
[node name="Panel" type="Panel" parent="."]
[node name="CanvasLayer" type="CanvasLayer" parent="."]
process_mode = 3
[node name="Panel" type="Panel" parent="CanvasLayer"]
process_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("3_ajuuh")
theme_override_styles/panel = SubResource("StyleBoxFlat_02uod")
[node name="MarginContainer" type="MarginContainer" parent="Panel"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -52,26 +59,25 @@ theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Panel/MarginContainer"]
layout_mode = 2
[node name="SettingsTabs" type="TabContainer" parent="Panel/MarginContainer/VBoxContainer"]
[node name="SettingsTabs" type="TabContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
tabs_rearrange_group = 0
[node name="Video" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs"]
visible = false
[node name="Video" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs"]
layout_mode = 2
theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 4
theme_override_constants/margin_bottom = 4
[node name="ScrollView" type="ScrollContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video"]
[node name="ScrollView" type="ScrollContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView"]
clip_contents = true
custom_minimum_size = Vector2(0, 425)
layout_mode = 2
@ -82,45 +88,45 @@ theme_override_constants/margin_top = 25
theme_override_constants/margin_right = 25
theme_override_constants/margin_bottom = 25
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer"]
layout_mode = 2
[node name="Label" type="VBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer"]
[node name="Label" type="VBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 14
[node name="TopMargin" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="TopMargin" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_top = 8
[node name="DisplayMode" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label/TopMargin"]
[node name="DisplayMode" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label/TopMargin"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Display Mode"
[node name="VSync" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="VSync" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "VSync
"
[node name="Resolutions" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="Resolutions" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Resolutions
"
[node name="Spacer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer"]
[node name="Spacer" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Item" type="VBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer"]
[node name="Item" type="VBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 8
[node name="DisplayModeOptions" type="OptionButton" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item"]
[node name="DisplayModeOptions" type="OptionButton" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text_overrun_behavior = 1
@ -138,18 +144,18 @@ popup/item_3/id = 3
popup/item_4/text = "Exclusive Full-Screen"
popup/item_4/id = 4
[node name="VsyncButton" type="CheckButton" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item"]
[node name="VsyncButton" type="CheckButton" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Vsync"
[node name="ResolutionsOptions" type="OptionButton" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item"]
[node name="ResolutionsOptions" type="OptionButton" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
focus_neighbor_bottom = NodePath("../../../../../../../MarginContainer/Back Button")
fit_to_longest_item = false
[node name="Audio" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs"]
[node name="Audio" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs"]
visible = false
layout_mode = 2
theme_override_constants/margin_left = 4
@ -157,10 +163,10 @@ theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 4
theme_override_constants/margin_bottom = 4
[node name="ScrollView" type="ScrollContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio"]
[node name="ScrollView" type="ScrollContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView"]
clip_contents = true
custom_minimum_size = Vector2(0, 425)
layout_mode = 2
@ -171,59 +177,59 @@ theme_override_constants/margin_top = 25
theme_override_constants/margin_right = 25
theme_override_constants/margin_bottom = 25
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer"]
layout_mode = 2
[node name="Label" type="VBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer"]
[node name="Label" type="VBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 14
[node name="TopMargin" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="TopMargin" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_top = 8
[node name="MasterVol" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label/TopMargin"]
[node name="MasterVol" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label/TopMargin"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Master Volume
"
[node name="MusicVol" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MusicVol" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Music Volume
"
[node name="SFXVol" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="SFXVol" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "SFX Volume"
[node name="Spacer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer"]
[node name="Spacer" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(64, 0)
layout_mode = 2
[node name="Item" type="VBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer"]
[node name="Item" type="VBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 8
[node name="MasterVolumeSlider" type="HSlider" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item"]
[node name="MasterVolumeSlider" type="HSlider" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
min_value = -72.0
max_value = 0.0
[node name="MusicVolSlider" type="HSlider" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item"]
[node name="MusicVolSlider" type="HSlider" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
min_value = -72.0
max_value = 0.0
[node name="SFXVolSlider" type="HSlider" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item"]
[node name="SFXVolSlider" type="HSlider" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
@ -231,17 +237,18 @@ focus_neighbor_bottom = NodePath("../../../../../../../MarginContainer/Back Butt
min_value = -72.0
max_value = 0.0
[node name="Controls" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs"]
[node name="Controls" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs"]
visible = false
layout_mode = 2
theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 4
theme_override_constants/margin_bottom = 4
[node name="ScrollView" type="ScrollContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls"]
[node name="ScrollView" type="ScrollContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@ -250,255 +257,276 @@ theme_override_constants/margin_top = 25
theme_override_constants/margin_right = 25
theme_override_constants/margin_bottom = 25
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer"]
layout_mode = 2
[node name="Label" type="VBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"]
[node name="Label" type="VBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 14
[node name="TopMargin" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="TopMargin" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_top = 8
[node name="MoveUp" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label/TopMargin"]
[node name="MoveUp" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label/TopMargin"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Up"
[node name="MoveLeft" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MoveLeft" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Left"
[node name="MoveDown" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MoveDown" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Down"
[node name="MoveRight" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MoveRight" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Right"
[node name="Attack" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="Attack" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Attack
"
[node name="Spacer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="Spacer" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
size_flags_horizontal = 3
[node name="MoveUpController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MoveUpController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Up Controller
"
[node name="MoveDownController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MoveDownController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Down Controller"
[node name="MoveLeftController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MoveLeftController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Left Controller"
[node name="MoveRightController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="MoveRightController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Move Right Controller"
[node name="AimUpController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="AimUpController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Aim Up Controller
"
[node name="AimDownController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="AimDownController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Aim Down Controller"
[node name="AimLeftController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="AimLeftController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Aim Left Controller"
[node name="AimRightController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="AimRightController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Aim Right Controller"
[node name="AttackController" type="Label" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
[node name="AttackController" type="Label" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
text = "Attack Controller
"
[node name="Spacer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"]
[node name="Spacer2" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Label"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
size_flags_horizontal = 3
[node name="Item" type="VBoxContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"]
[node name="ResetLabel" type="Label" parent="CanvasLayer/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="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Item" type="VBoxContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 8
[node name="MoveUpRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveUpRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
script = ExtResource("2_4asaa")
input_action_name = "move_up"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="MoveLeftRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveLeftRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_4asaa")
input_action_name = "move_left"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="MoveDownRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveDownRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_4asaa")
input_action_name = "move_down"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="MoveRightRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveRightRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
focus_neighbor_bottom = NodePath("../../../../../../../MarginContainer/Back Button")
script = ExtResource("2_4asaa")
input_action_name = "move_right"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="AttackRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="AttackRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
focus_neighbor_bottom = NodePath("../../../../../../../MarginContainer/Back Button")
script = ExtResource("2_4asaa")
input_action_name = "attack"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="Spacers" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item"]
[node name="Spacers" type="MarginContainer" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
size_flags_horizontal = 3
[node name="MoveUpControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveUpControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
script = ExtResource("2_4asaa")
input_action_name = "move_up_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="MoveDownControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveDownControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_4asaa")
input_action_name = "move_down_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="MoveLeftControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveLeftControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_4asaa")
input_action_name = "move_left_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="MoveRightControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="MoveRightControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
focus_neighbor_bottom = NodePath("../../../../../../../MarginContainer/Back Button")
script = ExtResource("2_4asaa")
input_action_name = "move_right_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="AimUpControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="AimUpControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
script = ExtResource("2_4asaa")
input_action_name = "aim_up_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="AimDownControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="AimDownControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_4asaa")
input_action_name = "aim_down_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="AimLeftControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="AimLeftControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_4asaa")
input_action_name = "aim_left_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="AimRightControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="AimRightControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
focus_neighbor_bottom = NodePath("../../../../../../../MarginContainer/Back Button")
script = ExtResource("2_4asaa")
input_action_name = "aim_right_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="AttackControllerRemapButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
[node name="AttackControllerRemapButton" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item" node_paths=PackedStringArray("remap_controller")]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
size_flags_horizontal = 3
focus_neighbor_bottom = NodePath("../../../../../../../MarginContainer/Back Button")
script = ExtResource("2_4asaa")
input_action_name = "attack_controller"
remap_controller = NodePath("../../../../../../../../../../Remap Controller")
remap_controller = NodePath("../../../../../../../../../../../Remap Controller")
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer"]
[node name="Spacers2" type="MarginContainer" parent="CanvasLayer/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="CanvasLayer/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="CanvasLayer/Panel/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_top = 32
[node name="Back Button" type="Button" parent="Panel/MarginContainer/VBoxContainer/MarginContainer"]
[node name="Back Button" type="Button" parent="CanvasLayer/Panel/MarginContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 64
text = "Back"
[connection signal="item_selected" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/DisplayModeOptions" to="." method="_on_display_mode_options_item_selected"]
[connection signal="toggled" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/VsyncButton" to="." method="_on_vsync_button_toggled"]
[connection signal="item_selected" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/ResolutionsOptions" to="." method="_on_resolutions_options_item_selected"]
[connection signal="drag_ended" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MasterVolumeSlider" to="." method="_on_master_volume_slider_drag_ended"]
[connection signal="value_changed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MasterVolumeSlider" to="." method="_on_master_volume_slider_value_changed"]
[connection signal="drag_ended" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MusicVolSlider" to="." method="_on_music_vol_slider_drag_ended"]
[connection signal="value_changed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MusicVolSlider" to="." method="_on_music_vol_slider_value_changed"]
[connection signal="drag_ended" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider" to="." method="_on_sfx_vol_slider_drag_ended"]
[connection signal="value_changed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider" to="." method="_on_sfx_vol_slider_value_changed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimUpControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimUpControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimDownControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimDownControllerRemapButton" 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/AttackControllerRemapButton" to="Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/MarginContainer/Back Button" to="." method="_on_back_pressed"]
[connection signal="item_selected" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/DisplayModeOptions" to="." method="_on_display_mode_options_item_selected"]
[connection signal="toggled" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/VsyncButton" to="." method="_on_vsync_button_toggled"]
[connection signal="item_selected" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Video/ScrollView/MarginContainer/HBoxContainer/Item/ResolutionsOptions" to="." method="_on_resolutions_options_item_selected"]
[connection signal="drag_ended" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MasterVolumeSlider" to="." method="_on_master_volume_slider_drag_ended"]
[connection signal="value_changed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MasterVolumeSlider" to="." method="_on_master_volume_slider_value_changed"]
[connection signal="drag_ended" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MusicVolSlider" to="." method="_on_music_vol_slider_drag_ended"]
[connection signal="value_changed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/MusicVolSlider" to="." method="_on_music_vol_slider_value_changed"]
[connection signal="drag_ended" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider" to="." method="_on_sfx_vol_slider_drag_ended"]
[connection signal="value_changed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Audio/ScrollView/MarginContainer/HBoxContainer/Item/SFXVolSlider" to="." method="_on_sfx_vol_slider_value_changed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveUpControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveDownControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveLeftControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/MoveRightControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimUpControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimUpControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimDownControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimDownControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimLeftControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimLeftControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimRightControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AimRightControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackControllerRemapButton" to="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/AttackControllerRemapButton" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Panel/MarginContainer/VBoxContainer/SettingsTabs/Controls/ScrollView/MarginContainer/HBoxContainer/Item/ResetButton" to="Remap Controller" method="_on_reset_button_pressed"]
[connection signal="pressed" from="CanvasLayer/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="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"]
resource_name = "Idle"
tracks/0/type = "value"
@ -116,9 +111,11 @@ _data = {
"RESET": SubResource("Animation_mp212")
}
[sub_resource type="CircleShape2D" id="CircleShape2D_nil6g"]
radius = 11.0
[node name="Bunny" type="CharacterBody2D" node_paths=PackedStringArray("animation_player", "agent")]
collision_layer = 4
collision_mask = 15
script = ExtResource("1_1kj2b")
animation_player = NodePath("BunnyAnimator")
agent = NodePath("NavigationAgent")
@ -129,23 +126,13 @@ texture = ExtResource("2_v8p70")
hframes = 5
vframes = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_sedmr")
[node name="NavigationAgent" type="NavigationAgent2D" parent="."]
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="."]
libraries = {
"": SubResource("AnimationLibrary_uuf00")
}
[connection signal="body_entered" from="Area2D" to="." method="_on_collision"]
[connection signal="body_exited" from="Area2D" to="." method="_of_collision"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_nil6g")

75
Prefabs/pause_menu.tscn Normal file
View file

@ -0,0 +1,75 @@
[gd_scene load_steps=4 format=3 uid="uid://dtiav1qdm1p34"]
[ext_resource type="Script" path="res://Scripts/UI/PauseMenu.gd" id="1_cbyrt"]
[ext_resource type="PackedScene" uid="uid://btxarutbkchmb" path="res://Prefabs/Settings Menu.tscn" id="3_2e10l"]
[ext_resource type="Theme" uid="uid://b0b3fxesfrpb7" path="res://Assets/UI/Theme.tres" id="3_vxkyu"]
[node name="PauseMenu" type="Control" node_paths=PackedStringArray("default_focus")]
process_mode = 3
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_cbyrt")
settings_scene = ExtResource("3_2e10l")
default_focus = NodePath("CanvasLayer/VBoxContainer/CenterContainer/ResumeButton")
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.576471, 0.831373, 0.709804, 0.392157)
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer"]
custom_minimum_size = Vector2(500, 600)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("3_vxkyu")
theme_override_constants/separation = 10
alignment = 1
[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer/VBoxContainer"]
layout_mode = 2
[node name="ResumeButton" type="Button" parent="CanvasLayer/VBoxContainer/CenterContainer"]
custom_minimum_size = Vector2(500, 40)
layout_mode = 2
text = "Resume"
[node name="CenterContainer2" type="CenterContainer" parent="CanvasLayer/VBoxContainer"]
layout_mode = 2
[node name="MainMenuButton" type="Button" parent="CanvasLayer/VBoxContainer/CenterContainer2"]
custom_minimum_size = Vector2(500, 40)
layout_mode = 2
text = "Main Menu"
[node name="CenterContainer3" type="CenterContainer" parent="CanvasLayer/VBoxContainer"]
layout_mode = 2
[node name="SettingsButton" type="Button" parent="CanvasLayer/VBoxContainer/CenterContainer3"]
custom_minimum_size = Vector2(500, 40)
layout_mode = 2
text = "Settings Menu"
[node name="CenterContainer4" type="CenterContainer" parent="CanvasLayer/VBoxContainer"]
layout_mode = 2
[node name="QuitButton" type="Button" parent="CanvasLayer/VBoxContainer/CenterContainer4"]
custom_minimum_size = Vector2(500, 40)
layout_mode = 2
text = "Quit"
[connection signal="pressed" from="CanvasLayer/VBoxContainer/CenterContainer/ResumeButton" to="." method="_on_resume_button_pressed"]
[connection signal="pressed" from="CanvasLayer/VBoxContainer/CenterContainer2/MainMenuButton" to="." method="_on_main_menu_button_pressed"]
[connection signal="pressed" from="CanvasLayer/VBoxContainer/CenterContainer3/SettingsButton" to="." method="_on_settings_button_pressed"]
[connection signal="pressed" from="CanvasLayer/VBoxContainer/CenterContainer4/QuitButton" to="." method="_on_quit_button_pressed"]

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="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"]
radius = 8.57143
@ -11,6 +14,7 @@ height = 22.8571
collision_layer = 8
collision_mask = 5
script = ExtResource("1_os652")
audio_pool = [NodePath("Audio Sources/Audio1"), NodePath("Audio Sources/Audio2"), NodePath("Audio Sources/Audio3")]
map_collision_layer = 1
bunny_collision_layer = 4
@ -20,4 +24,19 @@ texture = ExtResource("2_ibs3t")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
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"]

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

@ -1,12 +1,12 @@
[gd_scene load_steps=17 format=3 uid="uid://c4btepmue6d7p"]
[gd_scene load_steps=17 format=3 uid="uid://cg4xag5jx65kg"]
[ext_resource type="TileSet" uid="uid://bj7uu2180mie3" path="res://Assets/Tileset.tres" id="1_38041"]
[ext_resource type="Script" path="res://Scripts/GameManager.gd" id="1_t708k"]
[ext_resource type="Script" path="res://Scripts/MapGenerator.gd" id="2_ope8r"]
[ext_resource type="Script" path="res://Scripts/EntitySystem/BunnyGenerator.gd" id="3_o045y"]
[ext_resource type="PackedScene" uid="uid://cpl4tllohhyel" path="res://Prefabs/bunny.tscn" id="4_hpafd"]
[ext_resource type="Script" path="res://Scripts/PlayerController.gd" id="5_d2cbj"]
[ext_resource type="Texture2D" uid="uid://ojlfqxj5bilo" path="res://Assets/Sprites/Jesus/jesus_spritesheet.png" id="6_p526i"]
[ext_resource type="Script" path="res://Scripts/Player.gd" id="6_q3xml"]
[ext_resource type="Script" path="res://Scripts/WeaponSystem/WeaponController.gd" id="7_mtrts"]
[ext_resource type="PackedScene" uid="uid://csxh42o8twxwn" path="res://Prefabs/projectile.tscn" id="8_fp1vx"]
@ -119,10 +119,11 @@ _data = {
"RESET": SubResource("Animation_o3hln")
}
[node name="GameManager" type="Node2D" node_paths=PackedStringArray("map_generator", "bunny_generator")]
[node name="GameManager" type="Node2D" node_paths=PackedStringArray("map_generator", "bunny_generator", "player")]
script = ExtResource("1_t708k")
map_generator = NodePath("Map Generator")
bunny_generator = NodePath("Bunny Generator")
player = NodePath("Player")
[node name="Map Generator" type="TileMap" parent="."]
scale = Vector2(1.5, 1.5)
@ -141,7 +142,7 @@ player = NodePath("../Player")
[node name="Player" type="CharacterBody2D" parent="." node_paths=PackedStringArray("animation_player")]
position = Vector2(1440, 810)
collision_layer = 0
script = ExtResource("5_d2cbj")
script = ExtResource("6_q3xml")
animation_player = NodePath("Player Animator")
[node name="Player Sprite" type="Sprite2D" parent="Player"]

View file

@ -1,11 +1,11 @@
[gd_scene load_steps=17 format=3 uid="uid://dkcl1ycmxpilw"]
[gd_scene load_steps=17 format=3]
[ext_resource type="Script" path="res://Scripts/GameManager.gd" id="1_1tmfd"]
[ext_resource type="TileSet" uid="uid://bj7uu2180mie3" path="res://Assets/Tileset.tres" id="2_bqk0y"]
[ext_resource type="Script" path="res://Scripts/MapGenerator.gd" id="3_n0wjg"]
[ext_resource type="Script" path="res://Scripts/EntitySystem/BunnyGenerator.gd" id="4_0by8r"]
[ext_resource type="PackedScene" uid="uid://cpl4tllohhyel" path="res://Prefabs/bunny.tscn" id="5_ghq1m"]
[ext_resource type="Script" path="res://Scripts/PlayerController.gd" id="6_o5qq4"]
[ext_resource type="Script" path="res://Scripts/Player.gd" id="6_o5qq4"]
[ext_resource type="Texture2D" uid="uid://ojlfqxj5bilo" path="res://Assets/Sprites/Jesus/jesus_spritesheet.png" id="7_we2bi"]
[ext_resource type="Script" path="res://Scripts/WeaponSystem/WeaponController.gd" id="8_p0li1"]
[ext_resource type="PackedScene" uid="uid://csxh42o8twxwn" path="res://Prefabs/projectile.tscn" id="9_k5fai"]

192
Scenes/GamePauseTest.tscn Normal file

File diff suppressed because one or more lines are too long

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

@ -1,9 +1,9 @@
[gd_scene load_steps=16 format=3 uid="uid://cukyb513fah1u"]
[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://cbfcolm6mjolp" 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="PackedScene" uid="uid://beio3828jo4ht" path="res://Scenes/GamePauseTest.tscn" id="2_63cnr"]
[ext_resource type="PackedScene" uid="uid://btxarutbkchmb" path="res://Prefabs/Settings Menu.tscn" id="3_r3r61"]
[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://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"]
@ -70,7 +70,7 @@ grow_vertical = 2
size_flags_horizontal = 6
size_flags_vertical = 3
script = ExtResource("1_qepq0")
game_scene = ExtResource("2_28004")
game_scene = ExtResource("2_63cnr")
settings_scene = ExtResource("3_r3r61")
default_focus = NodePath("VBoxContainer/MarginBox2/ButtonsVbox/PlayButton")
autostart_animations = Array[NodePath]([NodePath("Decorations/Left Decor/Jesus/AnimationPlayer"), NodePath("Decorations/Right Decor/GoodBunny/AnimationPlayer")])

View file

@ -1,12 +1,17 @@
[gd_scene load_steps=12 format=3 uid="uid://ccgpsim5nfxd6"]
[gd_scene load_steps=16 format=3]
[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"]
[ext_resource type="TileSet" uid="uid://bj7uu2180mie3" path="res://Assets/Tileset.tres" id="1_s4utw"]
[ext_resource type="Script" path="res://Scripts/MapGenerator.gd" id="2_yhpwh"]
[ext_resource type="Script" path="res://Scripts/EntitySystem/BunnyGenerator.gd" id="3_dvklj"]
[ext_resource type="PackedScene" uid="uid://cpl4tllohhyel" path="res://Prefabs/bunny.tscn" id="4_0fyd5"]
[ext_resource type="Script" path="res://Scripts/Player.gd" id="5_uv7bh"]
[ext_resource type="Texture2D" uid="uid://ojlfqxj5bilo" path="res://Assets/Sprites/Jesus/jesus_spritesheet.png" id="6_es2l8"]
[ext_resource type="Script" path="res://Scripts/WeaponSystem/WeaponController.gd" id="7_8kdie"]
[ext_resource type="PackedScene" uid="uid://csxh42o8twxwn" path="res://Prefabs/projectile.tscn" id="8_wx0kk"]
[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
@ -31,10 +36,10 @@ 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),
"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]
"values": [0, 1, 2, 3, 4, 5, 6, 7]
}
[sub_resource type="Animation" id="Animation_2jvl5"]
@ -48,10 +53,10 @@ 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),
"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": [12, 13, 14, 15]
"values": [24, 25, 26, 27, 28, 29, 30, 31]
}
[sub_resource type="Animation" id="Animation_4ig1u"]
@ -65,10 +70,10 @@ 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),
"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": [4, 5, 6, 7]
"values": [8, 9, 10, 11, 12, 13, 14, 15]
}
[sub_resource type="Animation" id="Animation_pswkh"]
@ -82,10 +87,10 @@ 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),
"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]
"values": [16, 17, 18, 19, 20, 21, 22, 23]
}
[sub_resource type="Animation" id="Animation_o3hln"]
@ -116,32 +121,37 @@ _data = {
[node name="Player Movement" type="Node2D"]
[node name="Map Generator" type="TileMap" parent="."]
tile_set = ExtResource("1_wkp62")
scale = Vector2(1.5, 1.5)
tile_set = ExtResource("1_s4utw")
cell_quadrant_size = 32
collision_visibility_mode = 1
format = 2
script = ExtResource("4_8st0q")
start_area_size = 3
start_area_corner_size = 1
script = ExtResource("2_yhpwh")
start_area_corner_size = 3
[node name="Bunny Generator" type="Node" parent="." node_paths=PackedStringArray("player")]
script = ExtResource("3_dvklj")
bunny_prefab = ExtResource("4_0fyd5")
player = NodePath("../Player")
[node name="Player" type="CharacterBody2D" parent="." node_paths=PackedStringArray("animation_player")]
position = Vector2(960, 512)
scale = Vector2(0.5, 0.5)
position = Vector2(1440, 810)
collision_layer = 0
script = ExtResource("1_x3102")
script = ExtResource("5_uv7bh")
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
texture = ExtResource("6_es2l8")
hframes = 8
vframes = 4
[node name="Player Collider" type="CollisionPolygon2D" parent="Player"]
position = Vector2(2, -24)
polygon = PackedVector2Array(12, 32, -16, 32, -16, -24, 12, -24)
[node name="Player Camera" type="Camera2D" parent="Player"]
position = Vector2(-1, -25)
zoom = Vector2(3, 3)
position_smoothing_enabled = true
drag_horizontal_enabled = true
@ -152,3 +162,8 @@ editor_draw_drag_margin = true
libraries = {
"": SubResource("AnimationLibrary_bi1h3")
}
[node name="WeaponController" type="Node2D" parent="Player"]
position = Vector2(0, -16)
script = ExtResource("7_8kdie")
projectile_prefab = ExtResource("8_wx0kk")

View file

@ -2,60 +2,96 @@ extends CharacterBody2D
class_name Bunny
@export var animation_player : AnimationPlayer
@export var min_distance_to_player := 80.0
@export var max_distance_to_player := 800.0
@export var min_distance_to_player := 10.0
@export var max_distance_to_player := 500.0
@export var agent : NavigationAgent2D
@export var speed := 100.0
@export var speed := 3.0
var health : int
var damage : int
var attack_speed : float
var time_since_last_attack : float
var team : int
var player : Node2D
var target : Node2D
var on_death_callbacks : Array
var move_velocity : Vector2
var next_location : Vector2
var randomized_next_location : Vector2
var dir : Vector2
var spread_time : float
var current_time : float
var collisions : int
var time_since_got_player := 100.0
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():
seed(int(str(self)))
spread_time = randf() * 2 + 0.1
current_time = spread_time
pass
func _physics_process(delta):
current_time -= delta
if player != null and self.global_position.distance_to(player.global_position) < max_distance_to_player and collisions <= 3:
if current_time <= 0:
current_time = spread_time
agent.target_position = player.global_position
if min_distance_to_player and agent.is_target_reachable():
var next_location = agent.get_next_path_position() + Vector2(randf() - 0.5 * 2, randf() - 0.5 * 2)
dir = self.global_position.direction_to(next_location).normalized()
if self.global_position.distance_to(player.global_position) > min_distance_to_player:
self.velocity = dir * delta * 60 * speed
update_animation()
if delta > 0.5:
print(delta)
move_and_slide()
func _physics_process(delta : float):
if target == null: return
randomize()
if abs(target.velocity.length() - last_player_velocity) > 100.0:
time_since_got_player = max_pos_check_time
if time_since_got_player >= max_pos_check_time and target.velocity.length() > 0.1:
time_since_got_player = randf() * max_pos_check_time * 0.5
update_target_pos()
if time_since_got_player >= max_pos_check_time * max_pos_check_time_inactive_scalar and target.velocity.length() < 0.1:
time_since_got_player = -(randf() * max_pos_check_time * 0.5)
update_target_pos()
if self.global_position.distance_to(target.global_position) < max_distance_to_player and time_since_got_move_location > max_get_move_location_time:
time_since_got_move_location = 0
if agent.is_target_reachable():
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(target.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:
animation_player.stop()
move_and_collide(move_velocity)
else:
animation_player.stop()
update_attack(delta)
time_since_got_player += delta
time_since_got_move_location += delta
time_since_last_attack += delta
last_player_velocity = target.velocity.length()
last_target_position = agent.target_position
pass
func _on_collision(body):
if body != self: collisions += 1
func update_attack(delta : float):
if time_since_last_attack >= attack_speed:
time_since_last_attack = 0
target.damage(damage)
pass
func update_target_pos():
agent.target_position = Vector2(target.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
func damage(damage_amount : int):
func take_damage(damage_amount : int):
health -= damage_amount
if(health <= 0): on_death()
pass
func heal(health_amount : int):
func get_heal(health_amount : int):
self.health += health_amount
pass
@ -69,13 +105,13 @@ func sub_on_death(callback : Callable):
pass
func update_animation():
match self.velocity:
match self.move_velocity:
Vector2.ZERO: animation_player.play("Idle")
_:
var left_dot = Vector2.LEFT.dot(self.velocity)
var right_dot = Vector2.RIGHT.dot(self.velocity)
var up_dot = Vector2.UP.dot(self.velocity)
var down_dot = Vector2.DOWN.dot(self.velocity)
var left_dot = Vector2.LEFT.dot(self.move_velocity)
var right_dot = Vector2.RIGHT.dot(self.move_velocity)
var up_dot = Vector2.UP.dot(self.move_velocity)
var down_dot = Vector2.DOWN.dot(self.move_velocity)
var max_dot = maxf(left_dot, maxf(right_dot, maxf(up_dot, down_dot)))
match max_dot:

View file

@ -6,16 +6,17 @@ class_name BunnyGenerator
@export var player_save_distance : float = 400
@onready var BunnyPrefab : PackedScene = load(bunny_prefab.resource_path)
func spawn_bunny(pos : Vector2, team : int, health : int) -> Bunny:
func spawn_bunny(pos : Vector2, team : int, health : int, damage : int, attack_speed : float) -> Bunny:
var bunny = BunnyPrefab.instantiate()
self.add_child(bunny)
bunny.global_position = pos
bunny.health = health
bunny.damage = damage
bunny.attack_speed = attack_speed
bunny.team = team
bunny.player = player
return bunny
func spawn_wave(free_tiles : Array, team: int, amount : int, health : int) -> Array:
func spawn_wave(free_tiles : Array, team: int, amount : int, health : int, damage : int, attack_speed : float) -> Array:
var bunnys = []
# Make Sure that no possitions to near to the player are insdie of the list
@ -27,19 +28,19 @@ func spawn_wave(free_tiles : Array, team: int, amount : int, health : int) -> Ar
for i in amount:
var pos = free_tiles.pick_random()
free_tiles.erase(pos)
var bunny = spawn_bunny(pos, team, health)
var bunny = spawn_bunny(pos, team, health, damage, attack_speed)
bunnys.push_back(bunny)
return bunnys
func spawn_batched_wave(batch_size : float, batch_delay: float, free_tiles : Array, team: int, amount : int, health : int) -> Array:
func spawn_batched_wave(batch_size : float, batch_delay: float, free_tiles : Array, team: int, amount : int, health : int, damage : int, attack_speed : float) -> Array:
var bunnys = []
var batch_count = ceil(amount / batch_size)
var actual_batch_size = floor(amount / batch_count)
var last_batch_size = amount - batch_size * batch_count
for s in batch_count:
bunnys += spawn_wave(free_tiles.duplicate(), team, actual_batch_size, health)
bunnys += spawn_wave(free_tiles.duplicate(), team, actual_batch_size, health, damage, attack_speed)
await get_tree().create_timer(batch_delay).timeout
bunnys += spawn_wave(free_tiles.duplicate(), team, last_batch_size, health)
bunnys += spawn_wave(free_tiles.duplicate(), team, last_batch_size, health, damage, attack_speed)
await get_tree().create_timer(batch_delay).timeout
return bunnys

View file

@ -2,6 +2,7 @@ extends Node2D
@export var map_generator : Node
@export var bunny_generator : Node
@export var player : Node
var bunnys = []
var gen_data : Dictionary
@ -17,9 +18,17 @@ func _process(_delta):
if bunnys.size() == 0 and !in_wave_gen:
in_wave_gen = true
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, 1, 5.0)
for bunny in bunnys:
bunny.sub_on_death(func(bunny): bunnys.erase(bunny))
bunny.target = get_enemy_target(bunny.team)
bunny.sub_on_death(func(bunny): bunny.queue_free())
in_wave_gen = false
pass
func get_enemy_target(own_team : int) -> Node:
match own_team:
TEAM.EVIL: return player
TEAM.GOOD: return null
_: return null
pass

View file

@ -1,7 +1,8 @@
extends CharacterBody2D
@export var speed = 200
@export_range(0, 1) var damping_factor = 0.6
@export var speed := 200.0
@export var health := 100
@export_range(0, 1) var damping_factor := 0.6
@export var animation_player : AnimationPlayer
func _physics_process(delta : float):
@ -42,3 +43,9 @@ func update_player_animation():
up_dot: animation_player.play("MoveUp")
down_dot: animation_player.play("MoveDown")
pass
func damage(amount : int):
health -= amount
if(health <= 0): print("Player Dead")
pass

View file

@ -2,6 +2,30 @@ extends Node
const SAVE_FILE : String = "user://SAVEFILE.save"
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():
load_data()
@ -9,28 +33,7 @@ func _ready():
func load_data():
var file = FileAccess.open(SAVE_FILE, FileAccess.READ)
if file == null:
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",
}
game_data = default_game_data
save_data()
else:
game_data = file.get_var()

View file

@ -81,10 +81,38 @@ func update_sfx_volume(vol : int) -> void:
# Controls
func set_controls_from_save_file() -> void:
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):
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
match str(binding)[0]:
"m":

View file

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

38
Scripts/UI/MenuButton.gd Normal file
View file

@ -0,0 +1,38 @@
extends TextureButton
@export var text : String = "Sample Text"
@export var pointer_margin_from_center : int = 100
@export var leftPointer : Sprite2D
@export var rightPointer : Sprite2D
@export var textBox : RichTextLabel
# Engine Callbacks
func _ready():
textBox.parse_bbcode("[center] %s [/center]" % [text])
pass
func _process(_delta):
handle_hover_and_focus()
handle_x_position()
func handle_hover_and_focus() -> void:
if has_focus():
leftPointer.visible = true
rightPointer.visible = true
elif is_hovered():
leftPointer.visible = true
leftPointer.modulate.a = 0.5
rightPointer.visible = true
rightPointer.modulate.a = 0.5
else:
leftPointer.visible = false
leftPointer.modulate.a = 1
rightPointer.visible = false
rightPointer.modulate.a = 1
pass
func handle_x_position() -> void:
var center_x = get_parent().position.x + (get_parent().size.x / 2.0)
leftPointer.global_position.x = center_x - pointer_margin_from_center
rightPointer.global_position.x = center_x + pointer_margin_from_center
pass

41
Scripts/UI/PauseMenu.gd Normal file
View file

@ -0,0 +1,41 @@
extends Control
@export var menu_scene : String = "res://Scenes/Main Menu.tscn"
@export var settings_scene : Resource
@export var default_focus : Button
func _ready():
for child in get_children():
child.visible = false
pass
func _input(event):
if (event.is_action_pressed("ui_cancel")):
if get_tree().paused: default_focus.grab_focus()
get_tree().paused = !get_tree().paused
for child in get_children():
child.visible = get_tree().paused
pass
func _on_resume_button_pressed():
get_tree().paused = false
for child in get_children():
child.visible = false
pass
func _on_settings_button_pressed():
var settings_scene_instance = load(settings_scene.resource_path).instantiate()
settings_scene_instance.on_back = Callable(func(): default_focus.grab_focus())
get_tree().current_scene.add_child(settings_scene_instance)
pass
func _on_quit_button_pressed():
get_tree().quit()
pass
func _on_main_menu_button_pressed():
get_tree().paused = false
load(menu_scene)
get_tree().change_scene_to_file(menu_scene)
pass

View file

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

View file

@ -2,6 +2,7 @@ extends Control
class_name RemapController
@export var min_time_between_remaps := 0.4
@export var remap_buttons_holder : VBoxContainer
var remap_button : Button
var remap_action : String
@ -52,14 +53,14 @@ func start_remap(button : Button, action : String):
func remap_key(event):
match str(event.get_class()):
"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":
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":
Save.game_data["%s" % [remap_action]] = "m" + str(event.button_index)
Save.game_data.controls["%s" % [remap_action]] = "m" + str(event.button_index)
"InputEventKey":
Save.game_data["%s" % [remap_action]] = event.keycode
Save.game_data.controls["%s" % [remap_action]] = event.keycode
set_process_unhandled_key_input(false)
for key in InputMap.action_get_events(remap_action):
InputMap.action_erase_event(remap_action, key)
@ -70,3 +71,10 @@ func remap_key(event):
time_since_remap = 0
remap_button = null
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 damage : int = 1
@export var audio_pool := []
@export_flags_2d_physics var map_collision_layer : int
@export_flags_2d_physics var bunny_collision_layer : int
var dir : float
func _ready():
get_node(audio_pool[randi_range(0, 2)]).play()
pass
func _process(delta):
self.translate(Vector2(cos(dir), sin(dir)) * speed * delta)
self.rotate(delta * 30)
@ -25,6 +30,7 @@ func _on_collision(body):
queue_free()
if collided_layer & bunny_collision_layer:
var bunny = body as Bunny
bunny.damage(damage)
bunny.take_damage(damage)
queue_free()
pass

View file

@ -11,7 +11,7 @@ config_version=5
[application]
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/icon="res://icon.svg"
@ -26,8 +26,8 @@ Save="*res://Scripts/SaveSystem/GameDataSaver.gd"
[display]
window/size/viewport_width=640
window/size/viewport_height=1000
window/size/viewport_width=1280
window/size/viewport_height=800
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"
@ -187,6 +187,7 @@ ui_tab_right={
2d_physics/layer_3="Bunny"
2d_physics/layer_4="Projectile"
2d_physics/layer_5="Layer 5"
2d_navigation/layer_5="Map Solid"
2d_physics/layer_7="bunny_check"
[rendering]