diff --git a/CREDITS.md b/CREDITS.md index 7a8529b..f429c00 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,3 +1,14 @@ +# Tools + +## rFXGen ZERO + +Used to create simple retro sound effects in the game. + +**URL:** https://raylibtech.itch.io/rfxgen +**Author:** raylib technologies +**License:** zlib License + + # Assets ## Heartbit Font @@ -9,3 +20,11 @@ > You'll need to pay the suggested price for commercial projects. **Notes:** Modified `1` and `V` characters. + +## 32x32 Firearm Pack + +**URL:** https://ma9ici4n.itch.io/ma9ici4nweaponpack +**Author:** ma9ici4n +**License:** Custom +> You can download and use this pack anywhere you want without crediting me. +> However credit is still appreciated. Do not redistribute this under your own name. diff --git a/gfx/guns/AK47.png b/gfx/guns/AK47.png new file mode 100644 index 0000000..9ada23b Binary files /dev/null and b/gfx/guns/AK47.png differ diff --git a/gfx/guns/AK47.png.import b/gfx/guns/AK47.png.import new file mode 100644 index 0000000..a5ce4a4 --- /dev/null +++ b/gfx/guns/AK47.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/AK47.png-b3a2177e704ef07670dcc3fbcf5fe2b5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/AK47.png" +dest_files=[ "res://.import/AK47.png-b3a2177e704ef07670dcc3fbcf5fe2b5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/Blunderbuss.png b/gfx/guns/Blunderbuss.png new file mode 100644 index 0000000..a9dd5a1 Binary files /dev/null and b/gfx/guns/Blunderbuss.png differ diff --git a/gfx/guns/Blunderbuss.png.import b/gfx/guns/Blunderbuss.png.import new file mode 100644 index 0000000..8970a3f --- /dev/null +++ b/gfx/guns/Blunderbuss.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Blunderbuss.png-f9541a9afbcc7503436ddb33d87600bd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/Blunderbuss.png" +dest_files=[ "res://.import/Blunderbuss.png-f9541a9afbcc7503436ddb33d87600bd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/BowArrow.png b/gfx/guns/BowArrow.png new file mode 100644 index 0000000..9bd7857 Binary files /dev/null and b/gfx/guns/BowArrow.png differ diff --git a/gfx/guns/BowArrow.png.import b/gfx/guns/BowArrow.png.import new file mode 100644 index 0000000..12f574f --- /dev/null +++ b/gfx/guns/BowArrow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BowArrow.png-6b5dd8d866365f0485866a478b6a0cd1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/BowArrow.png" +dest_files=[ "res://.import/BowArrow.png-6b5dd8d866365f0485866a478b6a0cd1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/ColtSingleActionArmy.png b/gfx/guns/ColtSingleActionArmy.png new file mode 100644 index 0000000..e67762a Binary files /dev/null and b/gfx/guns/ColtSingleActionArmy.png differ diff --git a/gfx/guns/ColtSingleActionArmy.png.import b/gfx/guns/ColtSingleActionArmy.png.import new file mode 100644 index 0000000..b78d113 --- /dev/null +++ b/gfx/guns/ColtSingleActionArmy.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ColtSingleActionArmy.png-4ffeb11f8b9db175b4a4529b4533c26c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/ColtSingleActionArmy.png" +dest_files=[ "res://.import/ColtSingleActionArmy.png-4ffeb11f8b9db175b4a4529b4533c26c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/Derringer.png b/gfx/guns/Derringer.png new file mode 100644 index 0000000..c705da4 Binary files /dev/null and b/gfx/guns/Derringer.png differ diff --git a/gfx/guns/Derringer.png.import b/gfx/guns/Derringer.png.import new file mode 100644 index 0000000..57f2b2e --- /dev/null +++ b/gfx/guns/Derringer.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Derringer.png-43093e7c64541e63c047f9a45f88d5c6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/Derringer.png" +dest_files=[ "res://.import/Derringer.png-43093e7c64541e63c047f9a45f88d5c6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/DoubleBarrel.png b/gfx/guns/DoubleBarrel.png new file mode 100644 index 0000000..9926ad8 Binary files /dev/null and b/gfx/guns/DoubleBarrel.png differ diff --git a/gfx/guns/DoubleBarrel.png.import b/gfx/guns/DoubleBarrel.png.import new file mode 100644 index 0000000..78ae5b1 --- /dev/null +++ b/gfx/guns/DoubleBarrel.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/DoubleBarrel.png-0d2a0a5877ea0832296b59ab69073d32.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/DoubleBarrel.png" +dest_files=[ "res://.import/DoubleBarrel.png-0d2a0a5877ea0832296b59ab69073d32.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/FNScar.png b/gfx/guns/FNScar.png new file mode 100644 index 0000000..da94c56 Binary files /dev/null and b/gfx/guns/FNScar.png differ diff --git a/gfx/guns/FNScar.png.import b/gfx/guns/FNScar.png.import new file mode 100644 index 0000000..80087dd --- /dev/null +++ b/gfx/guns/FNScar.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/FNScar.png-6b3a68f387ec6ab89122d03cf241a16f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/FNScar.png" +dest_files=[ "res://.import/FNScar.png-6b3a68f387ec6ab89122d03cf241a16f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/LaserPistol.png b/gfx/guns/LaserPistol.png new file mode 100644 index 0000000..64ad89b Binary files /dev/null and b/gfx/guns/LaserPistol.png differ diff --git a/gfx/guns/LaserPistol.png.import b/gfx/guns/LaserPistol.png.import new file mode 100644 index 0000000..ab1887f --- /dev/null +++ b/gfx/guns/LaserPistol.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/LaserPistol.png-5913c4141046557751080b5a6a4dcbb9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/LaserPistol.png" +dest_files=[ "res://.import/LaserPistol.png-5913c4141046557751080b5a6a4dcbb9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/M1911.png b/gfx/guns/M1911.png new file mode 100644 index 0000000..f8d6e35 Binary files /dev/null and b/gfx/guns/M1911.png differ diff --git a/gfx/guns/M1911.png.import b/gfx/guns/M1911.png.import new file mode 100644 index 0000000..d8bbdfd --- /dev/null +++ b/gfx/guns/M1911.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/M1911.png-fb90f2bf6081ebaaa4570e1f13d26084.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/M1911.png" +dest_files=[ "res://.import/M1911.png-fb90f2bf6081ebaaa4570e1f13d26084.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/M1Garand.png b/gfx/guns/M1Garand.png new file mode 100644 index 0000000..a3223e7 Binary files /dev/null and b/gfx/guns/M1Garand.png differ diff --git a/gfx/guns/M1Garand.png.import b/gfx/guns/M1Garand.png.import new file mode 100644 index 0000000..5c0e27f --- /dev/null +++ b/gfx/guns/M1Garand.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/M1Garand.png-8ea72bda0579460c0ab21455199ddf51.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/M1Garand.png" +dest_files=[ "res://.import/M1Garand.png-8ea72bda0579460c0ab21455199ddf51.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/MP40.png b/gfx/guns/MP40.png new file mode 100644 index 0000000..a1f117f Binary files /dev/null and b/gfx/guns/MP40.png differ diff --git a/gfx/guns/MP40.png.import b/gfx/guns/MP40.png.import new file mode 100644 index 0000000..e218789 --- /dev/null +++ b/gfx/guns/MP40.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/MP40.png-541ce9f02220339ddd77f7c18bfb102c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/MP40.png" +dest_files=[ "res://.import/MP40.png-541ce9f02220339ddd77f7c18bfb102c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/MauserC96.png b/gfx/guns/MauserC96.png new file mode 100644 index 0000000..5b8b69e Binary files /dev/null and b/gfx/guns/MauserC96.png differ diff --git a/gfx/guns/MauserC96.png.import b/gfx/guns/MauserC96.png.import new file mode 100644 index 0000000..e2938d8 --- /dev/null +++ b/gfx/guns/MauserC96.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/MauserC96.png-e3f26ff256559f76cbf4380e8c78de28.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/MauserC96.png" +dest_files=[ "res://.import/MauserC96.png-e3f26ff256559f76cbf4380e8c78de28.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/MoneyLauncher.png b/gfx/guns/MoneyLauncher.png new file mode 100644 index 0000000..2221b6a Binary files /dev/null and b/gfx/guns/MoneyLauncher.png differ diff --git a/gfx/guns/MoneyLauncher.png.import b/gfx/guns/MoneyLauncher.png.import new file mode 100644 index 0000000..a6df972 --- /dev/null +++ b/gfx/guns/MoneyLauncher.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/MoneyLauncher.png-38558cda7f759b8a828a02520ae7fa9d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/MoneyLauncher.png" +dest_files=[ "res://.import/MoneyLauncher.png-38558cda7f759b8a828a02520ae7fa9d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/P90.png b/gfx/guns/P90.png new file mode 100644 index 0000000..aa829b8 Binary files /dev/null and b/gfx/guns/P90.png differ diff --git a/gfx/guns/P90.png.import b/gfx/guns/P90.png.import new file mode 100644 index 0000000..89ad7ae --- /dev/null +++ b/gfx/guns/P90.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/P90.png-b84ced4c3b84daba88bcb46f3f2fb629.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/P90.png" +dest_files=[ "res://.import/P90.png-b84ced4c3b84daba88bcb46f3f2fb629.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/PlasmaBlaster.png b/gfx/guns/PlasmaBlaster.png new file mode 100644 index 0000000..83c8431 Binary files /dev/null and b/gfx/guns/PlasmaBlaster.png differ diff --git a/gfx/guns/PlasmaBlaster.png.import b/gfx/guns/PlasmaBlaster.png.import new file mode 100644 index 0000000..f5a71fd --- /dev/null +++ b/gfx/guns/PlasmaBlaster.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/PlasmaBlaster.png-662106c2dd5c775f0121fd667460ead0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/PlasmaBlaster.png" +dest_files=[ "res://.import/PlasmaBlaster.png-662106c2dd5c775f0121fd667460ead0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/RocketLauncher.png b/gfx/guns/RocketLauncher.png new file mode 100644 index 0000000..da8057c Binary files /dev/null and b/gfx/guns/RocketLauncher.png differ diff --git a/gfx/guns/RocketLauncher.png.import b/gfx/guns/RocketLauncher.png.import new file mode 100644 index 0000000..12e9505 --- /dev/null +++ b/gfx/guns/RocketLauncher.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/RocketLauncher.png-fa5fe47507c4a5106da9783313b29ce2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/RocketLauncher.png" +dest_files=[ "res://.import/RocketLauncher.png-fa5fe47507c4a5106da9783313b29ce2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/Sawed-OffWinchester1897.png b/gfx/guns/Sawed-OffWinchester1897.png new file mode 100644 index 0000000..5dbfc8f Binary files /dev/null and b/gfx/guns/Sawed-OffWinchester1897.png differ diff --git a/gfx/guns/Sawed-OffWinchester1897.png.import b/gfx/guns/Sawed-OffWinchester1897.png.import new file mode 100644 index 0000000..7eb6b1a --- /dev/null +++ b/gfx/guns/Sawed-OffWinchester1897.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Sawed-OffWinchester1897.png-1828856c6c85c4c85f9f239d881cc72a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/Sawed-OffWinchester1897.png" +dest_files=[ "res://.import/Sawed-OffWinchester1897.png-1828856c6c85c4c85f9f239d881cc72a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/SuperSoaker.png b/gfx/guns/SuperSoaker.png new file mode 100644 index 0000000..8450818 Binary files /dev/null and b/gfx/guns/SuperSoaker.png differ diff --git a/gfx/guns/SuperSoaker.png.import b/gfx/guns/SuperSoaker.png.import new file mode 100644 index 0000000..4609483 --- /dev/null +++ b/gfx/guns/SuperSoaker.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/SuperSoaker.png-ad26a5aee73722ca7f641ac2f8616b8a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/SuperSoaker.png" +dest_files=[ "res://.import/SuperSoaker.png-ad26a5aee73722ca7f641ac2f8616b8a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/ThombsonSMG.png b/gfx/guns/ThombsonSMG.png new file mode 100644 index 0000000..e12fa1d Binary files /dev/null and b/gfx/guns/ThombsonSMG.png differ diff --git a/gfx/guns/ThombsonSMG.png.import b/gfx/guns/ThombsonSMG.png.import new file mode 100644 index 0000000..676862c --- /dev/null +++ b/gfx/guns/ThombsonSMG.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ThombsonSMG.png-3e71e65b4033797b49413ad61792d18e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/ThombsonSMG.png" +dest_files=[ "res://.import/ThombsonSMG.png-3e71e65b4033797b49413ad61792d18e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/Uzi.png b/gfx/guns/Uzi.png new file mode 100644 index 0000000..c9fa52c Binary files /dev/null and b/gfx/guns/Uzi.png differ diff --git a/gfx/guns/Uzi.png.import b/gfx/guns/Uzi.png.import new file mode 100644 index 0000000..3dc3ab6 --- /dev/null +++ b/gfx/guns/Uzi.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Uzi.png-1c37865966347d689e7d0d5728dc5079.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/Uzi.png" +dest_files=[ "res://.import/Uzi.png-1c37865966347d689e7d0d5728dc5079.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/WaltherP38.png b/gfx/guns/WaltherP38.png new file mode 100644 index 0000000..d2ce5ad Binary files /dev/null and b/gfx/guns/WaltherP38.png differ diff --git a/gfx/guns/WaltherP38.png.import b/gfx/guns/WaltherP38.png.import new file mode 100644 index 0000000..9cd5612 --- /dev/null +++ b/gfx/guns/WaltherP38.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/WaltherP38.png-c8185be1b2a1769c60b86322c1f29049.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/WaltherP38.png" +dest_files=[ "res://.import/WaltherP38.png-c8185be1b2a1769c60b86322c1f29049.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/Winchester1873.png b/gfx/guns/Winchester1873.png new file mode 100644 index 0000000..474b7e4 Binary files /dev/null and b/gfx/guns/Winchester1873.png differ diff --git a/gfx/guns/Winchester1873.png.import b/gfx/guns/Winchester1873.png.import new file mode 100644 index 0000000..f7c4231 --- /dev/null +++ b/gfx/guns/Winchester1873.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Winchester1873.png-1b4ec1d71f56d7af98fb910a51fa5323.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/Winchester1873.png" +dest_files=[ "res://.import/Winchester1873.png-1b4ec1d71f56d7af98fb910a51fa5323.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/gfx/guns/Winchester1897.png b/gfx/guns/Winchester1897.png new file mode 100644 index 0000000..d76038a Binary files /dev/null and b/gfx/guns/Winchester1897.png differ diff --git a/gfx/guns/Winchester1897.png.import b/gfx/guns/Winchester1897.png.import new file mode 100644 index 0000000..f09924c --- /dev/null +++ b/gfx/guns/Winchester1897.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Winchester1897.png-a4adb39ab0537aef28a489a5a9e49483.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gfx/guns/Winchester1897.png" +dest_files=[ "res://.import/Winchester1897.png-a4adb39ab0537aef28a489a5a9e49483.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/scene/ClientScene.tscn b/scene/ClientScene.tscn index 156907d..f7c9650 100644 --- a/scene/ClientScene.tscn +++ b/scene/ClientScene.tscn @@ -47,9 +47,9 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -margin_left = -36.0 +margin_left = -29.0 margin_top = -16.0 -margin_right = 36.0 +margin_right = 29.0 margin_bottom = 16.0 theme = ExtResource( 10 ) align = 1 diff --git a/scene/Player.tscn b/scene/Player.tscn index c65acd6..b636579 100644 --- a/scene/Player.tscn +++ b/scene/Player.tscn @@ -1,10 +1,21 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=18 format=2] [ext_resource path="res://ui_theme.tres" type="Theme" id=1] [ext_resource path="res://gfx/player.png" type="Texture" id=2] [ext_resource path="res://src/Objects/Player.cs" type="Script" id=3] -[ext_resource path="res://src/CreativeBuilding.cs" type="Script" id=4] +[ext_resource path="res://src/Items/CreativeBuilding.cs" type="Script" id=4] +[ext_resource path="res://src/Items/Items.cs" type="Script" id=5] [ext_resource path="res://gfx/block.png" type="Texture" id=6] +[ext_resource path="res://gfx/guns/ColtSingleActionArmy.png" type="Texture" id=7] +[ext_resource path="res://src/Items/Weapon.cs" type="Script" id=8] +[ext_resource path="res://gfx/guns/DoubleBarrel.png" type="Texture" id=9] +[ext_resource path="res://gfx/guns/SuperSoaker.png" type="Texture" id=10] +[ext_resource path="res://gfx/guns/M1Garand.png" type="Texture" id=11] +[ext_resource path="res://gfx/guns/FNScar.png" type="Texture" id=12] +[ext_resource path="res://sfx/shotgun.wav" type="AudioStream" id=13] +[ext_resource path="res://sfx/revolver.wav" type="AudioStream" id=14] +[ext_resource path="res://sfx/rifle.wav" type="AudioStream" id=15] +[ext_resource path="res://sfx/assault_rifle.wav" type="AudioStream" id=16] [sub_resource type="CircleShape2D" id=1] radius = 8.0 @@ -40,6 +51,8 @@ z_index = -5 texture = ExtResource( 2 ) [node name="Items" type="Node2D" parent="."] +script = ExtResource( 5 ) +DefaultItemPath = NodePath("Creative Building") [node name="Creative Building" type="Node2D" parent="Items"] visible = false @@ -48,3 +61,89 @@ script = ExtResource( 4 ) [node name="Icon" type="Sprite" parent="Items/Creative Building"] visible = false texture = ExtResource( 6 ) + +[node name="Revolver" type="Sprite" parent="Items"] +visible = false +texture = ExtResource( 7 ) +offset = Vector2( 8, 0 ) +script = ExtResource( 8 ) +Spread = 3.0 +SpreadIncrease = 1.0 +RecoilMin = 3.0 +RecoilMax = 5.0 +RecoilRegen = 16.0 + +[node name="Tip" type="Node2D" parent="Items/Revolver"] +position = Vector2( 15, -2.5 ) + +[node name="Fire" type="AudioStreamPlayer2D" parent="Items/Revolver"] +stream = ExtResource( 14 ) +attenuation = 1.0 + +[node name="Shotgun" type="Sprite" parent="Items"] +visible = false +texture = ExtResource( 9 ) +offset = Vector2( 8, 0 ) +script = ExtResource( 8 ) +EffectiveRange = 240 +MaximumRange = 360 +Spread = 14.0 +SpreadIncrease = 20.0 +SpreadRegen = 16.0 +RecoilMin = 6.0 +RecoilMax = 12.0 +RecoilRegen = 8.0 + +[node name="Tip" type="Node2D" parent="Items/Shotgun"] +position = Vector2( 22, -1.5 ) + +[node name="Fire" type="AudioStreamPlayer2D" parent="Items/Shotgun"] +stream = ExtResource( 13 ) +attenuation = 1.0 + +[node name="Rifle" type="Sprite" parent="Items"] +visible = false +texture = ExtResource( 11 ) +offset = Vector2( 8, 0 ) +script = ExtResource( 8 ) +EffectiveRange = 480 +MaximumRange = 920 +SpreadIncrease = 2.0 +SpreadRegen = 2.0 +RecoilMin = 8.0 +RecoilMax = 8.0 +RecoilRegen = 8.0 + +[node name="Tip" type="Node2D" parent="Items/Rifle"] +position = Vector2( 24, -1.5 ) + +[node name="Fire" type="AudioStreamPlayer2D" parent="Items/Rifle"] +stream = ExtResource( 15 ) +attenuation = 1.0 + +[node name="Assault Rifle" type="Sprite" parent="Items"] +visible = false +texture = ExtResource( 12 ) +offset = Vector2( 8, 0 ) +script = ExtResource( 8 ) +Spread = 1.0 +SpreadIncrease = 1.2 +SpreadRegen = 5.0 +RecoilMin = 1.0 +RecoilMax = 2.5 + +[node name="Tip" type="Node2D" parent="Items/Assault Rifle"] +position = Vector2( 22, -1.5 ) + +[node name="Fire" type="AudioStreamPlayer2D" parent="Items/Assault Rifle"] +stream = ExtResource( 16 ) +attenuation = 1.0 + +[node name="Super Soaker" type="Sprite" parent="Items"] +visible = false +texture = ExtResource( 10 ) +offset = Vector2( 8, 0 ) +script = ExtResource( 8 ) + +[node name="Tip" type="Node2D" parent="Items/Super Soaker"] +position = Vector2( 17, 0.5 ) diff --git a/sfx/assault_rifle.rfx b/sfx/assault_rifle.rfx new file mode 100644 index 0000000..357ace5 Binary files /dev/null and b/sfx/assault_rifle.rfx differ diff --git a/sfx/assault_rifle.wav b/sfx/assault_rifle.wav new file mode 100644 index 0000000..8dcd85c Binary files /dev/null and b/sfx/assault_rifle.wav differ diff --git a/sfx/assault_rifle.wav.import b/sfx/assault_rifle.wav.import new file mode 100644 index 0000000..666bcdb --- /dev/null +++ b/sfx/assault_rifle.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/assault_rifle.wav-be55643f0ef4eee454a1d69851e40bdb.sample" + +[deps] + +source_file="res://sfx/assault_rifle.wav" +dest_files=[ "res://.import/assault_rifle.wav-be55643f0ef4eee454a1d69851e40bdb.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=false +compress/mode=0 diff --git a/sfx/revolver.rfx b/sfx/revolver.rfx new file mode 100644 index 0000000..aaf1c86 Binary files /dev/null and b/sfx/revolver.rfx differ diff --git a/sfx/revolver.wav b/sfx/revolver.wav new file mode 100644 index 0000000..e7aa6a0 Binary files /dev/null and b/sfx/revolver.wav differ diff --git a/sfx/revolver.wav.import b/sfx/revolver.wav.import new file mode 100644 index 0000000..9e11d82 --- /dev/null +++ b/sfx/revolver.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/revolver.wav-a193edf66acf3d5ba572c83152b952b7.sample" + +[deps] + +source_file="res://sfx/revolver.wav" +dest_files=[ "res://.import/revolver.wav-a193edf66acf3d5ba572c83152b952b7.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=false +compress/mode=0 diff --git a/sfx/rifle.rfx b/sfx/rifle.rfx new file mode 100644 index 0000000..fe8516a Binary files /dev/null and b/sfx/rifle.rfx differ diff --git a/sfx/rifle.wav b/sfx/rifle.wav new file mode 100644 index 0000000..85f9162 Binary files /dev/null and b/sfx/rifle.wav differ diff --git a/sfx/rifle.wav.import b/sfx/rifle.wav.import new file mode 100644 index 0000000..db63f3f --- /dev/null +++ b/sfx/rifle.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/rifle.wav-4d8a68001c8b651b3f0f41b64fa095a8.sample" + +[deps] + +source_file="res://sfx/rifle.wav" +dest_files=[ "res://.import/rifle.wav-4d8a68001c8b651b3f0f41b64fa095a8.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=false +compress/mode=0 diff --git a/sfx/shotgun.rfx b/sfx/shotgun.rfx new file mode 100644 index 0000000..145f25e Binary files /dev/null and b/sfx/shotgun.rfx differ diff --git a/sfx/shotgun.wav b/sfx/shotgun.wav new file mode 100644 index 0000000..c7b65bb Binary files /dev/null and b/sfx/shotgun.wav differ diff --git a/sfx/shotgun.wav.import b/sfx/shotgun.wav.import new file mode 100644 index 0000000..97c3a4f --- /dev/null +++ b/sfx/shotgun.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/shotgun.wav-29870054b4a67834b920542f9f1e5152.sample" + +[deps] + +source_file="res://sfx/shotgun.wav" +dest_files=[ "res://.import/shotgun.wav-29870054b4a67834b920542f9f1e5152.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=false +compress/mode=0 diff --git a/src/CreativeBuilding.cs b/src/Items/CreativeBuilding.cs similarity index 98% rename from src/CreativeBuilding.cs rename to src/Items/CreativeBuilding.cs index 26c7495..4bcb42a 100644 --- a/src/CreativeBuilding.cs +++ b/src/Items/CreativeBuilding.cs @@ -35,7 +35,7 @@ public class CreativeBuilding : Node2D public override void _UnhandledInput(InputEvent ev) { - if (!(Player is LocalPlayer) || !Visible) return; + if (!Visible || !(Player is LocalPlayer)) return; if (ev.IsActionPressed("interact_place")) { GetTree().SetInputAsHandled(); diff --git a/src/Items/Items.cs b/src/Items/Items.cs new file mode 100644 index 0000000..fca02a7 --- /dev/null +++ b/src/Items/Items.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Godot; + +// TODO: Add ways to add/move/remove items, including event when changed. +public interface IItems : IReadOnlyCollection +{ + Node2D this[int index] { get; } + Node2D Current { get; set; } +} + +public class Items : Node2D, IItems +{ + [Export] public NodePath DefaultItemPath { get; set; } + + private Node2D _current; + public int Count => GetChildCount(); + public Node2D this[int index] => GetChild(index); + public Node2D Current { get => _current; set => SetCurrent(value, true); } + + public override void _Ready() + { + foreach (var item in this) SetActive(item, false); + if (DefaultItemPath != null) SetCurrent(GetNode(DefaultItemPath), false); + } + + private void SetCurrent(Node2D node, bool sendRpc) + { + if (node == _current) return; + if ((node != null) && (node.GetParent() != this)) throw new ArgumentException(); + + SetActive(_current, false); + SetActive(node, true); + _current = node; + + if (sendRpc) { + if (this.GetGame() is Server) Rpc(nameof(DoSetCurrent), _current?.Name); + else RpcId(1, nameof(DoSetCurrent), _current?.Name); + } + } + [Remote] + private void DoSetCurrent(string name) + { + var node = (name != null) ? GetNode(name) : null; + SetCurrent(node, this.GetGame() is Server); + } + + public IEnumerator GetEnumerator() + => GetChildren().Cast().GetEnumerator(); + IEnumerator IEnumerable.GetEnumerator() + => GetEnumerator(); + + private static void SetActive(Node2D node, bool value) { + if (node == null) return; + node.SetProcessInput(value); + node.SetProcessUnhandledInput(value); + node.Visible = value; + } +} diff --git a/src/Items/Weapon.cs b/src/Items/Weapon.cs new file mode 100644 index 0000000..1ebddfb --- /dev/null +++ b/src/Items/Weapon.cs @@ -0,0 +1,122 @@ +using Godot; + +public class Weapon : Sprite +{ + [Export] public int EffectiveRange { get; set; } = 320; + [Export] public int MaximumRange { get; set; } = 640; + + [Export] public float Spread { get; set; } = 0.0F; + [Export] public float SpreadIncrease { get; set; } = 0.0F; + [Export] public float SpreadRegen { get; set; } = 10.0F; + + [Export] public float RecoilMin { get; set; } = 0.0F; + [Export] public float RecoilMax { get; set; } = 0.0F; + [Export] public float RecoilRegen { get; set; } = 10.0F; + + // TODO: Make the Regen multiplicative instead of substractive? + + + public Cursor Cursor { get; private set; } + public Player Player { get; private set; } + + private float _currentSpreadInc = 0.0F; + private float _currentRecoil = 0.0F; + + public float AimDirection { get; private set; } + + + public override void _Ready() + { + Cursor = this.GetClient()?.Cursor; + Player = GetParent().GetParent(); + } + + public override void _UnhandledInput(InputEvent ev) + { + if (!(Player is LocalPlayer)) return; + + // TODO: Is not "place", is shoot! + if (ev.IsActionPressed("interact_place")) { + GetNodeOrNull("Fire")?.Play(); + // TODO: Spawn bullet or something. + // TODO: Tell server (and other clients) we shot. + _currentSpreadInc += Mathf.Deg2Rad(SpreadIncrease); + _currentRecoil += Mathf.Deg2Rad((float)GD.RandRange(RecoilMin, RecoilMax)); + } + } + + public override void _Process(float delta) + { + // FIXME: Need to run _Process after switching to a weapon. + + _currentSpreadInc = Mathf.Max(0, _currentSpreadInc - Mathf.Deg2Rad(SpreadRegen) * delta); + _currentRecoil = Mathf.Max(0, _currentRecoil - Mathf.Deg2Rad(RecoilRegen) * delta); + + if (Visible && (Player is LocalPlayer)) { + AimDirection = Cursor.Position.AngleToPoint(Player.Position); + RpcId(1, nameof(SendAimAngle), AimDirection); + Update(); + } + + var angle = Mathf.PosMod(AimDirection + Mathf.Pi, Mathf.Tau) - Mathf.Pi; + angle = Mathf.Abs(Mathf.Rad2Deg(angle)); + if (Scale.y > 0) { if (angle > 100.0F) Scale = new Vector2(1, -1); } + else if (angle < 80.0F) Scale = new Vector2(1, 1); + Rotation = AimDirection - _currentRecoil * ((Scale.y > 0) ? 1 : -1); + } + + [Remote] + private void SendAimAngle(float value) + { + if (this.GetGame() is Server) { + if (Player.NetworkID != GetTree().GetRpcSenderId()) return; + // TODO: Verify input. + // if ((value < 0) || (value > Mathf.Tau)) return; + Rpc(nameof(SendAimAngle), value); + } else if (!(Player is LocalPlayer)) + AimDirection = value; + } + + public override void _Draw() + { + if (!(Player is LocalPlayer)) return; + + var tip = GetNode("Tip").Position + new Vector2(4, 0); + var angle = Mathf.Sin((Mathf.Deg2Rad(Spread) + _currentSpreadInc) / 2); + var color = Colors.Black; + + var points = new Vector2[8]; + var colors = new Color[8]; + colors[0] = colors[7] = new Color(color, 0.0F); + points[0] = points[7] = tip; + colors[1] = colors[6] = new Color(color, 0.15F); + points[1] = tip + new Vector2(1, angle) * 64; + points[6] = tip + new Vector2(1, -angle) * 64; + colors[2] = colors[5] = new Color(color, 0.15F); + points[2] = tip + new Vector2(1, angle) * EffectiveRange; + points[5] = tip + new Vector2(1, -angle) * EffectiveRange; + colors[3] = colors[4] = new Color(color, 0.0F); + points[3] = tip + new Vector2(1, angle) * MaximumRange; + points[4] = tip + new Vector2(1, -angle) * MaximumRange; + + var st = new SurfaceTool(); + st.Begin(Mesh.PrimitiveType.TriangleStrip); + st.AddColor(colors[0]); + st.AddVertex(To3(points[0])); + st.AddColor(colors[1]); + st.AddVertex(To3(points[1])); + st.AddVertex(To3(points[6])); + st.AddColor(colors[2]); + st.AddVertex(To3(points[2])); + st.AddVertex(To3(points[5])); + st.AddColor(colors[3]); + st.AddVertex(To3(points[3])); + st.AddVertex(To3(points[4])); + st.Index(); + + DrawMesh(st.Commit(), null); + DrawPolylineColors(points, colors, antialiased: true); + } + private static Vector3 To3(Vector2 vec) + => new Vector3(vec.x, vec.y, 0); +} diff --git a/src/RadialMenu.cs b/src/RadialMenu.cs index 90f9d48..cc767a5 100644 --- a/src/RadialMenu.cs +++ b/src/RadialMenu.cs @@ -12,8 +12,7 @@ public class RadialMenu : Node2D public Label ActiveName { get; private set; } private float _startAngle; - public Node2D Selected { get; private set; } = null; - public int? SelectedIndex => (Selected != null) ? Selected.GetIndex() : (int?)null; + private Node2D _selected; public override void _Ready() { @@ -23,36 +22,20 @@ public class RadialMenu : Node2D ActiveName = GetNode