diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6347901..0000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/.vscode -/.import -/.mono -/.vs diff --git a/DungeonShooting.csproj b/DungeonShooting.csproj deleted file mode 100644 index db88a8d..0000000 --- a/DungeonShooting.csproj +++ /dev/null @@ -1,5 +0,0 @@ - - - net472 - - \ No newline at end of file diff --git a/DungeonShooting.sln b/DungeonShooting.sln deleted file mode 100644 index 746d57c..0000000 --- a/DungeonShooting.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DungeonShooting", "DungeonShooting.csproj", "{1C7B20F3-5430-47C7-988D-0A360C4E9CDB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - ExportDebug|Any CPU = ExportDebug|Any CPU - ExportRelease|Any CPU = ExportRelease|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU - {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU - {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU - {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU - EndGlobalSection -EndGlobal diff --git a/DungeonShooting_Art/environment/craftpix-net-228007/All Tileset/16x16.png b/DungeonShooting_Art/environment/craftpix-net-228007/All Tileset/16x16.png new file mode 100644 index 0000000..4e0828a --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-228007/All Tileset/16x16.png Binary files differ diff --git a/DungeonShooting_Art/environment/craftpix-net-228007/All Tileset/16x16.png.import b/DungeonShooting_Art/environment/craftpix-net-228007/All Tileset/16x16.png.import new file mode 100644 index 0000000..3a2347b --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-228007/All Tileset/16x16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/16x16.png-ea90e85bdf1fd38dc541589c933c9f3a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/craftpix-net-228007/All Tileset/16x16.png" +dest_files=[ "res://.import/16x16.png-ea90e85bdf1fd38dc541589c933c9f3a.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/craftpix-net-228007/Palette/Pallete.txt b/DungeonShooting_Art/environment/craftpix-net-228007/Palette/Pallete.txt new file mode 100644 index 0000000..ad6e6d8 --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-228007/Palette/Pallete.txt @@ -0,0 +1 @@ +This palette belongs to Kerrie Lake, and can be found and downloaded for free here: https://lospec.com/palette-list/resurrect-64 \ No newline at end of file diff --git a/DungeonShooting_Art/environment/craftpix-net-228007/license.txt b/DungeonShooting_Art/environment/craftpix-net-228007/license.txt new file mode 100644 index 0000000..673e1aa --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-228007/license.txt @@ -0,0 +1 @@ +https://craftpix.net/file-licenses/ \ No newline at end of file diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/16x16.png b/DungeonShooting_Art/environment/craftpix-net-248911/16x16.png new file mode 100644 index 0000000..25987fc --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/16x16.png Binary files differ diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/16x16.png.import b/DungeonShooting_Art/environment/craftpix-net-248911/16x16.png.import new file mode 100644 index 0000000..9fef0f8 --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/16x16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/16x16.png-6e9ff775940a8533671e6598dc2d886d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/craftpix-net-248911/16x16.png" +dest_files=[ "res://.import/16x16.png-6e9ff775940a8533671e6598dc2d886d.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/A Note to the Dev.txt b/DungeonShooting_Art/environment/craftpix-net-248911/A Note to the Dev.txt new file mode 100644 index 0000000..6596983 --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/A Note to the Dev.txt @@ -0,0 +1,15 @@ +Ho ho, the title got you, huh! :) + +Hello, thank you for your purchase! + +I'm Caio, the Clockwork Raven Studios artist, owner, and i hope this product live up to your expectations, i want you to know that your interest in my projects is what makes me work on it even harder. + +In case if it doesn't take up too much of your time, I would like to see what you're thinking about it in the comments, in the page of the store that you purchased the product, this helps me a lot! + +You can also see my progress in the creation of new assets and/or make suggestions, follow my twitter here: https://twitter.com/cwrstudios + +If you like my work, i would recommend you to take a look at my Patreon, you get spoilers of my upcoming assets, a community and everything i already made for only $5, and for staying as a Patron you'll always receive my new assets for free! + +My Patreon: https://www.patreon.com/clockworkravenstudios + +Regards, Caio \ No newline at end of file diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/All Tileset/16x16.png b/DungeonShooting_Art/environment/craftpix-net-248911/All Tileset/16x16.png new file mode 100644 index 0000000..25987fc --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/All Tileset/16x16.png Binary files differ diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/All Tileset/16x16.png.import b/DungeonShooting_Art/environment/craftpix-net-248911/All Tileset/16x16.png.import new file mode 100644 index 0000000..1cf5d36 --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/All Tileset/16x16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/16x16.png-03810c2e769fb05274c12adf666f9aa1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png" +dest_files=[ "res://.import/16x16.png-03810c2e769fb05274c12adf666f9aa1.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/EsRson.gif b/DungeonShooting_Art/environment/craftpix-net-248911/EsRson.gif new file mode 100644 index 0000000..493642d --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/EsRson.gif Binary files differ diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/Palette/Pallete.txt b/DungeonShooting_Art/environment/craftpix-net-248911/Palette/Pallete.txt new file mode 100644 index 0000000..ad6e6d8 --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/Palette/Pallete.txt @@ -0,0 +1 @@ +This palette belongs to Kerrie Lake, and can be found and downloaded for free here: https://lospec.com/palette-list/resurrect-64 \ No newline at end of file diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/Rww2te.gif b/DungeonShooting_Art/environment/craftpix-net-248911/Rww2te.gif new file mode 100644 index 0000000..977edd3 --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/Rww2te.gif Binary files differ diff --git a/DungeonShooting_Art/environment/craftpix-net-248911/license.txt b/DungeonShooting_Art/environment/craftpix-net-248911/license.txt new file mode 100644 index 0000000..673e1aa --- /dev/null +++ b/DungeonShooting_Art/environment/craftpix-net-248911/license.txt @@ -0,0 +1 @@ +https://craftpix.net/file-licenses/ \ No newline at end of file diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png new file mode 100644 index 0000000..d3061e2 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png.import new file mode 100644 index 0000000..4e37bd6 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/0x72_16x16DungeonTileset.v4.png-dcaf4c9b8c630676bfda11bcff9322cb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png" +dest_files=[ "res://.import/0x72_16x16DungeonTileset.v4.png-dcaf4c9b8c630676bfda11bcff9322cb.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png new file mode 100644 index 0000000..e1e0412 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png.import new file mode 100644 index 0000000..6b92223 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/0x72_16x16DungeonTileset_walls.v2.png-9d1b5873f4804f7e2e2181eb903c72b1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png" +dest_files=[ "res://.import/0x72_16x16DungeonTileset_walls.v2.png-9d1b5873f4804f7e2e2181eb903c72b1.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png new file mode 100644 index 0000000..b94b19d --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png.import new file mode 100644 index 0000000..561d1ba --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Dungeon Tileset + Spikes.png-0b0ac12148fa4f15934514bfbc46c2eb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png" +dest_files=[ "res://.import/Dungeon Tileset + Spikes.png-0b0ac12148fa4f15934514bfbc46c2eb.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset2/website.txt b/DungeonShooting_Art/environment/itch-io-DungeonTileset2/website.txt new file mode 100644 index 0000000..193056a --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset2/website.txt @@ -0,0 +1 @@ +https://spicestudios.itch.io/dungeon-tileset \ No newline at end of file diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png new file mode 100644 index 0000000..aaecb48 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png.import new file mode 100644 index 0000000..e6797f5 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/0x72_DungeonTilesetII_v1.3.png-1c858a59f4e435052047bdba37104c6d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png" +dest_files=[ "res://.import/0x72_DungeonTilesetII_v1.3.png-1c858a59f4e435052047bdba37104c6d.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset3/website.txt b/DungeonShooting_Art/environment/itch-io-DungeonTileset3/website.txt new file mode 100644 index 0000000..ed3a826 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset3/website.txt @@ -0,0 +1 @@ +https://0x72.itch.io/dungeontileset-ii \ No newline at end of file diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png new file mode 100644 index 0000000..df021f3 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png.import new file mode 100644 index 0000000..7a81ef8 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/16x16 dungeon ii wall reconfig v04 spritesheet.png-912443f06cd2aff252dec097396c5d34.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png" +dest_files=[ "res://.import/16x16 dungeon ii wall reconfig v04 spritesheet.png-912443f06cd2aff252dec097396c5d34.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/arrow.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/arrow.png new file mode 100644 index 0000000..4baebfb --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/arrow.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/arrow.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/arrow.png.import new file mode 100644 index 0000000..5f78641 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow.png-d945c13a6ca437c3e71d6adb0e3d6c2d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/bow/arrow.png" +dest_files=[ "res://.import/arrow.png-d945c13a6ca437c3e71d6adb0e3d6c2d.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/bow.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/bow.png new file mode 100644 index 0000000..0654ef2 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/bow.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/bow.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/bow.png.import new file mode 100644 index 0000000..dc6645e --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/bow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bow.png-cf7ed3be40c3c132dffe693ed3eaea62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/bow/bow.png" +dest_files=[ "res://.import/bow.png-cf7ed3be40c3c132dffe693ed3eaea62.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit0.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit0.png new file mode 100644 index 0000000..a4457f0 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit0.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit0.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit0.png.import new file mode 100644 index 0000000..6bf9e08 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit0.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit0.png-f6ae5bf8aa634586ba35cd298657e88f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/bow/effect/hit0.png" +dest_files=[ "res://.import/hit0.png-f6ae5bf8aa634586ba35cd298657e88f.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit1.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit1.png new file mode 100644 index 0000000..fc1e151 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit1.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit1.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit1.png.import new file mode 100644 index 0000000..6174231 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit1.png-dff71ff18aaf926e3783079227be8aa0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/bow/effect/hit1.png" +dest_files=[ "res://.import/hit1.png-dff71ff18aaf926e3783079227be8aa0.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit2.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit2.png new file mode 100644 index 0000000..acf1526 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit2.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit2.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit2.png.import new file mode 100644 index 0000000..1dbbdc0 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit2.png-08913f6ef3702516923e214eb44be2a2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/bow/effect/hit2.png" +dest_files=[ "res://.import/hit2.png-08913f6ef3702516923e214eb44be2a2.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit3.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit3.png new file mode 100644 index 0000000..272462c --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit3.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit3.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit3.png.import new file mode 100644 index 0000000..78e2243 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit3.png-3e0b6dd0e6800e136aa13a83ec93ddc3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/bow/effect/hit3.png" +dest_files=[ "res://.import/hit3.png-3e0b6dd0e6800e136aa13a83ec93ddc3.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit4.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit4.png new file mode 100644 index 0000000..aa1f261 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit4.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit4.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit4.png.import new file mode 100644 index 0000000..f472b6c --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/bow/effect/hit4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit4.png-13aa48a76ab50428f2595b5c50c88cf3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset4/bow/effect/hit4.png" +dest_files=[ "res://.import/hit4.png-13aa48a76ab50428f2595b5c50c88cf3.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset4/website.txt b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/website.txt new file mode 100644 index 0000000..cea76c3 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset4/website.txt @@ -0,0 +1 @@ +https://aekae13.itch.io/16x16-dungeon-walls-reconfig \ No newline at end of file diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png" new file mode 100644 index 0000000..78d05b1 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png" Binary files differ diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png.import" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png.import" new file mode 100644 index 0000000..93e4420 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png.import" @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeon_ [lava].png-4e0a4596f11b9d83c26ad95cd08fe720.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ [lava].png" +dest_files=[ "res://.import/dungeon_ [lava].png-4e0a4596f11b9d83c26ad95cd08fe720.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png" new file mode 100644 index 0000000..bd805ad --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png" Binary files differ diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png.import" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png.import" new file mode 100644 index 0000000..7a92ebe --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png.import" @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeon_ [water].png-ca865dfc877c036e54e824afef2246c5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset5/dungeon_/dungeon_ [water].png" +dest_files=[ "res://.import/dungeon_ [water].png-ca865dfc877c036e54e824afef2246c5.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_.png new file mode 100644 index 0000000..1716e99 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_.png.import new file mode 100644 index 0000000..dee74c8 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/dungeon_/dungeon_.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeon_.png-200d6744028e726ab76a4ef1d4a6944f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset5/dungeon_/dungeon_.png" +dest_files=[ "res://.import/dungeon_.png-200d6744028e726ab76a4ef1d4a6944f.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png" new file mode 100644 index 0000000..d55ac7c --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png" Binary files differ diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png.import" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png.import" new file mode 100644 index 0000000..6b02fc5 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png.import" @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shadows_ [traps].png-fbffdea17727dabaad9cbb69323afc04.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset5/shadows/shadows_ [traps].png" +dest_files=[ "res://.import/shadows_ [traps].png-fbffdea17727dabaad9cbb69323afc04.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png" new file mode 100644 index 0000000..b40b97b --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png" Binary files differ diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png.import" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png.import" new file mode 100644 index 0000000..731c365 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png.import" @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shadows_ [water & lava].png-26242c25c4b32df1b931eb54bcbed0f0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset5/shadows/shadows_ [water & lava].png" +dest_files=[ "res://.import/shadows_ [water & lava].png-26242c25c4b32df1b931eb54bcbed0f0.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_.png new file mode 100644 index 0000000..5e4d9e7 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_.png.import new file mode 100644 index 0000000..595f905 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/shadows/shadows_.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shadows_.png-e2dc9a0834b0a5a1126b98147ff95828.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset5/shadows/shadows_.png" +dest_files=[ "res://.import/shadows_.png-e2dc9a0834b0a5a1126b98147ff95828.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset5/website.txt b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/website.txt new file mode 100644 index 0000000..34eae21 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset5/website.txt @@ -0,0 +1 @@ +https://analogstudios.itch.io/dungeonold \ No newline at end of file diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/acid_.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/acid_.png new file mode 100644 index 0000000..3c9aedd --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/acid_.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/acid_.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/acid_.png.import new file mode 100644 index 0000000..af0d48c --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/acid_.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/acid_.png-b5d3d31bec15e8b2ca4023384fc7d500.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/acid_.png" +dest_files=[ "res://.import/acid_.png-b5d3d31bec15e8b2ca4023384fc7d500.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png" new file mode 100644 index 0000000..797ead0 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png" Binary files differ diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png.import" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png.import" new file mode 100644 index 0000000..b089a89 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png.import" @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeonDecoration_0 [blueCarpet].png-840dfc764551f42372a3aa06c2fa47e1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/dungeonDecoration_0 [blueCarpet].png" +dest_files=[ "res://.import/dungeonDecoration_0 [blueCarpet].png-840dfc764551f42372a3aa06c2fa47e1.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png" new file mode 100644 index 0000000..8234991 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png" Binary files differ diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png.import" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png.import" new file mode 100644 index 0000000..71371f4 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png.import" @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeonDecoration_0 [greenCarpet].png-dec36a31a95a33923d361db4496a393e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/dungeonDecoration_0 [greenCarpet].png" +dest_files=[ "res://.import/dungeonDecoration_0 [greenCarpet].png-dec36a31a95a33923d361db4496a393e.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png" new file mode 100644 index 0000000..8d38949 --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png" Binary files differ diff --git "a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png.import" "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png.import" new file mode 100644 index 0000000..4793f6f --- /dev/null +++ "b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png.import" @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeonDecoration_0 [redCarpet].png-b93a3282e127aca48a390a9579676a53.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/dungeonDecoration_0 [redCarpet].png" +dest_files=[ "res://.import/dungeonDecoration_0 [redCarpet].png-b93a3282e127aca48a390a9579676a53.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0.png new file mode 100644 index 0000000..800e66f --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0.png.import new file mode 100644 index 0000000..668ff15 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_0.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeonDecoration_0.png-92dd68f5e7bcfd08c5e2a8b04db720c9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/dungeonDecoration_0.png" +dest_files=[ "res://.import/dungeonDecoration_0.png-92dd68f5e7bcfd08c5e2a8b04db720c9.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_1.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_1.png new file mode 100644 index 0000000..d89c519 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_1.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_1.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_1.png.import new file mode 100644 index 0000000..8ca6ef5 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeonDecoration_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeonDecoration_1.png-bd9d6885cea4342e19c815e6362b138f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/dungeonDecoration_1.png" +dest_files=[ "res://.import/dungeonDecoration_1.png-bd9d6885cea4342e19c815e6362b138f.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeon_.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeon_.png new file mode 100644 index 0000000..31115b3 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeon_.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeon_.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeon_.png.import new file mode 100644 index 0000000..b06545b --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/dungeon_.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dungeon_.png-ec8ad1aef6880d2c4764ef73d0ea77e1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/dungeon_.png" +dest_files=[ "res://.import/dungeon_.png-ec8ad1aef6880d2c4764ef73d0ea77e1.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/fire_.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/fire_.png new file mode 100644 index 0000000..334d487 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/fire_.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/fire_.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/fire_.png.import new file mode 100644 index 0000000..b5ba551 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/fire_.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fire_.png-6bd8e0d2c4b25c5395a15488d122c92b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/fire_.png" +dest_files=[ "res://.import/fire_.png-6bd8e0d2c4b25c5395a15488d122c92b.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/traps_.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/traps_.png new file mode 100644 index 0000000..c3c0028 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/traps_.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/traps_.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/traps_.png.import new file mode 100644 index 0000000..d548524 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/traps_.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/traps_.png-7a96828690fa6445d59a6b1bb1474b74.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/traps_.png" +dest_files=[ "res://.import/traps_.png-7a96828690fa6445d59a6b1bb1474b74.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/waterLavaAcid_.png b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/waterLavaAcid_.png new file mode 100644 index 0000000..a9f8079 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/waterLavaAcid_.png Binary files differ diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/waterLavaAcid_.png.import b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/waterLavaAcid_.png.import new file mode 100644 index 0000000..2f397c3 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/waterLavaAcid_.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/waterLavaAcid_.png-75d6c2bc43e139cd78d2cc0e649ed716.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/itch-io-DungeonTileset6/waterLavaAcid_.png" +dest_files=[ "res://.import/waterLavaAcid_.png-75d6c2bc43e139cd78d2cc0e649ed716.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Art/environment/itch-io-DungeonTileset6/website.txt b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/website.txt new file mode 100644 index 0000000..b5dd953 --- /dev/null +++ b/DungeonShooting_Art/environment/itch-io-DungeonTileset6/website.txt @@ -0,0 +1 @@ +https://analogstudios.itch.io/dungeon \ No newline at end of file diff --git a/DungeonShooting_Art/ui/GUI/GUI.png b/DungeonShooting_Art/ui/GUI/GUI.png new file mode 100644 index 0000000..c502477 --- /dev/null +++ b/DungeonShooting_Art/ui/GUI/GUI.png Binary files differ diff --git a/DungeonShooting_Art/ui/GUI/Split/template-ui.png b/DungeonShooting_Art/ui/GUI/Split/template-ui.png new file mode 100644 index 0000000..69f40fb --- /dev/null +++ b/DungeonShooting_Art/ui/GUI/Split/template-ui.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Palette/Palette.txt b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Palette/Palette.txt new file mode 100644 index 0000000..7935d5a --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Palette/Palette.txt @@ -0,0 +1 @@ +Credit to @PineTreePizza for this wonderful pallete (rosy 42), I also added 3 shades of blue from edg32. \ No newline at end of file diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Palette/rosyandblue.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Palette/rosyandblue.png new file mode 100644 index 0000000..059079e --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Palette/rosyandblue.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Split/Cursor.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Split/Cursor.png new file mode 100644 index 0000000..068c198 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Split/Cursor.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Thanks.txt b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Thanks.txt new file mode 100644 index 0000000..4092176 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/Thanks.txt @@ -0,0 +1,5 @@ +Thanks for buying this pack and supporting me, I hope you find it useful! +You can reach me through Twitter (@Vryell) if you have any feedback or want to know more about my work. +Find more packs at my itch.io page: +https://vryell.itch.io/ +That's it, Enjoy! :) \ No newline at end of file diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_minimal.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_minimal.png new file mode 100644 index 0000000..42f63ad --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_minimal.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_ps.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_ps.png new file mode 100644 index 0000000..2ddc92d --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_ps.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_switch.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_switch.png new file mode 100644 index 0000000..c71a38e --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_switch.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_xbox.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_xbox.png new file mode 100644 index 0000000..9c81125 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/controller_xbox.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/cursors.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/cursors.png new file mode 100644 index 0000000..b40cfe5 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/cursors.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_all.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_all.png new file mode 100644 index 0000000..56e5cfe --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_all.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png new file mode 100644 index 0000000..812b06c --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_symbols.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_symbols.png new file mode 100644 index 0000000..80ec1f0 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_dark_symbols.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_all.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_all.png new file mode 100644 index 0000000..d276361 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_all.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png new file mode 100644 index 0000000..042d8bc --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_symbols.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_symbols.png new file mode 100644 index 0000000..faf5662 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/kb_light_symbols.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/mouse.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/mouse.png new file mode 100644 index 0000000..a865059 --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/mouse.png Binary files differ diff --git a/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/sticks.png b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/sticks.png new file mode 100644 index 0000000..46a5c6e --- /dev/null +++ b/DungeonShooting_Art/ui/itch-io-Controllers and Keyboard/sticks.png Binary files differ diff --git a/DungeonShooting_Godot/.gitignore b/DungeonShooting_Godot/.gitignore new file mode 100644 index 0000000..6347901 --- /dev/null +++ b/DungeonShooting_Godot/.gitignore @@ -0,0 +1,4 @@ +/.vscode +/.import +/.mono +/.vs diff --git a/DungeonShooting_Godot/DungeonShooting.csproj b/DungeonShooting_Godot/DungeonShooting.csproj new file mode 100644 index 0000000..db88a8d --- /dev/null +++ b/DungeonShooting_Godot/DungeonShooting.csproj @@ -0,0 +1,5 @@ + + + net472 + + \ No newline at end of file diff --git a/DungeonShooting_Godot/DungeonShooting.sln b/DungeonShooting_Godot/DungeonShooting.sln new file mode 100644 index 0000000..746d57c --- /dev/null +++ b/DungeonShooting_Godot/DungeonShooting.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DungeonShooting", "DungeonShooting.csproj", "{1C7B20F3-5430-47C7-988D-0A360C4E9CDB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + ExportDebug|Any CPU = ExportDebug|Any CPU + ExportRelease|Any CPU = ExportRelease|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU + {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU + {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU + {1C7B20F3-5430-47C7-988D-0A360C4E9CDB}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU + EndGlobalSection +EndGlobal diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/plugin.cfg b/DungeonShooting_Godot/addons/vnen.tiled_importer/plugin.cfg new file mode 100644 index 0000000..e0b9ec7 --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/plugin.cfg @@ -0,0 +1,8 @@ +config_version=3 +[plugin] + +name="Tiled Map Importer" +description="Importer for TileMaps and TileSets made on Tiled Map Editor" +version="2.4" +author="George Marques" +script="vnen.tiled_importer.gd" diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/polygon_sorter.gd b/DungeonShooting_Godot/addons/vnen.tiled_importer/polygon_sorter.gd new file mode 100644 index 0000000..d646d0b --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/polygon_sorter.gd @@ -0,0 +1,67 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018 George Marques +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Sorter for polygon vertices +tool +extends Reference + +var center + +# Sort the vertices of a convex polygon to clockwise order +# Receives a PoolVector2Array and returns a new one +func sort_polygon(vertices): + vertices = Array(vertices) + + var centroid = Vector2() + var size = vertices.size() + + for i in range(0, size): + centroid += vertices[i] + + centroid /= size + + center = centroid + vertices.sort_custom(self, "is_less") + + return PoolVector2Array(vertices) + +# Sorter function, determines which of the poins should come first +func is_less(a, b): + if a.x - center.x >= 0 and b.x - center.x < 0: + return false + elif a.x - center.x < 0 and b.x - center.x >= 0: + return true + elif a.x - center.x == 0 and b.x - center.x == 0: + if a.y - center.y >= 0 or b.y - center.y >= 0: + return a.y < b.y + return a.y > b.y + + var det = (a.x - center.x) * (b.y - center.y) - (b.x - center.x) * (a.y - center.y) + if det > 0: + return true + elif det < 0: + return false + + var d1 = (a - center).length_squared() + var d2 = (b - center).length_squared() + + return d1 < d2 diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled.png b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled.png new file mode 100644 index 0000000..17d7d49 --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled.png Binary files differ diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled.png.import b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled.png.import new file mode 100644 index 0000000..6d82870 --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tiled.png-dbbabe58e4f927769540a522a2073689.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/vnen.tiled_importer/tiled.png" +dest_files=[ "res://.import/tiled.png-dbbabe58e4f927769540a522a2073689.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_import_plugin.gd b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_import_plugin.gd new file mode 100644 index 0000000..7b45c1d --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_import_plugin.gd @@ -0,0 +1,139 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018 George Marques +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +tool +extends EditorImportPlugin + +enum { PRESET_DEFAULT, PRESET_PIXEL_ART } + +const TiledMapReader = preload("tiled_map_reader.gd") + +func get_importer_name(): + return "vnen.tiled_importer" + +func get_visible_name(): + return "Scene from Tiled" + +func get_recognized_extensions(): + if ProjectSettings.get_setting("tiled_importer/enable_json_format"): + return ["json", "tmx"] + else: + return ["tmx"] + +func get_save_extension(): + return "scn" + +func get_priority(): + return 1 + +func get_import_order(): + return 101 + +func get_resource_type(): + return "PackedScene" + +func get_preset_count(): + return 2 + +func get_preset_name(preset): + match preset: + PRESET_DEFAULT: return "Default" + PRESET_PIXEL_ART: return "Pixel Art" + +func get_import_options(preset): + return [ + { + "name": "custom_properties", + "default_value": true + }, + { + "name": "tile_metadata", + "default_value": false + }, + { + "name": "uv_clip", + "default_value": true + }, + { + "name": "image_flags", + "default_value": 0 if preset == PRESET_PIXEL_ART else Texture.FLAGS_DEFAULT, + "property_hint": PROPERTY_HINT_FLAGS, + "hint_string": "Mipmaps,Repeat,Filter,Anisotropic,sRGB,Mirrored Repeat" + }, + { + "name": "collision_layer", + "default_value": 1, + "property_hint": PROPERTY_HINT_LAYERS_2D_PHYSICS + }, + { + "name": "embed_internal_images", + "default_value": true if preset == PRESET_PIXEL_ART else false + }, + { + "name": "save_tiled_properties", + "default_value": false + }, + { + "name": "add_background", + "default_value": true + }, + { + "name": "post_import_script", + "default_value": "", + "property_hint": PROPERTY_HINT_FILE, + "hint_string": "*.gd;GDScript" + } + ] + +func get_option_visibility(option, options): + return true + +func import(source_file, save_path, options, r_platform_variants, r_gen_files): + var map_reader = TiledMapReader.new() + + var scene = map_reader.build(source_file, options) + + if typeof(scene) != TYPE_OBJECT: + # Error happened + return scene + + # Post imports script + if not options.post_import_script.empty(): + var script = load(options.post_import_script) + if not script or not script is GDScript: + printerr("Post import script is not a GDScript.") + return ERR_INVALID_PARAMETER + + script = script.new() + if not script.has_method("post_import"): + printerr("Post import script does not have a 'post_import' method.") + return ERR_INVALID_PARAMETER + + scene = script.post_import(scene) + + if not scene or not scene is Node2D: + printerr("Invalid scene returned from post import script.") + return ERR_INVALID_DATA + + var packed_scene = PackedScene.new() + packed_scene.pack(scene) + return ResourceSaver.save("%s.%s" % [save_path, get_save_extension()], packed_scene) diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_map_reader.gd b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_map_reader.gd new file mode 100644 index 0000000..c2cd968 --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_map_reader.gd @@ -0,0 +1,1405 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018 George Marques +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +tool +extends Reference + +# Constants for tile flipping +# http://doc.mapeditor.org/reference/tmx-map-format/#tile-flipping +const FLIPPED_HORIZONTALLY_FLAG = 0x80000000 +const FLIPPED_VERTICALLY_FLAG = 0x40000000 +const FLIPPED_DIAGONALLY_FLAG = 0x20000000 + +# XML Format reader +const TiledXMLToDictionary = preload("tiled_xml_to_dict.gd") + +# Polygon vertices sorter +const PolygonSorter = preload("polygon_sorter.gd") + +# Prefix for error messages, make easier to identify the source +const error_prefix = "Tiled Importer: " + +# Properties to save the value in the metadata +const whitelist_properties = [ + "backgroundcolor", + "compression", + "draworder", + "gid", + "height", + "imageheight", + "imagewidth", + "infinite", + "margin", + "name", + "offsetx", + "offsety", + "orientation", + "probability", + "spacing", + "tilecount", + "tiledversion", + "tileheight", + "tilewidth", + "type", + "version", + "visible", + "width", + "custom_material" +] + +# All templates loaded, can be looked up by path name +var _loaded_templates = {} +# Maps each tileset file used by the map to it's first gid; Used for template parsing +var _tileset_path_to_first_gid = {} + +func reset_global_memebers(): + _loaded_templates = {} + _tileset_path_to_first_gid = {} + +# Main function +# Reads a source file and gives back a scene +func build(source_path, options): + reset_global_memebers() + var map = read_file(source_path) + if typeof(map) == TYPE_INT: + return map + if typeof(map) != TYPE_DICTIONARY: + return ERR_INVALID_DATA + + var err = validate_map(map) + if err != OK: + return err + + var cell_size = Vector2(int(map.tilewidth), int(map.tileheight)) + var map_mode = TileMap.MODE_SQUARE + var map_offset = TileMap.HALF_OFFSET_DISABLED + var map_pos_offset = Vector2() + var map_background = Color() + var cell_offset = Vector2() + if "orientation" in map: + match map.orientation: + "isometric": + map_mode = TileMap.MODE_ISOMETRIC + "staggered": + map_pos_offset.y -= cell_size.y / 2 + match map.staggeraxis: + "x": + map_offset = TileMap.HALF_OFFSET_Y + cell_size.x /= 2.0 + if map.staggerindex == "even": + cell_offset.x += 1 + map_pos_offset.x -= cell_size.x + "y": + map_offset = TileMap.HALF_OFFSET_X + cell_size.y /= 2.0 + if map.staggerindex == "even": + cell_offset.y += 1 + map_pos_offset.y -= cell_size.y + "hexagonal": + # Godot maps are always odd and don't have an "even" setting. To + # imitate even staggering we simply start one row/column late and + # adjust the position of the whole map. + match map.staggeraxis: + "x": + map_offset = TileMap.HALF_OFFSET_Y + cell_size.x = int((cell_size.x + map.hexsidelength) / 2) + if map.staggerindex == "even": + cell_offset.x += 1 + map_pos_offset.x -= cell_size.x + "y": + map_offset = TileMap.HALF_OFFSET_X + cell_size.y = int((cell_size.y + map.hexsidelength) / 2) + if map.staggerindex == "even": + cell_offset.y += 1 + map_pos_offset.y -= cell_size.y + + var tileset = build_tileset_for_scene(map.tilesets, source_path, options) + if typeof(tileset) != TYPE_OBJECT: + # Error happened + return tileset + + var root = Node2D.new() + root.set_name(source_path.get_file().get_basename()) + if options.save_tiled_properties: + set_tiled_properties_as_meta(root, map) + if options.custom_properties: + set_custom_properties(root, map) + + var map_data = { + "options": options, + "map_mode": map_mode, + "map_offset": map_offset, + "map_pos_offset": map_pos_offset, + "map_background": map_background, + "cell_size": cell_size, + "cell_offset": cell_offset, + "tileset": tileset, + "source_path": source_path, + "infinite": bool(map.infinite) if "infinite" in map else false + } + + for layer in map.layers: + err = make_layer(layer, root, root, map_data) + if err != OK: + return err + + if options.add_background and "backgroundcolor" in map: + var bg_color = str(map.backgroundcolor) + if (!bg_color.is_valid_html_color()): + print_error("Invalid background color format: " + bg_color) + return root + + map_background = Color(bg_color) + + var viewport_size = Vector2(ProjectSettings.get("display/window/size/width"), ProjectSettings.get("display/window/size/height")) + var parbg = ParallaxBackground.new() + var parlayer = ParallaxLayer.new() + var colorizer = ColorRect.new() + + parbg.scroll_ignore_camera_zoom = true + parlayer.motion_mirroring = viewport_size + colorizer.color = map_background + colorizer.rect_size = viewport_size + colorizer.rect_min_size = viewport_size + + parbg.name = "Background" + root.add_child(parbg) + parbg.owner = root + parlayer.name = "BackgroundLayer" + parbg.add_child(parlayer) + parlayer.owner = root + colorizer.name = "BackgroundColor" + parlayer.add_child(colorizer) + colorizer.owner = root + + return root + +# Creates a layer node from the data +# Returns an error code +func make_layer(layer, parent, root, data): + var err = validate_layer(layer) + if err != OK: + return err + + # Main map data + var map_mode = data.map_mode + var map_offset = data.map_offset + var map_pos_offset = data.map_pos_offset + var cell_size = data.cell_size + var cell_offset = data.cell_offset + var options = data.options + var tileset = data.tileset + var source_path = data.source_path + var infinite = data.infinite + + var opacity = float(layer.opacity) if "opacity" in layer else 1.0 + var visible = bool(layer.visible) if "visible" in layer else true + + var z_index = 0 + + if "properties" in layer and "z_index" in layer.properties: + z_index = layer.properties.z_index + + if layer.type == "tilelayer": + var layer_size = Vector2(int(layer.width), int(layer.height)) + var tilemap = TileMap.new() + tilemap.set_name(str(layer.name)) + tilemap.cell_size = cell_size + tilemap.modulate = Color(1.0, 1.0, 1.0, opacity); + tilemap.visible = visible + tilemap.mode = map_mode + tilemap.cell_half_offset = map_offset + tilemap.format = 1 + tilemap.cell_clip_uv = options.uv_clip + tilemap.cell_y_sort = true + tilemap.collision_layer = options.collision_layer + tilemap.z_index = z_index + + var offset = Vector2() + if "offsetx" in layer: + offset.x = int(layer.offsetx) + if "offsety" in layer: + offset.y = int(layer.offsety) + + tilemap.position = offset + map_pos_offset + tilemap.tile_set = tileset + + var chunks = [] + + if infinite: + chunks = layer.chunks + else: + chunks = [layer] + + for chunk in chunks: + err = validate_chunk(chunk) + if err != OK: + return err + + var chunk_data = chunk.data + + if "encoding" in layer and layer.encoding == "base64": + if "compression" in layer: + chunk_data = decompress_layer_data(chunk.data, layer.compression, layer_size) + if typeof(chunk_data) == TYPE_INT: + # Error happened + return chunk_data + else: + chunk_data = read_base64_layer_data(chunk.data) + + var count = 0 + for tile_id in chunk_data: + var int_id = int(str(tile_id)) & 0xFFFFFFFF + + if int_id == 0: + count += 1 + continue + + var flipped_h = bool(int_id & FLIPPED_HORIZONTALLY_FLAG) + var flipped_v = bool(int_id & FLIPPED_VERTICALLY_FLAG) + var flipped_d = bool(int_id & FLIPPED_DIAGONALLY_FLAG) + + var gid = int_id & ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG) + + var cell_x = cell_offset.x + chunk.x + (count % int(chunk.width)) + var cell_y = cell_offset.y + chunk.y + int(count / chunk.width) + tilemap.set_cell(cell_x, cell_y, gid, flipped_h, flipped_v, flipped_d) + + count += 1 + + if options.save_tiled_properties: + set_tiled_properties_as_meta(tilemap, layer) + if options.custom_properties: + set_custom_properties(tilemap, layer) + + tilemap.set("editor/display_folded", true) + parent.add_child(tilemap) + tilemap.set_owner(root) + elif layer.type == "imagelayer": + var image = null + if layer.image != "": + image = load_image(layer.image, source_path, options) + if typeof(image) != TYPE_OBJECT: + # Error happened + return image + + var pos = Vector2() + var offset = Vector2() + + if "x" in layer: + pos.x = float(layer.x) + if "y" in layer: + pos.y = float(layer.y) + if "offsetx" in layer: + offset.x = float(layer.offsetx) + if "offsety" in layer: + offset.y = float(layer.offsety) + + var sprite = Sprite.new() + sprite.set_name(str(layer.name)) + sprite.centered = false + sprite.texture = image + sprite.visible = visible + sprite.modulate = Color(1.0, 1.0, 1.0, opacity) + sprite.z_index = z_index + if options.save_tiled_properties: + set_tiled_properties_as_meta(sprite, layer) + if options.custom_properties: + set_custom_properties(sprite, layer) + + sprite.set("editor/display_folded", true) + parent.add_child(sprite) + sprite.position = pos + offset + sprite.set_owner(root) + elif layer.type == "objectgroup": + var object_layer = Node2D.new() + if options.save_tiled_properties: + set_tiled_properties_as_meta(object_layer, layer) + if options.custom_properties: + set_custom_properties(object_layer, layer) + object_layer.modulate = Color(1.0, 1.0, 1.0, opacity) + object_layer.visible = visible + object_layer.z_index = z_index + object_layer.set("editor/display_folded", true) + parent.add_child(object_layer) + object_layer.set_owner(root) + if "name" in layer and not str(layer.name).empty(): + object_layer.set_name(str(layer.name)) + + if not "draworder" in layer or layer.draworder == "topdown": + layer.objects.sort_custom(self, "object_sorter") + + for object in layer.objects: + if "template" in object: + var template_file = object["template"] + var template_data_immutable = get_template(remove_filename_from_path(data["source_path"]) + template_file) + if typeof(template_data_immutable) != TYPE_DICTIONARY: + # Error happened + print("Error getting template for object with id " + str(data["id"])) + continue + + # Overwrite template data with current object data + apply_template(object, template_data_immutable) + + set_default_obj_params(object) + + if "point" in object and object.point: + var point = Position2D.new() + if not "x" in object or not "y" in object: + print_error("Missing coordinates for point in object layer.") + continue + point.position = Vector2(float(object.x), float(object.y)) + point.visible = bool(object.visible) if "visible" in object else true + object_layer.add_child(point) + point.set_owner(root) + if "name" in object and not str(object.name).empty(): + point.set_name(str(object.name)) + elif "id" in object and not str(object.id).empty(): + point.set_name(str(object.id)) + if options.save_tiled_properties: + set_tiled_properties_as_meta(point, object) + if options.custom_properties: + set_custom_properties(point, object) + + elif not "gid" in object: + # Not a tile object + if "type" in object and object.type == "navigation": + # Can't make navigation objects right now + print_error("Navigation polygons aren't supported in an object layer.") + continue # Non-fatal error + var shape = shape_from_object(object) + + if typeof(shape) != TYPE_OBJECT: + # Error happened + return shape + + if "type" in object and object.type == "occluder": + var occluder = LightOccluder2D.new() + var pos = Vector2() + var rot = 0 + + if "x" in object: + pos.x = float(object.x) + if "y" in object: + pos.y = float(object.y) + if "rotation" in object: + rot = float(object.rotation) + + occluder.visible = bool(object.visible) if "visible" in object else true + occluder.position = pos + occluder.rotation_degrees = rot + occluder.occluder = shape + if "name" in object and not str(object.name).empty(): + occluder.set_name(str(object.name)) + elif "id" in object and not str(object.id).empty(): + occluder.set_name(str(object.id)) + + if options.save_tiled_properties: + set_tiled_properties_as_meta(occluder, object) + if options.custom_properties: + set_custom_properties(occluder, object) + + object_layer.add_child(occluder) + occluder.set_owner(root) + + else: + var body = Area2D.new() if object.type == "area" else StaticBody2D.new() + + var offset = Vector2() + var collision + var pos = Vector2() + var rot = 0 + + if not ("polygon" in object or "polyline" in object): + # Regular shape + collision = CollisionShape2D.new() + collision.shape = shape + if shape is RectangleShape2D: + offset = shape.extents + elif shape is CircleShape2D: + offset = Vector2(shape.radius, shape.radius) + elif shape is CapsuleShape2D: + offset = Vector2(shape.radius, shape.height) + if shape.radius > shape.height: + var temp = shape.radius + shape.radius = shape.height + shape.height = temp + collision.rotation_degrees = 90 + shape.height *= 2 + collision.position = offset + else: + collision = CollisionPolygon2D.new() + var points = null + if shape is ConcavePolygonShape2D: + points = [] + var segments = shape.segments + for i in range(0, segments.size()): + if i % 2 != 0: + continue + points.push_back(segments[i]) + collision.build_mode = CollisionPolygon2D.BUILD_SEGMENTS + else: + points = shape.points + collision.build_mode = CollisionPolygon2D.BUILD_SOLIDS + collision.polygon = points + + collision.one_way_collision = object.type == "one-way" + + if "x" in object: + pos.x = float(object.x) + if "y" in object: + pos.y = float(object.y) + if "rotation" in object: + rot = float(object.rotation) + + body.set("editor/display_folded", true) + object_layer.add_child(body) + body.set_owner(root) + body.add_child(collision) + collision.set_owner(root) + + if options.save_tiled_properties: + set_tiled_properties_as_meta(body, object) + if options.custom_properties: + set_custom_properties(body, object) + + if "name" in object and not str(object.name).empty(): + body.set_name(str(object.name)) + elif "id" in object and not str(object.id).empty(): + body.set_name(str(object.id)) + body.visible = bool(object.visible) if "visible" in object else true + body.position = pos + body.rotation_degrees = rot + + else: # "gid" in object + var tile_raw_id = int(str(object.gid)) & 0xFFFFFFFF + var tile_id = tile_raw_id & ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG) + + var is_tile_object = tileset.tile_get_region(tile_id).get_area() == 0 + var collisions = tileset.tile_get_shape_count(tile_id) + var has_collisions = collisions > 0 && object.has("type") && object.type != "sprite" + var sprite = Sprite.new() + var pos = Vector2() + var rot = 0 + var scale = Vector2(1, 1) + sprite.texture = tileset.tile_get_texture(tile_id) + var texture_size = sprite.texture.get_size() if sprite.texture != null else Vector2() + + if not is_tile_object: + sprite.region_enabled = true + sprite.region_rect = tileset.tile_get_region(tile_id) + texture_size = tileset.tile_get_region(tile_id).size + + sprite.flip_h = bool(tile_raw_id & FLIPPED_HORIZONTALLY_FLAG) + sprite.flip_v = bool(tile_raw_id & FLIPPED_VERTICALLY_FLAG) + + if "x" in object: + pos.x = float(object.x) + if "y" in object: + pos.y = float(object.y) + if "rotation" in object: + rot = float(object.rotation) + if texture_size != Vector2(): + if "width" in object and float(object.width) != texture_size.x: + scale.x = float(object.width) / texture_size.x + if "height" in object and float(object.height) != texture_size.y: + scale.y = float(object.height) / texture_size.y + + var obj_root = sprite + if has_collisions: + match object.type: + "area": obj_root = Area2D.new() + "kinematic": obj_root = KinematicBody2D.new() + "rigid": obj_root = RigidBody2D.new() + _: obj_root = StaticBody2D.new() + + object_layer.add_child(obj_root) + obj_root.owner = root + + obj_root.add_child(sprite) + sprite.owner = root + + var shapes = tileset.tile_get_shapes(tile_id) + for s in shapes: + var collision_node = CollisionShape2D.new() + collision_node.shape = s.shape + + collision_node.transform = s.shape_transform + if sprite.flip_h: + collision_node.position.x *= -1 + collision_node.position.x -= cell_size.x + collision_node.scale.x *= -1 + if sprite.flip_v: + collision_node.scale.y *= -1 + collision_node.position.y *= -1 + collision_node.position.y -= cell_size.y + obj_root.add_child(collision_node) + collision_node.owner = root + + if "name" in object and not str(object.name).empty(): + obj_root.set_name(str(object.name)) + elif "id" in object and not str(object.id).empty(): + obj_root.set_name(str(object.id)) + + obj_root.position = pos + obj_root.rotation_degrees = rot + obj_root.visible = bool(object.visible) if "visible" in object else true + obj_root.scale = scale + # Translate from Tiled bottom-left position to Godot top-left + sprite.centered = false + sprite.region_filter_clip = options.uv_clip + sprite.offset = Vector2(0, -texture_size.y) + + if not has_collisions: + object_layer.add_child(sprite) + sprite.set_owner(root) + + if options.save_tiled_properties: + set_tiled_properties_as_meta(obj_root, object) + if options.custom_properties: + if options.tile_metadata: + var tile_meta = tileset.get_meta("tile_meta") + if typeof(tile_meta) == TYPE_DICTIONARY and tile_id in tile_meta: + for prop in tile_meta[tile_id]: + obj_root.set_meta(prop, tile_meta[tile_id][prop]) + set_custom_properties(obj_root, object) + + elif layer.type == "group": + var group = Node2D.new() + var pos = Vector2() + if "x" in layer: + pos.x = float(layer.x) + if "y" in layer: + pos.y = float(layer.y) + group.modulate = Color(1.0, 1.0, 1.0, opacity) + group.visible = visible + group.position = pos + group.z_index = z_index + + if options.save_tiled_properties: + set_tiled_properties_as_meta(group, layer) + if options.custom_properties: + set_custom_properties(group, layer) + + if "name" in layer and not str(layer.name).empty(): + group.set_name(str(layer.name)) + + group.set("editor/display_folded", true) + parent.add_child(group) + group.set_owner(root) + + for sub_layer in layer.layers: + make_layer(sub_layer, group, root, data) + + else: + print_error("Unknown layer type ('%s') in '%s'" % [str(layer.type), str(layer.name) if "name" in layer else "[unnamed layer]"]) + return ERR_INVALID_DATA + + return OK + +func set_default_obj_params(object): + # Set default values for object + for attr in ["width", "height", "rotation", "x", "y"]: + if not attr in object: + object[attr] = 0 + if not "type" in object: + object.type = "" + if not "visible" in object: + object.visible = true + +var flags + +# Makes a tileset from a array of tilesets data +# Since Godot supports only one TileSet per TileMap, all tilesets from Tiled are combined +func build_tileset_for_scene(tilesets, source_path, options): + var result = TileSet.new() + var err = ERR_INVALID_DATA + var tile_meta = {} + + for tileset in tilesets: + var ts = tileset + var ts_source_path = source_path + if "source" in ts: + if not "firstgid" in tileset or not str(tileset.firstgid).is_valid_integer(): + print_error("Missing or invalid firstgid tileset property.") + return ERR_INVALID_DATA + + ts_source_path = source_path.get_base_dir().plus_file(ts.source) + # Used later for templates + _tileset_path_to_first_gid[ts_source_path] = tileset.firstgid + + if ts.source.get_extension().to_lower() == "tsx": + var tsx_reader = TiledXMLToDictionary.new() + ts = tsx_reader.read_tsx(ts_source_path) + if typeof(ts) != TYPE_DICTIONARY: + # Error happened + return ts + else: # JSON Tileset + var f = File.new() + err = f.open(ts_source_path, File.READ) + if err != OK: + print_error("Error opening tileset '%s'." % [ts.source]) + return err + + var json_res = JSON.parse(f.get_as_text()) + if json_res.error != OK: + print_error("Error parsing tileset '%s' JSON: %s" % [ts.source, json_res.error_string]) + return ERR_INVALID_DATA + + ts = json_res.result + if typeof(ts) != TYPE_DICTIONARY: + print_error("Tileset '%s' is not a dictionary." % [ts.source]) + return ERR_INVALID_DATA + + ts.firstgid = tileset.firstgid + + err = validate_tileset(ts) + if err != OK: + return err + + var has_global_image = "image" in ts + + var spacing = int(ts.spacing) if "spacing" in ts and str(ts.spacing).is_valid_integer() else 0 + var margin = int(ts.margin) if "margin" in ts and str(ts.margin).is_valid_integer() else 0 + var firstgid = int(ts.firstgid) + var columns = int(ts.columns) if "columns" in ts and str(ts.columns).is_valid_integer() else -1 + + var image = null + var imagesize = Vector2() + + if has_global_image: + image = load_image(ts.image, ts_source_path, options) + if typeof(image) != TYPE_OBJECT: + # Error happened + return image + imagesize = Vector2(int(ts.imagewidth), int(ts.imageheight)) + + var tilesize = Vector2(int(ts.tilewidth), int(ts.tileheight)) + + var tilecount + if not "tilecount" in ts: + tilecount = make_tilecount(tilesize, imagesize, margin, spacing) + else: + tilecount = int(ts.tilecount) + + + var gid = firstgid + + var x = margin + var y = margin + + var i = 0 + var column = 0 + + + # Needed to look up textures for animations + var tileRegions = [] + while i < tilecount: + var tilepos = Vector2(x, y) + var region = Rect2(tilepos, tilesize) + + tileRegions.push_back(region) + + column += 1 + i += 1 + + x += int(tilesize.x) + spacing + if (columns > 0 and column >= columns) or x >= int(imagesize.x) - margin or (x + int(tilesize.x)) > int(imagesize.x): + x = margin + y += int(tilesize.y) + spacing + column = 0 + + i = 0 + + while i < tilecount: + var region = tileRegions[i] + + var rel_id = str(gid - firstgid) + + result.create_tile(gid) + + if has_global_image: + if rel_id in ts.tiles && "animation" in ts.tiles[rel_id]: + var animated_tex = AnimatedTexture.new() + animated_tex.frames = ts.tiles[rel_id].animation.size() + animated_tex.fps = 0 + var c = 0 + # Animated texture wants us to have seperate textures for each frame + # so we have to pull them out of the tileset + var tilesetTexture = image.get_data() + for g in ts.tiles[rel_id].animation: + var frameTex = tilesetTexture.get_rect(tileRegions[(int(g.tileid))]) + var newTex = ImageTexture.new() + newTex.create_from_image(frameTex, flags) + animated_tex.set_frame_texture(c, newTex) + animated_tex.set_frame_delay(c, float(g.duration) * 0.001) + c += 1 + result.tile_set_texture(gid, animated_tex) + result.tile_set_region(gid, Rect2(Vector2(0, 0), tilesize)) + else: + result.tile_set_texture(gid, image) + result.tile_set_region(gid, region) + elif not rel_id in ts.tiles: + gid += 1 + continue + else: + if rel_id in ts.tiles && "animation" in ts.tiles[rel_id]: + var animated_tex = AnimatedTexture.new() + animated_tex.frames = ts.tiles[rel_id].animation.size() + animated_tex.fps = 0 + var c = 0 + #untested + var image_path = ts.tiles[rel_id].image + for g in ts.tiles[rel_id].animation: + animated_tex.set_frame_texture(c, load_image(image_path, ts_source_path, options)) + animated_tex.set_frame_delay(c, float(g.duration) * 0.001) + c += 1 + result.tile_set_texture(gid, animated_tex) + result.tile_set_region(gid, Rect2(Vector2(0, 0), tilesize)) + else: + var image_path = ts.tiles[rel_id].image + image = load_image(image_path, ts_source_path, options) + if typeof(image) != TYPE_OBJECT: + # Error happened + return image + result.tile_set_texture(gid, image) + + if "tiles" in ts and rel_id in ts.tiles and "objectgroup" in ts.tiles[rel_id] \ + and "objects" in ts.tiles[rel_id].objectgroup: + for object in ts.tiles[rel_id].objectgroup.objects: + + var shape = shape_from_object(object) + + if typeof(shape) != TYPE_OBJECT: + # Error happened + return shape + + var offset = Vector2(float(object.x), float(object.y)) + if "width" in object and "height" in object: + offset += Vector2(float(object.width) / 2, float(object.height) / 2) + + if object.type == "navigation": + result.tile_set_navigation_polygon(gid, shape) + result.tile_set_navigation_polygon_offset(gid, offset) + elif object.type == "occluder": + result.tile_set_light_occluder(gid, shape) + result.tile_set_occluder_offset(gid, offset) + else: + result.tile_add_shape(gid, shape, Transform2D(0, offset), object.type == "one-way") + + if "properties" in ts and "custom_material" in ts.properties: + result.tile_set_material(gid, load(ts.properties.custom_material)) + + if options.custom_properties and options.tile_metadata and "tileproperties" in ts \ + and "tilepropertytypes" in ts and rel_id in ts.tileproperties and rel_id in ts.tilepropertytypes: + tile_meta[gid] = get_custom_properties(ts.tileproperties[rel_id], ts.tilepropertytypes[rel_id]) + if options.save_tiled_properties and rel_id in ts.tiles: + for property in whitelist_properties: + if property in ts.tiles[rel_id]: + if not gid in tile_meta: tile_meta[gid] = {} + tile_meta[gid][property] = ts.tiles[rel_id][property] + + # If tile has a custom property called 'name', set the tile's name + if property == "name": + result.tile_set_name(gid, ts.tiles[rel_id].properties.name) + + + gid += 1 + i += 1 + + if str(ts.name) != "": + result.resource_name = str(ts.name) + + if options.save_tiled_properties: + set_tiled_properties_as_meta(result, ts) + if options.custom_properties: + if "properties" in ts and "propertytypes" in ts: + set_custom_properties(result, ts) + + if options.custom_properties and options.tile_metadata: + result.set_meta("tile_meta", tile_meta) + + return result + +# Makes a standalone TileSet. Useful for importing TileSets from Tiled +# Returns an error code if fails +func build_tileset(source_path, options): + var set = read_tileset_file(source_path) + if typeof(set) == TYPE_INT: + return set + if typeof(set) != TYPE_DICTIONARY: + return ERR_INVALID_DATA + + # Just to validate and build correctly using the existing builder + set["firstgid"] = 0 + + return build_tileset_for_scene([set], source_path, options) + +# Loads an image from a given path +# Returns a Texture +func load_image(rel_path, source_path, options): + flags = options.image_flags if "image_flags" in options else Texture.FLAGS_DEFAULT + var embed = options.embed_internal_images if "embed_internal_images" in options else false + + var ext = rel_path.get_extension().to_lower() + if ext != "png" and ext != "jpg": + print_error("Unsupported image format: %s. Use PNG or JPG instead." % [ext]) + return ERR_FILE_UNRECOGNIZED + + var total_path = rel_path + if rel_path.is_rel_path(): + total_path = ProjectSettings.globalize_path(source_path.get_base_dir()).plus_file(rel_path) + total_path = ProjectSettings.localize_path(total_path) + + var dir = Directory.new() + if not dir.file_exists(total_path): + print_error("Image not found: %s" % [total_path]) + return ERR_FILE_NOT_FOUND + + if not total_path.begins_with("res://"): + # External images need to be embedded + embed = true + + var image = null + if embed: + var img = Image.new() + img.load(total_path) + image = ImageTexture.new() + image.create_from_image(img, flags) + else: + image = ResourceLoader.load(total_path, "ImageTexture") + if image != null: + image.set_flags(flags) + + return image + +# Reads a file and returns its contents as a dictionary +# Returns an error code if fails +func read_file(path): + if path.get_extension().to_lower() == "tmx": + var tmx_to_dict = TiledXMLToDictionary.new() + var data = tmx_to_dict.read_tmx(path) + if typeof(data) != TYPE_DICTIONARY: + # Error happened + print_error("Error parsing map file '%s'." % [path]) + # Return error or result + return data + + # Not TMX, must be JSON + var file = File.new() + var err = file.open(path, File.READ) + if err != OK: + return err + + var content = JSON.parse(file.get_as_text()) + if content.error != OK: + print_error("Error parsing JSON: " + content.error_string) + return content.error + + return content.result + +# Reads a tileset file and return its contents as a dictionary +# Returns an error code if fails +func read_tileset_file(path): + if path.get_extension().to_lower() == "tsx": + var tmx_to_dict = TiledXMLToDictionary.new() + var data = tmx_to_dict.read_tsx(path) + if typeof(data) != TYPE_DICTIONARY: + # Error happened + print_error("Error parsing map file '%s'." % [path]) + # Return error or result + return data + + # Not TSX, must be JSON + var file = File.new() + var err = file.open(path, File.READ) + if err != OK: + return err + + var content = JSON.parse(file.get_as_text()) + if content.error != OK: + print_error("Error parsing JSON: " + content.error_string) + return content.error + + return content.result + +# Creates a shape from an object data +# Returns a valid shape depending on the object type (collision/occluder/navigation) +func shape_from_object(object): + var shape = ERR_INVALID_DATA + set_default_obj_params(object) + + if "polygon" in object or "polyline" in object: + var vertices = PoolVector2Array() + + if "polygon" in object: + for point in object.polygon: + vertices.push_back(Vector2(float(point.x), float(point.y))) + else: + for point in object.polyline: + vertices.push_back(Vector2(float(point.x), float(point.y))) + + if object.type == "navigation": + shape = NavigationPolygon.new() + shape.vertices = vertices + shape.add_outline(vertices) + shape.make_polygons_from_outlines() + elif object.type == "occluder": + shape = OccluderPolygon2D.new() + shape.polygon = vertices + shape.closed = "polygon" in object + else: + if is_convex(vertices): + var sorter = PolygonSorter.new() + vertices = sorter.sort_polygon(vertices) + shape = ConvexPolygonShape2D.new() + shape.points = vertices + else: + shape = ConcavePolygonShape2D.new() + var segments = [vertices[0]] + for x in range(1, vertices.size()): + segments.push_back(vertices[x]) + segments.push_back(vertices[x]) + segments.push_back(vertices[0]) + shape.segments = PoolVector2Array(segments) + + elif "ellipse" in object: + if object.type == "navigation" or object.type == "occluder": + print_error("Ellipse shapes are not supported as navigation or occluder. Use polygon/polyline instead.") + return ERR_INVALID_DATA + + if not "width" in object or not "height" in object: + print_error("Missing width or height in ellipse shape.") + return ERR_INVALID_DATA + + var w = abs(float(object.width)) + var h = abs(float(object.height)) + + if w == h: + shape = CircleShape2D.new() + shape.radius = w / 2.0 + else: + # Using a capsule since it's the closest from an ellipse + shape = CapsuleShape2D.new() + shape.radius = w / 2.0 + shape.height = h / 2.0 + + else: # Rectangle + if not "width" in object or not "height" in object: + print_error("Missing width or height in rectangle shape.") + return ERR_INVALID_DATA + + var size = Vector2(float(object.width), float(object.height)) + + if object.type == "navigation" or object.type == "occluder": + # Those types only accept polygons, so make one from the rectangle + var vertices = PoolVector2Array([ + Vector2(0, 0), + Vector2(size.x, 0), + size, + Vector2(0, size.y) + ]) + if object.type == "navigation": + shape = NavigationPolygon.new() + shape.vertices = vertices + shape.add_outline(vertices) + shape.make_polygons_from_outlines() + else: + shape = OccluderPolygon2D.new() + shape.polygon = vertices + else: + shape = RectangleShape2D.new() + shape.extents = size / 2.0 + + return shape + +# Determines if the set of vertices is convex or not +# Returns a boolean +func is_convex(vertices): + var size = vertices.size() + if size <= 3: + # Less than 3 verices can't be concave + return true + + var cp = 0 + + for i in range(0, size + 2): + var p1 = vertices[(i + 0) % size] + var p2 = vertices[(i + 1) % size] + var p3 = vertices[(i + 2) % size] + + var prev_cp = cp + cp = (p2.x - p1.x) * (p3.y - p2.y) - (p2.y - p1.y) * (p3.x - p2.x) + if i > 0 and sign(cp) != sign(prev_cp): + return false + + return true + +# Decompress the data of the layer +# Compression argument is a string, either "gzip" or "zlib" +func decompress_layer_data(layer_data, compression, map_size): + if compression != "gzip" and compression != "zlib": + print_error("Unrecognized compression format: %s" % [compression]) + return ERR_INVALID_DATA + + var compression_type = File.COMPRESSION_DEFLATE if compression == "zlib" else File.COMPRESSION_GZIP + var expected_size = int(map_size.x) * int(map_size.y) * 4 + var raw_data = Marshalls.base64_to_raw(layer_data).decompress(expected_size, compression_type) + + return decode_layer(raw_data) + +# Reads the layer as a base64 data +# Returns an array of ints as the decoded layer would be +func read_base64_layer_data(layer_data): + var decoded = Marshalls.base64_to_raw(layer_data) + return decode_layer(decoded) + +# Reads a PoolByteArray and returns the layer array +# Used for base64 encoded and compressed layers +func decode_layer(layer_data): + var result = [] + for i in range(0, layer_data.size(), 4): + var num = (layer_data[i]) | \ + (layer_data[i + 1] << 8) | \ + (layer_data[i + 2] << 16) | \ + (layer_data[i + 3] << 24) + result.push_back(num) + return result + +# Set the custom properties into the metadata of the object +func set_custom_properties(object, tiled_object): + if not "properties" in tiled_object or not "propertytypes" in tiled_object: + return + + var properties = get_custom_properties(tiled_object.properties, tiled_object.propertytypes) + for property in properties: + object.set_meta(property, properties[property]) + +# Get the custom properties as a dictionary +# Useful for tile meta, which is not stored directly +func get_custom_properties(properties, types): + var result = {} + + for property in properties: + var value = null + if str(types[property]).to_lower() == "bool": + value = bool(properties[property]) + elif str(types[property]).to_lower() == "int": + value = int(properties[property]) + elif str(types[property]).to_lower() == "float": + value = float(properties[property]) + elif str(types[property]).to_lower() == "color": + value = Color(properties[property]) + else: + value = str(properties[property]) + result[property] = value + return result + +# Get the available whitelisted properties from the Tiled object +# And them as metadata in the Godot object +func set_tiled_properties_as_meta(object, tiled_object): + for property in whitelist_properties: + if property in tiled_object: + object.set_meta(property, tiled_object[property]) + +# Custom function to sort objects in an object layer +# This is done to support the "topdown" draw order, which sorts by 'y' coordinate +func object_sorter(first, second): + if first.y == second.y: + return first.id < second.id + return first.y < second.y + +# Create the tilecount for the TileSet if not present. +# Based on the image and tile dimensions. +func make_tilecount(tilesize, imagesize, margin, spacing): + var horizontal_tile_size = int(tilesize.x + margin * 2 + spacing) + var vertical_tile_size = int(tilesize.y + margin * 2 + spacing) + + var horizontal_tile_count = int(imagesize.x) / horizontal_tile_size; + var vertical_tile_count = int(imagesize.y) / vertical_tile_size; + + return horizontal_tile_count * vertical_tile_count + +# Validates the map dictionary content for missing or invalid keys +# Returns an error code +func validate_map(map): + if not "type" in map or map.type != "map": + print_error("Missing or invalid type property.") + return ERR_INVALID_DATA + elif not "version" in map or int(map.version) != 1: + print_error("Missing or invalid map version.") + return ERR_INVALID_DATA + elif not "tileheight" in map or not str(map.tileheight).is_valid_integer(): + print_error("Missing or invalid tileheight property.") + return ERR_INVALID_DATA + elif not "tilewidth" in map or not str(map.tilewidth).is_valid_integer(): + print_error("Missing or invalid tilewidth property.") + return ERR_INVALID_DATA + elif not "layers" in map or typeof(map.layers) != TYPE_ARRAY: + print_error("Missing or invalid layers property.") + return ERR_INVALID_DATA + elif not "tilesets" in map or typeof(map.tilesets) != TYPE_ARRAY: + print_error("Missing or invalid tilesets property.") + return ERR_INVALID_DATA + if "orientation" in map and (map.orientation == "staggered" or map.orientation == "hexagonal"): + if not "staggeraxis" in map: + print_error("Missing stagger axis property.") + return ERR_INVALID_DATA + elif not "staggerindex" in map: + print_error("Missing stagger axis property.") + return ERR_INVALID_DATA + return OK + +# Validates the tileset dictionary content for missing or invalid keys +# Returns an error code +func validate_tileset(tileset): + if not "firstgid" in tileset or not str(tileset.firstgid).is_valid_integer(): + print_error("Missing or invalid firstgid tileset property.") + return ERR_INVALID_DATA + elif not "tilewidth" in tileset or not str(tileset.tilewidth).is_valid_integer(): + print_error("Missing or invalid tilewidth tileset property.") + return ERR_INVALID_DATA + elif not "tileheight" in tileset or not str(tileset.tileheight).is_valid_integer(): + print_error("Missing or invalid tileheight tileset property.") + return ERR_INVALID_DATA + if not "image" in tileset: + for tile in tileset.tiles: + if not "image" in tileset.tiles[tile]: + print_error("Missing or invalid image in tileset property.") + return ERR_INVALID_DATA + elif not "imagewidth" in tileset.tiles[tile] or not str(tileset.tiles[tile].imagewidth).is_valid_integer(): + print_error("Missing or invalid imagewidth tileset property 1.") + return ERR_INVALID_DATA + elif not "imageheight" in tileset.tiles[tile] or not str(tileset.tiles[tile].imageheight).is_valid_integer(): + print_error("Missing or invalid imageheight tileset property.") + return ERR_INVALID_DATA + else: + if not "imagewidth" in tileset or not str(tileset.imagewidth).is_valid_integer(): + print_error("Missing or invalid imagewidth tileset property 2.") + return ERR_INVALID_DATA + elif not "imageheight" in tileset or not str(tileset.imageheight).is_valid_integer(): + print_error("Missing or invalid imageheight tileset property.") + return ERR_INVALID_DATA + return OK + +# Validates the layer dictionary content for missing or invalid keys +# Returns an error code +func validate_layer(layer): + if not "type" in layer: + print_error("Missing or invalid type layer property.") + return ERR_INVALID_DATA + elif not "name" in layer: + print_error("Missing or invalid name layer property.") + return ERR_INVALID_DATA + match layer.type: + "tilelayer": + if not "height" in layer or not str(layer.height).is_valid_integer(): + print_error("Missing or invalid layer height property.") + return ERR_INVALID_DATA + elif not "width" in layer or not str(layer.width).is_valid_integer(): + print_error("Missing or invalid layer width property.") + return ERR_INVALID_DATA + elif not "data" in layer: + if not "chunks" in layer: + print_error("Missing data or chunks layer properties.") + return ERR_INVALID_DATA + elif typeof(layer.chunks) != TYPE_ARRAY: + print_error("Invalid chunks layer property.") + return ERR_INVALID_DATA + elif "encoding" in layer: + if layer.encoding == "base64" and typeof(layer.data) != TYPE_STRING: + print_error("Invalid data layer property.") + return ERR_INVALID_DATA + if layer.encoding != "base64" and typeof(layer.data) != TYPE_ARRAY: + print_error("Invalid data layer property.") + return ERR_INVALID_DATA + elif typeof(layer.data) != TYPE_ARRAY: + print_error("Invalid data layer property.") + return ERR_INVALID_DATA + if "compression" in layer: + if layer.compression != "gzip" and layer.compression != "zlib": + print_error("Invalid compression type.") + return ERR_INVALID_DATA + "imagelayer": + if not "image" in layer or typeof(layer.image) != TYPE_STRING: + print_error("Missing or invalid image path for layer.") + return ERR_INVALID_DATA + "objectgroup": + if not "objects" in layer or typeof(layer.objects) != TYPE_ARRAY: + print_error("Missing or invalid objects array for layer.") + return ERR_INVALID_DATA + "group": + if not "layers" in layer or typeof(layer.layers) != TYPE_ARRAY: + print_error("Missing or invalid layer array for group layer.") + return ERR_INVALID_DATA + return OK + +func validate_chunk(chunk): + if not "data" in chunk: + print_error("Missing data chunk property.") + return ERR_INVALID_DATA + elif not "height" in chunk or not str(chunk.height).is_valid_integer(): + print_error("Missing or invalid height chunk property.") + return ERR_INVALID_DATA + elif not "width" in chunk or not str(chunk.width).is_valid_integer(): + print_error("Missing or invalid width chunk property.") + return ERR_INVALID_DATA + elif not "x" in chunk or not str(chunk.x).is_valid_integer(): + print_error("Missing or invalid x chunk property.") + return ERR_INVALID_DATA + elif not "y" in chunk or not str(chunk.y).is_valid_integer(): + print_error("Missing or invalid y chunk property.") + return ERR_INVALID_DATA + return OK + +# Custom function to print error, to centralize the prefix addition +func print_error(err): + printerr(error_prefix + err) + +func get_template(path): + # If this template has not yet been loaded + if not _loaded_templates.has(path): + # IS XML + if path.get_extension().to_lower() == "tx": + var parser = XMLParser.new() + var err = parser.open(path) + if err != OK: + print_error("Error opening TX file '%s'." % [path]) + return err + var content = parse_template(parser, path) + if typeof(content) != TYPE_DICTIONARY: + # Error happened + print_error("Error parsing template map file '%s'." % [path]) + return false + _loaded_templates[path] = content + + # IS JSON + else: + var file = File.new() + var err = file.open(path, File.READ) + if err != OK: + return err + + var json_res = JSON.parse(file.get_as_text()) + if json_res.error != OK: + print_error("Error parsing JSON template map file '%s'." % [path]) + return json_res.error + + var result = json_res.result + if typeof(result) != TYPE_DICTIONARY: + print_error("Error parsing JSON template map file '%s'." % [path]) + return ERR_INVALID_DATA + + var object = result.object + if object.has("gid"): + if result.has("tileset"): + var ts_path = remove_filename_from_path(path) + result.tileset.source + var tileset_gid_increment = get_first_gid_from_tileset_path(ts_path) - 1 + object.gid += tileset_gid_increment + + _loaded_templates[path] = object + + var dict = _loaded_templates[path] + var dictCopy = {} + for k in dict: + dictCopy[k] = dict[k] + + return dictCopy + +func parse_template(parser, path): + var err = OK + # Template root node shouldn't have attributes + var data = {} + var tileset_gid_increment = 0 + data.id = 0 + + err = parser.read() + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "template": + break + + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "tileset": + var ts_path = remove_filename_from_path(path) + parser.get_named_attribute_value_safe("source") + tileset_gid_increment = get_first_gid_from_tileset_path(ts_path) - 1 + data.tileset = ts_path + + if parser.get_node_name() == "object": + var object = TiledXMLToDictionary.parse_object(parser) + for k in object: + data[k] = object[k] + + err = parser.read() + + if data.has("gid"): + data["gid"] += tileset_gid_increment + + return data + +func get_first_gid_from_tileset_path(path): + for t in _tileset_path_to_first_gid: + if is_same_file(path, t): + return _tileset_path_to_first_gid[t] + + return 0 + +static func get_filename_from_path(path): + var substrings = path.split("/", false) + var file_name = substrings[substrings.size() - 1] + return file_name + +static func remove_filename_from_path(path): + var file_name = get_filename_from_path(path) + var stringSize = path.length() - file_name.length() + var file_path = path.substr(0,stringSize) + return file_path + +static func is_same_file(path1, path2): + var file1 = File.new() + var err = file1.open(path1, File.READ) + if err != OK: + return err + + var file2 = File.new() + err = file2.open(path2, File.READ) + if err != OK: + return err + + var file1_str = file1.get_as_text() + var file2_str = file2.get_as_text() + + if file1_str == file2_str: + return true + + return false + +static func apply_template(object, template_immutable): + for k in template_immutable: + # Do not overwrite any object data + if typeof(template_immutable[k]) == TYPE_DICTIONARY: + if not object.has(k): + object[k] = {} + apply_template(object[k], template_immutable[k]) + + elif not object.has(k): + object[k] = template_immutable[k] diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_tileset_import_plugin.gd b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_tileset_import_plugin.gd new file mode 100644 index 0000000..9a86758 --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_tileset_import_plugin.gd @@ -0,0 +1,121 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018 George Marques +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +tool +extends EditorImportPlugin + +enum { PRESET_DEFAULT, PRESET_PIXEL_ART } + +const TiledMapReader = preload("tiled_map_reader.gd") + +func get_importer_name(): + return "vnen.tiled_tileset_importer" + +func get_visible_name(): + return "TileSet from Tiled" + +func get_recognized_extensions(): + if ProjectSettings.get_setting("tiled_importer/enable_json_format"): + return ["json", "tsx"] + else: + return ["tsx"] + +func get_save_extension(): + return "res" + +func get_import_order(): + return 100 + +func get_resource_type(): + return "TileSet" + +func get_preset_count(): + return 2 + +func get_preset_name(preset): + match preset: + PRESET_DEFAULT: return "Default" + PRESET_PIXEL_ART: return "Pixel Art" + +func get_import_options(preset): + return [ + { + "name": "custom_properties", + "default_value": true + }, + { + "name": "tile_metadata", + "default_value": false + }, + { + "name": "image_flags", + "default_value": 0 if preset == PRESET_PIXEL_ART else Texture.FLAGS_DEFAULT, + "property_hint": PROPERTY_HINT_FLAGS, + "hint_string": "Mipmaps,Repeat,Filter,Anisotropic,sRGB,Mirrored Repeat" + }, + { + "name": "embed_internal_images", + "default_value": true if preset == PRESET_PIXEL_ART else false + }, + { + "name": "save_tiled_properties", + "default_value": false + }, + { + "name": "post_import_script", + "default_value": "", + "property_hint": PROPERTY_HINT_FILE, + "hint_string": "*.gd;GDScript" + } + ] + +func get_option_visibility(option, options): + return true + +func import(source_file, save_path, options, r_platform_variants, r_gen_files): + var map_reader = TiledMapReader.new() + + var tileset = map_reader.build_tileset(source_file, options) + + if typeof(tileset) != TYPE_OBJECT: + # Error happened + return tileset + + # Post imports script + if not options.post_import_script.empty(): + var script = load(options.post_import_script) + if not script or not script is GDScript: + printerr("Post import script is not a GDScript.") + return ERR_INVALID_PARAMETER + + script = script.new() + if not script.has_method("post_import"): + printerr("Post import script does not have a 'post_import' method.") + return ERR_INVALID_PARAMETER + + tileset = script.post_import(tileset) + + if not tileset or not tileset is TileSet: + printerr("Invalid TileSet returned from post import script.") + return ERR_INVALID_DATA + + return ResourceSaver.save("%s.%s" % [save_path, get_save_extension()], tileset) diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_xml_to_dict.gd b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_xml_to_dict.gd new file mode 100644 index 0000000..9064b90 --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/tiled_xml_to_dict.gd @@ -0,0 +1,571 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018 George Marques +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +tool +extends Reference + +# Reads a TMX file from a path and return a Dictionary with the same structure +# as the JSON map format +# Returns an error code if failed +func read_tmx(path): + var parser = XMLParser.new() + var err = parser.open(path) + if err != OK: + printerr("Error opening TMX file '%s'." % [path]) + return err + + while parser.get_node_type() != XMLParser.NODE_ELEMENT: + err = parser.read() + if err != OK: + printerr("Error parsing TMX file '%s' (around line %d)." % [path, parser.get_current_line()]) + return err + + if parser.get_node_name().to_lower() != "map": + printerr("Error parsing TMX file '%s'. Expected 'map' element.") + return ERR_INVALID_DATA + + var data = attributes_to_dict(parser) + if not "infinite" in data: + data.infinite = false + data.type = "map" + data.tilesets = [] + data.layers = [] + + err = parser.read() + if err != OK: + printerr("Error parsing TMX file '%s' (around line %d)." % [path, parser.get_current_line()]) + return err + + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "map": + break + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "tileset": + # Empty element means external tileset + if not parser.is_empty(): + var tileset = parse_tileset(parser) + if typeof(tileset) != TYPE_DICTIONARY: + # Error happened + return err + data.tilesets.push_back(tileset) + else: + var tileset_data = attributes_to_dict(parser) + if not "source" in tileset_data: + printerr("Error parsing TMX file '%s'. Missing tileset source (around line %d)." % [path, parser.get_current_line()]) + return ERR_INVALID_DATA + data.tilesets.push_back(tileset_data) + + elif parser.get_node_name() == "layer": + var layer = parse_tile_layer(parser, data.infinite) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file '%s'. Invalid tile layer data (around line %d)." % [path, parser.get_current_line()]) + return ERR_INVALID_DATA + data.layers.push_back(layer) + + elif parser.get_node_name() == "imagelayer": + var layer = parse_image_layer(parser) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file '%s'. Invalid image layer data (around line %d)." % [path, parser.get_current_line()]) + return ERR_INVALID_DATA + data.layers.push_back(layer) + + elif parser.get_node_name() == "objectgroup": + var layer = parse_object_layer(parser) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file '%s'. Invalid object layer data (around line %d)." % [path, parser.get_current_line()]) + return ERR_INVALID_DATA + data.layers.push_back(layer) + + elif parser.get_node_name() == "group": + var layer = parse_group_layer(parser, data.infinite) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file '%s'. Invalid group layer data (around line %d)." % [path, parser.get_current_line()]) + return ERR_INVALID_DATA + data.layers.push_back(layer) + + elif parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + if typeof(prop_data) == TYPE_STRING: + return prop_data + + data.properties = prop_data.properties + data.propertytypes = prop_data.propertytypes + + err = parser.read() + + return data + +# Reads a TSX and return a tileset dictionary +# Returns an error code if fails +func read_tsx(path): + var parser = XMLParser.new() + var err = parser.open(path) + if err != OK: + printerr("Error opening TSX file '%s'." % [path]) + return err + + while parser.get_node_type() != XMLParser.NODE_ELEMENT: + err = parser.read() + if err != OK: + printerr("Error parsing TSX file '%s' (around line %d)." % [path, parser.get_current_line()]) + return err + + if parser.get_node_name().to_lower() != "tileset": + printerr("Error parsing TMX file '%s'. Expected 'map' element.") + return ERR_INVALID_DATA + + var tileset = parse_tileset(parser) + + return tileset + +# Parses a tileset element from the XML and return a dictionary +# Return an error code if fails +func parse_tileset(parser): + var err = OK + var data = attributes_to_dict(parser) + data.tiles = {} + + err = parser.read() + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "tileset": + break + + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "tile": + var attr = attributes_to_dict(parser) + var tile_data = parse_tile_data(parser) + if typeof(tile_data) != TYPE_DICTIONARY: + # Error happened + return tile_data + if "properties" in tile_data and "propertytypes" in tile_data: + if not "tileproperties" in data: + data.tileproperties = {} + data.tilepropertytypes = {} + data.tileproperties[str(attr.id)] = tile_data.properties + data.tilepropertytypes[str(attr.id)] = tile_data.propertytypes + tile_data.erase("tileproperties") + tile_data.erase("tilepropertytypes") + data.tiles[str(attr.id)] = tile_data + + elif parser.get_node_name() == "image": + var attr = attributes_to_dict(parser) + if not "source" in attr: + printerr("Error loading image tag. No source attribute found (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + data.image = attr.source + if "width" in attr: + data.imagewidth = attr.width + if "height" in attr: + data.imageheight = attr.height + + elif parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + if typeof(prop_data) != TYPE_DICTIONARY: + # Error happened + return prop_data + + data.properties = prop_data.properties + data.propertytypes = prop_data.propertytypes + + err = parser.read() + + return data + + +# Parses the data of a single tile from the XML and return a dictionary +# Returns an error code if fails +func parse_tile_data(parser): + var err = OK + var data = {} + var obj_group = {} + if parser.is_empty(): + return data + + err = parser.read() + while err == OK: + + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "tile": + return data + elif parser.get_node_name() == "objectgroup": + data.objectgroup = obj_group + + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "image": + # If there are multiple images in one tile we only use the last one. + var attr = attributes_to_dict(parser) + if not "source" in attr: + printerr("Error loading image tag. No source attribute found (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + data.image = attr.source + data.imagewidth = attr.width + data.imageheight = attr.height + + elif parser.get_node_name() == "objectgroup": + obj_group = attributes_to_dict(parser) + for attr in ["width", "height", "offsetx", "offsety"]: + if not attr in obj_group: + data[attr] = 0 + if not "opacity" in data: + data.opacity = 1 + if not "visible" in data: + data.visible = true + if parser.is_empty(): + data.objectgroup = obj_group + + elif parser.get_node_name() == "object": + if not "objects" in obj_group: + obj_group.objects = [] + var obj = parse_object(parser) + if typeof(obj) != TYPE_DICTIONARY: + # Error happened + return obj + obj_group.objects.push_back(obj) + + elif parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + data["properties"] = prop_data.properties + data["propertytypes"] = prop_data.propertytypes + + elif parser.get_node_name() == "animation": + var frame_list = [] + var err2 = parser.read() + while err2 == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "frame": + var frame = {"tileid": 0, "duration": 0} + for i in parser.get_attribute_count(): + if parser.get_attribute_name(i) == "tileid": + frame["tileid"] = parser.get_attribute_value(i) + if parser.get_attribute_name(i) == "duration": + frame["duration"] = parser.get_attribute_value(i) + frame_list.push_back(frame) + elif parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "animation": + break + err2 = parser.read() + + data["animation"] = frame_list + + err = parser.read() + + return data + +# Parses the data of a single object from the XML and return a dictionary +# Returns an error code if fails +static func parse_object(parser): + var err = OK + var data = attributes_to_dict(parser) + + if not parser.is_empty(): + err = parser.read() + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "object": + break + + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + data["properties"] = prop_data.properties + data["propertytypes"] = prop_data.propertytypes + + elif parser.get_node_name() == "point": + data.point = true + + elif parser.get_node_name() == "ellipse": + data.ellipse = true + + elif parser.get_node_name() == "polygon" or parser.get_node_name() == "polyline": + var points = [] + var points_raw = parser.get_named_attribute_value("points").split(" ", false, 0) + + for pr in points_raw: + points.push_back({ + "x": float(pr.split(",")[0]), + "y": float(pr.split(",")[1]), + }) + + data[parser.get_node_name()] = points + + err = parser.read() + + return data + + +# Parses a tile layer from the XML and return a dictionary +# Returns an error code if fails +func parse_tile_layer(parser, infinite): + var err = OK + var data = attributes_to_dict(parser) + data.type = "tilelayer" + if not "x" in data: + data.x = 0 + if not "y" in data: + data.y = 0 + if infinite: + data.chunks = [] + else: + data.data = [] + + var current_chunk = null + var encoding = "" + + if not parser.is_empty(): + err = parser.read() + + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "layer": + break + elif parser.get_node_name() == "chunk": + data.chunks.push_back(current_chunk) + current_chunk = null + + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "data": + var attr = attributes_to_dict(parser) + + if "compression" in attr: + data.compression = attr.compression + + if "encoding" in attr: + encoding = attr.encoding + if attr.encoding != "csv": + data.encoding = attr.encoding + + if not infinite: + err = parser.read() + if err != OK: + return err + + if attr.encoding != "csv": + data.data = parser.get_node_data().strip_edges() + else: + var csv = parser.get_node_data().split(",", false) + + for v in csv: + data.data.push_back(int(v.strip_edges())) + + elif parser.get_node_name() == "tile": + var gid = int(parser.get_named_attribute_value_safe("gid")) + if infinite: + current_chunk.data.push_back(gid) + else: + data.data.push_back(gid) + + elif parser.get_node_name() == "chunk": + current_chunk = attributes_to_dict(parser) + current_chunk.data = [] + if encoding != "": + err = parser.read() + if err != OK: + return err + if encoding != "csv": + current_chunk.data = parser.get_node_data().strip_edges() + else: + var csv = parser.get_node_data().split(",", false) + for v in csv: + current_chunk.data.push_back(int(v.strip_edges())) + + elif parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + if typeof(prop_data) == TYPE_STRING: + return prop_data + + data.properties = prop_data.properties + data.propertytypes = prop_data.propertytypes + + err = parser.read() + + return data + +# Parses an object layer from the XML and return a dictionary +# Returns an error code if fails +func parse_object_layer(parser): + var err = OK + var data = attributes_to_dict(parser) + data.type = "objectgroup" + data.objects = [] + + if not parser.is_empty(): + err = parser.read() + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "objectgroup": + break + if parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "object": + data.objects.push_back(parse_object(parser)) + elif parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + if typeof(prop_data) != TYPE_DICTIONARY: + # Error happened + return prop_data + data.properties = prop_data.properties + data.propertytypes = prop_data.propertytypes + + err = parser.read() + + return data + +# Parses an image layer from the XML and return a dictionary +# Returns an error code if fails +func parse_image_layer(parser): + var err = OK + var data = attributes_to_dict(parser) + data.type = "imagelayer" + data.image = "" + + if not parser.is_empty(): + err = parser.read() + + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name().to_lower() == "imagelayer": + break + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name().to_lower() == "image": + var image = attributes_to_dict(parser) + if not image.has("source"): + printerr("Missing source attribute in imagelayer (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + data.image = image.source + + elif parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + if typeof(prop_data) != TYPE_DICTIONARY: + # Error happened + return prop_data + data.properties = prop_data.properties + data.propertytypes = prop_data.propertytypes + + err = parser.read() + + return data + +# Parses a group layer from the XML and return a dictionary +# Returns an error code if fails +func parse_group_layer(parser, infinite): + var err = OK + var result = attributes_to_dict(parser) + result.type = "group" + result.layers = [] + + if not parser.is_empty(): + err = parser.read() + + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name().to_lower() == "group": + break + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "layer": + var layer = parse_tile_layer(parser, infinite) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file. Invalid tile layer data (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + result.layers.push_back(layer) + + elif parser.get_node_name() == "imagelayer": + var layer = parse_image_layer(parser) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file. Invalid image layer data (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + result.layers.push_back(layer) + + elif parser.get_node_name() == "objectgroup": + var layer = parse_object_layer(parser) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file. Invalid object layer data (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + result.layers.push_back(layer) + + elif parser.get_node_name() == "group": + var layer = parse_group_layer(parser, infinite) + if typeof(layer) != TYPE_DICTIONARY: + printerr("Error parsing TMX file. Invalid group layer data (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + result.layers.push_back(layer) + + elif parser.get_node_name() == "properties": + var prop_data = parse_properties(parser) + if typeof(prop_data) == TYPE_STRING: + return prop_data + + result.properties = prop_data.properties + result.propertytypes = prop_data.propertytypes + + err = parser.read() + return result + +# Parses properties data from the XML and return a dictionary +# Returns an error code if fails +static func parse_properties(parser): + var err = OK + var data = { + "properties": {}, + "propertytypes": {}, + } + + if not parser.is_empty(): + err = parser.read() + + while err == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "properties": + break + elif parser.get_node_type() == XMLParser.NODE_ELEMENT: + if parser.get_node_name() == "property": + var prop_data = attributes_to_dict(parser) + if not (prop_data.has("name") and prop_data.has("value")): + printerr("Missing information in custom properties (around line %d)." % [parser.get_current_line()]) + return ERR_INVALID_DATA + + data.properties[prop_data.name] = prop_data.value + if prop_data.has("type"): + data.propertytypes[prop_data.name] = prop_data.type + else: + data.propertytypes[prop_data.name] = "string" + + err = parser.read() + + return data + +# Reads the attributes of the current element and return them as a dictionary +static func attributes_to_dict(parser): + var data = {} + for i in range(parser.get_attribute_count()): + var attr = parser.get_attribute_name(i) + var val = parser.get_attribute_value(i) + if val.is_valid_integer(): + val = int(val) + elif val.is_valid_float(): + val = float(val) + elif val == "true": + val = true + elif val == "false": + val = false + data[attr] = val + return data diff --git a/DungeonShooting_Godot/addons/vnen.tiled_importer/vnen.tiled_importer.gd b/DungeonShooting_Godot/addons/vnen.tiled_importer/vnen.tiled_importer.gd new file mode 100644 index 0000000..6f70315 --- /dev/null +++ b/DungeonShooting_Godot/addons/vnen.tiled_importer/vnen.tiled_importer.gd @@ -0,0 +1,45 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018 George Marques +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +tool +extends EditorPlugin + +var import_plugin = null +var tileset_import_plugin = null + +func get_name(): + return "Tiled Map Importer" + +func _enter_tree(): + if not ProjectSettings.has_setting("tiled_importer/enable_json_format"): + ProjectSettings.set_setting("tiled_importer/enable_json_format", true) + + import_plugin = preload("tiled_import_plugin.gd").new() + tileset_import_plugin = preload("tiled_tileset_import_plugin.gd").new() + add_import_plugin(import_plugin) + add_import_plugin(tileset_import_plugin) + +func _exit_tree(): + remove_import_plugin(import_plugin) + remove_import_plugin(tileset_import_plugin) + import_plugin = null + tileset_import_plugin = null diff --git a/DungeonShooting_Godot/default_bus_layout.tres b/DungeonShooting_Godot/default_bus_layout.tres new file mode 100644 index 0000000..60797cc --- /dev/null +++ b/DungeonShooting_Godot/default_bus_layout.tres @@ -0,0 +1,15 @@ +[gd_resource type="AudioBusLayout" format=2] + +[resource] +bus/1/name = "BGM" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = 0.0 +bus/1/send = "Master" +bus/2/name = "SFX" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = 0.0 +bus/2/send = "Master" diff --git a/DungeonShooting_Godot/default_env.tres b/DungeonShooting_Godot/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/DungeonShooting_Godot/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/DungeonShooting_Godot/icon.png b/DungeonShooting_Godot/icon.png new file mode 100644 index 0000000..c98fbb6 --- /dev/null +++ b/DungeonShooting_Godot/icon.png Binary files differ diff --git a/DungeonShooting_Godot/icon.png.import b/DungeonShooting_Godot/icon.png.import new file mode 100644 index 0000000..a4c02e6 --- /dev/null +++ b/DungeonShooting_Godot/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/DungeonShooting_Godot/prefab/effect/FirePart.tscn b/DungeonShooting_Godot/prefab/effect/FirePart.tscn new file mode 100644 index 0000000..ecf6b1b --- /dev/null +++ b/DungeonShooting_Godot/prefab/effect/FirePart.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=2 format=2] + +[sub_resource type="ParticlesMaterial" id=1] +flag_disable_z = true +spread = 60.0 +gravity = Vector3( 0, 0, 0 ) +initial_velocity = 200.0 +initial_velocity_random = 1.0 +orbit_velocity = 0.0 +orbit_velocity_random = 0.0 +linear_accel = -200.0 +linear_accel_random = 0.5 + +[node name="FirePart" type="Particles2D"] +emitting = false +amount = 10 +lifetime = 0.2 +one_shot = true +explosiveness = 1.0 +local_coords = false +process_material = SubResource( 1 ) +__meta__ = { +"_edit_vertical_guides_": [ ] +} diff --git a/DungeonShooting_Godot/prefab/effect/Hit.tscn b/DungeonShooting_Godot/prefab/effect/Hit.tscn new file mode 100644 index 0000000..685cc64 --- /dev/null +++ b/DungeonShooting_Godot/prefab/effect/Hit.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://resource/sprite/effect/hit/hit2.png" type="Texture" id=1] +[ext_resource path="res://resource/sprite/effect/hit/hit1.png" type="Texture" id=2] +[ext_resource path="res://resource/sprite/effect/hit/hit4.png" type="Texture" id=3] +[ext_resource path="res://resource/sprite/effect/hit/hit0.png" type="Texture" id=4] +[ext_resource path="res://resource/sprite/effect/hit/hit3.png" type="Texture" id=5] +[ext_resource path="res://src/effect/Hit.cs" type="Script" id=6] + +[sub_resource type="SpriteFrames" id=1] +animations = [ { +"frames": [ ExtResource( 4 ), ExtResource( 2 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 3 ) ], +"loop": true, +"name": "Hit", +"speed": 20.0 +} ] + +[node name="Hit" type="AnimatedSprite"] +frames = SubResource( 1 ) +animation = "Hit" +offset = Vector2( 1, 11 ) +script = ExtResource( 6 ) + +[connection signal="animation_finished" from="." to="." method="_on_Hit_animation_finished"] diff --git a/DungeonShooting_Godot/prefab/role/Player.tscn b/DungeonShooting_Godot/prefab/role/Player.tscn new file mode 100644 index 0000000..0389b0f --- /dev/null +++ b/DungeonShooting_Godot/prefab/role/Player.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://prefab/role/Role.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/role/Player.cs" type="Script" id=2] +[ext_resource path="res://prefab/weapon/Gun.tscn" type="PackedScene" id=4] + +[node name="Player" instance=ExtResource( 1 )] +collision_layer = 8 +script = ExtResource( 2 ) +GunPrefab = ExtResource( 4 ) + +[node name="AnimatedSprite" parent="." index="0"] +frame = 0 diff --git a/DungeonShooting_Godot/prefab/role/Role.tscn b/DungeonShooting_Godot/prefab/role/Role.tscn new file mode 100644 index 0000000..cfaf82e --- /dev/null +++ b/DungeonShooting_Godot/prefab/role/Role.tscn @@ -0,0 +1,122 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://src/role/Role.cs" type="Script" id=1] +[ext_resource path="res://resource/sprite/role/role2.png" type="Texture" id=2] +[ext_resource path="res://resource/sprite/role/role1.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=17] +atlas = ExtResource( 3 ) +region = Rect2( 0, 24, 16, 24 ) + +[sub_resource type="AtlasTexture" id=18] +atlas = ExtResource( 3 ) +region = Rect2( 16, 24, 16, 24 ) + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 3 ) +region = Rect2( 32, 24, 16, 24 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 3 ) +region = Rect2( 48, 24, 16, 24 ) + +[sub_resource type="AtlasTexture" id=21] +atlas = ExtResource( 3 ) +region = Rect2( 0, 48, 16, 24 ) + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 3 ) +region = Rect2( 16, 48, 16, 24 ) + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 3 ) +region = Rect2( 32, 48, 16, 24 ) + +[sub_resource type="AtlasTexture" id=24] +atlas = ExtResource( 3 ) +region = Rect2( 48, 48, 16, 24 ) + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 3 ) +region = Rect2( 48, 48, 16, 24 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 3 ) +region = Rect2( 32, 48, 16, 24 ) + +[sub_resource type="AtlasTexture" id=27] +atlas = ExtResource( 3 ) +region = Rect2( 16, 48, 16, 24 ) + +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 3 ) +region = Rect2( 0, 48, 16, 24 ) + +[sub_resource type="SpriteFrames" id=6] +animations = [ { +"frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ) ], +"loop": true, +"name": "idle", +"speed": 7.0 +}, { +"frames": [ SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ) ], +"loop": true, +"name": "run", +"speed": 10.0 +}, { +"frames": [ SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ) ], +"loop": true, +"name": "reverseRun", +"speed": 10.0 +} ] + +[sub_resource type="RectangleShape2D" id=29] +extents = Vector2( 5, 7.5 ) + +[sub_resource type="RectangleShape2D" id=16] +extents = Vector2( 5, 4.5 ) + +[node name="Role" type="KinematicBody2D"] +collision_layer = 0 +script = ExtResource( 1 ) +Texture = ExtResource( 2 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +position = Vector2( 0, -12 ) +frames = SubResource( 6 ) +animation = "idle" +frame = 2 +playing = true + +[node name="HitArea" type="Area2D" parent="."] +visible = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="HitArea"] +visible = false +position = Vector2( 0, -7.5 ) +shape = SubResource( 29 ) + +[node name="InteractiveArea" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 4 +monitorable = false + +[node name="Collision" type="CollisionShape2D" parent="InteractiveArea"] +position = Vector2( 0, -4.5 ) +shape = SubResource( 16 ) + +[node name="Collision" type="CollisionShape2D" parent="."] +visible = false +position = Vector2( 0, -4.5 ) +shape = SubResource( 16 ) + +[node name="MountPoint" type="Position2D" parent="."] +position = Vector2( 2, -4 ) +z_index = 1 + +[node name="BackMountPoint" type="Position2D" parent="."] +position = Vector2( 0, -10 ) +z_index = -1 + +[connection signal="area_entered" from="InteractiveArea" to="." method="_OnPropsEnter"] +[connection signal="area_exited" from="InteractiveArea" to="." method="_OnPropsExit"] diff --git a/DungeonShooting_Godot/prefab/ui/Cursor.tscn b/DungeonShooting_Godot/prefab/ui/Cursor.tscn new file mode 100644 index 0000000..3b0e0e7 --- /dev/null +++ b/DungeonShooting_Godot/prefab/ui/Cursor.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://resource/sprite/ui/Cursor.png" type="Texture" id=1] +[ext_resource path="res://src/effect/Cursor.cs" type="Script" id=2] + +[node name="Cursor" type="Node2D"] +script = ExtResource( 2 ) + +[node name="LT" type="Sprite" parent="."] +texture = ExtResource( 1 ) +offset = Vector2( -2, -2 ) +region_enabled = true +region_rect = Rect2( 0, 0, 4, 4 ) + +[node name="LB" type="Sprite" parent="."] +texture = ExtResource( 1 ) +offset = Vector2( -2, 2 ) +region_enabled = true +region_rect = Rect2( 0, 4, 4, 4 ) + +[node name="RT" type="Sprite" parent="."] +texture = ExtResource( 1 ) +offset = Vector2( 2, -2 ) +region_enabled = true +region_rect = Rect2( 4, 0, 4, 4 ) + +[node name="RB" type="Sprite" parent="."] +texture = ExtResource( 1 ) +offset = Vector2( 2, 2 ) +region_enabled = true +region_rect = Rect2( 4, 4, 4, 4 ) diff --git a/DungeonShooting_Godot/prefab/ui/RoomUI.tscn b/DungeonShooting_Godot/prefab/ui/RoomUI.tscn new file mode 100644 index 0000000..dc2944a --- /dev/null +++ b/DungeonShooting_Godot/prefab/ui/RoomUI.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://src/ui/RoomUI.cs" type="Script" id=1] +[ext_resource path="res://resource/sprite/ui/template-ui.png" type="Texture" id=2] + +[node name="RoomUI" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) + +[node name="TextureRect" type="TextureRect" parent="."] +margin_left = 13.0 +margin_top = 9.0 +margin_right = 90.0 +margin_bottom = 33.0 +texture = ExtResource( 2 ) diff --git a/DungeonShooting_Godot/prefab/weapon/Gun.tscn b/DungeonShooting_Godot/prefab/weapon/Gun.tscn new file mode 100644 index 0000000..2c54084 --- /dev/null +++ b/DungeonShooting_Godot/prefab/weapon/Gun.tscn @@ -0,0 +1,103 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://src/weapon/gun/OrdinaryGun.cs" type="Script" id=1] +[ext_resource path="res://resource/materlal/Shadow.gdshader" type="Shader" id=2] + +[sub_resource type="ShaderMaterial" id=9] +resource_local_to_scene = true +shader = ExtResource( 2 ) +shader_param/shadowColor = Color( 1, 1, 1, 1 ) +shader_param/schedule = 0.0 + +[sub_resource type="StreamTexture" id=8] +load_path = "res://.import/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.stex" + +[sub_resource type="Animation" id=3] +resource_name = "Floodlight" +length = 3.0 +loop = true +step = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("GunSprite:material:shader_param/shadowColor") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("GunSprite:material:shader_param/schedule") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.9, 2.4, 2.5, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 1.0, 1.0, 0.0 ] +} + +[sub_resource type="Animation" id=4] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("GunSprite:material:shader_param/shadowColor") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("GunSprite:material:shader_param/schedule") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 7.8, 3.5 ) + +[node name="Gun" type="Area2D"] +collision_layer = 4 +collision_mask = 0 +script = ExtResource( 1 ) + +[node name="GunSprite" type="Sprite" parent="."] +material = SubResource( 9 ) +position = Vector2( 0.4, -2.6 ) +scale = Vector2( 0.8, 0.8 ) +texture = SubResource( 8 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "Floodlight" +playback_process_mode = 0 +anims/Floodlight = SubResource( 3 ) +anims/RESET = SubResource( 4 ) + +[node name="OriginPoint" type="Position2D" parent="."] +position = Vector2( -3.60001, -1.1 ) + +[node name="ShellPoint" type="Position2D" parent="."] +position = Vector2( -2.60001, -2.60001 ) + +[node name="FirePoint" type="Position2D" parent="."] +position = Vector2( 7.39999, -1.1 ) + +[node name="Collision" type="CollisionShape2D" parent="."] +position = Vector2( 0.59999, 0.199997 ) +shape = SubResource( 1 ) diff --git a/DungeonShooting_Godot/prefab/weapon/bullet/HighSpeedBullet.tscn b/DungeonShooting_Godot/prefab/weapon/bullet/HighSpeedBullet.tscn new file mode 100644 index 0000000..f3a97b6 --- /dev/null +++ b/DungeonShooting_Godot/prefab/weapon/bullet/HighSpeedBullet.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://src/weapon/bullet/HighSpeedBullet.cs" type="Script" id=1] +[ext_resource path="res://prefab/effect/Hit.tscn" type="PackedScene" id=2] + +[sub_resource type="Curve" id=1] +_data = [ Vector2( 0, 0.781588 ), 0.0, 0.0, 0, 0, Vector2( 1, 1 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=2] +colors = PoolColorArray( 1, 1, 1, 0, 1, 1, 1, 0.705882 ) + +[node name="HighSpeedBullet" type="Node2D"] +script = ExtResource( 1 ) +Hit = ExtResource( 2 ) + +[node name="Line" type="Line2D" parent="."] +modulate = Color( 1, 0.937255, 0.843137, 1 ) +points = PoolVector2Array( 0, 0, 0, 10 ) +width = 1.0 +width_curve = SubResource( 1 ) +default_color = Color( 1, 1, 1, 1 ) +gradient = SubResource( 2 ) +begin_cap_mode = 2 +end_cap_mode = 2 + +[node name="RayCast2D" type="RayCast2D" parent="."] +visible = false diff --git a/DungeonShooting_Godot/prefab/weapon/bullet/OrdinaryBullets.tscn b/DungeonShooting_Godot/prefab/weapon/bullet/OrdinaryBullets.tscn new file mode 100644 index 0000000..f9d4848 --- /dev/null +++ b/DungeonShooting_Godot/prefab/weapon/bullet/OrdinaryBullets.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://src/weapon/bullet/OrdinaryBullets.cs" type="Script" id=1] +[ext_resource path="res://resource/sprite/bullet/bullet.png" type="Texture" id=2] +[ext_resource path="res://prefab/effect/Hit.tscn" type="PackedScene" id=3] + +[node name="OrdinaryBullets" type="Node2D"] +script = ExtResource( 1 ) +Hit = ExtResource( 3 ) + +[node name="RayCast2D" type="RayCast2D" parent="."] +enabled = true +cast_to = Vector2( 18, 0 ) + +[node name="Bullet" type="Sprite" parent="."] +position = Vector2( 0.5, 0 ) +texture = ExtResource( 2 ) +offset = Vector2( -7.5, 0 ) diff --git a/DungeonShooting_Godot/prefab/weapon/shell/ShellCase.tscn b/DungeonShooting_Godot/prefab/weapon/shell/ShellCase.tscn new file mode 100644 index 0000000..8741487 --- /dev/null +++ b/DungeonShooting_Godot/prefab/weapon/shell/ShellCase.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://resource/sprite/shell/shellCase.png" type="Texture" id=1] + +[node name="ShellCase" type="Sprite"] +texture = ExtResource( 1 ) diff --git a/DungeonShooting_Godot/project.godot b/DungeonShooting_Godot/project.godot new file mode 100644 index 0000000..34cffb4 --- /dev/null +++ b/DungeonShooting_Godot/project.godot @@ -0,0 +1,180 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +[application] + +config/name="DungeonShooting" +run/main_scene="res://scene/Room.tscn" +config/icon="res://icon.png" + +[autoload] + +GameManager="*res://src/manager/GameManager.cs" + +[display] + +window/size/width=480 +window/size/height=270 +window/size/test_width=1920 +window/size/test_height=1080 +window/dpi/allow_hidpi=true +window/vsync/vsync_via_compositor=true +window/stretch/aspect="keep_width" +window/stretch/shrink=4.0 + +[editor_plugins] + +enabled=PoolStringArray( "res://addons/vnen.tiled_importer/plugin.cfg" ) + +[importer_defaults] + +texture={ +"compress/bptc_ldr": 0, +"compress/hdr_mode": 0, +"compress/lossy_quality": 0.7, +"compress/mode": 0, +"compress/normal_map": 0, +"detect_3d": false, +"flags/anisotropic": false, +"flags/filter": false, +"flags/mipmaps": false, +"flags/repeat": 0, +"flags/srgb": 2, +"process/HDR_as_SRGB": false, +"process/fix_alpha_border": true, +"process/invert_color": false, +"process/normal_map_invert_y": false, +"process/premult_alpha": false, +"size_limit": 0, +"stream": false, +"svg/scale": 1.0 +} +vnen.tiled_tileset_importer={ +"custom_properties": true, +"embed_internal_images": false, +"image_flags": 3, +"post_import_script": "", +"save_tiled_properties": false, +"tile_metadata": false +} +vnen.tiled_importer={ +"add_background": true, +"collision_layer": 1, +"custom_properties": true, +"embed_internal_images": true, +"image_flags": 0, +"post_import_script": "", +"save_tiled_properties": false, +"tile_metadata": false, +"uv_clip": true +} + +[input] + +ui_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_up={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_down={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) + ] +} +fire={ +"deadzone": 0.5, +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) + ] +} +move_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +move_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +move_up={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +move_down={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +exchange={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":81,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +throw={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":71,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +mouse_roll_up={ +"deadzone": 0.5, +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":4,"pressed":false,"doubleclick":false,"script":null) + ] +} +mouse_roll_down={ +"deadzone": 0.5, +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":5,"pressed":false,"doubleclick":false,"script":null) + ] +} +interactive={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +reload={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} + +[layer_names] + +2d_physics/layer_1="wall" +2d_physics/layer_2="bullet" +2d_physics/layer_3="props" +2d_physics/layer_4="player" +2d_physics/layer_5="enemy" + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +2d/snapping/use_gpu_pixel_snap=true +environment/default_environment="res://default_env.tres" + +[tiled_importer] + +enable_json_format=true diff --git a/DungeonShooting_Godot/resource/map/dungeon_test.tmx b/DungeonShooting_Godot/resource/map/dungeon_test.tmx new file mode 100644 index 0000000..fb1ba2f --- /dev/null +++ b/DungeonShooting_Godot/resource/map/dungeon_test.tmx @@ -0,0 +1,101 @@ + + + + + + + + +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129 + + + + +51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, +51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, +51,51,39,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,14,51,12,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,41,51,51, +51,51,52,118,119,119,119,119,119,119,119,119,119,119,119,119,119,120,50,51,52,19,19,19,19,19,19,19,19,19,19,19,19,19,19,118,120,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,44,35,35,35,35,35,35,35,35,35,35,36,0,0,34,35,46,51,44,35,36,0,0,34,35,35,35,35,35,35,35,35,35,35,35,46,51,51, +51,51,12,99,99,99,99,99,99,99,99,99,99,100,0,0,98,99,99,99,99,99,100,0,0,98,99,99,99,99,99,99,99,99,99,99,99,14,51,51, +51,51,52,19,19,19,19,19,19,19,19,19,19,20,0,0,18,19,19,19,19,19,20,0,0,18,19,19,19,19,19,19,19,19,19,19,19,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,44,35,35,36,0,0,34,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,36,0,0,34,35,35,46,51,51, +51,51,12,99,99,100,0,0,98,99,99,99,99,99,99,99,99,99,41,51,39,99,99,99,99,99,99,99,99,99,99,100,0,0,98,99,99,14,51,51, +51,51,52,19,19,20,0,0,117,118,118,118,118,118,118,118,118,119,50,51,52,19,19,19,19,19,19,19,19,19,19,20,0,0,18,19,19,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,99,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,35,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, +51,51,44,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,46,51,44,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,46,51,51, +51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, +51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51 + + + + + + + + + diff --git a/DungeonShooting_Godot/resource/map/dungeon_test.tmx.import b/DungeonShooting_Godot/resource/map/dungeon_test.tmx.import new file mode 100644 index 0000000..4df7810 --- /dev/null +++ b/DungeonShooting_Godot/resource/map/dungeon_test.tmx.import @@ -0,0 +1,22 @@ +[remap] + +importer="vnen.tiled_importer" +type="PackedScene" +path="res://.import/dungeon_test.tmx-238b1188e6139be0bed72a8fdf71cb3b.scn" + +[deps] + +source_file="res://resource/map/dungeon_test.tmx" +dest_files=[ "res://.import/dungeon_test.tmx-238b1188e6139be0bed72a8fdf71cb3b.scn" ] + +[params] + +custom_properties=true +tile_metadata=false +uv_clip=true +image_flags=0 +collision_layer=1 +embed_internal_images=true +save_tiled_properties=false +add_background=true +post_import_script="" diff --git a/DungeonShooting_Godot/resource/map/itch-io-DungeonTileset4.tsx b/DungeonShooting_Godot/resource/map/itch-io-DungeonTileset4.tsx new file mode 100644 index 0000000..bf48d8a --- /dev/null +++ b/DungeonShooting_Godot/resource/map/itch-io-DungeonTileset4.tsx @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DungeonShooting_Godot/resource/map/itch-io-DungeonTileset4.tsx.import b/DungeonShooting_Godot/resource/map/itch-io-DungeonTileset4.tsx.import new file mode 100644 index 0000000..83cec63 --- /dev/null +++ b/DungeonShooting_Godot/resource/map/itch-io-DungeonTileset4.tsx.import @@ -0,0 +1,19 @@ +[remap] + +importer="vnen.tiled_tileset_importer" +type="TileSet" +path="res://.import/itch-io-DungeonTileset4.tsx-b6c599d7e258d91a298136a5a4002898.res" + +[deps] + +source_file="res://resource/map/itch-io-DungeonTileset4.tsx" +dest_files=[ "res://.import/itch-io-DungeonTileset4.tsx-b6c599d7e258d91a298136a5a4002898.res" ] + +[params] + +custom_properties=true +tile_metadata=false +image_flags=3 +embed_internal_images=false +save_tiled_properties=false +post_import_script="" diff --git a/DungeonShooting_Godot/resource/materlal/Shadow.gdshader b/DungeonShooting_Godot/resource/materlal/Shadow.gdshader new file mode 100644 index 0000000..b3ba457 --- /dev/null +++ b/DungeonShooting_Godot/resource/materlal/Shadow.gdshader @@ -0,0 +1,11 @@ +shader_type canvas_item; + +uniform vec4 shadowColor : hint_color = vec4(0.0, 0.0, 0.0, 0.8); +uniform float schedule = 1.0; +//将贴图渲染为阴影 + +void fragment() { + vec4 textureColor = texture(TEXTURE, UV); + vec4 col = mix(textureColor, shadowColor, schedule); + COLOR = mix(vec4(0.0, 0.0, 0.0, 0.0), col, textureColor.a); +} diff --git a/DungeonShooting_Godot/resource/materlal/Shadow.tres b/DungeonShooting_Godot/resource/materlal/Shadow.tres new file mode 100644 index 0000000..df4a9bf --- /dev/null +++ b/DungeonShooting_Godot/resource/materlal/Shadow.tres @@ -0,0 +1,9 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=2] + +[ext_resource path="res://resource/materlal/Shadow.gdshader" type="Shader" id=1] + +[resource] +resource_local_to_scene = true +shader = ExtResource( 1 ) +shader_param/shadowColor = Color( 0, 0, 0, 0.8 ) +shader_param/schedule = 1.0 diff --git a/DungeonShooting_Godot/resource/sound/bgm/Intro.ogg b/DungeonShooting_Godot/resource/sound/bgm/Intro.ogg new file mode 100644 index 0000000..bffdec1 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/bgm/Intro.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/bgm/Intro.ogg.import b/DungeonShooting_Godot/resource/sound/bgm/Intro.ogg.import new file mode 100644 index 0000000..40e9321 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/bgm/Intro.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/Intro.ogg-058563f71fb5fd982135a064e68ee173.oggstr" + +[deps] + +source_file="res://resource/sound/bgm/Intro.ogg" +dest_files=[ "res://.import/Intro.ogg-058563f71fb5fd982135a064e68ee173.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/DungeonShooting_Godot/resource/sound/sfx/ordinaryBullet.ogg b/DungeonShooting_Godot/resource/sound/sfx/ordinaryBullet.ogg new file mode 100644 index 0000000..f5a886a --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/ordinaryBullet.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/ordinaryBullet.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/ordinaryBullet.ogg.import new file mode 100644 index 0000000..365ebbc --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/ordinaryBullet.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/ordinaryBullet.ogg-cfe42761de70631705f4e117ce06ad61.oggstr" + +[deps] + +source_file="res://resource/sound/sfx/ordinaryBullet.ogg" +dest_files=[ "res://.import/ordinaryBullet.ogg-cfe42761de70631705f4e117ce06ad61.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/DungeonShooting_Godot/resource/sprite/bullet/arrow.png b/DungeonShooting_Godot/resource/sprite/bullet/arrow.png new file mode 100644 index 0000000..4baebfb --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/bullet/arrow.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/bullet/arrow.png.import b/DungeonShooting_Godot/resource/sprite/bullet/arrow.png.import new file mode 100644 index 0000000..4efd751 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/bullet/arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow.png-5f9f0a3c4c243acf30e833eb04add206.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/bullet/arrow.png" +dest_files=[ "res://.import/arrow.png-5f9f0a3c4c243acf30e833eb04add206.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet.aseprite b/DungeonShooting_Godot/resource/sprite/bullet/bullet.aseprite new file mode 100644 index 0000000..19447ed --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/bullet/bullet.aseprite Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet.png new file mode 100644 index 0000000..fb6ccea --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/bullet/bullet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet.png.import b/DungeonShooting_Godot/resource/sprite/bullet/bullet.png.import new file mode 100644 index 0000000..f4fef3f --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/bullet/bullet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bullet.png-d058b3cd1f93a450750c6a914d76f944.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/bullet/bullet.png" +dest_files=[ "res://.import/bullet.png-d058b3cd1f93a450750c6a914d76f944.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/Trajectory.png b/DungeonShooting_Godot/resource/sprite/effect/Trajectory.png new file mode 100644 index 0000000..f6cd27a --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/Trajectory.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/Trajectory.png.import b/DungeonShooting_Godot/resource/sprite/effect/Trajectory.png.import new file mode 100644 index 0000000..cbd1690 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/Trajectory.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Trajectory.png-76c08620c3b29f4d728c82f31f8f0bb9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/Trajectory.png" +dest_files=[ "res://.import/Trajectory.png-76c08620c3b29f4d728c82f31f8f0bb9.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/fire/fire1.aseprite b/DungeonShooting_Godot/resource/sprite/effect/fire/fire1.aseprite new file mode 100644 index 0000000..1c47cfe --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/fire/fire1.aseprite Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit0.png b/DungeonShooting_Godot/resource/sprite/effect/hit/hit0.png new file mode 100644 index 0000000..a4457f0 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit0.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit0.png.import b/DungeonShooting_Godot/resource/sprite/effect/hit/hit0.png.import new file mode 100644 index 0000000..45dbac3 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit0.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit0.png-17276b3668c4e0cb4c107848aa290086.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/hit/hit0.png" +dest_files=[ "res://.import/hit0.png-17276b3668c4e0cb4c107848aa290086.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit1.png b/DungeonShooting_Godot/resource/sprite/effect/hit/hit1.png new file mode 100644 index 0000000..fc1e151 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit1.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit1.png.import b/DungeonShooting_Godot/resource/sprite/effect/hit/hit1.png.import new file mode 100644 index 0000000..e7c2785 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit1.png-4c89ae30862deb32de3206a28a45db55.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/hit/hit1.png" +dest_files=[ "res://.import/hit1.png-4c89ae30862deb32de3206a28a45db55.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit2.png b/DungeonShooting_Godot/resource/sprite/effect/hit/hit2.png new file mode 100644 index 0000000..acf1526 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit2.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit2.png.import b/DungeonShooting_Godot/resource/sprite/effect/hit/hit2.png.import new file mode 100644 index 0000000..1308243 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit2.png-0d34746142da1b03f2100dd624526a03.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/hit/hit2.png" +dest_files=[ "res://.import/hit2.png-0d34746142da1b03f2100dd624526a03.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit3.png b/DungeonShooting_Godot/resource/sprite/effect/hit/hit3.png new file mode 100644 index 0000000..272462c --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit3.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit3.png.import b/DungeonShooting_Godot/resource/sprite/effect/hit/hit3.png.import new file mode 100644 index 0000000..7a82b40 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit3.png-87522b4136861ca3b16e8936be841355.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/hit/hit3.png" +dest_files=[ "res://.import/hit3.png-87522b4136861ca3b16e8936be841355.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit4.png b/DungeonShooting_Godot/resource/sprite/effect/hit/hit4.png new file mode 100644 index 0000000..aa1f261 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit4.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/hit/hit4.png.import b/DungeonShooting_Godot/resource/sprite/effect/hit/hit4.png.import new file mode 100644 index 0000000..e703127 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/hit/hit4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hit4.png-7d42c20b94c8395d3b41e4bc03afae84.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/hit/hit4.png" +dest_files=[ "res://.import/hit4.png-7d42c20b94c8395d3b41e4bc03afae84.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png new file mode 100644 index 0000000..92a0442 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png.import new file mode 100644 index 0000000..fc7366d --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effect 1 - Sprite Sheet.png-d62485e0ad4a6271cbbb86bd241745c5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png" +dest_files=[ "res://.import/Effect 1 - Sprite Sheet.png-d62485e0ad4a6271cbbb86bd241745c5.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png new file mode 100644 index 0000000..22ca629 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png.import new file mode 100644 index 0000000..2a301a2 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effect 2 - Sprite Sheet.png-f18966135b9f965b23cc853e0e9cd35b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png" +dest_files=[ "res://.import/Effect 2 - Sprite Sheet.png-f18966135b9f965b23cc853e0e9cd35b.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png new file mode 100644 index 0000000..26158b5 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png.import new file mode 100644 index 0000000..d4cf1d6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effect 3 - Sprite Sheet.png-a092da7a5c5099536b1bad4970dfd831.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png" +dest_files=[ "res://.import/Effect 3 - Sprite Sheet.png-a092da7a5c5099536b1bad4970dfd831.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png new file mode 100644 index 0000000..4e8ebec --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png.import new file mode 100644 index 0000000..35faa0e --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effect 4 - Sprite Sheet.png-408c2dd5faca1f1da98ec9fe633107eb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png" +dest_files=[ "res://.import/Effect 4 - Sprite Sheet.png-408c2dd5faca1f1da98ec9fe633107eb.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png new file mode 100644 index 0000000..d24f9ea --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png.import new file mode 100644 index 0000000..5416547 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effect1 Gameboy Spritesheet.png-8ecac65dcb760932ecd8c466e32ef8e6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png" +dest_files=[ "res://.import/Effect1 Gameboy Spritesheet.png-8ecac65dcb760932ecd8c466e32ef8e6.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png new file mode 100644 index 0000000..948f427 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png.import new file mode 100644 index 0000000..92dceb2 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effect3 Gameboy Spritesheet.png-68b16fa58108fc3f614e749696c38607.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png" +dest_files=[ "res://.import/Effect3 Gameboy Spritesheet.png-68b16fa58108fc3f614e749696c38607.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png new file mode 100644 index 0000000..7e81424 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png.import new file mode 100644 index 0000000..92e7f91 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effect4 Gameboy Spritesheet.png-39492d49cc19343081c17a903b3ccad1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png" +dest_files=[ "res://.import/Effect4 Gameboy Spritesheet.png-39492d49cc19343081c17a903b3ccad1.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png new file mode 100644 index 0000000..01a154e --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png.import b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png.import new file mode 100644 index 0000000..a9b83ed --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Effectst2 Gameboy Spritesheet.png-cfbfb0796e6b6b4f913fc5418fe150b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/effect/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png" +dest_files=[ "res://.import/Effectst2 Gameboy Spritesheet.png-cfbfb0796e6b6b4f913fc5418fe150b9.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/website.txt b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/website.txt new file mode 100644 index 0000000..84a24d0 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/effect/itch-io-pixel-battle-effects/website.txt @@ -0,0 +1 @@ +https://pimen.itch.io/pixel-battle-effects \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/16x16.png b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/16x16.png new file mode 100644 index 0000000..25987fc --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/16x16.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/16x16.png.import b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/16x16.png.import new file mode 100644 index 0000000..9fef0f8 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/16x16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/16x16.png-6e9ff775940a8533671e6598dc2d886d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/craftpix-net-248911/16x16.png" +dest_files=[ "res://.import/16x16.png-6e9ff775940a8533671e6598dc2d886d.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/A Note to the Dev.txt b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/A Note to the Dev.txt new file mode 100644 index 0000000..6596983 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/A Note to the Dev.txt @@ -0,0 +1,15 @@ +Ho ho, the title got you, huh! :) + +Hello, thank you for your purchase! + +I'm Caio, the Clockwork Raven Studios artist, owner, and i hope this product live up to your expectations, i want you to know that your interest in my projects is what makes me work on it even harder. + +In case if it doesn't take up too much of your time, I would like to see what you're thinking about it in the comments, in the page of the store that you purchased the product, this helps me a lot! + +You can also see my progress in the creation of new assets and/or make suggestions, follow my twitter here: https://twitter.com/cwrstudios + +If you like my work, i would recommend you to take a look at my Patreon, you get spoilers of my upcoming assets, a community and everything i already made for only $5, and for staying as a Patron you'll always receive my new assets for free! + +My Patreon: https://www.patreon.com/clockworkravenstudios + +Regards, Caio \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png new file mode 100644 index 0000000..25987fc --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png.import b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png.import new file mode 100644 index 0000000..1cf5d36 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/16x16.png-03810c2e769fb05274c12adf666f9aa1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/environment/craftpix-net-248911/All Tileset/16x16.png" +dest_files=[ "res://.import/16x16.png-03810c2e769fb05274c12adf666f9aa1.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/EsRson.gif b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/EsRson.gif new file mode 100644 index 0000000..493642d --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/EsRson.gif Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/Palette/Pallete.txt b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/Palette/Pallete.txt new file mode 100644 index 0000000..ad6e6d8 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/Palette/Pallete.txt @@ -0,0 +1 @@ +This palette belongs to Kerrie Lake, and can be found and downloaded for free here: https://lospec.com/palette-list/resurrect-64 \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/Rww2te.gif b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/Rww2te.gif new file mode 100644 index 0000000..977edd3 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/Rww2te.gif Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/license.txt b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/license.txt new file mode 100644 index 0000000..673e1aa --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/environment/craftpix-net-248911/license.txt @@ -0,0 +1 @@ +https://craftpix.net/file-licenses/ \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/sprite/gun/UK.png b/DungeonShooting_Godot/resource/sprite/gun/UK.png new file mode 100644 index 0000000..58ade3f --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/UK.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/UK.png.import b/DungeonShooting_Godot/resource/sprite/gun/UK.png.import new file mode 100644 index 0000000..b26a126 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/UK.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/UK.png-0e69e5e3a63ed303220ab24dee91e2e0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/UK.png" +dest_files=[ "res://.import/UK.png-0e69e5e3a63ed303220ab24dee91e2e0.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/US.png b/DungeonShooting_Godot/resource/sprite/gun/US.png new file mode 100644 index 0000000..73a62df --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/US.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/US.png.import b/DungeonShooting_Godot/resource/sprite/gun/US.png.import new file mode 100644 index 0000000..115c1aa --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/US.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/US.png-4218465449a1caba531b79f6cbaf32fa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/US.png" +dest_files=[ "res://.import/US.png-4218465449a1caba531b79f6cbaf32fa.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/USSR.png b/DungeonShooting_Godot/resource/sprite/gun/USSR.png new file mode 100644 index 0000000..4575498 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/USSR.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/USSR.png.import b/DungeonShooting_Godot/resource/sprite/gun/USSR.png.import new file mode 100644 index 0000000..f0fb197 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/USSR.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/USSR.png-1b06adab8deb5898a39090b724b84133.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/USSR.png" +dest_files=[ "res://.import/USSR.png-1b06adab8deb5898a39090b724b84133.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/bow.png b/DungeonShooting_Godot/resource/sprite/gun/bow.png new file mode 100644 index 0000000..0654ef2 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/bow.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/bow.png.import b/DungeonShooting_Godot/resource/sprite/gun/bow.png.import new file mode 100644 index 0000000..f113dd0 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/bow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bow.png-bf9e685f71e0011b6ec8dc0a31121391.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/bow.png" +dest_files=[ "res://.import/bow.png-bf9e685f71e0011b6ec8dc0a31121391.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun1.png b/DungeonShooting_Godot/resource/sprite/gun/gun1.png new file mode 100644 index 0000000..fc6c2ce --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun1.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun1.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun1.png.import new file mode 100644 index 0000000..087ecf0 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun1.png" +dest_files=[ "res://.import/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun2.png b/DungeonShooting_Godot/resource/sprite/gun/gun2.png new file mode 100644 index 0000000..8889f01 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun2.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun2.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun2.png.import new file mode 100644 index 0000000..25a6717 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun2.png-67d4f6125e770591468ba3ab236736ef.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun2.png" +dest_files=[ "res://.import/gun2.png-67d4f6125e770591468ba3ab236736ef.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun3.png b/DungeonShooting_Godot/resource/sprite/gun/gun3.png new file mode 100644 index 0000000..ebccd94 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun3.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun3.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun3.png.import new file mode 100644 index 0000000..926b007 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun3.png-f2b98956d7fdf008b4a87a7be920ea12.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun3.png" +dest_files=[ "res://.import/gun3.png-f2b98956d7fdf008b4a87a7be920ea12.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun4.png b/DungeonShooting_Godot/resource/sprite/gun/gun4.png new file mode 100644 index 0000000..d3643d2 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun4.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun4.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun4.png.import new file mode 100644 index 0000000..0988715 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun4.png-ba6b1c54aee277c1e95a427dbdaaddeb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun4.png" +dest_files=[ "res://.import/gun4.png-ba6b1c54aee277c1e95a427dbdaaddeb.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun5.png b/DungeonShooting_Godot/resource/sprite/gun/gun5.png new file mode 100644 index 0000000..9845085 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun5.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun5.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun5.png.import new file mode 100644 index 0000000..0ad15f2 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun5.png-6f355c0cd6234d52c0b85a3bec0a414e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun5.png" +dest_files=[ "res://.import/gun5.png-6f355c0cd6234d52c0b85a3bec0a414e.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun6.png b/DungeonShooting_Godot/resource/sprite/gun/gun6.png new file mode 100644 index 0000000..b4948f3 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun6.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun6.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun6.png.import new file mode 100644 index 0000000..902b284 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun6.png-0667c2b2b24159daf259f9cc3faa9fee.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun6.png" +dest_files=[ "res://.import/gun6.png-0667c2b2b24159daf259f9cc3faa9fee.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun7.png b/DungeonShooting_Godot/resource/sprite/gun/gun7.png new file mode 100644 index 0000000..a4d1cea --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun7.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun7.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun7.png.import new file mode 100644 index 0000000..4db95d5 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun7.png-c5124593247a40157a5388c936276859.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun7.png" +dest_files=[ "res://.import/gun7.png-c5124593247a40157a5388c936276859.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun8.png b/DungeonShooting_Godot/resource/sprite/gun/gun8.png new file mode 100644 index 0000000..6186597 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun8.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun8.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun8.png.import new file mode 100644 index 0000000..64a7a07 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/gun8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gun8.png-ce26b9cb6654714a9891481124571c4f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/gun8.png" +dest_files=[ "res://.import/gun8.png-ce26b9cb6654714a9891481124571c4f.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/gun/out/default.png b/DungeonShooting_Godot/resource/sprite/gun/out/default.png new file mode 100644 index 0000000..e806751 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/out/default.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/gun/out/default.png.import b/DungeonShooting_Godot/resource/sprite/gun/out/default.png.import new file mode 100644 index 0000000..debb2c7 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/gun/out/default.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/default.png-e5a685da8f657e6b9105cc7f2f935dc9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/gun/out/default.png" +dest_files=[ "res://.import/default.png-e5a685da8f657e6b9105cc7f2f935dc9.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role1.png b/DungeonShooting_Godot/resource/sprite/role/role1.png new file mode 100644 index 0000000..1418340 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role1.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role1.png.import b/DungeonShooting_Godot/resource/sprite/role/role1.png.import new file mode 100644 index 0000000..96acdd6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role1.png-958d620452f56d0f9929cebb052b8bfc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role1.png" +dest_files=[ "res://.import/role1.png-958d620452f56d0f9929cebb052b8bfc.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role10.png b/DungeonShooting_Godot/resource/sprite/role/role10.png new file mode 100644 index 0000000..6268724 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role10.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role10.png.import b/DungeonShooting_Godot/resource/sprite/role/role10.png.import new file mode 100644 index 0000000..cd3ee95 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role10.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role10.png-9a8cf4092702d6dfcf1fa580c736c7da.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role10.png" +dest_files=[ "res://.import/role10.png-9a8cf4092702d6dfcf1fa580c736c7da.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role2.png b/DungeonShooting_Godot/resource/sprite/role/role2.png new file mode 100644 index 0000000..60cd623 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role2.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role2.png.import b/DungeonShooting_Godot/resource/sprite/role/role2.png.import new file mode 100644 index 0000000..4424f29 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role2.png-2684720cd846f0db30590472914d73a4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role2.png" +dest_files=[ "res://.import/role2.png-2684720cd846f0db30590472914d73a4.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role3.png b/DungeonShooting_Godot/resource/sprite/role/role3.png new file mode 100644 index 0000000..802b0bf --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role3.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role3.png.import b/DungeonShooting_Godot/resource/sprite/role/role3.png.import new file mode 100644 index 0000000..896d073 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role3.png-03fa3f4e21f02035205dd8b89a4b74a0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role3.png" +dest_files=[ "res://.import/role3.png-03fa3f4e21f02035205dd8b89a4b74a0.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role4.png b/DungeonShooting_Godot/resource/sprite/role/role4.png new file mode 100644 index 0000000..72031be --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role4.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role4.png.import b/DungeonShooting_Godot/resource/sprite/role/role4.png.import new file mode 100644 index 0000000..f46acd3 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role4.png-59aa7b55db9715bdc94a3da6125357f1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role4.png" +dest_files=[ "res://.import/role4.png-59aa7b55db9715bdc94a3da6125357f1.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role5.png b/DungeonShooting_Godot/resource/sprite/role/role5.png new file mode 100644 index 0000000..a21325b --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role5.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role5.png.import b/DungeonShooting_Godot/resource/sprite/role/role5.png.import new file mode 100644 index 0000000..4df8a38 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role5.png-b1d13e0fab109f267ed1aea30db9f6ca.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role5.png" +dest_files=[ "res://.import/role5.png-b1d13e0fab109f267ed1aea30db9f6ca.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role6.png b/DungeonShooting_Godot/resource/sprite/role/role6.png new file mode 100644 index 0000000..0b5d02d --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role6.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role6.png.import b/DungeonShooting_Godot/resource/sprite/role/role6.png.import new file mode 100644 index 0000000..abf2696 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role6.png-3a0c7af11a450a3f019259d4981c6722.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role6.png" +dest_files=[ "res://.import/role6.png-3a0c7af11a450a3f019259d4981c6722.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role7.png b/DungeonShooting_Godot/resource/sprite/role/role7.png new file mode 100644 index 0000000..a7846a4 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role7.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role7.png.import b/DungeonShooting_Godot/resource/sprite/role/role7.png.import new file mode 100644 index 0000000..86a14f8 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role7.png-e169f92ca4e11ffdfafe149a3858e615.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role7.png" +dest_files=[ "res://.import/role7.png-e169f92ca4e11ffdfafe149a3858e615.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role8.png b/DungeonShooting_Godot/resource/sprite/role/role8.png new file mode 100644 index 0000000..6dc6f6b --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role8.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role8.png.import b/DungeonShooting_Godot/resource/sprite/role/role8.png.import new file mode 100644 index 0000000..cfce4fb --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role8.png-82555aa265153047151369411ccedf05.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role8.png" +dest_files=[ "res://.import/role8.png-82555aa265153047151369411ccedf05.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/role/role9.png b/DungeonShooting_Godot/resource/sprite/role/role9.png new file mode 100644 index 0000000..111f8c3 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role9.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/role/role9.png.import b/DungeonShooting_Godot/resource/sprite/role/role9.png.import new file mode 100644 index 0000000..b6bdadb --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/role/role9.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/role9.png-1ee32c9bfcfb8679171718810a357e09.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/role/role9.png" +dest_files=[ "res://.import/role9.png-1ee32c9bfcfb8679171718810a357e09.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/shell/shellCase.aseprite b/DungeonShooting_Godot/resource/sprite/shell/shellCase.aseprite new file mode 100644 index 0000000..fe6c181 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/shell/shellCase.aseprite Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/shell/shellCase.png b/DungeonShooting_Godot/resource/sprite/shell/shellCase.png new file mode 100644 index 0000000..7a926c6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/shell/shellCase.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/shell/shellCase.png.import b/DungeonShooting_Godot/resource/sprite/shell/shellCase.png.import new file mode 100644 index 0000000..b4b5232 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/shell/shellCase.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shellCase.png-4975fbe4d212e558e86355116ac96ab2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/shell/shellCase.png" +dest_files=[ "res://.import/shellCase.png-4975fbe4d212e558e86355116ac96ab2.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/ui/Cursor.png b/DungeonShooting_Godot/resource/sprite/ui/Cursor.png new file mode 100644 index 0000000..068c198 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/Cursor.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/ui/Cursor.png.import b/DungeonShooting_Godot/resource/sprite/ui/Cursor.png.import new file mode 100644 index 0000000..d30d1d7 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/Cursor.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Cursor.png-8fd0f20a3d3b122868ba81366de2aaf6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/ui/Cursor.png" +dest_files=[ "res://.import/Cursor.png-8fd0f20a3d3b122868ba81366de2aaf6.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/resource/sprite/ui/template-ui.png b/DungeonShooting_Godot/resource/sprite/ui/template-ui.png new file mode 100644 index 0000000..69f40fb --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/template-ui.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/ui/template-ui.png.import b/DungeonShooting_Godot/resource/sprite/ui/template-ui.png.import new file mode 100644 index 0000000..f947003 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/template-ui.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/template-ui.png-53af29ee4ca2b778b4ce3b198469ccad.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/ui/template-ui.png" +dest_files=[ "res://.import/template-ui.png-53af29ee4ca2b778b4ce3b198469ccad.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=false +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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/DungeonShooting_Godot/scene/Room.tscn b/DungeonShooting_Godot/scene/Room.tscn new file mode 100644 index 0000000..439a225 --- /dev/null +++ b/DungeonShooting_Godot/scene/Room.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://prefab/role/Player.tscn" type="PackedScene" id=1] +[ext_resource path="res://resource/map/dungeon_test.tmx" type="PackedScene" id=2] +[ext_resource path="res://src/room/RoomManager.cs" type="Script" id=3] +[ext_resource path="res://prefab/ui/Cursor.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/camera/MainCamera.cs" type="Script" id=5] +[ext_resource path="res://prefab/ui/RoomUI.tscn" type="PackedScene" id=6] + +[node name="Room" type="Node2D"] +script = ExtResource( 3 ) +MouseCursor = ExtResource( 4 ) +UIPath = NodePath("") + +[node name="MapRoot" type="Node2D" parent="."] +z_index = -10 + +[node name="dungeon_test" parent="MapRoot" instance=ExtResource( 2 )] + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2( 196, 128 ) +current = true +process_mode = 0 +smoothing_enabled = true +smoothing_speed = 8.0 +script = ExtResource( 5 ) + +[node name="ObjectRoot" type="Node2D" parent="."] + +[node name="ItemRoot" type="YSort" parent="."] + +[node name="Player" parent="ItemRoot" instance=ExtResource( 1 )] +position = Vector2( 196, 128 ) + +[node name="RemoteTransform2D" type="RemoteTransform2D" parent="ItemRoot/Player"] +remote_path = NodePath("../../../Camera2D") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="RoomUI" parent="CanvasLayer" instance=ExtResource( 6 )] diff --git a/DungeonShooting_Godot/scene/TestNavigation.tscn b/DungeonShooting_Godot/scene/TestNavigation.tscn new file mode 100644 index 0000000..cee8cd1 --- /dev/null +++ b/DungeonShooting_Godot/scene/TestNavigation.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://src/TestNavigation.cs" type="Script" id=1] +[ext_resource path="res://icon.png" type="Texture" id=2] +[ext_resource path="res://resource/sprite/environment/craftpix-net-248911/16x16.png" type="Texture" id=3] + +[sub_resource type="NavigationPolygon" id=2] +vertices = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="TileSet" id=3] +0/name = "16x16.png 0" +0/texture = ExtResource( 3 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 16, 16 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/navigation = SubResource( 2 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 + +[sub_resource type="NavigationPolygon" id=4] +vertices = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="TileSet" id=5] +0/name = "16x16.png 0" +0/texture = ExtResource( 3 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 32, 0, 16, 16 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/navigation = SubResource( 4 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 + +[node name="TestNavigation" type="Node2D"] +script = ExtResource( 1 ) + +[node name="Position2D" type="Position2D" parent="."] +z_index = -3 + +[node name="Navigation2D" type="Navigation2D" parent="Position2D"] + +[node name="Node2D" type="Node2D" parent="Position2D/Navigation2D"] + +[node name="TileMap" type="TileMap" parent="Position2D/Navigation2D/Node2D"] +tile_set = SubResource( 3 ) +cell_size = Vector2( 16, 16 ) +format = 1 +tile_data = PoolIntArray( 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327699, 0, 0, 327700, 0, 0, 327701, 0, 0, 327702, 0, 0, 327703, 0, 0, 327704, 0, 0, 327705, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393235, 0, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 0, 393240, 0, 0, 393241, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458771, 0, 0, 458772, 0, 0, 458773, 0, 0, 458774, 0, 0, 458775, 0, 0, 458776, 0, 0, 458777, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524307, 0, 0, 524308, 0, 0, 524309, 0, 0, 524310, 0, 0, 524311, 0, 0, 524312, 0, 0, 524313, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589843, 0, 0, 589844, 0, 0, 589845, 0, 0, 589846, 0, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655379, 0, 0, 655380, 0, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 0, 0, 720907, 0, 0, 720908, 0, 0, 720909, 0, 0, 720915, 0, 0, 720916, 0, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 720923, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0, 786452, 0, 0, 786453, 0, 0, 786454, 0, 0, 786455, 0, 0, 786456, 0, 0, 786457, 0, 0, 786458, 0, 0, 786459, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 851988, 0, 0, 851989, 0, 0, 851990, 0, 0, 851991, 0, 0, 851992, 0, 0, 851993, 0, 0, 851994, 0, 0, 851995, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 0, 0, 917523, 0, 0, 917524, 0, 0, 917525, 0, 0, 917526, 0, 0, 917527, 0, 0, 917528, 0, 0, 917529, 0, 0, 917530, 0, 0, 917531, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 0, 0, 983056, 0, 0, 983057, 0, 0, 983058, 0, 0, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0 ) + +[node name="Node2D2" type="Node2D" parent="Position2D/Navigation2D"] + +[node name="TileMap" type="TileMap" parent="Position2D/Navigation2D/Node2D2"] +tile_set = SubResource( 5 ) +cell_size = Vector2( 16, 16 ) +format = 1 +tile_data = PoolIntArray( 131088, 0, 0, 131089, 0, 0, 131090, 0, 0, 131091, 0, 0, 131092, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 196628, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262164, 0, 0, 327692, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0 ) + +[node name="Sprite" type="Sprite" parent="Position2D"] +position = Vector2( 33, 32 ) +scale = Vector2( 0.2, 0.2 ) +texture = ExtResource( 2 ) diff --git a/DungeonShooting_Godot/src/AnimatorNames.cs b/DungeonShooting_Godot/src/AnimatorNames.cs new file mode 100644 index 0000000..5645333 --- /dev/null +++ b/DungeonShooting_Godot/src/AnimatorNames.cs @@ -0,0 +1,7 @@ + +public static class AnimatorNames +{ + public static readonly string Idle = "idle"; + public static readonly string Run = "run"; + public static readonly string ReverseRun = "reverseRun"; +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/GameConfig.cs b/DungeonShooting_Godot/src/GameConfig.cs new file mode 100644 index 0000000..91ebe06 --- /dev/null +++ b/DungeonShooting_Godot/src/GameConfig.cs @@ -0,0 +1,12 @@ + +public static class GameConfig +{ + /// + /// 散射计算的默认距离 + /// + public static readonly float ScatteringDistance = 300; + /// + /// 重力加速度 + /// + public static readonly float G = 250f; +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/Pack.cs b/DungeonShooting_Godot/src/Pack.cs new file mode 100644 index 0000000..a85287a --- /dev/null +++ b/DungeonShooting_Godot/src/Pack.cs @@ -0,0 +1,12 @@ + +// public class Pack +// { +// public uint Size { get; private set; } + +// public Pack(uint size) +// { +// Size = size; +// } + + +// } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/TestNavigation.cs b/DungeonShooting_Godot/src/TestNavigation.cs new file mode 100644 index 0000000..16ededf --- /dev/null +++ b/DungeonShooting_Godot/src/TestNavigation.cs @@ -0,0 +1,39 @@ +using Godot; + +public class TestNavigation : Node2D +{ + + private Navigation2D Navigation2D; + private Vector2[] points = new Vector2[0]; + + public override void _Ready() + { + Navigation2D = GetNode("Position2D/Navigation2D"); + } + + public override void _Input(InputEvent @event) + { + if (@event is InputEventMouseButton ieb) { + if (ieb.ButtonIndex == (int)ButtonList.Left && ieb.Pressed) + { + points = Navigation2D.GetSimplePath(Vector2.Zero, Navigation2D.ToLocal(ieb.Position)); + Update(); + string str = ""; + foreach (var item in points) + { + str += item; + } + GD.Print("路径: " + points.Length + ", " + str); + } + } + } + public override void _Draw() + { + if (points.Length >= 2) { + GD.Print("绘制线段..."); + DrawPolyline(points, Colors.Red); + // DrawMultiline(points, Colors.Red); + } + } + +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/camera/MainCamera.cs b/DungeonShooting_Godot/src/camera/MainCamera.cs new file mode 100644 index 0000000..8f97587 --- /dev/null +++ b/DungeonShooting_Godot/src/camera/MainCamera.cs @@ -0,0 +1,107 @@ +using System.Collections.Generic; +using Godot; + +public class MainCamera : Camera2D +{ + /// + /// 当前场景的相机对象 + /// + public static MainCamera Main { get; private set; } + + /// + /// 恢复系数 + /// + [Export] + public float RecoveryCoefficient = 100f; + /// + /// 抖动开关 + /// + public bool Enable { get; set; } = true; + + private long _index = 0; + private Vector2 _prossesDistance = Vector2.Zero; + private Vector2 _prossesDirectiona = Vector2.Zero; + private readonly Dictionary _shakeMap = new Dictionary(); + + public override void _Ready() + { + Main = this; + } + public override void _PhysicsProcess(float delta) + { + _Shake(delta); + } + + /// + /// 设置帧抖动, 结束后自动清零, 需要每一帧调用 + /// + /// 抖动的力度 + public void ProssesShake(Vector2 value) + { + if (value.Length() > _prossesDistance.Length()) + { + _prossesDistance = value; + } + } + + public void ProssesDirectionalShake(Vector2 value) + { + _prossesDirectiona += value; + } + + /// + /// 创建一个抖动, 并设置抖动时间 + /// + /// 抖动力度 + /// 抖动生效时间 + public async void CreateShake(Vector2 value, float time) + { + if (time > 0) + { + long tempIndex = _index++; + SceneTreeTimer sceneTreeTimer = GetTree().CreateTimer(time); + _shakeMap[tempIndex] = value; + await ToSignal(sceneTreeTimer, "timeout"); + _shakeMap.Remove(tempIndex); + } + } + + //抖动调用 + private void _Shake(float delta) + { + if (Enable) + { + var _distance = _CalculateDistance(); + Offset += new Vector2( + (float)GD.RandRange(-_distance.x, _distance.x) - Offset.x, + (float)GD.RandRange(-_distance.y, _distance.y) - Offset.y + ); + Offset += _prossesDirectiona; + _prossesDistance = Vector2.Zero; + _prossesDirectiona = Vector2.Zero; + } + else + { + Offset = Offset.LinearInterpolate(Vector2.Zero, RecoveryCoefficient * delta); + } + } + + //计算相机需要抖动的值 + private Vector2 _CalculateDistance() + { + Vector2 temp = Vector2.Zero; + float length = 0; + foreach (var item in _shakeMap) + { + var value = item.Value; + float tempLenght = value.Length(); + if (tempLenght > length) + { + length = tempLenght; + temp = value; + } + } + return _prossesDistance.Length() > length ? _prossesDistance : temp; + } + +} diff --git a/DungeonShooting_Godot/src/effect/Cursor.cs b/DungeonShooting_Godot/src/effect/Cursor.cs new file mode 100644 index 0000000..06f6894 --- /dev/null +++ b/DungeonShooting_Godot/src/effect/Cursor.cs @@ -0,0 +1,60 @@ +using Godot; + +/// +/// 鼠标指针 +/// +public class Cursor : Node2D +{ + + private Sprite lt; + private Sprite lb; + private Sprite rt; + private Sprite rb; + + public override void _Ready() + { + lt = GetNode("LT"); + lb = GetNode("LB"); + rt = GetNode("RT"); + rb = GetNode("RB"); + } + + public override void _Process(float delta) + { + var targetGun = RoomManager.Current?.Player?.Holster.ActiveGun; + if (targetGun != null) + { + SetScope(targetGun.CurrScatteringRange, targetGun); + } + else + { + SetScope(0, targetGun); + } + SetCursorPos(); + } + + /// + /// 设置光标半径范围 + /// + private void SetScope(float scope, Gun targetGun) + { + if (targetGun != null) + { + var len = GlobalPosition.DistanceTo(targetGun.GlobalPosition); + if (targetGun.Attribute != null) + { + len = Mathf.Max(0, len - targetGun.Attribute.FirePosition.x); + } + scope = len / GameConfig.ScatteringDistance * scope; + } + lt.Position = new Vector2(-scope, -scope); + lb.Position = new Vector2(-scope, scope); + rt.Position = new Vector2(scope, -scope); + rb.Position = new Vector2(scope, scope); + } + + private void SetCursorPos() + { + Position = GetGlobalMousePosition(); + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/effect/Hit.cs b/DungeonShooting_Godot/src/effect/Hit.cs new file mode 100644 index 0000000..99b4b4d --- /dev/null +++ b/DungeonShooting_Godot/src/effect/Hit.cs @@ -0,0 +1,19 @@ +using Godot; + +public class Hit : AnimatedSprite +{ + + public override void _Ready() + { + Frame = 0; + Playing = true; + } + + /// + /// 动画结束, 销毁 + /// + private void _on_Hit_animation_finished() + { + QueueFree(); + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/effect/ThrowNode.cs b/DungeonShooting_Godot/src/effect/ThrowNode.cs new file mode 100644 index 0000000..882a718 --- /dev/null +++ b/DungeonShooting_Godot/src/effect/ThrowNode.cs @@ -0,0 +1,208 @@ +using System; +using Godot; + +/// +/// 模拟抛出的物体, 使用时将对象挂载到该节点上即可 +/// +public class ThrowNode : KinematicBody2D +{ + /// + /// 是否已经结束 + /// + /// + public bool IsOver { get; protected set; } = true; + /// + /// 物体大小 + /// + public Vector2 Size { get; protected set; } + /// + /// 起始坐标 + /// + public Vector2 StartPosition { get; protected set; } + /// + /// 移动方向, 0 - 360 + /// + /// + public float Direction { get; protected set; } + /// + /// x速度, 也就是水平速度 + /// + public float XSpeed { get; protected set; } + /// + /// y轴速度, 也就是竖直速度 + /// + /// + public float YSpeed { get; protected set; } + /// + /// 初始x轴组队 + /// + /// + public float StartXSpeed { get; protected set; } + /// + /// 初始y轴速度 + /// + public float StartYSpeed { get; protected set; } + /// + /// 旋转速度 + /// + public float RotateSpeed { get; protected set; } + /// + /// 挂载的对象 + /// + public Node2D Mount { get; protected set; } + /// + /// 碰撞组件 + /// + /// + public CollisionShape2D CollisionShape { get; protected set; } + /// + /// 绘制阴影的精灵 + /// + public Sprite ShadowSprite { get; protected set; } + + protected Sprite ShadowTarget { get; set; } + + private bool inversionX = false; + + public override void _Ready() + { + //只与墙壁碰撞 + CollisionMask = 1; + CollisionLayer = 0; + //创建碰撞器 + CollisionShape = new CollisionShape2D(); + var shape = new RectangleShape2D(); + shape.Extents = Size * 0.5f; + CollisionShape.Shape = shape; + AddChild(CollisionShape); + } + + /// + /// 初始化该抛物线对象的基础数据 + /// + /// 抛射的物体所占大小, 用于碰撞检测 + /// 起始点 + /// 起始高度 + /// 角度, 0 - 360 + /// 横轴速度 + /// 纵轴速度 + /// 旋转速度 + /// 需要挂载的节点 + /// 抛射的节点显示的纹理, 用于渲染阴影用 + public void InitThrow(Vector2 size, Vector2 start, float startHeight, float direction, float xSpeed, float ySpeed, float rotate, Node2D mount) + { + if (CollisionShape != null) + { + CollisionShape.Disabled = false; + } + + IsOver = false; + Size = size; + GlobalPosition = StartPosition = start; + Direction = direction; + XSpeed = xSpeed; + YSpeed = ySpeed; + StartXSpeed = xSpeed; + StartYSpeed = ySpeed; + RotateSpeed = rotate; + + if (mount != null) + { + Mount = mount; + AddChild(mount); + mount.Position = new Vector2(0, -startHeight); + } + } + + /// + /// 初始化该抛物线对象的基础数据, 并且渲染阴影 + /// + /// 抛射的物体所占大小, 用于碰撞检测 + /// 起始点 + /// 起始高度 + /// 角度, 0 - 360 + /// 横轴速度 + /// 纵轴速度 + /// 旋转速度 + /// 需要挂载的节点 + /// 抛射的节点显示的纹理, 用于渲染阴影用 + public void InitThrow(Vector2 size, Vector2 start, float startHeight, float direction, float xSpeed, float ySpeed, float rotate, Node2D mount, Sprite shadowTarget) + { + InitThrow(size, start, startHeight, direction, xSpeed, ySpeed, rotate, mount); + ShadowTarget = shadowTarget; + if (shadowTarget != null) + { + if (ShadowSprite == null) + { + //阴影 + ShadowSprite = new Sprite(); + ShadowSprite.ZIndex = -5; + ShadowSprite.Material = ResourceManager.ShadowMaterial; + AddChild(ShadowSprite); + } + inversionX = mount.Scale.y < 0 ? true : false; + if (inversionX) + { + ShadowSprite.Scale = shadowTarget.Scale * new Vector2(1, -1); + } + else + { + ShadowSprite.Scale = shadowTarget.Scale; + } + ShadowSprite.Texture = shadowTarget.Texture; + } + else if (ShadowSprite != null) + { + ShadowSprite.Texture = null; + } + } + + /// + /// 达到最高点时调用 + /// + protected virtual void OnMaxHeight(float height) + { + + } + + /// + /// 结束的调用 + /// + protected virtual void OnOver() + { + + } + + public override void _Process(float delta) + { + if (!IsOver) + { + MoveAndSlide(new Vector2(XSpeed, 0).Rotated(Direction * Mathf.Pi / 180)); + Mount.Position = new Vector2(0, Mount.Position.y - YSpeed * delta); + var rotate = Mount.GlobalRotationDegrees + RotateSpeed * delta; + Mount.GlobalRotationDegrees = rotate; + if (ShadowSprite != null) + { + ShadowSprite.GlobalRotationDegrees = rotate; + // ShadowSprite.GlobalRotationDegrees = rotate + (inversionX ? 180 : 0); + ShadowSprite.GlobalPosition = ShadowTarget.GlobalPosition + new Vector2(0, 1 - Mount.Position.y); + } + var ysp = YSpeed; + YSpeed -= GameConfig.G * delta; + //达到最高点 + if (ysp * YSpeed < 0) + { + OnMaxHeight(-Mount.Position.y); + } + //落地判断 + if (Mount.Position.y >= 0) + { + Mount.Position = new Vector2(0, 0); + IsOver = true; + CollisionShape.Disabled = true; + OnOver(); + } + } + } + +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/manager/GameManager.cs b/DungeonShooting_Godot/src/manager/GameManager.cs new file mode 100644 index 0000000..29d3962 --- /dev/null +++ b/DungeonShooting_Godot/src/manager/GameManager.cs @@ -0,0 +1,13 @@ +using Godot; + +/// +/// 游戏主管理器, 自动加载 +/// +public class GameManager : Node2D +{ + public static GameManager Instance { get; private set; } + public GameManager() + { + GameManager.Instance = this; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/manager/ResourceManager.cs b/DungeonShooting_Godot/src/manager/ResourceManager.cs new file mode 100644 index 0000000..83f9688 --- /dev/null +++ b/DungeonShooting_Godot/src/manager/ResourceManager.cs @@ -0,0 +1,77 @@ +using System.Collections.Generic; +using Godot; + +public static class ResourceManager +{ + + /// + /// 2D阴影的材质 + /// + public static ShaderMaterial ShadowMaterial + { + get + { + if (_shadowMaterial == null) + { + _shadowMaterial = ResourceLoader.Load("res://resource/materlal/Shadow.tres"); + } + return _shadowMaterial; + } + } + private static ShaderMaterial _shadowMaterial; + + /// + /// 2D阴影的Shader + /// + public static Shader ShadowShader + { + get + { + if (_shadowShader == null) + { + _shadowShader = ResourceLoader.Load("res://resource/materlal/Shadow.gdshader"); + } + return _shadowShader; + } + } + private static Shader _shadowShader; + + private static readonly Dictionary CachePack = new Dictionary(); + + /// + /// 加载资源对象, 并且缓存当前资源对象, 可频繁获取 + /// + /// 资源路径 + public static T Load(string path) where T : class + { + if (CachePack.TryGetValue(path, out var pack)) + { + return (T)pack; + } + else + { + pack = ResourceLoader.Load(path); + if (pack != null) + { + CachePack.Add(path, pack); + return (T)pack; + } + } + return default(T); + } + + /// + /// 加载并实例化一个武器对象 + /// + /// 资源路径 + public static Gun LoadGunAndInstance(string path) + { + var pack = Load(path); + if (pack != null) + { + return pack.Instance(); + } + return null; + } + +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/manager/SoundManager.cs b/DungeonShooting_Godot/src/manager/SoundManager.cs new file mode 100644 index 0000000..2cf4f34 --- /dev/null +++ b/DungeonShooting_Godot/src/manager/SoundManager.cs @@ -0,0 +1,84 @@ +using System; +using Godot; + +/// +/// 音频总线 区分不同的声音 添加声音效果 目前只有背景音乐 和音效 两个bus +/// +public enum BUS +{ + BGM = 0, + SFX = 1 +} + +/// +/// 声音管理 背景音乐管理 音效 +/// +public class SoundManager +{ + public static SoundManager Instance { get => SingleTon.singleTon; } + + private static class SingleTon + { + internal static SoundManager singleTon = new SoundManager(); + } + + private static AudioStreamPlayer audioStreamPlayer = new AudioStreamPlayer(); + + + /// + /// 背景音乐路径 + /// + public static string BGMPath = "res://resource/sound/bgm/"; + /// + /// 音效路径 + /// + public static string SFXPath = "res://resource/sound/sfx/"; + + /// + /// 播放声音 用于bgm + /// + /// bgm名字 在resource/sound/bgm/目录下 + /// 需要播放声音得节点 将成为音频播放节点的父节点 + /// 音量 + public static void PlayeMusic(string soundName, Node node, float volume) + { + AudioStream sound = ResourceManager.Load(BGMPath + soundName); + if (sound != null) + { + AudioStreamPlayer soundNode = new AudioStreamPlayer(); + node.AddChild(soundNode); + soundNode.Stream = sound; + soundNode.Bus = Enum.GetName(typeof(BUS), 0); + soundNode.VolumeDb = volume; + soundNode.Play(); + } + else + { + GD.Print("没有这个资源!!!"); + } + } + /// + /// 添加并播放音效 用于音效 + /// + /// 音效文件名字 在resource/sound/sfx/目录下 + /// 需要播放声音得节点 将成为音频播放节点的父节点 + /// 音量 + public static void PlaySoundEffect(string soundName, Node node, float volume = 0f) + { + AudioStream sound = ResourceManager.Load(SFXPath + soundName); + if (sound != null) + { + AudioStreamPlayer soundNode = new AudioStreamPlayer(); + node.AddChild(soundNode); + soundNode.Stream = sound; + soundNode.Bus = Enum.GetName(typeof(BUS), 1); + soundNode.VolumeDb = volume; + soundNode.Play(); + GD.Print("bus:", soundNode.Bus); + } + else + { + GD.Print("没有这个资源!!!"); + } + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/package/Holster.cs b/DungeonShooting_Godot/src/package/Holster.cs new file mode 100644 index 0000000..1c77cbf --- /dev/null +++ b/DungeonShooting_Godot/src/package/Holster.cs @@ -0,0 +1,227 @@ +using Godot; + +/// +/// 角色身上的枪套, 存储角色携带的武器 +/// +public class Holster +{ + /// + /// 插槽类 + /// + public class GunSlot + { + /// + /// 是否启用 + /// + public bool Enable = false; + /// + /// 当前插槽存放的武器类型 + /// + public GunWeightType Type = GunWeightType.MainWeapon; + /// + /// 插槽存放的武器 + /// + public Gun Gun; + } + + /// + /// 归属者 + /// + public Role Master { get; } + + /// + /// 当前使用的武器对象 + /// + public Gun ActiveGun { get; private set; } + + /// + /// 当前使用的武器的索引 + /// + public int ActiveIndex { get; private set; } = 0; + + public GunSlot[] SlotList { get; } = new GunSlot[4]; + + public Holster(Role master) + { + Master = master; + + //创建枪的插槽, 默认前两个都是启用的 + GunSlot slot1 = new GunSlot(); + slot1.Enable = true; + SlotList[0] = slot1; + + GunSlot slot2 = new GunSlot(); + slot2.Enable = true; + slot2.Type = GunWeightType.DeputyWeapon; + SlotList[1] = slot2; + + GunSlot slot3 = new GunSlot(); + SlotList[2] = slot3; + + GunSlot slot4 = new GunSlot(); + slot4.Type = GunWeightType.DeputyWeapon; + SlotList[3] = slot4; + } + + /// + /// 拾起武器, 存入枪套中, 返回存放在枪套的位置, 如果容不下这把武器, 则会返回 -1 + /// + /// 武器对象 + public int PickupGun(Gun gun) + { + for (int i = 0; i < SlotList.Length; i++) + { + var item = SlotList[i]; + if (item.Enable && gun.Attribute.WeightType == item.Type && item.Gun == null) + { + item.Gun = gun; + ExchangeByIndex(i); + gun._PickUpGun(Master); + return i; + } + } + GD.PrintErr("存入武器失败!"); + return -1; + } + + /// + /// 移除指定位置的武器, 并返回这个武器对象, 如果移除正在使用的这把武器, 则会自动切换到上一把武器 + /// + /// 所在枪套的位置索引 + public Gun RmoveGun(int index) + { + if (index < 0 || index >= SlotList.Length) + { + return null; + } + var slot = SlotList[index]; + if (slot.Gun == null) + { + return null; + } + var gun = slot.Gun; + gun.GetParent().RemoveChild(gun); + slot.Gun = null; + + //如果是当前手持的武器, 就需要调用切换武器操作 + if (index == ActiveIndex) + { + //没有其他武器了 + if (ExchangePrev() == index) + { + ActiveIndex = 0; + ActiveGun = null; + } + } + gun._ThrowOutGun(); + return gun; + } + + /// + /// 切换到上一个武器 + /// + public int ExchangePrev() + { + var index = ActiveIndex - 1; + do + { + if (index < 0) + { + index = SlotList.Length - 1; + } + if (ExchangeByIndex(index)) + { + return index; + } + } while (index-- != ActiveIndex); + return -1; + } + + /// + /// 切换到下一个武器, + /// + public int ExchangeNext() + { + var index = ActiveIndex + 1; + do + { + if (index >= SlotList.Length) + { + index = 0; + } + if (ExchangeByIndex(index)) + { + return index; + } + } + while (index++ != ActiveIndex); + return -1; + } + + /// + /// 切换到指定索引的武器 + /// + public bool ExchangeByIndex(int index) + { + if (index == ActiveIndex && ActiveGun != null) return true; + if (index < 0 || index > SlotList.Length) return false; + var slot = SlotList[index]; + if (slot == null || slot.Gun == null) return false; + + //将上一把武器放到背后 + if (ActiveGun != null) + { + var tempParent = ActiveGun.GetParentOrNull(); + if (tempParent != null) + { + tempParent.RemoveChild(ActiveGun); + Master.BackMountPoint.AddChild(ActiveGun); + if (ActiveIndex == 0) + { + ActiveGun.Position = new Vector2(0, 5); + ActiveGun.RotationDegrees = 50; + ActiveGun.Scale = new Vector2(-1, 1); + } + else if (ActiveIndex == 1) + { + ActiveGun.Position = new Vector2(0, 0); + ActiveGun.RotationDegrees = 120; + ActiveGun.Scale = new Vector2(1, -1); + } + else if (ActiveIndex == 2) + { + ActiveGun.Position = new Vector2(0, 5); + ActiveGun.RotationDegrees = 310; + ActiveGun.Scale = new Vector2(1, 1); + } + else if (ActiveIndex == 3) + { + ActiveGun.Position = new Vector2(0, 0); + ActiveGun.RotationDegrees = 60; + ActiveGun.Scale = new Vector2(1, 1); + } + ActiveGun._Conceal(); + } + } + + //更改父节点 + var parent = slot.Gun.GetParentOrNull(); + if (parent == null) + { + Master.MountPoint.AddChild(slot.Gun); + } + else if (parent != Master.MountPoint) + { + parent.RemoveChild(slot.Gun); + Master.MountPoint.AddChild(slot.Gun); + } + + slot.Gun.Position = Vector2.Zero; + slot.Gun.Scale = Vector2.One; + slot.Gun.RotationDegrees = 0; + ActiveGun = slot.Gun; + ActiveIndex = index; + ActiveGun._Active(); + return true; + } +} diff --git a/DungeonShooting_Godot/src/props/IProp.cs b/DungeonShooting_Godot/src/props/IProp.cs new file mode 100644 index 0000000..e7b1932 --- /dev/null +++ b/DungeonShooting_Godot/src/props/IProp.cs @@ -0,0 +1,12 @@ + +/// +/// 道具接口 +/// +public interface IProp +{ + /// + /// 与角色互动时调用 + /// + /// 触发者 + void Tnteractive(Role master); +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/role/CampEnum.cs b/DungeonShooting_Godot/src/role/CampEnum.cs new file mode 100644 index 0000000..afe6f3b --- /dev/null +++ b/DungeonShooting_Godot/src/role/CampEnum.cs @@ -0,0 +1,8 @@ + +public enum CampEnum +{ + // 友军 + Friend, + // 敌人 + Enemy +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/role/Player.cs b/DungeonShooting_Godot/src/role/Player.cs new file mode 100644 index 0000000..d6ed468 --- /dev/null +++ b/DungeonShooting_Godot/src/role/Player.cs @@ -0,0 +1,120 @@ +using Godot; + +public class Player : Role +{ + /// + /// 移动加速度 + /// + public float Acceleration = 1500f; + + /// + /// 移动摩擦力 + /// + public float Friction = 800f; + /// + /// 移动速度 + /// + public Vector2 Velocity = Vector2.Zero; + + [Export] public PackedScene GunPrefab; + + public override void _EnterTree() + { + base._EnterTree(); + RoomManager.Current.Player = this; + } + + public override void _Ready() + { + base._Ready(); + Holster.SlotList[2].Enable = true; + Holster.SlotList[3].Enable = true; + PickUpGun(GunManager.GetGun1()); //0 + PickUpGun(GunManager.GetGun2()); //1 + PickUpGun(GunManager.GetGun3()); //2 + PickUpGun(GunManager.GetGun4()); //3 + } + + public override void _Process(float delta) + { + base._Process(delta); + + Vector2 mousePos = GetGlobalMousePosition(); + //枪口跟随鼠标 + MountPoint.LookAt(mousePos); + //脸的朝向 + if (mousePos.x > GlobalPosition.x && Face == FaceDirection.Left) + { + Face = FaceDirection.Right; + } + else if (mousePos.x < GlobalPosition.x && Face == FaceDirection.Right) + { + Face = FaceDirection.Left; + } + + if (Input.IsActionJustPressed("exchange")) //切换武器 + { + TriggerExchangeNext(); + } + else if (Input.IsActionJustPressed("throw")) //扔掉武器 + { + TriggerThrowGun(); + } + else if (Input.IsActionJustPressed("interactive")) //互动物体 + { + TriggerTnteractive(); + } + else if (Input.IsActionJustPressed("reload")) //换弹 + { + TriggerReload(); + } + if (Input.IsActionPressed("fire")) //开火 + { + TriggerAttack(); + } + } + + public override void _PhysicsProcess(float delta) + { + base._PhysicsProcess(delta); + Move(delta); + //播放动画 + PlayAnim(); + } + + private void Move(float delta) + { + //角色移动 + // 得到输入的 vector2 getvector方法返回值已经归一化过了noemalized + Vector2 dir = Input.GetVector("move_left", "move_right", "move_up", "move_down"); + // 移动. 如果移动的数值接近0(是用 摇杆可能出现 方向 可能会出现浮点),就fricition的值 插值 到 0 + // 如果 有输入 就以当前速度,用acceleration 插值到 对应方向 * 最大速度 + if (Mathf.IsZeroApprox(dir.x)) Velocity.x = Mathf.MoveToward(Velocity.x, 0, Friction * delta); + else Velocity.x = Mathf.MoveToward(Velocity.x, dir.x * MoveSpeed, Acceleration * delta); + + if (Mathf.IsZeroApprox(dir.y)) Velocity.y = Mathf.MoveToward(Velocity.y, 0, Friction * delta); + else Velocity.y = Mathf.MoveToward(Velocity.y, dir.y * MoveSpeed, Acceleration * delta); + + Velocity = MoveAndSlide(Velocity); + } + + // 播放动画 + private void PlayAnim() + { + if (Velocity != Vector2.Zero) + { + if ((Face == FaceDirection.Right && Velocity.x >= 0) || Face == FaceDirection.Left && Velocity.x <= 0) //向前走 + { + AnimatedSprite.Animation = AnimatorNames.Run; + } + else if ((Face == FaceDirection.Right && Velocity.x < 0) || Face == FaceDirection.Left && Velocity.x > 0) //向后走 + { + AnimatedSprite.Animation = AnimatorNames.ReverseRun; + } + } + else + { + AnimatedSprite.Animation = AnimatorNames.Idle; + } + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/role/Role.cs b/DungeonShooting_Godot/src/role/Role.cs new file mode 100644 index 0000000..335ba00 --- /dev/null +++ b/DungeonShooting_Godot/src/role/Role.cs @@ -0,0 +1,240 @@ +using System.Collections.Generic; +using Godot; + +/// +/// 脸的朝向 +/// +public enum FaceDirection +{ + Left, + Right, +} + +/// +/// 角色基类 +/// +public class Role : KinematicBody2D +{ + /// + /// 重写的纹理 + /// + [Export] public Texture Texture; + + /// + /// 移动速度 + /// + [Export] public float MoveSpeed = 150f; + + /// + /// 所属阵营 + /// + [Export] public CampEnum Camp; + + /// + /// 携带的道具包裹 + /// + public List PropsPack { get; } = new List(); + + /// + /// 角色携带的枪套 + /// + public Holster Holster { get; private set; } + + /// + /// 动画播放器 + /// + public AnimatedSprite AnimatedSprite { get; private set; } + /// + /// 武器挂载点 + /// + public Position2D MountPoint { get; private set; } + /// + /// 背后武器的挂载点 + /// + public Position2D BackMountPoint { get; private set; } + + /// + /// 脸的朝向 + /// + public FaceDirection Face { get => _face; set => SetFace(value); } + private FaceDirection _face; + + private Vector2 StartScele; + private readonly List InteractiveItemList = new List(); + + public override void _Ready() + { + StartScele = Scale; + AnimatedSprite = GetNode("AnimatedSprite"); + MountPoint = GetNode("MountPoint"); + BackMountPoint = GetNode("BackMountPoint"); + // 更改纹理 + ChangeFrameTexture(AnimatorNames.Idle, AnimatedSprite, Texture); + ChangeFrameTexture(AnimatorNames.Run, AnimatedSprite, Texture); + ChangeFrameTexture(AnimatorNames.ReverseRun, AnimatedSprite, Texture); + + Holster = new Holster(this); + Face = FaceDirection.Right; + } + + /// + /// 拾起一个武器, 并且切换到这个武器 + /// + /// 武器对象 + public void PickUpGun(Gun gun) + { + Holster.PickupGun(gun); + } + + /// + /// 切换到下一个武器 + /// + public void TriggerExchangeNext() + { + Holster.ExchangeNext(); + } + + /// + /// 切换到上一个武器 + /// + public void ExchangePrev() + { + Holster.ExchangePrev(); + } + + /// + /// 扔掉当前使用的武器, 切换到上一个武器 + /// + public void TriggerThrowGun() + { + var gun = Holster.RmoveGun(Holster.ActiveIndex); + //播放抛出效果 + if (gun != null) + { + if (Face == FaceDirection.Left) + { + gun.Scale *= new Vector2(1, -1); + gun.RotationDegrees = 180; + } + gun.Position = Vector2.Zero; + var temp = new ThrowGun(); + var startPos = GlobalPosition + new Vector2(0, 0); + var startHeight = 6; + var direction = GlobalRotationDegrees + MathUtils.RandRangeInt(-20, 20); + var xf = 30; + var yf = MathUtils.RandRangeInt(60, 120); + var rotate = MathUtils.RandRangeInt(-180, 180); + temp.InitThrow(new Vector2(20, 20), startPos, startHeight, direction, xf, yf, rotate, gun, gun.GunSprite); + RoomManager.Current.SortRoot.AddChild(temp); + } + } + + /// + /// 返回是否存在可互动的物体 + /// + public bool HasTnteractive() + { + return InteractiveItemList.Count > 0; + } + + /// + /// 触发与碰撞的物体互动 + /// + public void TriggerTnteractive() + { + if (HasTnteractive()) + { + var item = InteractiveItemList[InteractiveItemList.Count - 1]; + item.Tnteractive(this); + } + } + + /// + /// 触发换弹 + /// + public void TriggerReload() + { + if (Holster.ActiveGun != null) + { + Holster.ActiveGun._Reload(); + } + } + + /// + /// 触发攻击 + /// + public void TriggerAttack() + { + if (Holster.ActiveGun != null) + { + Holster.ActiveGun.Trigger(); + } + } + + /// + /// 设置脸的朝向 + /// + private void SetFace(FaceDirection face) + { + if (_face != face) + { + _face = face; + if (face == FaceDirection.Right) + { + RotationDegrees = 0; + Scale = StartScele; + } + else + { + RotationDegrees = 180; + Scale = new Vector2(StartScele.x, -StartScele.y); + } + } + } + + /// + /// 更改指定动画的纹理 + /// + private void ChangeFrameTexture(string anim, AnimatedSprite animatedSprite, Texture texture) + { + SpriteFrames spriteFrames = animatedSprite.Frames as SpriteFrames; + if (spriteFrames != null) + { + int count = spriteFrames.GetFrameCount(anim); + for (int i = 0; i < count; i++) + { + AtlasTexture temp = spriteFrames.GetFrame(anim, i) as AtlasTexture; + temp.Atlas = Texture; + } + } + } + + /// + /// 连接信号: InteractiveArea.area_entered + /// + private void _OnPropsEnter(Area2D other) + { + if (other is Gun gun) + { + if (!InteractiveItemList.Contains(gun)) + { + InteractiveItemList.Add(gun); + } + } + } + + /// + /// 连接信号: InteractiveArea.area_exited + /// + private void _OnPropsExit(Area2D other) + { + if (other is Gun gun) + { + if (InteractiveItemList.Contains(gun)) + { + InteractiveItemList.Remove(gun); + } + } + } + +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/room/RoomManager.cs b/DungeonShooting_Godot/src/room/RoomManager.cs new file mode 100644 index 0000000..ff65623 --- /dev/null +++ b/DungeonShooting_Godot/src/room/RoomManager.cs @@ -0,0 +1,53 @@ +using System; +using Godot; + +/// +/// 房间管理器 +/// +public class RoomManager : Node2D +{ + /// + /// 鼠标指针 + /// + [Export] public PackedScene MouseCursor; + + [Export] public NodePath UIPath; + + public static RoomManager Current { get; private set; } + + public CanvasLayer UI; + public Cursor Cursor { get; private set; } + public Player Player { get; set; } + public Node2D ObjectRoot { get; private set; } + public YSort SortRoot { get; private set; } + + public override void _EnterTree() + { + Current = this; + Input.SetMouseMode(Input.MouseMode.Hidden); + // 初始化鼠标 + Cursor = MouseCursor.Instance(); + AddChild(Cursor); + + SortRoot = GetNode("ItemRoot"); + ObjectRoot = GetNode("ObjectRoot"); + + //初始化地图 + var node = GetNode("MapRoot").GetChild(0).GetNode("Config"); + Color color = (Color)node.GetMeta("ClearColor"); + VisualServer.SetDefaultClearColor(color); + } + + public override void _Ready() + { + SoundManager.PlayeMusic("intro.ogg", this, -17f); + } + + public override void _Process(float delta) + { + if (Input.IsActionJustPressed("fire")) + { + //CommonNodeManager.CreateThrowNode(); + } + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/ui/RoomUI.cs b/DungeonShooting_Godot/src/ui/RoomUI.cs new file mode 100644 index 0000000..2b5a2bf --- /dev/null +++ b/DungeonShooting_Godot/src/ui/RoomUI.cs @@ -0,0 +1,9 @@ +using Godot; + +public class RoomUI : Control +{ + public override void _Ready() + { + + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/utils/MathUtils.cs b/DungeonShooting_Godot/src/utils/MathUtils.cs new file mode 100644 index 0000000..9c6033a --- /dev/null +++ b/DungeonShooting_Godot/src/utils/MathUtils.cs @@ -0,0 +1,26 @@ +using Godot; + +public static class MathUtils +{ + /// + /// 返回一个区间内的随机小数 + /// + public static float RandRange(float min, float max) + { + if (min == max) return min; + if (min > max) + return GD.Randf() * (min - max) + max; + return GD.Randf() * (max - min) + min; + } + + /// + /// 返回一个区间内的随机整数 + /// + public static int RandRangeInt(int min, int max) + { + if (min == max) return min; + if (min > max) + return Mathf.FloorToInt(GD.Randf() * (min - max + 1) + max); + return Mathf.FloorToInt(GD.Randf() * (max - min + 1) + min); + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/bullet/Bullet.cs b/DungeonShooting_Godot/src/weapon/bullet/Bullet.cs new file mode 100644 index 0000000..ec5ac06 --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/bullet/Bullet.cs @@ -0,0 +1,27 @@ +using Godot; + +/// +/// 子弹接口 +/// +public interface IBullet +{ + /// + /// 攻击目标阵营 + /// + CampEnum TargetCamp { get; } + /// + /// 发射该子弹的武器 + /// + Gun Gun { get; } + /// + /// 发射该子弹的物体对象 + /// + Node2D Master { get; } + /// + /// 初始化基础数据 + /// + /// 攻击的目标阵营 + /// 发射该子弹的枪对象 + /// 发射该子弹的角色 + void Init(CampEnum target, Gun gun, Node2D master); +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/bullet/HighSpeedBullet.cs b/DungeonShooting_Godot/src/weapon/bullet/HighSpeedBullet.cs new file mode 100644 index 0000000..039c416 --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/bullet/HighSpeedBullet.cs @@ -0,0 +1,72 @@ +using Godot; + +/// +/// 高速子弹 +/// +public class HighSpeedBullet : Node2D, IBullet +{ + public CampEnum TargetCamp { get; private set; } + + public Gun Gun { get; private set; } + + public Node2D Master { get; private set; } + + /// + /// 碰撞物体后产生的火花 + /// + [Export] public PackedScene Hit; + + //射线检测节点 + private RayCast2D RayCast2D; + private Line2D Line; + private float ca = 1; + + public void Init(CampEnum target, Gun gun, Node2D master) + { + TargetCamp = target; + Gun = gun; + Master = master; + + //飞行距离 + var distance = MathUtils.RandRange(gun.Attribute.MinDistance, gun.Attribute.MaxDistance); + + //初始化子弹数据 + RayCast2D = GetNode("RayCast2D"); + Line = GetNode("Line"); + Modulate = Colors.White; + + // 目标点 + Vector2 targetPos = new Vector2(distance, 0); + RayCast2D.CastTo = targetPos; + RayCast2D.ForceRaycastUpdate(); + if (RayCast2D.IsColliding()) + { + //碰到物体 + Vector2 collPosition = RayCast2D.GetCollisionPoint(); + Node2D hit = Hit.Instance(); + hit.RotationDegrees = MathUtils.RandRangeInt(0, 360); + hit.GlobalPosition = collPosition; + GetTree().CurrentScene.AddChild(hit); + //划线的点坐标 + Line.SetPointPosition(1, new Vector2(Line.GlobalPosition.DistanceTo(collPosition), 0)); + } + else + { + //划线的点坐标 + Line.SetPointPosition(1, targetPos); + } + RayCast2D.Enabled = false; + } + + public override void _Process(float delta) + { + ca -= 12 * delta; + if (ca <= 0) { + QueueFree(); + return; + } + Color c = Modulate; + c.a = ca; + Modulate = c; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/bullet/OrdinaryBullets.cs b/DungeonShooting_Godot/src/weapon/bullet/OrdinaryBullets.cs new file mode 100644 index 0000000..7e65b85 --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/bullet/OrdinaryBullets.cs @@ -0,0 +1,97 @@ +using System; +using Godot; + +/// +/// 普通的子弹 +/// +public class OrdinaryBullets : Node2D, IBullet +{ + public CampEnum TargetCamp { get; private set; } + + public Gun Gun { get; private set; } + + public Node2D Master { get; private set; } + + /// + /// 碰撞物体后产生的火花 + /// + [Export] public PackedScene Hit; + + // 起始点坐标 + private Vector2 StartPosition; + // 最大飞行距离 + private float MaxDistance; + // 子弹飞行速度 + private float FlySpeed = 1500; + //当前子弹已经飞行的距离 + private float CurrFlyDistance = 0; + //射线碰撞节点 + private RayCast2D RayCast; + //子弹的精灵 + private Sprite BulletSprite; + //绘制阴影的精灵 + private Sprite ShadowSprite; + + private int frame = 0; + + public void Init(CampEnum target, Gun gun, Node2D master) + { + TargetCamp = target; + Gun = gun; + Master = master; + + MaxDistance = MathUtils.RandRange(gun.Attribute.MinDistance, gun.Attribute.MaxDistance); + StartPosition = GlobalPosition; + BulletSprite = GetNode("Bullet"); + BulletSprite.Visible = false; + RayCast = GetNode("RayCast2D"); + + //创建阴影 + ShadowSprite = new Sprite(); + ShadowSprite.Visible = false; + ShadowSprite.ZIndex = -1; + ShadowSprite.Texture = BulletSprite.Texture; + ShadowSprite.Offset = BulletSprite.Offset; + ShadowSprite.Material = ResourceManager.ShadowMaterial; + AddChild(ShadowSprite); + } + + public override void _Ready() + { + //生成时播放音效 + SoundManager.PlaySoundEffect("ordinaryBullet.ogg", this, 6f); + } + + public override void _PhysicsProcess(float delta) + { + if (frame++ == 0) + { + BulletSprite.Visible = true; + ShadowSprite.Visible = true; + } + //碰到墙壁 + if (RayCast.IsColliding()) + { + //var target = RayCast.GetCollider(); + var pos = RayCast.GetCollisionPoint(); + //播放受击动画 + Node2D hit = Hit.Instance(); + hit.RotationDegrees = MathUtils.RandRangeInt(0, 360); + hit.GlobalPosition = pos; + GetTree().CurrentScene.AddChild(hit); + QueueFree(); + } + else //没有碰到, 继续移动 + { + ShadowSprite.GlobalPosition = GlobalPosition + new Vector2(0, 5); + Position += new Vector2(FlySpeed * delta, 0).Rotated(Rotation); + + CurrFlyDistance += FlySpeed * delta; + if (CurrFlyDistance >= MaxDistance) + { + QueueFree(); + } + } + } + +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/gun/Gun.cs b/DungeonShooting_Godot/src/weapon/gun/Gun.cs new file mode 100644 index 0000000..0e8464a --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/gun/Gun.cs @@ -0,0 +1,562 @@ +using Godot; +using System; + +/// +/// 枪的基类 +/// +public abstract class Gun : Area2D, IProp +{ + /// + /// 开火回调事件 + /// + public event Action FireEvent; + + /// + /// 属性数据 + /// + public GunAttribute Attribute + { + get + { + if (_attribute == null) + { + throw new Exception("请先调用Init来初始化枪的属性"); + } + return _attribute; + } + private set => _attribute = value; + } + private GunAttribute _attribute; + + /// + /// 枪的图片 + /// + public Sprite GunSprite { get; private set; } + + /// + /// 动画播放器 + /// + /// + public AnimationPlayer AnimationPlayer { get; private set; } + + /// + /// 枪攻击的目标阵营 + /// + public CampEnum TargetCamp { get; set; } + + /// + /// 该武器的拥有者 + /// + public Role Master { get; private set; } + + /// + /// 当前弹夹弹药剩余量 + /// + public int CurrAmmo { get; private set; } + /// + /// 剩余弹药量 + /// + public int ResidueAmmo { get; private set; } + + /// + /// 枪管的开火点 + /// + public Position2D FirePoint { get; private set; } + /// + /// 枪管的原点 + /// + public Position2D OriginPoint { get; private set; } + /// + /// 弹壳抛出的点 + /// + public Position2D ShellPoint { get; private set; } + /// + /// 碰撞器节点 + /// + /// + public CollisionShape2D CollisionShape2D { get; private set; } + /// + /// 枪的当前散射半径 + /// + public float CurrScatteringRange { get; private set; } = 0; + /// + /// 是否在换弹中 + /// + /// + public bool Reloading { get; private set; } = false; + /// + /// 换弹计时器 + /// + public float ReloadTimer { get; private set; } = 0; + + //是否按下 + private bool triggerFlag = false; + //扳机计时器 + private float triggerTimer = 0; + //开火前延时时间 + private float delayedTime = 0; + //开火间隙时间 + private float fireInterval = 0; + //开火枪口角度 + private float fireAngle = 0; + //攻击冷却计时 + private float attackTimer = 0; + //攻击状态 + private bool attackFlag = false; + //按下的时间 + private float downTimer = 0; + //松开的时间 + private float upTimer = 0; + //连发次数 + private float continuousCount = 0; + //连发状态记录 + private bool continuousShootFlag = false; + + /// + /// 初始化时调用 + /// + protected abstract void Init(); + + /// + /// 单次开火时调用的函数 + /// + protected abstract void OnFire(); + + /// + /// 换弹时调用 + /// + protected abstract void OnReload(); + + /// + /// 发射子弹时调用的函数, 每发射一枚子弹调用一次, + /// 如果做霰弹枪效果, 一次开火发射5枚子弹, 则该函数调用5次 + /// + protected abstract void OnShootBullet(); + + /// + /// 当武器被拾起时调用 + /// + /// 拾起该武器的角色 + protected abstract void OnPickUp(Role master); + + /// + /// 当武器被扔掉时调用 + /// + protected abstract void OnThrowOut(); + + /// + /// 当武器被激活时调用, 也就是使用当武器是调用 + /// + protected abstract void OnActive(); + + /// + /// 当武器被收起时调用 + /// + protected abstract void OnConceal(); + + public override void _Process(float delta) + { + if (Master == null) //这把武器被扔在地上 + { + Reloading = false; + triggerTimer = triggerTimer > 0 ? triggerTimer - delta : 0; + triggerFlag = false; + attackFlag = false; + attackTimer = attackTimer > 0 ? attackTimer - delta : 0; + CurrScatteringRange = Mathf.Max(CurrScatteringRange - Attribute.ScatteringRangeBackSpeed * delta, Attribute.StartScatteringRange); + continuousCount = 0; + delayedTime = 0; + } + else if (Master.Holster.ActiveGun != this) //当前武器没有被使用 + { + Reloading = false; + triggerTimer = triggerTimer > 0 ? triggerTimer - delta : 0; + triggerFlag = false; + attackFlag = false; + attackTimer = attackTimer > 0 ? attackTimer - delta : 0; + CurrScatteringRange = Mathf.Max(CurrScatteringRange - Attribute.ScatteringRangeBackSpeed * delta, Attribute.StartScatteringRange); + continuousCount = 0; + delayedTime = 0; + } + else //正在使用中 + { + + //换弹 + if (Reloading) + { + ReloadTimer -= delta; + if (ReloadTimer <= 0) + { + ReloadTimer = 0; + ReloadSuccess(); + } + } + + if (triggerFlag) + { + if (upTimer > 0) //第一帧按下扳机 + { + upTimer = 0; + DownTrigger(); + } + downTimer += delta; + } + else + { + if (downTimer > 0) //第一帧松开扳机 + { + downTimer = 0; + UpTriggern(); + } + upTimer += delta; + } + + // 攻击的计时器 + if (attackTimer > 0) + { + attackTimer -= delta; + if (attackTimer < 0) + { + delayedTime += attackTimer; + attackTimer = 0; + } + } + else if (delayedTime > 0) //攻击延时 + { + delayedTime -= delta; + if (attackTimer < 0) + { + delayedTime = 0; + } + } + + //连发判断 + if (continuousCount > 0 && delayedTime <= 0 && attackTimer <= 0) + { + //开火 + TriggernFire(); + } + + if (!attackFlag && attackTimer <= 0) + { + CurrScatteringRange = Mathf.Max(CurrScatteringRange - Attribute.ScatteringRangeBackSpeed * delta, Attribute.StartScatteringRange); + } + triggerTimer = triggerTimer > 0 ? triggerTimer - delta : 0; + triggerFlag = false; + attackFlag = false; + + //枪身回归 + Position = Position.MoveToward(Vector2.Zero, 35 * delta); + if (fireInterval == 0) + { + RotationDegrees = 0; + } + else + { + RotationDegrees = Mathf.Lerp(0, fireAngle, attackTimer / fireInterval); + } + } + } + + public void Init(GunAttribute attribute) + { + if (_attribute != null) + { + throw new Exception("当前武器已经初始化过了!"); + } + + GunSprite = GetNode("GunSprite"); + FirePoint = GetNode("FirePoint"); + OriginPoint = GetNode("OriginPoint"); + ShellPoint = GetNode("ShellPoint"); + AnimationPlayer = GetNode("AnimationPlayer"); + CollisionShape2D = GetNode("Collision"); + + Attribute = attribute; + //更新图片 + GunSprite.Texture = attribute.Sprite; + GunSprite.Position = Attribute.CenterPosition; + //开火位置 + FirePoint.Position = new Vector2(attribute.FirePosition.x, -attribute.FirePosition.y); + OriginPoint.Position = new Vector2(0, -attribute.FirePosition.y); + + //弹药量 + CurrAmmo = attribute.CartridgeCapacity; + //剩余弹药量 + ResidueAmmo = attribute.MaxCartridgeCapacity - attribute.CartridgeCapacity; + + Init(); + } + + /// + /// 扳机函数, 调用即视为扣动扳机 + /// + public void Trigger() + { + //是否第一帧按下 + var justDown = downTimer == 0; + //是否能发射 + var flag = false; + if (continuousCount <= 0) //不能处于连发状态下 + { + if (Attribute.ContinuousShoot) //自动射击 + { + if (triggerTimer > 0) + { + if (continuousShootFlag) + { + flag = true; + } + } + else + { + flag = true; + if (delayedTime <= 0 && attackTimer <= 0) + { + continuousShootFlag = true; + } + } + } + else //半自动 + { + if (justDown && triggerTimer <= 0) + { + flag = true; + } + } + } + + if (flag) + { + if (Reloading) + { + //换弹中 + GD.Print("换弹中..." + (ReloadTimer / Attribute.ReloadTime)); + } + else if (CurrAmmo <= 0) + { + //子弹不够 + GD.Print("弹夹打空了, 按R换弹!"); + } + else + { + if (justDown) + { + //开火前延时 + delayedTime = Attribute.DelayedTime; + //扳机按下间隔 + triggerTimer = Attribute.TriggerInterval; + //连发数量 + if (!Attribute.ContinuousShoot) + { + continuousCount = MathUtils.RandRangeInt(Attribute.MinContinuousCount, Attribute.MaxContinuousCount); + } + } + if (delayedTime <= 0 && attackTimer <= 0) + { + TriggernFire(); + } + attackFlag = true; + } + + } + triggerFlag = true; + } + + /// + /// 刚按下扳机 + /// + private void DownTrigger() + { + + } + + /// + /// 刚松开扳机 + /// + private void UpTriggern() + { + continuousShootFlag = false; + if (delayedTime > 0) + { + continuousCount = 0; + } + } + + /// + /// 触发开火 + /// + private void TriggernFire() + { + continuousCount = continuousCount > 0 ? continuousCount - 1 : 0; + + //减子弹数量 + CurrAmmo--; + //开火间隙 + fireInterval = 60 / Attribute.StartFiringSpeed; + //攻击冷却 + attackTimer += fireInterval; + + //触发开火函数 + OnFire(); + + //开火发射的子弹数量 + var bulletCount = MathUtils.RandRangeInt(Attribute.MaxFireBulletCount, Attribute.MinFireBulletCount); + //枪口角度 + var angle = new Vector2(GameConfig.ScatteringDistance, CurrScatteringRange).Angle(); + + //创建子弹 + for (int i = 0; i < bulletCount; i++) + { + //先算枪口方向 + Rotation = (float)GD.RandRange(-angle, angle); + //发射子弹 + OnShootBullet(); + } + + //当前的散射半径 + CurrScatteringRange = Mathf.Min(CurrScatteringRange + Attribute.ScatteringRangeAddValue, Attribute.FinalScatteringRange); + //枪的旋转角度 + RotationDegrees -= Attribute.UpliftAngle; + fireAngle = RotationDegrees; + //枪身位置 + Position = new Vector2(Mathf.Max(-Attribute.MaxBacklash, Position.x - MathUtils.RandRange(Attribute.MinBacklash, Attribute.MaxBacklash)), Position.y); + + if (FireEvent != null) + { + FireEvent(this); + } + } + + /// + /// 触发换弹 + /// + public void _Reload() + { + if (CurrAmmo < Attribute.CartridgeCapacity && ResidueAmmo > 0 && !Reloading) + { + Reloading = true; + ReloadTimer = Attribute.ReloadTime; + OnReload(); + } + } + + /// + /// 换弹计时器时间到, 执行换弹操作 + /// + private void ReloadSuccess() + { + if (Attribute.AloneReload) //单独装填 + { + + } + else //换弹结束 + { + Reloading = false; + if (ResidueAmmo >= Attribute.CartridgeCapacity) + { + ResidueAmmo -= Attribute.CartridgeCapacity; + CurrAmmo = Attribute.CartridgeCapacity; + } + else + { + CurrAmmo = ResidueAmmo; + ResidueAmmo = 0; + } + } + } + + public void Tnteractive(Role master) + { + var parent = GetParent(); + parent.RemoveChild(this); + master.Holster.PickupGun(this); + parent.QueueFree(); + } + + /// + /// 触发落到地面 + /// + public void _FallToGround() + { + //启用碰撞 + CollisionShape2D.Disabled = false; + } + + /// + /// 触发拾起 + /// + public void _PickUpGun(Role master) + { + Master = master; + //握把位置 + GunSprite.Position = Attribute.HoldPosition; + AnimationPlayer.Play("RESET"); + ZIndex = 0; + //禁用碰撞 + CollisionShape2D.Disabled = true; + OnPickUp(master); + } + + /// + /// 触发抛出 + /// + public void _ThrowOutGun() + { + Master = null; + GunSprite.Position = Attribute.CenterPosition; + AnimationPlayer.Play("Floodlight"); + OnThrowOut(); + } + + /// + /// 触发启用武器 + /// + public void _Active() + { + OnActive(); + } + + /// + /// 触发收起武器 + /// + public void _Conceal() + { + OnConceal(); + } + + /// + /// 实例化并返回子弹对象 + /// + /// 子弹的预制体 + protected T CreateBullet(PackedScene bulletPack, Vector2 globalPostion, float globalRotation, Node parent = null) where T : Node2D, IBullet + { + return (T)CreateBullet(bulletPack, globalPostion, globalRotation, parent); + } + + /// + /// 实例化并返回子弹对象 + /// + /// 子弹的预制体 + protected IBullet CreateBullet(PackedScene bulletPack, Vector2 globalPostion, float globalRotation, Node parent = null) + { + // 实例化子弹 + Node2D bullet = bulletPack.Instance(); + // 设置坐标 + bullet.GlobalPosition = globalPostion; + // 旋转角度 + bullet.GlobalRotation = globalRotation; + if (parent == null) + { + RoomManager.Current.SortRoot.AddChild(bullet); + } + else + { + parent.AddChild(bullet); + } + // 调用初始化 + IBullet result = (IBullet)bullet; + result.Init(TargetCamp, this, null); + return result; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/gun/GunAttribute.cs b/DungeonShooting_Godot/src/weapon/gun/GunAttribute.cs new file mode 100644 index 0000000..db173dc --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/gun/GunAttribute.cs @@ -0,0 +1,161 @@ +using Godot; + +/// +/// 枪上的属性 +/// +public class GunAttribute +{ + /// + /// 武器的唯一id + /// + public string Id = "1"; + /// + /// 武器显示的名称 + /// + public string Name = "Gun1"; + /// + /// 主武器 + /// + public GunWeightType WeightType = GunWeightType.MainWeapon; + /// + /// 枪的图片 + /// + public Texture Sprite; + /// + /// 子弹预制体 + /// + public PackedScene BulletPack; + /// + /// 弹壳预制体 + /// + public PackedScene ShellPack; + /// + /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机 + /// + public bool ContinuousShoot = true; + /// + /// 弹夹容量 + /// + public int CartridgeCapacity = 30; + /// + /// 弹药容量上限 + /// + public int MaxCartridgeCapacity = 90; + /// + /// 装弹时间 + /// + public float ReloadTime = 1.5f; + /// + /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹枪装填效果 + /// + public bool AloneReload = false; + /// + /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true + /// + public bool AloneReloadCanShoot = false; + /// + /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false + /// + public bool LooseShoot = false; + /// + /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效 + /// + public int MinContinuousCount = 3; + /// + /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效 + /// + public int MaxContinuousCount = 3; + /// + /// 按下一次扳机后需要多长时间才能再次按下 + /// + public float TriggerInterval = 0; + /// + /// 初始射速, 初始每秒分钟能发射多少发子弹 + /// + public float StartFiringSpeed = 300; + /// + /// 最终射速, 最终每秒分钟能发射多少发子弹 + /// + public float FinalFiringSpeed = 300; + /// + /// 按下扳机并开火后射速增加速率 + /// + public float FiringSpeedAddSpeed = 2; + /// + /// 松开扳机后射速消散速率 + /// + public float FiringSpeedBackSpeed = 10; + /// + /// 单次开火发射子弹最小数量 + /// + public int MinFireBulletCount = 1; + /// + /// 单次开火发射子弹最大数量 + /// + public int MaxFireBulletCount = 1; + /// + /// 开火前延时 + /// + public float DelayedTime = 0f; + /// + /// 初始散射半径 + /// + public float StartScatteringRange = 0; + /// + /// 最终散射半径 + /// + public float FinalScatteringRange = 20; + /// + /// 每次发射后散射增加值 + /// + public float ScatteringRangeAddValue = 2; + /// + /// 松开扳机后散射销退速率 + /// + public float ScatteringRangeBackSpeed = 10; + /// + /// 子弹飞行最大距离 + /// + public float MaxDistance = 600; + /// + /// 子弹飞行最小距离 + /// + public float MinDistance = 800; + /// + /// 武器精灵的旋转中心坐标 + /// + public Vector2 CenterPosition = new Vector2(0, 0); + /// + /// 开火位置 + /// + public Vector2 FirePosition = new Vector2(11, 0); + /// + /// 握把位置 + /// + public Vector2 HoldPosition = new Vector2(4, -3); + /// + /// 重量 + /// + public float Weight = 11; + /// + /// 最大后坐力 (仅用于开火后枪身抖动) + /// + public float MaxBacklash = 4; + /// + /// 最小后坐力 (仅用于开火后枪身抖动) + /// + public float MinBacklash = 2; + /// + /// 开火后枪口上抬角度 + /// + public float UpliftAngle = 30; + /// + /// 开火后枪口角度恢复速度倍数 + /// + public float UpliftAngleRestore = 1; + + public GunAttribute() + { + + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/gun/GunManager.cs b/DungeonShooting_Godot/src/weapon/gun/GunManager.cs new file mode 100644 index 0000000..c690018 --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/gun/GunManager.cs @@ -0,0 +1,172 @@ +using System.Collections.Generic; +using Godot; + +public static class GunManager +{ + + public static Gun GetGun1() + { + //加载枪的 prefab + var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); + //设置基础属性 + var attr = new GunAttribute(); + attr.Id = "1"; + attr.Name = "Gun1"; + attr.Weight = 40; + attr.CenterPosition = new Vector2(0.4f, -2.6f); + attr.StartFiringSpeed = 480; + attr.StartScatteringRange = 30; + attr.FinalScatteringRange = 90; + attr.ScatteringRangeAddValue = 2f; + attr.ScatteringRangeBackSpeed = 40; + //连发 + attr.ContinuousShoot = true; + //扳机检测间隔 + attr.TriggerInterval = 0f; + //连发数量 + attr.MinContinuousCount = 3; + attr.MaxContinuousCount = 3; + //开火前延时 + attr.DelayedTime = 0f; + //攻击距离 + attr.MinDistance = 500; + attr.MaxDistance = 600; + //发射子弹数量 + attr.MinFireBulletCount = 1; + attr.MaxFireBulletCount = 1; + //抬起角度 + attr.UpliftAngle = 10; + //枪身长度 + attr.FirePosition = new Vector2(16, 1.5f); + attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun4.png"); + attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/OrdinaryBullets.tscn"); + attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); + gun.Init(attr); + return gun; + } + + public static Gun GetGun2() + { + //加载枪的 prefab + var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); + //设置基础属性 + var attr = new GunAttribute(); + attr.Id = "2"; + attr.Name = "Gun2"; + attr.Weight = 20; + attr.CenterPosition = new Vector2(0.4f, -2.6f); + attr.WeightType = GunWeightType.DeputyWeapon; + attr.StartFiringSpeed = 600; + attr.StartScatteringRange = 5; + attr.FinalScatteringRange = 60; + attr.ScatteringRangeAddValue = 8f; + attr.ScatteringRangeBackSpeed = 40; + //连发 + attr.ContinuousShoot = false; + //扳机检测间隔 + attr.TriggerInterval = 0.4f; + //连发数量 + attr.MinContinuousCount = 3; + attr.MaxContinuousCount = 3; + //开火前延时 + attr.DelayedTime = 0f; + //攻击距离 + attr.MinDistance = 500; + attr.MaxDistance = 600; + //发射子弹数量 + attr.MinFireBulletCount = 1; + attr.MaxFireBulletCount = 1; + //抬起角度 + attr.UpliftAngle = 30; + //枪身长度 + attr.FirePosition = new Vector2(10, 1.5f); + attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun3.png"); + attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/HighSpeedBullet.tscn"); + attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); + gun.Init(attr); + return gun; + } + + public static Gun GetGun3() + { + //加载枪的 prefab + var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); + //设置基础属性 + var attr = new GunAttribute(); + attr.Id = "3"; + attr.Name = "Gun3"; + attr.Weight = 30; + attr.CenterPosition = new Vector2(0.4f, -2.6f); + attr.StartFiringSpeed = 480; + attr.StartScatteringRange = 30; + attr.FinalScatteringRange = 90; + attr.ScatteringRangeAddValue = 2f; + attr.ScatteringRangeBackSpeed = 40; + //连发 + attr.ContinuousShoot = false; + //扳机检测间隔 + attr.TriggerInterval = 0f; + //连发数量 + attr.MinContinuousCount = 3; + attr.MaxContinuousCount = 3; + //开火前延时 + attr.DelayedTime = 0f; + //攻击距离 + attr.MinDistance = 500; + attr.MaxDistance = 600; + //发射子弹数量 + attr.MinFireBulletCount = 1; + attr.MaxFireBulletCount = 1; + //抬起角度 + attr.UpliftAngle = 10; + //枪身长度 + attr.FirePosition = new Vector2(16, 1.5f); + attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun2.png"); + attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/OrdinaryBullets.tscn"); + attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); + gun.Init(attr); + return gun; + } + + public static Gun GetGun4() + { + //加载枪的 prefab + var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); + //设置基础属性 + var attr = new GunAttribute(); + attr.Id = "4"; + attr.Name = "Gun4"; + attr.Weight = 10; + attr.CenterPosition = new Vector2(0.4f, -2.6f); + attr.WeightType = GunWeightType.DeputyWeapon; + attr.StartFiringSpeed = 600; + attr.StartScatteringRange = 5; + attr.FinalScatteringRange = 60; + attr.ScatteringRangeAddValue = 8f; + attr.ScatteringRangeBackSpeed = 40; + //连发 + attr.ContinuousShoot = false; + //扳机检测间隔 + attr.TriggerInterval = 0.4f; + //连发数量 + attr.MinContinuousCount = 3; + attr.MaxContinuousCount = 3; + //开火前延时 + attr.DelayedTime = 0f; + //攻击距离 + attr.MinDistance = 500; + attr.MaxDistance = 600; + //发射子弹数量 + attr.MinFireBulletCount = 1; + attr.MaxFireBulletCount = 1; + //抬起角度 + attr.UpliftAngle = 30; + //枪身长度 + attr.FirePosition = new Vector2(10, 1.5f); + attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun7.png"); + attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/HighSpeedBullet.tscn"); + attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); + gun.Init(attr); + return gun; + } +} diff --git a/DungeonShooting_Godot/src/weapon/gun/GunWeightType.cs b/DungeonShooting_Godot/src/weapon/gun/GunWeightType.cs new file mode 100644 index 0000000..4181693 --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/gun/GunWeightType.cs @@ -0,0 +1,19 @@ + +/// +/// 根据重量划分的武器类型 +/// +public enum GunWeightType +{ + /// + /// 副武器 + /// + DeputyWeapon = 1, + /// + /// 主武器 + /// + MainWeapon = 2, + /// + /// 重型武器 + /// + HeavyWeapon = 3 +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/gun/OrdinaryGun.cs b/DungeonShooting_Godot/src/weapon/gun/OrdinaryGun.cs new file mode 100644 index 0000000..31f869c --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/gun/OrdinaryGun.cs @@ -0,0 +1,63 @@ +using System; +using Godot; + + +/// +/// 普通的枪 +/// +public class OrdinaryGun : Gun +{ + protected override void Init() + { + + } + + protected override void OnFire() + { + //创建一个弹壳 + var temp = new ThrowShell(); + var startPos = GlobalPosition + new Vector2(0, 5); + var startHeight = 6; + var direction = GlobalRotationDegrees + MathUtils.RandRangeInt(-30, 30) + 180; + var xf = MathUtils.RandRangeInt(20, 60); + var yf = MathUtils.RandRangeInt(60, 120); + var rotate = MathUtils.RandRangeInt(-720, 720); + var sprite = Attribute.ShellPack.Instance(); + temp.InitThrow(new Vector2(5, 10), startPos, startHeight, direction, xf, yf, rotate, sprite, sprite); + RoomManager.Current.SortRoot.AddChild(temp); + //创建抖动 + MainCamera.Main.ProssesDirectionalShake(Vector2.Right.Rotated(GlobalRotation) * 1.5f); + } + + protected override void OnShootBullet() + { + //创建子弹 + CreateBullet(Attribute.BulletPack, FirePoint.GlobalPosition, (FirePoint.GlobalPosition - OriginPoint.GlobalPosition).Angle()); + } + + protected override void OnReload() + { + + } + + protected override void OnPickUp(Role master) + { + + } + + protected override void OnThrowOut() + { + + } + + protected override void OnActive() + { + + } + + protected override void OnConceal() + { + + } + +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/gun/ThrowGun.cs b/DungeonShooting_Godot/src/weapon/gun/ThrowGun.cs new file mode 100644 index 0000000..1b8b071 --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/gun/ThrowGun.cs @@ -0,0 +1,38 @@ +using Godot; + +public class ThrowGun : ThrowNode +{ + + private bool fristOver = true; + + public override void _Ready() + { + base._Ready(); + ZIndex = 2; + } + protected override void OnOver() + { + if (fristOver) + { + fristOver = false; + if (Mount is Gun gun) + { + gun._FallToGround(); + } + } + //如果落地高度不够低, 再抛一次 + if (StartYSpeed > 1) + { + InitThrow(Size, GlobalPosition, 0, Direction, XSpeed * 0.8f, StartYSpeed * 0.5f, RotateSpeed * 0.5f, null); + } + else + { + GetParent().RemoveChild(this); + RoomManager.Current.ObjectRoot.AddChild(this); + } + } + protected override void OnMaxHeight(float height) + { + ZIndex = 0; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/weapon/shell/ThrowShell.cs b/DungeonShooting_Godot/src/weapon/shell/ThrowShell.cs new file mode 100644 index 0000000..26931b7 --- /dev/null +++ b/DungeonShooting_Godot/src/weapon/shell/ThrowShell.cs @@ -0,0 +1,43 @@ +using Godot; + +/// +/// 弹壳 +/// +public class ThrowShell : ThrowNode +{ + + public override void _Ready() + { + base._Ready(); + ZIndex = 2; + } + + protected override void OnOver() + { + //如果落地高度不够低, 再抛一次 + if (StartYSpeed > 1) + { + InitThrow(Size, GlobalPosition, 0, Direction, XSpeed * 0.8f, StartYSpeed * 0.5f, RotateSpeed * 0.5f, null); + } + else + { + GetParent().RemoveChild(this); + RoomManager.Current.ObjectRoot.AddChild(this); + //等待被销毁 + AwaitDestroy(); + } + } + + private async void AwaitDestroy() + { + CollisionShape.Disabled = true; + //60秒后销毁 + await ToSignal(GetTree().CreateTimer(60), "timeout"); + QueueFree(); + } + + protected override void OnMaxHeight(float height) + { + ZIndex = 0; + } +} \ No newline at end of file diff --git a/addons/vnen.tiled_importer/plugin.cfg b/addons/vnen.tiled_importer/plugin.cfg deleted file mode 100644 index e0b9ec7..0000000 --- a/addons/vnen.tiled_importer/plugin.cfg +++ /dev/null @@ -1,8 +0,0 @@ -config_version=3 -[plugin] - -name="Tiled Map Importer" -description="Importer for TileMaps and TileSets made on Tiled Map Editor" -version="2.4" -author="George Marques" -script="vnen.tiled_importer.gd" diff --git a/addons/vnen.tiled_importer/polygon_sorter.gd b/addons/vnen.tiled_importer/polygon_sorter.gd deleted file mode 100644 index d646d0b..0000000 --- a/addons/vnen.tiled_importer/polygon_sorter.gd +++ /dev/null @@ -1,67 +0,0 @@ -# The MIT License (MIT) -# -# Copyright (c) 2018 George Marques -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Sorter for polygon vertices -tool -extends Reference - -var center - -# Sort the vertices of a convex polygon to clockwise order -# Receives a PoolVector2Array and returns a new one -func sort_polygon(vertices): - vertices = Array(vertices) - - var centroid = Vector2() - var size = vertices.size() - - for i in range(0, size): - centroid += vertices[i] - - centroid /= size - - center = centroid - vertices.sort_custom(self, "is_less") - - return PoolVector2Array(vertices) - -# Sorter function, determines which of the poins should come first -func is_less(a, b): - if a.x - center.x >= 0 and b.x - center.x < 0: - return false - elif a.x - center.x < 0 and b.x - center.x >= 0: - return true - elif a.x - center.x == 0 and b.x - center.x == 0: - if a.y - center.y >= 0 or b.y - center.y >= 0: - return a.y < b.y - return a.y > b.y - - var det = (a.x - center.x) * (b.y - center.y) - (b.x - center.x) * (a.y - center.y) - if det > 0: - return true - elif det < 0: - return false - - var d1 = (a - center).length_squared() - var d2 = (b - center).length_squared() - - return d1 < d2 diff --git a/addons/vnen.tiled_importer/tiled.png b/addons/vnen.tiled_importer/tiled.png deleted file mode 100644 index 17d7d49..0000000 --- a/addons/vnen.tiled_importer/tiled.png +++ /dev/null Binary files differ diff --git a/addons/vnen.tiled_importer/tiled.png.import b/addons/vnen.tiled_importer/tiled.png.import deleted file mode 100644 index 6d82870..0000000 --- a/addons/vnen.tiled_importer/tiled.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/tiled.png-dbbabe58e4f927769540a522a2073689.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/vnen.tiled_importer/tiled.png" -dest_files=[ "res://.import/tiled.png-dbbabe58e4f927769540a522a2073689.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/addons/vnen.tiled_importer/tiled_import_plugin.gd b/addons/vnen.tiled_importer/tiled_import_plugin.gd deleted file mode 100644 index 7b45c1d..0000000 --- a/addons/vnen.tiled_importer/tiled_import_plugin.gd +++ /dev/null @@ -1,139 +0,0 @@ -# The MIT License (MIT) -# -# Copyright (c) 2018 George Marques -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -tool -extends EditorImportPlugin - -enum { PRESET_DEFAULT, PRESET_PIXEL_ART } - -const TiledMapReader = preload("tiled_map_reader.gd") - -func get_importer_name(): - return "vnen.tiled_importer" - -func get_visible_name(): - return "Scene from Tiled" - -func get_recognized_extensions(): - if ProjectSettings.get_setting("tiled_importer/enable_json_format"): - return ["json", "tmx"] - else: - return ["tmx"] - -func get_save_extension(): - return "scn" - -func get_priority(): - return 1 - -func get_import_order(): - return 101 - -func get_resource_type(): - return "PackedScene" - -func get_preset_count(): - return 2 - -func get_preset_name(preset): - match preset: - PRESET_DEFAULT: return "Default" - PRESET_PIXEL_ART: return "Pixel Art" - -func get_import_options(preset): - return [ - { - "name": "custom_properties", - "default_value": true - }, - { - "name": "tile_metadata", - "default_value": false - }, - { - "name": "uv_clip", - "default_value": true - }, - { - "name": "image_flags", - "default_value": 0 if preset == PRESET_PIXEL_ART else Texture.FLAGS_DEFAULT, - "property_hint": PROPERTY_HINT_FLAGS, - "hint_string": "Mipmaps,Repeat,Filter,Anisotropic,sRGB,Mirrored Repeat" - }, - { - "name": "collision_layer", - "default_value": 1, - "property_hint": PROPERTY_HINT_LAYERS_2D_PHYSICS - }, - { - "name": "embed_internal_images", - "default_value": true if preset == PRESET_PIXEL_ART else false - }, - { - "name": "save_tiled_properties", - "default_value": false - }, - { - "name": "add_background", - "default_value": true - }, - { - "name": "post_import_script", - "default_value": "", - "property_hint": PROPERTY_HINT_FILE, - "hint_string": "*.gd;GDScript" - } - ] - -func get_option_visibility(option, options): - return true - -func import(source_file, save_path, options, r_platform_variants, r_gen_files): - var map_reader = TiledMapReader.new() - - var scene = map_reader.build(source_file, options) - - if typeof(scene) != TYPE_OBJECT: - # Error happened - return scene - - # Post imports script - if not options.post_import_script.empty(): - var script = load(options.post_import_script) - if not script or not script is GDScript: - printerr("Post import script is not a GDScript.") - return ERR_INVALID_PARAMETER - - script = script.new() - if not script.has_method("post_import"): - printerr("Post import script does not have a 'post_import' method.") - return ERR_INVALID_PARAMETER - - scene = script.post_import(scene) - - if not scene or not scene is Node2D: - printerr("Invalid scene returned from post import script.") - return ERR_INVALID_DATA - - var packed_scene = PackedScene.new() - packed_scene.pack(scene) - return ResourceSaver.save("%s.%s" % [save_path, get_save_extension()], packed_scene) diff --git a/addons/vnen.tiled_importer/tiled_map_reader.gd b/addons/vnen.tiled_importer/tiled_map_reader.gd deleted file mode 100644 index c2cd968..0000000 --- a/addons/vnen.tiled_importer/tiled_map_reader.gd +++ /dev/null @@ -1,1405 +0,0 @@ -# The MIT License (MIT) -# -# Copyright (c) 2018 George Marques -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -tool -extends Reference - -# Constants for tile flipping -# http://doc.mapeditor.org/reference/tmx-map-format/#tile-flipping -const FLIPPED_HORIZONTALLY_FLAG = 0x80000000 -const FLIPPED_VERTICALLY_FLAG = 0x40000000 -const FLIPPED_DIAGONALLY_FLAG = 0x20000000 - -# XML Format reader -const TiledXMLToDictionary = preload("tiled_xml_to_dict.gd") - -# Polygon vertices sorter -const PolygonSorter = preload("polygon_sorter.gd") - -# Prefix for error messages, make easier to identify the source -const error_prefix = "Tiled Importer: " - -# Properties to save the value in the metadata -const whitelist_properties = [ - "backgroundcolor", - "compression", - "draworder", - "gid", - "height", - "imageheight", - "imagewidth", - "infinite", - "margin", - "name", - "offsetx", - "offsety", - "orientation", - "probability", - "spacing", - "tilecount", - "tiledversion", - "tileheight", - "tilewidth", - "type", - "version", - "visible", - "width", - "custom_material" -] - -# All templates loaded, can be looked up by path name -var _loaded_templates = {} -# Maps each tileset file used by the map to it's first gid; Used for template parsing -var _tileset_path_to_first_gid = {} - -func reset_global_memebers(): - _loaded_templates = {} - _tileset_path_to_first_gid = {} - -# Main function -# Reads a source file and gives back a scene -func build(source_path, options): - reset_global_memebers() - var map = read_file(source_path) - if typeof(map) == TYPE_INT: - return map - if typeof(map) != TYPE_DICTIONARY: - return ERR_INVALID_DATA - - var err = validate_map(map) - if err != OK: - return err - - var cell_size = Vector2(int(map.tilewidth), int(map.tileheight)) - var map_mode = TileMap.MODE_SQUARE - var map_offset = TileMap.HALF_OFFSET_DISABLED - var map_pos_offset = Vector2() - var map_background = Color() - var cell_offset = Vector2() - if "orientation" in map: - match map.orientation: - "isometric": - map_mode = TileMap.MODE_ISOMETRIC - "staggered": - map_pos_offset.y -= cell_size.y / 2 - match map.staggeraxis: - "x": - map_offset = TileMap.HALF_OFFSET_Y - cell_size.x /= 2.0 - if map.staggerindex == "even": - cell_offset.x += 1 - map_pos_offset.x -= cell_size.x - "y": - map_offset = TileMap.HALF_OFFSET_X - cell_size.y /= 2.0 - if map.staggerindex == "even": - cell_offset.y += 1 - map_pos_offset.y -= cell_size.y - "hexagonal": - # Godot maps are always odd and don't have an "even" setting. To - # imitate even staggering we simply start one row/column late and - # adjust the position of the whole map. - match map.staggeraxis: - "x": - map_offset = TileMap.HALF_OFFSET_Y - cell_size.x = int((cell_size.x + map.hexsidelength) / 2) - if map.staggerindex == "even": - cell_offset.x += 1 - map_pos_offset.x -= cell_size.x - "y": - map_offset = TileMap.HALF_OFFSET_X - cell_size.y = int((cell_size.y + map.hexsidelength) / 2) - if map.staggerindex == "even": - cell_offset.y += 1 - map_pos_offset.y -= cell_size.y - - var tileset = build_tileset_for_scene(map.tilesets, source_path, options) - if typeof(tileset) != TYPE_OBJECT: - # Error happened - return tileset - - var root = Node2D.new() - root.set_name(source_path.get_file().get_basename()) - if options.save_tiled_properties: - set_tiled_properties_as_meta(root, map) - if options.custom_properties: - set_custom_properties(root, map) - - var map_data = { - "options": options, - "map_mode": map_mode, - "map_offset": map_offset, - "map_pos_offset": map_pos_offset, - "map_background": map_background, - "cell_size": cell_size, - "cell_offset": cell_offset, - "tileset": tileset, - "source_path": source_path, - "infinite": bool(map.infinite) if "infinite" in map else false - } - - for layer in map.layers: - err = make_layer(layer, root, root, map_data) - if err != OK: - return err - - if options.add_background and "backgroundcolor" in map: - var bg_color = str(map.backgroundcolor) - if (!bg_color.is_valid_html_color()): - print_error("Invalid background color format: " + bg_color) - return root - - map_background = Color(bg_color) - - var viewport_size = Vector2(ProjectSettings.get("display/window/size/width"), ProjectSettings.get("display/window/size/height")) - var parbg = ParallaxBackground.new() - var parlayer = ParallaxLayer.new() - var colorizer = ColorRect.new() - - parbg.scroll_ignore_camera_zoom = true - parlayer.motion_mirroring = viewport_size - colorizer.color = map_background - colorizer.rect_size = viewport_size - colorizer.rect_min_size = viewport_size - - parbg.name = "Background" - root.add_child(parbg) - parbg.owner = root - parlayer.name = "BackgroundLayer" - parbg.add_child(parlayer) - parlayer.owner = root - colorizer.name = "BackgroundColor" - parlayer.add_child(colorizer) - colorizer.owner = root - - return root - -# Creates a layer node from the data -# Returns an error code -func make_layer(layer, parent, root, data): - var err = validate_layer(layer) - if err != OK: - return err - - # Main map data - var map_mode = data.map_mode - var map_offset = data.map_offset - var map_pos_offset = data.map_pos_offset - var cell_size = data.cell_size - var cell_offset = data.cell_offset - var options = data.options - var tileset = data.tileset - var source_path = data.source_path - var infinite = data.infinite - - var opacity = float(layer.opacity) if "opacity" in layer else 1.0 - var visible = bool(layer.visible) if "visible" in layer else true - - var z_index = 0 - - if "properties" in layer and "z_index" in layer.properties: - z_index = layer.properties.z_index - - if layer.type == "tilelayer": - var layer_size = Vector2(int(layer.width), int(layer.height)) - var tilemap = TileMap.new() - tilemap.set_name(str(layer.name)) - tilemap.cell_size = cell_size - tilemap.modulate = Color(1.0, 1.0, 1.0, opacity); - tilemap.visible = visible - tilemap.mode = map_mode - tilemap.cell_half_offset = map_offset - tilemap.format = 1 - tilemap.cell_clip_uv = options.uv_clip - tilemap.cell_y_sort = true - tilemap.collision_layer = options.collision_layer - tilemap.z_index = z_index - - var offset = Vector2() - if "offsetx" in layer: - offset.x = int(layer.offsetx) - if "offsety" in layer: - offset.y = int(layer.offsety) - - tilemap.position = offset + map_pos_offset - tilemap.tile_set = tileset - - var chunks = [] - - if infinite: - chunks = layer.chunks - else: - chunks = [layer] - - for chunk in chunks: - err = validate_chunk(chunk) - if err != OK: - return err - - var chunk_data = chunk.data - - if "encoding" in layer and layer.encoding == "base64": - if "compression" in layer: - chunk_data = decompress_layer_data(chunk.data, layer.compression, layer_size) - if typeof(chunk_data) == TYPE_INT: - # Error happened - return chunk_data - else: - chunk_data = read_base64_layer_data(chunk.data) - - var count = 0 - for tile_id in chunk_data: - var int_id = int(str(tile_id)) & 0xFFFFFFFF - - if int_id == 0: - count += 1 - continue - - var flipped_h = bool(int_id & FLIPPED_HORIZONTALLY_FLAG) - var flipped_v = bool(int_id & FLIPPED_VERTICALLY_FLAG) - var flipped_d = bool(int_id & FLIPPED_DIAGONALLY_FLAG) - - var gid = int_id & ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG) - - var cell_x = cell_offset.x + chunk.x + (count % int(chunk.width)) - var cell_y = cell_offset.y + chunk.y + int(count / chunk.width) - tilemap.set_cell(cell_x, cell_y, gid, flipped_h, flipped_v, flipped_d) - - count += 1 - - if options.save_tiled_properties: - set_tiled_properties_as_meta(tilemap, layer) - if options.custom_properties: - set_custom_properties(tilemap, layer) - - tilemap.set("editor/display_folded", true) - parent.add_child(tilemap) - tilemap.set_owner(root) - elif layer.type == "imagelayer": - var image = null - if layer.image != "": - image = load_image(layer.image, source_path, options) - if typeof(image) != TYPE_OBJECT: - # Error happened - return image - - var pos = Vector2() - var offset = Vector2() - - if "x" in layer: - pos.x = float(layer.x) - if "y" in layer: - pos.y = float(layer.y) - if "offsetx" in layer: - offset.x = float(layer.offsetx) - if "offsety" in layer: - offset.y = float(layer.offsety) - - var sprite = Sprite.new() - sprite.set_name(str(layer.name)) - sprite.centered = false - sprite.texture = image - sprite.visible = visible - sprite.modulate = Color(1.0, 1.0, 1.0, opacity) - sprite.z_index = z_index - if options.save_tiled_properties: - set_tiled_properties_as_meta(sprite, layer) - if options.custom_properties: - set_custom_properties(sprite, layer) - - sprite.set("editor/display_folded", true) - parent.add_child(sprite) - sprite.position = pos + offset - sprite.set_owner(root) - elif layer.type == "objectgroup": - var object_layer = Node2D.new() - if options.save_tiled_properties: - set_tiled_properties_as_meta(object_layer, layer) - if options.custom_properties: - set_custom_properties(object_layer, layer) - object_layer.modulate = Color(1.0, 1.0, 1.0, opacity) - object_layer.visible = visible - object_layer.z_index = z_index - object_layer.set("editor/display_folded", true) - parent.add_child(object_layer) - object_layer.set_owner(root) - if "name" in layer and not str(layer.name).empty(): - object_layer.set_name(str(layer.name)) - - if not "draworder" in layer or layer.draworder == "topdown": - layer.objects.sort_custom(self, "object_sorter") - - for object in layer.objects: - if "template" in object: - var template_file = object["template"] - var template_data_immutable = get_template(remove_filename_from_path(data["source_path"]) + template_file) - if typeof(template_data_immutable) != TYPE_DICTIONARY: - # Error happened - print("Error getting template for object with id " + str(data["id"])) - continue - - # Overwrite template data with current object data - apply_template(object, template_data_immutable) - - set_default_obj_params(object) - - if "point" in object and object.point: - var point = Position2D.new() - if not "x" in object or not "y" in object: - print_error("Missing coordinates for point in object layer.") - continue - point.position = Vector2(float(object.x), float(object.y)) - point.visible = bool(object.visible) if "visible" in object else true - object_layer.add_child(point) - point.set_owner(root) - if "name" in object and not str(object.name).empty(): - point.set_name(str(object.name)) - elif "id" in object and not str(object.id).empty(): - point.set_name(str(object.id)) - if options.save_tiled_properties: - set_tiled_properties_as_meta(point, object) - if options.custom_properties: - set_custom_properties(point, object) - - elif not "gid" in object: - # Not a tile object - if "type" in object and object.type == "navigation": - # Can't make navigation objects right now - print_error("Navigation polygons aren't supported in an object layer.") - continue # Non-fatal error - var shape = shape_from_object(object) - - if typeof(shape) != TYPE_OBJECT: - # Error happened - return shape - - if "type" in object and object.type == "occluder": - var occluder = LightOccluder2D.new() - var pos = Vector2() - var rot = 0 - - if "x" in object: - pos.x = float(object.x) - if "y" in object: - pos.y = float(object.y) - if "rotation" in object: - rot = float(object.rotation) - - occluder.visible = bool(object.visible) if "visible" in object else true - occluder.position = pos - occluder.rotation_degrees = rot - occluder.occluder = shape - if "name" in object and not str(object.name).empty(): - occluder.set_name(str(object.name)) - elif "id" in object and not str(object.id).empty(): - occluder.set_name(str(object.id)) - - if options.save_tiled_properties: - set_tiled_properties_as_meta(occluder, object) - if options.custom_properties: - set_custom_properties(occluder, object) - - object_layer.add_child(occluder) - occluder.set_owner(root) - - else: - var body = Area2D.new() if object.type == "area" else StaticBody2D.new() - - var offset = Vector2() - var collision - var pos = Vector2() - var rot = 0 - - if not ("polygon" in object or "polyline" in object): - # Regular shape - collision = CollisionShape2D.new() - collision.shape = shape - if shape is RectangleShape2D: - offset = shape.extents - elif shape is CircleShape2D: - offset = Vector2(shape.radius, shape.radius) - elif shape is CapsuleShape2D: - offset = Vector2(shape.radius, shape.height) - if shape.radius > shape.height: - var temp = shape.radius - shape.radius = shape.height - shape.height = temp - collision.rotation_degrees = 90 - shape.height *= 2 - collision.position = offset - else: - collision = CollisionPolygon2D.new() - var points = null - if shape is ConcavePolygonShape2D: - points = [] - var segments = shape.segments - for i in range(0, segments.size()): - if i % 2 != 0: - continue - points.push_back(segments[i]) - collision.build_mode = CollisionPolygon2D.BUILD_SEGMENTS - else: - points = shape.points - collision.build_mode = CollisionPolygon2D.BUILD_SOLIDS - collision.polygon = points - - collision.one_way_collision = object.type == "one-way" - - if "x" in object: - pos.x = float(object.x) - if "y" in object: - pos.y = float(object.y) - if "rotation" in object: - rot = float(object.rotation) - - body.set("editor/display_folded", true) - object_layer.add_child(body) - body.set_owner(root) - body.add_child(collision) - collision.set_owner(root) - - if options.save_tiled_properties: - set_tiled_properties_as_meta(body, object) - if options.custom_properties: - set_custom_properties(body, object) - - if "name" in object and not str(object.name).empty(): - body.set_name(str(object.name)) - elif "id" in object and not str(object.id).empty(): - body.set_name(str(object.id)) - body.visible = bool(object.visible) if "visible" in object else true - body.position = pos - body.rotation_degrees = rot - - else: # "gid" in object - var tile_raw_id = int(str(object.gid)) & 0xFFFFFFFF - var tile_id = tile_raw_id & ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG) - - var is_tile_object = tileset.tile_get_region(tile_id).get_area() == 0 - var collisions = tileset.tile_get_shape_count(tile_id) - var has_collisions = collisions > 0 && object.has("type") && object.type != "sprite" - var sprite = Sprite.new() - var pos = Vector2() - var rot = 0 - var scale = Vector2(1, 1) - sprite.texture = tileset.tile_get_texture(tile_id) - var texture_size = sprite.texture.get_size() if sprite.texture != null else Vector2() - - if not is_tile_object: - sprite.region_enabled = true - sprite.region_rect = tileset.tile_get_region(tile_id) - texture_size = tileset.tile_get_region(tile_id).size - - sprite.flip_h = bool(tile_raw_id & FLIPPED_HORIZONTALLY_FLAG) - sprite.flip_v = bool(tile_raw_id & FLIPPED_VERTICALLY_FLAG) - - if "x" in object: - pos.x = float(object.x) - if "y" in object: - pos.y = float(object.y) - if "rotation" in object: - rot = float(object.rotation) - if texture_size != Vector2(): - if "width" in object and float(object.width) != texture_size.x: - scale.x = float(object.width) / texture_size.x - if "height" in object and float(object.height) != texture_size.y: - scale.y = float(object.height) / texture_size.y - - var obj_root = sprite - if has_collisions: - match object.type: - "area": obj_root = Area2D.new() - "kinematic": obj_root = KinematicBody2D.new() - "rigid": obj_root = RigidBody2D.new() - _: obj_root = StaticBody2D.new() - - object_layer.add_child(obj_root) - obj_root.owner = root - - obj_root.add_child(sprite) - sprite.owner = root - - var shapes = tileset.tile_get_shapes(tile_id) - for s in shapes: - var collision_node = CollisionShape2D.new() - collision_node.shape = s.shape - - collision_node.transform = s.shape_transform - if sprite.flip_h: - collision_node.position.x *= -1 - collision_node.position.x -= cell_size.x - collision_node.scale.x *= -1 - if sprite.flip_v: - collision_node.scale.y *= -1 - collision_node.position.y *= -1 - collision_node.position.y -= cell_size.y - obj_root.add_child(collision_node) - collision_node.owner = root - - if "name" in object and not str(object.name).empty(): - obj_root.set_name(str(object.name)) - elif "id" in object and not str(object.id).empty(): - obj_root.set_name(str(object.id)) - - obj_root.position = pos - obj_root.rotation_degrees = rot - obj_root.visible = bool(object.visible) if "visible" in object else true - obj_root.scale = scale - # Translate from Tiled bottom-left position to Godot top-left - sprite.centered = false - sprite.region_filter_clip = options.uv_clip - sprite.offset = Vector2(0, -texture_size.y) - - if not has_collisions: - object_layer.add_child(sprite) - sprite.set_owner(root) - - if options.save_tiled_properties: - set_tiled_properties_as_meta(obj_root, object) - if options.custom_properties: - if options.tile_metadata: - var tile_meta = tileset.get_meta("tile_meta") - if typeof(tile_meta) == TYPE_DICTIONARY and tile_id in tile_meta: - for prop in tile_meta[tile_id]: - obj_root.set_meta(prop, tile_meta[tile_id][prop]) - set_custom_properties(obj_root, object) - - elif layer.type == "group": - var group = Node2D.new() - var pos = Vector2() - if "x" in layer: - pos.x = float(layer.x) - if "y" in layer: - pos.y = float(layer.y) - group.modulate = Color(1.0, 1.0, 1.0, opacity) - group.visible = visible - group.position = pos - group.z_index = z_index - - if options.save_tiled_properties: - set_tiled_properties_as_meta(group, layer) - if options.custom_properties: - set_custom_properties(group, layer) - - if "name" in layer and not str(layer.name).empty(): - group.set_name(str(layer.name)) - - group.set("editor/display_folded", true) - parent.add_child(group) - group.set_owner(root) - - for sub_layer in layer.layers: - make_layer(sub_layer, group, root, data) - - else: - print_error("Unknown layer type ('%s') in '%s'" % [str(layer.type), str(layer.name) if "name" in layer else "[unnamed layer]"]) - return ERR_INVALID_DATA - - return OK - -func set_default_obj_params(object): - # Set default values for object - for attr in ["width", "height", "rotation", "x", "y"]: - if not attr in object: - object[attr] = 0 - if not "type" in object: - object.type = "" - if not "visible" in object: - object.visible = true - -var flags - -# Makes a tileset from a array of tilesets data -# Since Godot supports only one TileSet per TileMap, all tilesets from Tiled are combined -func build_tileset_for_scene(tilesets, source_path, options): - var result = TileSet.new() - var err = ERR_INVALID_DATA - var tile_meta = {} - - for tileset in tilesets: - var ts = tileset - var ts_source_path = source_path - if "source" in ts: - if not "firstgid" in tileset or not str(tileset.firstgid).is_valid_integer(): - print_error("Missing or invalid firstgid tileset property.") - return ERR_INVALID_DATA - - ts_source_path = source_path.get_base_dir().plus_file(ts.source) - # Used later for templates - _tileset_path_to_first_gid[ts_source_path] = tileset.firstgid - - if ts.source.get_extension().to_lower() == "tsx": - var tsx_reader = TiledXMLToDictionary.new() - ts = tsx_reader.read_tsx(ts_source_path) - if typeof(ts) != TYPE_DICTIONARY: - # Error happened - return ts - else: # JSON Tileset - var f = File.new() - err = f.open(ts_source_path, File.READ) - if err != OK: - print_error("Error opening tileset '%s'." % [ts.source]) - return err - - var json_res = JSON.parse(f.get_as_text()) - if json_res.error != OK: - print_error("Error parsing tileset '%s' JSON: %s" % [ts.source, json_res.error_string]) - return ERR_INVALID_DATA - - ts = json_res.result - if typeof(ts) != TYPE_DICTIONARY: - print_error("Tileset '%s' is not a dictionary." % [ts.source]) - return ERR_INVALID_DATA - - ts.firstgid = tileset.firstgid - - err = validate_tileset(ts) - if err != OK: - return err - - var has_global_image = "image" in ts - - var spacing = int(ts.spacing) if "spacing" in ts and str(ts.spacing).is_valid_integer() else 0 - var margin = int(ts.margin) if "margin" in ts and str(ts.margin).is_valid_integer() else 0 - var firstgid = int(ts.firstgid) - var columns = int(ts.columns) if "columns" in ts and str(ts.columns).is_valid_integer() else -1 - - var image = null - var imagesize = Vector2() - - if has_global_image: - image = load_image(ts.image, ts_source_path, options) - if typeof(image) != TYPE_OBJECT: - # Error happened - return image - imagesize = Vector2(int(ts.imagewidth), int(ts.imageheight)) - - var tilesize = Vector2(int(ts.tilewidth), int(ts.tileheight)) - - var tilecount - if not "tilecount" in ts: - tilecount = make_tilecount(tilesize, imagesize, margin, spacing) - else: - tilecount = int(ts.tilecount) - - - var gid = firstgid - - var x = margin - var y = margin - - var i = 0 - var column = 0 - - - # Needed to look up textures for animations - var tileRegions = [] - while i < tilecount: - var tilepos = Vector2(x, y) - var region = Rect2(tilepos, tilesize) - - tileRegions.push_back(region) - - column += 1 - i += 1 - - x += int(tilesize.x) + spacing - if (columns > 0 and column >= columns) or x >= int(imagesize.x) - margin or (x + int(tilesize.x)) > int(imagesize.x): - x = margin - y += int(tilesize.y) + spacing - column = 0 - - i = 0 - - while i < tilecount: - var region = tileRegions[i] - - var rel_id = str(gid - firstgid) - - result.create_tile(gid) - - if has_global_image: - if rel_id in ts.tiles && "animation" in ts.tiles[rel_id]: - var animated_tex = AnimatedTexture.new() - animated_tex.frames = ts.tiles[rel_id].animation.size() - animated_tex.fps = 0 - var c = 0 - # Animated texture wants us to have seperate textures for each frame - # so we have to pull them out of the tileset - var tilesetTexture = image.get_data() - for g in ts.tiles[rel_id].animation: - var frameTex = tilesetTexture.get_rect(tileRegions[(int(g.tileid))]) - var newTex = ImageTexture.new() - newTex.create_from_image(frameTex, flags) - animated_tex.set_frame_texture(c, newTex) - animated_tex.set_frame_delay(c, float(g.duration) * 0.001) - c += 1 - result.tile_set_texture(gid, animated_tex) - result.tile_set_region(gid, Rect2(Vector2(0, 0), tilesize)) - else: - result.tile_set_texture(gid, image) - result.tile_set_region(gid, region) - elif not rel_id in ts.tiles: - gid += 1 - continue - else: - if rel_id in ts.tiles && "animation" in ts.tiles[rel_id]: - var animated_tex = AnimatedTexture.new() - animated_tex.frames = ts.tiles[rel_id].animation.size() - animated_tex.fps = 0 - var c = 0 - #untested - var image_path = ts.tiles[rel_id].image - for g in ts.tiles[rel_id].animation: - animated_tex.set_frame_texture(c, load_image(image_path, ts_source_path, options)) - animated_tex.set_frame_delay(c, float(g.duration) * 0.001) - c += 1 - result.tile_set_texture(gid, animated_tex) - result.tile_set_region(gid, Rect2(Vector2(0, 0), tilesize)) - else: - var image_path = ts.tiles[rel_id].image - image = load_image(image_path, ts_source_path, options) - if typeof(image) != TYPE_OBJECT: - # Error happened - return image - result.tile_set_texture(gid, image) - - if "tiles" in ts and rel_id in ts.tiles and "objectgroup" in ts.tiles[rel_id] \ - and "objects" in ts.tiles[rel_id].objectgroup: - for object in ts.tiles[rel_id].objectgroup.objects: - - var shape = shape_from_object(object) - - if typeof(shape) != TYPE_OBJECT: - # Error happened - return shape - - var offset = Vector2(float(object.x), float(object.y)) - if "width" in object and "height" in object: - offset += Vector2(float(object.width) / 2, float(object.height) / 2) - - if object.type == "navigation": - result.tile_set_navigation_polygon(gid, shape) - result.tile_set_navigation_polygon_offset(gid, offset) - elif object.type == "occluder": - result.tile_set_light_occluder(gid, shape) - result.tile_set_occluder_offset(gid, offset) - else: - result.tile_add_shape(gid, shape, Transform2D(0, offset), object.type == "one-way") - - if "properties" in ts and "custom_material" in ts.properties: - result.tile_set_material(gid, load(ts.properties.custom_material)) - - if options.custom_properties and options.tile_metadata and "tileproperties" in ts \ - and "tilepropertytypes" in ts and rel_id in ts.tileproperties and rel_id in ts.tilepropertytypes: - tile_meta[gid] = get_custom_properties(ts.tileproperties[rel_id], ts.tilepropertytypes[rel_id]) - if options.save_tiled_properties and rel_id in ts.tiles: - for property in whitelist_properties: - if property in ts.tiles[rel_id]: - if not gid in tile_meta: tile_meta[gid] = {} - tile_meta[gid][property] = ts.tiles[rel_id][property] - - # If tile has a custom property called 'name', set the tile's name - if property == "name": - result.tile_set_name(gid, ts.tiles[rel_id].properties.name) - - - gid += 1 - i += 1 - - if str(ts.name) != "": - result.resource_name = str(ts.name) - - if options.save_tiled_properties: - set_tiled_properties_as_meta(result, ts) - if options.custom_properties: - if "properties" in ts and "propertytypes" in ts: - set_custom_properties(result, ts) - - if options.custom_properties and options.tile_metadata: - result.set_meta("tile_meta", tile_meta) - - return result - -# Makes a standalone TileSet. Useful for importing TileSets from Tiled -# Returns an error code if fails -func build_tileset(source_path, options): - var set = read_tileset_file(source_path) - if typeof(set) == TYPE_INT: - return set - if typeof(set) != TYPE_DICTIONARY: - return ERR_INVALID_DATA - - # Just to validate and build correctly using the existing builder - set["firstgid"] = 0 - - return build_tileset_for_scene([set], source_path, options) - -# Loads an image from a given path -# Returns a Texture -func load_image(rel_path, source_path, options): - flags = options.image_flags if "image_flags" in options else Texture.FLAGS_DEFAULT - var embed = options.embed_internal_images if "embed_internal_images" in options else false - - var ext = rel_path.get_extension().to_lower() - if ext != "png" and ext != "jpg": - print_error("Unsupported image format: %s. Use PNG or JPG instead." % [ext]) - return ERR_FILE_UNRECOGNIZED - - var total_path = rel_path - if rel_path.is_rel_path(): - total_path = ProjectSettings.globalize_path(source_path.get_base_dir()).plus_file(rel_path) - total_path = ProjectSettings.localize_path(total_path) - - var dir = Directory.new() - if not dir.file_exists(total_path): - print_error("Image not found: %s" % [total_path]) - return ERR_FILE_NOT_FOUND - - if not total_path.begins_with("res://"): - # External images need to be embedded - embed = true - - var image = null - if embed: - var img = Image.new() - img.load(total_path) - image = ImageTexture.new() - image.create_from_image(img, flags) - else: - image = ResourceLoader.load(total_path, "ImageTexture") - if image != null: - image.set_flags(flags) - - return image - -# Reads a file and returns its contents as a dictionary -# Returns an error code if fails -func read_file(path): - if path.get_extension().to_lower() == "tmx": - var tmx_to_dict = TiledXMLToDictionary.new() - var data = tmx_to_dict.read_tmx(path) - if typeof(data) != TYPE_DICTIONARY: - # Error happened - print_error("Error parsing map file '%s'." % [path]) - # Return error or result - return data - - # Not TMX, must be JSON - var file = File.new() - var err = file.open(path, File.READ) - if err != OK: - return err - - var content = JSON.parse(file.get_as_text()) - if content.error != OK: - print_error("Error parsing JSON: " + content.error_string) - return content.error - - return content.result - -# Reads a tileset file and return its contents as a dictionary -# Returns an error code if fails -func read_tileset_file(path): - if path.get_extension().to_lower() == "tsx": - var tmx_to_dict = TiledXMLToDictionary.new() - var data = tmx_to_dict.read_tsx(path) - if typeof(data) != TYPE_DICTIONARY: - # Error happened - print_error("Error parsing map file '%s'." % [path]) - # Return error or result - return data - - # Not TSX, must be JSON - var file = File.new() - var err = file.open(path, File.READ) - if err != OK: - return err - - var content = JSON.parse(file.get_as_text()) - if content.error != OK: - print_error("Error parsing JSON: " + content.error_string) - return content.error - - return content.result - -# Creates a shape from an object data -# Returns a valid shape depending on the object type (collision/occluder/navigation) -func shape_from_object(object): - var shape = ERR_INVALID_DATA - set_default_obj_params(object) - - if "polygon" in object or "polyline" in object: - var vertices = PoolVector2Array() - - if "polygon" in object: - for point in object.polygon: - vertices.push_back(Vector2(float(point.x), float(point.y))) - else: - for point in object.polyline: - vertices.push_back(Vector2(float(point.x), float(point.y))) - - if object.type == "navigation": - shape = NavigationPolygon.new() - shape.vertices = vertices - shape.add_outline(vertices) - shape.make_polygons_from_outlines() - elif object.type == "occluder": - shape = OccluderPolygon2D.new() - shape.polygon = vertices - shape.closed = "polygon" in object - else: - if is_convex(vertices): - var sorter = PolygonSorter.new() - vertices = sorter.sort_polygon(vertices) - shape = ConvexPolygonShape2D.new() - shape.points = vertices - else: - shape = ConcavePolygonShape2D.new() - var segments = [vertices[0]] - for x in range(1, vertices.size()): - segments.push_back(vertices[x]) - segments.push_back(vertices[x]) - segments.push_back(vertices[0]) - shape.segments = PoolVector2Array(segments) - - elif "ellipse" in object: - if object.type == "navigation" or object.type == "occluder": - print_error("Ellipse shapes are not supported as navigation or occluder. Use polygon/polyline instead.") - return ERR_INVALID_DATA - - if not "width" in object or not "height" in object: - print_error("Missing width or height in ellipse shape.") - return ERR_INVALID_DATA - - var w = abs(float(object.width)) - var h = abs(float(object.height)) - - if w == h: - shape = CircleShape2D.new() - shape.radius = w / 2.0 - else: - # Using a capsule since it's the closest from an ellipse - shape = CapsuleShape2D.new() - shape.radius = w / 2.0 - shape.height = h / 2.0 - - else: # Rectangle - if not "width" in object or not "height" in object: - print_error("Missing width or height in rectangle shape.") - return ERR_INVALID_DATA - - var size = Vector2(float(object.width), float(object.height)) - - if object.type == "navigation" or object.type == "occluder": - # Those types only accept polygons, so make one from the rectangle - var vertices = PoolVector2Array([ - Vector2(0, 0), - Vector2(size.x, 0), - size, - Vector2(0, size.y) - ]) - if object.type == "navigation": - shape = NavigationPolygon.new() - shape.vertices = vertices - shape.add_outline(vertices) - shape.make_polygons_from_outlines() - else: - shape = OccluderPolygon2D.new() - shape.polygon = vertices - else: - shape = RectangleShape2D.new() - shape.extents = size / 2.0 - - return shape - -# Determines if the set of vertices is convex or not -# Returns a boolean -func is_convex(vertices): - var size = vertices.size() - if size <= 3: - # Less than 3 verices can't be concave - return true - - var cp = 0 - - for i in range(0, size + 2): - var p1 = vertices[(i + 0) % size] - var p2 = vertices[(i + 1) % size] - var p3 = vertices[(i + 2) % size] - - var prev_cp = cp - cp = (p2.x - p1.x) * (p3.y - p2.y) - (p2.y - p1.y) * (p3.x - p2.x) - if i > 0 and sign(cp) != sign(prev_cp): - return false - - return true - -# Decompress the data of the layer -# Compression argument is a string, either "gzip" or "zlib" -func decompress_layer_data(layer_data, compression, map_size): - if compression != "gzip" and compression != "zlib": - print_error("Unrecognized compression format: %s" % [compression]) - return ERR_INVALID_DATA - - var compression_type = File.COMPRESSION_DEFLATE if compression == "zlib" else File.COMPRESSION_GZIP - var expected_size = int(map_size.x) * int(map_size.y) * 4 - var raw_data = Marshalls.base64_to_raw(layer_data).decompress(expected_size, compression_type) - - return decode_layer(raw_data) - -# Reads the layer as a base64 data -# Returns an array of ints as the decoded layer would be -func read_base64_layer_data(layer_data): - var decoded = Marshalls.base64_to_raw(layer_data) - return decode_layer(decoded) - -# Reads a PoolByteArray and returns the layer array -# Used for base64 encoded and compressed layers -func decode_layer(layer_data): - var result = [] - for i in range(0, layer_data.size(), 4): - var num = (layer_data[i]) | \ - (layer_data[i + 1] << 8) | \ - (layer_data[i + 2] << 16) | \ - (layer_data[i + 3] << 24) - result.push_back(num) - return result - -# Set the custom properties into the metadata of the object -func set_custom_properties(object, tiled_object): - if not "properties" in tiled_object or not "propertytypes" in tiled_object: - return - - var properties = get_custom_properties(tiled_object.properties, tiled_object.propertytypes) - for property in properties: - object.set_meta(property, properties[property]) - -# Get the custom properties as a dictionary -# Useful for tile meta, which is not stored directly -func get_custom_properties(properties, types): - var result = {} - - for property in properties: - var value = null - if str(types[property]).to_lower() == "bool": - value = bool(properties[property]) - elif str(types[property]).to_lower() == "int": - value = int(properties[property]) - elif str(types[property]).to_lower() == "float": - value = float(properties[property]) - elif str(types[property]).to_lower() == "color": - value = Color(properties[property]) - else: - value = str(properties[property]) - result[property] = value - return result - -# Get the available whitelisted properties from the Tiled object -# And them as metadata in the Godot object -func set_tiled_properties_as_meta(object, tiled_object): - for property in whitelist_properties: - if property in tiled_object: - object.set_meta(property, tiled_object[property]) - -# Custom function to sort objects in an object layer -# This is done to support the "topdown" draw order, which sorts by 'y' coordinate -func object_sorter(first, second): - if first.y == second.y: - return first.id < second.id - return first.y < second.y - -# Create the tilecount for the TileSet if not present. -# Based on the image and tile dimensions. -func make_tilecount(tilesize, imagesize, margin, spacing): - var horizontal_tile_size = int(tilesize.x + margin * 2 + spacing) - var vertical_tile_size = int(tilesize.y + margin * 2 + spacing) - - var horizontal_tile_count = int(imagesize.x) / horizontal_tile_size; - var vertical_tile_count = int(imagesize.y) / vertical_tile_size; - - return horizontal_tile_count * vertical_tile_count - -# Validates the map dictionary content for missing or invalid keys -# Returns an error code -func validate_map(map): - if not "type" in map or map.type != "map": - print_error("Missing or invalid type property.") - return ERR_INVALID_DATA - elif not "version" in map or int(map.version) != 1: - print_error("Missing or invalid map version.") - return ERR_INVALID_DATA - elif not "tileheight" in map or not str(map.tileheight).is_valid_integer(): - print_error("Missing or invalid tileheight property.") - return ERR_INVALID_DATA - elif not "tilewidth" in map or not str(map.tilewidth).is_valid_integer(): - print_error("Missing or invalid tilewidth property.") - return ERR_INVALID_DATA - elif not "layers" in map or typeof(map.layers) != TYPE_ARRAY: - print_error("Missing or invalid layers property.") - return ERR_INVALID_DATA - elif not "tilesets" in map or typeof(map.tilesets) != TYPE_ARRAY: - print_error("Missing or invalid tilesets property.") - return ERR_INVALID_DATA - if "orientation" in map and (map.orientation == "staggered" or map.orientation == "hexagonal"): - if not "staggeraxis" in map: - print_error("Missing stagger axis property.") - return ERR_INVALID_DATA - elif not "staggerindex" in map: - print_error("Missing stagger axis property.") - return ERR_INVALID_DATA - return OK - -# Validates the tileset dictionary content for missing or invalid keys -# Returns an error code -func validate_tileset(tileset): - if not "firstgid" in tileset or not str(tileset.firstgid).is_valid_integer(): - print_error("Missing or invalid firstgid tileset property.") - return ERR_INVALID_DATA - elif not "tilewidth" in tileset or not str(tileset.tilewidth).is_valid_integer(): - print_error("Missing or invalid tilewidth tileset property.") - return ERR_INVALID_DATA - elif not "tileheight" in tileset or not str(tileset.tileheight).is_valid_integer(): - print_error("Missing or invalid tileheight tileset property.") - return ERR_INVALID_DATA - if not "image" in tileset: - for tile in tileset.tiles: - if not "image" in tileset.tiles[tile]: - print_error("Missing or invalid image in tileset property.") - return ERR_INVALID_DATA - elif not "imagewidth" in tileset.tiles[tile] or not str(tileset.tiles[tile].imagewidth).is_valid_integer(): - print_error("Missing or invalid imagewidth tileset property 1.") - return ERR_INVALID_DATA - elif not "imageheight" in tileset.tiles[tile] or not str(tileset.tiles[tile].imageheight).is_valid_integer(): - print_error("Missing or invalid imageheight tileset property.") - return ERR_INVALID_DATA - else: - if not "imagewidth" in tileset or not str(tileset.imagewidth).is_valid_integer(): - print_error("Missing or invalid imagewidth tileset property 2.") - return ERR_INVALID_DATA - elif not "imageheight" in tileset or not str(tileset.imageheight).is_valid_integer(): - print_error("Missing or invalid imageheight tileset property.") - return ERR_INVALID_DATA - return OK - -# Validates the layer dictionary content for missing or invalid keys -# Returns an error code -func validate_layer(layer): - if not "type" in layer: - print_error("Missing or invalid type layer property.") - return ERR_INVALID_DATA - elif not "name" in layer: - print_error("Missing or invalid name layer property.") - return ERR_INVALID_DATA - match layer.type: - "tilelayer": - if not "height" in layer or not str(layer.height).is_valid_integer(): - print_error("Missing or invalid layer height property.") - return ERR_INVALID_DATA - elif not "width" in layer or not str(layer.width).is_valid_integer(): - print_error("Missing or invalid layer width property.") - return ERR_INVALID_DATA - elif not "data" in layer: - if not "chunks" in layer: - print_error("Missing data or chunks layer properties.") - return ERR_INVALID_DATA - elif typeof(layer.chunks) != TYPE_ARRAY: - print_error("Invalid chunks layer property.") - return ERR_INVALID_DATA - elif "encoding" in layer: - if layer.encoding == "base64" and typeof(layer.data) != TYPE_STRING: - print_error("Invalid data layer property.") - return ERR_INVALID_DATA - if layer.encoding != "base64" and typeof(layer.data) != TYPE_ARRAY: - print_error("Invalid data layer property.") - return ERR_INVALID_DATA - elif typeof(layer.data) != TYPE_ARRAY: - print_error("Invalid data layer property.") - return ERR_INVALID_DATA - if "compression" in layer: - if layer.compression != "gzip" and layer.compression != "zlib": - print_error("Invalid compression type.") - return ERR_INVALID_DATA - "imagelayer": - if not "image" in layer or typeof(layer.image) != TYPE_STRING: - print_error("Missing or invalid image path for layer.") - return ERR_INVALID_DATA - "objectgroup": - if not "objects" in layer or typeof(layer.objects) != TYPE_ARRAY: - print_error("Missing or invalid objects array for layer.") - return ERR_INVALID_DATA - "group": - if not "layers" in layer or typeof(layer.layers) != TYPE_ARRAY: - print_error("Missing or invalid layer array for group layer.") - return ERR_INVALID_DATA - return OK - -func validate_chunk(chunk): - if not "data" in chunk: - print_error("Missing data chunk property.") - return ERR_INVALID_DATA - elif not "height" in chunk or not str(chunk.height).is_valid_integer(): - print_error("Missing or invalid height chunk property.") - return ERR_INVALID_DATA - elif not "width" in chunk or not str(chunk.width).is_valid_integer(): - print_error("Missing or invalid width chunk property.") - return ERR_INVALID_DATA - elif not "x" in chunk or not str(chunk.x).is_valid_integer(): - print_error("Missing or invalid x chunk property.") - return ERR_INVALID_DATA - elif not "y" in chunk or not str(chunk.y).is_valid_integer(): - print_error("Missing or invalid y chunk property.") - return ERR_INVALID_DATA - return OK - -# Custom function to print error, to centralize the prefix addition -func print_error(err): - printerr(error_prefix + err) - -func get_template(path): - # If this template has not yet been loaded - if not _loaded_templates.has(path): - # IS XML - if path.get_extension().to_lower() == "tx": - var parser = XMLParser.new() - var err = parser.open(path) - if err != OK: - print_error("Error opening TX file '%s'." % [path]) - return err - var content = parse_template(parser, path) - if typeof(content) != TYPE_DICTIONARY: - # Error happened - print_error("Error parsing template map file '%s'." % [path]) - return false - _loaded_templates[path] = content - - # IS JSON - else: - var file = File.new() - var err = file.open(path, File.READ) - if err != OK: - return err - - var json_res = JSON.parse(file.get_as_text()) - if json_res.error != OK: - print_error("Error parsing JSON template map file '%s'." % [path]) - return json_res.error - - var result = json_res.result - if typeof(result) != TYPE_DICTIONARY: - print_error("Error parsing JSON template map file '%s'." % [path]) - return ERR_INVALID_DATA - - var object = result.object - if object.has("gid"): - if result.has("tileset"): - var ts_path = remove_filename_from_path(path) + result.tileset.source - var tileset_gid_increment = get_first_gid_from_tileset_path(ts_path) - 1 - object.gid += tileset_gid_increment - - _loaded_templates[path] = object - - var dict = _loaded_templates[path] - var dictCopy = {} - for k in dict: - dictCopy[k] = dict[k] - - return dictCopy - -func parse_template(parser, path): - var err = OK - # Template root node shouldn't have attributes - var data = {} - var tileset_gid_increment = 0 - data.id = 0 - - err = parser.read() - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "template": - break - - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "tileset": - var ts_path = remove_filename_from_path(path) + parser.get_named_attribute_value_safe("source") - tileset_gid_increment = get_first_gid_from_tileset_path(ts_path) - 1 - data.tileset = ts_path - - if parser.get_node_name() == "object": - var object = TiledXMLToDictionary.parse_object(parser) - for k in object: - data[k] = object[k] - - err = parser.read() - - if data.has("gid"): - data["gid"] += tileset_gid_increment - - return data - -func get_first_gid_from_tileset_path(path): - for t in _tileset_path_to_first_gid: - if is_same_file(path, t): - return _tileset_path_to_first_gid[t] - - return 0 - -static func get_filename_from_path(path): - var substrings = path.split("/", false) - var file_name = substrings[substrings.size() - 1] - return file_name - -static func remove_filename_from_path(path): - var file_name = get_filename_from_path(path) - var stringSize = path.length() - file_name.length() - var file_path = path.substr(0,stringSize) - return file_path - -static func is_same_file(path1, path2): - var file1 = File.new() - var err = file1.open(path1, File.READ) - if err != OK: - return err - - var file2 = File.new() - err = file2.open(path2, File.READ) - if err != OK: - return err - - var file1_str = file1.get_as_text() - var file2_str = file2.get_as_text() - - if file1_str == file2_str: - return true - - return false - -static func apply_template(object, template_immutable): - for k in template_immutable: - # Do not overwrite any object data - if typeof(template_immutable[k]) == TYPE_DICTIONARY: - if not object.has(k): - object[k] = {} - apply_template(object[k], template_immutable[k]) - - elif not object.has(k): - object[k] = template_immutable[k] diff --git a/addons/vnen.tiled_importer/tiled_tileset_import_plugin.gd b/addons/vnen.tiled_importer/tiled_tileset_import_plugin.gd deleted file mode 100644 index 9a86758..0000000 --- a/addons/vnen.tiled_importer/tiled_tileset_import_plugin.gd +++ /dev/null @@ -1,121 +0,0 @@ -# The MIT License (MIT) -# -# Copyright (c) 2018 George Marques -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -tool -extends EditorImportPlugin - -enum { PRESET_DEFAULT, PRESET_PIXEL_ART } - -const TiledMapReader = preload("tiled_map_reader.gd") - -func get_importer_name(): - return "vnen.tiled_tileset_importer" - -func get_visible_name(): - return "TileSet from Tiled" - -func get_recognized_extensions(): - if ProjectSettings.get_setting("tiled_importer/enable_json_format"): - return ["json", "tsx"] - else: - return ["tsx"] - -func get_save_extension(): - return "res" - -func get_import_order(): - return 100 - -func get_resource_type(): - return "TileSet" - -func get_preset_count(): - return 2 - -func get_preset_name(preset): - match preset: - PRESET_DEFAULT: return "Default" - PRESET_PIXEL_ART: return "Pixel Art" - -func get_import_options(preset): - return [ - { - "name": "custom_properties", - "default_value": true - }, - { - "name": "tile_metadata", - "default_value": false - }, - { - "name": "image_flags", - "default_value": 0 if preset == PRESET_PIXEL_ART else Texture.FLAGS_DEFAULT, - "property_hint": PROPERTY_HINT_FLAGS, - "hint_string": "Mipmaps,Repeat,Filter,Anisotropic,sRGB,Mirrored Repeat" - }, - { - "name": "embed_internal_images", - "default_value": true if preset == PRESET_PIXEL_ART else false - }, - { - "name": "save_tiled_properties", - "default_value": false - }, - { - "name": "post_import_script", - "default_value": "", - "property_hint": PROPERTY_HINT_FILE, - "hint_string": "*.gd;GDScript" - } - ] - -func get_option_visibility(option, options): - return true - -func import(source_file, save_path, options, r_platform_variants, r_gen_files): - var map_reader = TiledMapReader.new() - - var tileset = map_reader.build_tileset(source_file, options) - - if typeof(tileset) != TYPE_OBJECT: - # Error happened - return tileset - - # Post imports script - if not options.post_import_script.empty(): - var script = load(options.post_import_script) - if not script or not script is GDScript: - printerr("Post import script is not a GDScript.") - return ERR_INVALID_PARAMETER - - script = script.new() - if not script.has_method("post_import"): - printerr("Post import script does not have a 'post_import' method.") - return ERR_INVALID_PARAMETER - - tileset = script.post_import(tileset) - - if not tileset or not tileset is TileSet: - printerr("Invalid TileSet returned from post import script.") - return ERR_INVALID_DATA - - return ResourceSaver.save("%s.%s" % [save_path, get_save_extension()], tileset) diff --git a/addons/vnen.tiled_importer/tiled_xml_to_dict.gd b/addons/vnen.tiled_importer/tiled_xml_to_dict.gd deleted file mode 100644 index 9064b90..0000000 --- a/addons/vnen.tiled_importer/tiled_xml_to_dict.gd +++ /dev/null @@ -1,571 +0,0 @@ -# The MIT License (MIT) -# -# Copyright (c) 2018 George Marques -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -tool -extends Reference - -# Reads a TMX file from a path and return a Dictionary with the same structure -# as the JSON map format -# Returns an error code if failed -func read_tmx(path): - var parser = XMLParser.new() - var err = parser.open(path) - if err != OK: - printerr("Error opening TMX file '%s'." % [path]) - return err - - while parser.get_node_type() != XMLParser.NODE_ELEMENT: - err = parser.read() - if err != OK: - printerr("Error parsing TMX file '%s' (around line %d)." % [path, parser.get_current_line()]) - return err - - if parser.get_node_name().to_lower() != "map": - printerr("Error parsing TMX file '%s'. Expected 'map' element.") - return ERR_INVALID_DATA - - var data = attributes_to_dict(parser) - if not "infinite" in data: - data.infinite = false - data.type = "map" - data.tilesets = [] - data.layers = [] - - err = parser.read() - if err != OK: - printerr("Error parsing TMX file '%s' (around line %d)." % [path, parser.get_current_line()]) - return err - - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "map": - break - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "tileset": - # Empty element means external tileset - if not parser.is_empty(): - var tileset = parse_tileset(parser) - if typeof(tileset) != TYPE_DICTIONARY: - # Error happened - return err - data.tilesets.push_back(tileset) - else: - var tileset_data = attributes_to_dict(parser) - if not "source" in tileset_data: - printerr("Error parsing TMX file '%s'. Missing tileset source (around line %d)." % [path, parser.get_current_line()]) - return ERR_INVALID_DATA - data.tilesets.push_back(tileset_data) - - elif parser.get_node_name() == "layer": - var layer = parse_tile_layer(parser, data.infinite) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file '%s'. Invalid tile layer data (around line %d)." % [path, parser.get_current_line()]) - return ERR_INVALID_DATA - data.layers.push_back(layer) - - elif parser.get_node_name() == "imagelayer": - var layer = parse_image_layer(parser) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file '%s'. Invalid image layer data (around line %d)." % [path, parser.get_current_line()]) - return ERR_INVALID_DATA - data.layers.push_back(layer) - - elif parser.get_node_name() == "objectgroup": - var layer = parse_object_layer(parser) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file '%s'. Invalid object layer data (around line %d)." % [path, parser.get_current_line()]) - return ERR_INVALID_DATA - data.layers.push_back(layer) - - elif parser.get_node_name() == "group": - var layer = parse_group_layer(parser, data.infinite) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file '%s'. Invalid group layer data (around line %d)." % [path, parser.get_current_line()]) - return ERR_INVALID_DATA - data.layers.push_back(layer) - - elif parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - if typeof(prop_data) == TYPE_STRING: - return prop_data - - data.properties = prop_data.properties - data.propertytypes = prop_data.propertytypes - - err = parser.read() - - return data - -# Reads a TSX and return a tileset dictionary -# Returns an error code if fails -func read_tsx(path): - var parser = XMLParser.new() - var err = parser.open(path) - if err != OK: - printerr("Error opening TSX file '%s'." % [path]) - return err - - while parser.get_node_type() != XMLParser.NODE_ELEMENT: - err = parser.read() - if err != OK: - printerr("Error parsing TSX file '%s' (around line %d)." % [path, parser.get_current_line()]) - return err - - if parser.get_node_name().to_lower() != "tileset": - printerr("Error parsing TMX file '%s'. Expected 'map' element.") - return ERR_INVALID_DATA - - var tileset = parse_tileset(parser) - - return tileset - -# Parses a tileset element from the XML and return a dictionary -# Return an error code if fails -func parse_tileset(parser): - var err = OK - var data = attributes_to_dict(parser) - data.tiles = {} - - err = parser.read() - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "tileset": - break - - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "tile": - var attr = attributes_to_dict(parser) - var tile_data = parse_tile_data(parser) - if typeof(tile_data) != TYPE_DICTIONARY: - # Error happened - return tile_data - if "properties" in tile_data and "propertytypes" in tile_data: - if not "tileproperties" in data: - data.tileproperties = {} - data.tilepropertytypes = {} - data.tileproperties[str(attr.id)] = tile_data.properties - data.tilepropertytypes[str(attr.id)] = tile_data.propertytypes - tile_data.erase("tileproperties") - tile_data.erase("tilepropertytypes") - data.tiles[str(attr.id)] = tile_data - - elif parser.get_node_name() == "image": - var attr = attributes_to_dict(parser) - if not "source" in attr: - printerr("Error loading image tag. No source attribute found (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - data.image = attr.source - if "width" in attr: - data.imagewidth = attr.width - if "height" in attr: - data.imageheight = attr.height - - elif parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - if typeof(prop_data) != TYPE_DICTIONARY: - # Error happened - return prop_data - - data.properties = prop_data.properties - data.propertytypes = prop_data.propertytypes - - err = parser.read() - - return data - - -# Parses the data of a single tile from the XML and return a dictionary -# Returns an error code if fails -func parse_tile_data(parser): - var err = OK - var data = {} - var obj_group = {} - if parser.is_empty(): - return data - - err = parser.read() - while err == OK: - - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "tile": - return data - elif parser.get_node_name() == "objectgroup": - data.objectgroup = obj_group - - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "image": - # If there are multiple images in one tile we only use the last one. - var attr = attributes_to_dict(parser) - if not "source" in attr: - printerr("Error loading image tag. No source attribute found (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - data.image = attr.source - data.imagewidth = attr.width - data.imageheight = attr.height - - elif parser.get_node_name() == "objectgroup": - obj_group = attributes_to_dict(parser) - for attr in ["width", "height", "offsetx", "offsety"]: - if not attr in obj_group: - data[attr] = 0 - if not "opacity" in data: - data.opacity = 1 - if not "visible" in data: - data.visible = true - if parser.is_empty(): - data.objectgroup = obj_group - - elif parser.get_node_name() == "object": - if not "objects" in obj_group: - obj_group.objects = [] - var obj = parse_object(parser) - if typeof(obj) != TYPE_DICTIONARY: - # Error happened - return obj - obj_group.objects.push_back(obj) - - elif parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - data["properties"] = prop_data.properties - data["propertytypes"] = prop_data.propertytypes - - elif parser.get_node_name() == "animation": - var frame_list = [] - var err2 = parser.read() - while err2 == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "frame": - var frame = {"tileid": 0, "duration": 0} - for i in parser.get_attribute_count(): - if parser.get_attribute_name(i) == "tileid": - frame["tileid"] = parser.get_attribute_value(i) - if parser.get_attribute_name(i) == "duration": - frame["duration"] = parser.get_attribute_value(i) - frame_list.push_back(frame) - elif parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "animation": - break - err2 = parser.read() - - data["animation"] = frame_list - - err = parser.read() - - return data - -# Parses the data of a single object from the XML and return a dictionary -# Returns an error code if fails -static func parse_object(parser): - var err = OK - var data = attributes_to_dict(parser) - - if not parser.is_empty(): - err = parser.read() - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "object": - break - - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - data["properties"] = prop_data.properties - data["propertytypes"] = prop_data.propertytypes - - elif parser.get_node_name() == "point": - data.point = true - - elif parser.get_node_name() == "ellipse": - data.ellipse = true - - elif parser.get_node_name() == "polygon" or parser.get_node_name() == "polyline": - var points = [] - var points_raw = parser.get_named_attribute_value("points").split(" ", false, 0) - - for pr in points_raw: - points.push_back({ - "x": float(pr.split(",")[0]), - "y": float(pr.split(",")[1]), - }) - - data[parser.get_node_name()] = points - - err = parser.read() - - return data - - -# Parses a tile layer from the XML and return a dictionary -# Returns an error code if fails -func parse_tile_layer(parser, infinite): - var err = OK - var data = attributes_to_dict(parser) - data.type = "tilelayer" - if not "x" in data: - data.x = 0 - if not "y" in data: - data.y = 0 - if infinite: - data.chunks = [] - else: - data.data = [] - - var current_chunk = null - var encoding = "" - - if not parser.is_empty(): - err = parser.read() - - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "layer": - break - elif parser.get_node_name() == "chunk": - data.chunks.push_back(current_chunk) - current_chunk = null - - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "data": - var attr = attributes_to_dict(parser) - - if "compression" in attr: - data.compression = attr.compression - - if "encoding" in attr: - encoding = attr.encoding - if attr.encoding != "csv": - data.encoding = attr.encoding - - if not infinite: - err = parser.read() - if err != OK: - return err - - if attr.encoding != "csv": - data.data = parser.get_node_data().strip_edges() - else: - var csv = parser.get_node_data().split(",", false) - - for v in csv: - data.data.push_back(int(v.strip_edges())) - - elif parser.get_node_name() == "tile": - var gid = int(parser.get_named_attribute_value_safe("gid")) - if infinite: - current_chunk.data.push_back(gid) - else: - data.data.push_back(gid) - - elif parser.get_node_name() == "chunk": - current_chunk = attributes_to_dict(parser) - current_chunk.data = [] - if encoding != "": - err = parser.read() - if err != OK: - return err - if encoding != "csv": - current_chunk.data = parser.get_node_data().strip_edges() - else: - var csv = parser.get_node_data().split(",", false) - for v in csv: - current_chunk.data.push_back(int(v.strip_edges())) - - elif parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - if typeof(prop_data) == TYPE_STRING: - return prop_data - - data.properties = prop_data.properties - data.propertytypes = prop_data.propertytypes - - err = parser.read() - - return data - -# Parses an object layer from the XML and return a dictionary -# Returns an error code if fails -func parse_object_layer(parser): - var err = OK - var data = attributes_to_dict(parser) - data.type = "objectgroup" - data.objects = [] - - if not parser.is_empty(): - err = parser.read() - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "objectgroup": - break - if parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "object": - data.objects.push_back(parse_object(parser)) - elif parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - if typeof(prop_data) != TYPE_DICTIONARY: - # Error happened - return prop_data - data.properties = prop_data.properties - data.propertytypes = prop_data.propertytypes - - err = parser.read() - - return data - -# Parses an image layer from the XML and return a dictionary -# Returns an error code if fails -func parse_image_layer(parser): - var err = OK - var data = attributes_to_dict(parser) - data.type = "imagelayer" - data.image = "" - - if not parser.is_empty(): - err = parser.read() - - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name().to_lower() == "imagelayer": - break - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name().to_lower() == "image": - var image = attributes_to_dict(parser) - if not image.has("source"): - printerr("Missing source attribute in imagelayer (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - data.image = image.source - - elif parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - if typeof(prop_data) != TYPE_DICTIONARY: - # Error happened - return prop_data - data.properties = prop_data.properties - data.propertytypes = prop_data.propertytypes - - err = parser.read() - - return data - -# Parses a group layer from the XML and return a dictionary -# Returns an error code if fails -func parse_group_layer(parser, infinite): - var err = OK - var result = attributes_to_dict(parser) - result.type = "group" - result.layers = [] - - if not parser.is_empty(): - err = parser.read() - - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name().to_lower() == "group": - break - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "layer": - var layer = parse_tile_layer(parser, infinite) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file. Invalid tile layer data (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - result.layers.push_back(layer) - - elif parser.get_node_name() == "imagelayer": - var layer = parse_image_layer(parser) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file. Invalid image layer data (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - result.layers.push_back(layer) - - elif parser.get_node_name() == "objectgroup": - var layer = parse_object_layer(parser) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file. Invalid object layer data (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - result.layers.push_back(layer) - - elif parser.get_node_name() == "group": - var layer = parse_group_layer(parser, infinite) - if typeof(layer) != TYPE_DICTIONARY: - printerr("Error parsing TMX file. Invalid group layer data (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - result.layers.push_back(layer) - - elif parser.get_node_name() == "properties": - var prop_data = parse_properties(parser) - if typeof(prop_data) == TYPE_STRING: - return prop_data - - result.properties = prop_data.properties - result.propertytypes = prop_data.propertytypes - - err = parser.read() - return result - -# Parses properties data from the XML and return a dictionary -# Returns an error code if fails -static func parse_properties(parser): - var err = OK - var data = { - "properties": {}, - "propertytypes": {}, - } - - if not parser.is_empty(): - err = parser.read() - - while err == OK: - if parser.get_node_type() == XMLParser.NODE_ELEMENT_END: - if parser.get_node_name() == "properties": - break - elif parser.get_node_type() == XMLParser.NODE_ELEMENT: - if parser.get_node_name() == "property": - var prop_data = attributes_to_dict(parser) - if not (prop_data.has("name") and prop_data.has("value")): - printerr("Missing information in custom properties (around line %d)." % [parser.get_current_line()]) - return ERR_INVALID_DATA - - data.properties[prop_data.name] = prop_data.value - if prop_data.has("type"): - data.propertytypes[prop_data.name] = prop_data.type - else: - data.propertytypes[prop_data.name] = "string" - - err = parser.read() - - return data - -# Reads the attributes of the current element and return them as a dictionary -static func attributes_to_dict(parser): - var data = {} - for i in range(parser.get_attribute_count()): - var attr = parser.get_attribute_name(i) - var val = parser.get_attribute_value(i) - if val.is_valid_integer(): - val = int(val) - elif val.is_valid_float(): - val = float(val) - elif val == "true": - val = true - elif val == "false": - val = false - data[attr] = val - return data diff --git a/addons/vnen.tiled_importer/vnen.tiled_importer.gd b/addons/vnen.tiled_importer/vnen.tiled_importer.gd deleted file mode 100644 index 6f70315..0000000 --- a/addons/vnen.tiled_importer/vnen.tiled_importer.gd +++ /dev/null @@ -1,45 +0,0 @@ -# The MIT License (MIT) -# -# Copyright (c) 2018 George Marques -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -tool -extends EditorPlugin - -var import_plugin = null -var tileset_import_plugin = null - -func get_name(): - return "Tiled Map Importer" - -func _enter_tree(): - if not ProjectSettings.has_setting("tiled_importer/enable_json_format"): - ProjectSettings.set_setting("tiled_importer/enable_json_format", true) - - import_plugin = preload("tiled_import_plugin.gd").new() - tileset_import_plugin = preload("tiled_tileset_import_plugin.gd").new() - add_import_plugin(import_plugin) - add_import_plugin(tileset_import_plugin) - -func _exit_tree(): - remove_import_plugin(import_plugin) - remove_import_plugin(tileset_import_plugin) - import_plugin = null - tileset_import_plugin = null diff --git a/default_bus_layout.tres b/default_bus_layout.tres deleted file mode 100644 index 60797cc..0000000 --- a/default_bus_layout.tres +++ /dev/null @@ -1,15 +0,0 @@ -[gd_resource type="AudioBusLayout" format=2] - -[resource] -bus/1/name = "BGM" -bus/1/solo = false -bus/1/mute = false -bus/1/bypass_fx = false -bus/1/volume_db = 0.0 -bus/1/send = "Master" -bus/2/name = "SFX" -bus/2/solo = false -bus/2/mute = false -bus/2/bypass_fx = false -bus/2/volume_db = 0.0 -bus/2/send = "Master" diff --git a/default_env.tres b/default_env.tres deleted file mode 100644 index 20207a4..0000000 --- a/default_env.tres +++ /dev/null @@ -1,7 +0,0 @@ -[gd_resource type="Environment" load_steps=2 format=2] - -[sub_resource type="ProceduralSky" id=1] - -[resource] -background_mode = 2 -background_sky = SubResource( 1 ) diff --git a/icon.png b/icon.png deleted file mode 100644 index c98fbb6..0000000 --- a/icon.png +++ /dev/null Binary files differ diff --git a/icon.png.import b/icon.png.import deleted file mode 100644 index a4c02e6..0000000 --- a/icon.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://icon.png" -dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/prefab/effect/FirePart.tscn b/prefab/effect/FirePart.tscn deleted file mode 100644 index ecf6b1b..0000000 --- a/prefab/effect/FirePart.tscn +++ /dev/null @@ -1,24 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[sub_resource type="ParticlesMaterial" id=1] -flag_disable_z = true -spread = 60.0 -gravity = Vector3( 0, 0, 0 ) -initial_velocity = 200.0 -initial_velocity_random = 1.0 -orbit_velocity = 0.0 -orbit_velocity_random = 0.0 -linear_accel = -200.0 -linear_accel_random = 0.5 - -[node name="FirePart" type="Particles2D"] -emitting = false -amount = 10 -lifetime = 0.2 -one_shot = true -explosiveness = 1.0 -local_coords = false -process_material = SubResource( 1 ) -__meta__ = { -"_edit_vertical_guides_": [ ] -} diff --git a/prefab/effect/Hit.tscn b/prefab/effect/Hit.tscn deleted file mode 100644 index 685cc64..0000000 --- a/prefab/effect/Hit.tscn +++ /dev/null @@ -1,24 +0,0 @@ -[gd_scene load_steps=8 format=2] - -[ext_resource path="res://resource/sprite/effect/hit/hit2.png" type="Texture" id=1] -[ext_resource path="res://resource/sprite/effect/hit/hit1.png" type="Texture" id=2] -[ext_resource path="res://resource/sprite/effect/hit/hit4.png" type="Texture" id=3] -[ext_resource path="res://resource/sprite/effect/hit/hit0.png" type="Texture" id=4] -[ext_resource path="res://resource/sprite/effect/hit/hit3.png" type="Texture" id=5] -[ext_resource path="res://src/effect/Hit.cs" type="Script" id=6] - -[sub_resource type="SpriteFrames" id=1] -animations = [ { -"frames": [ ExtResource( 4 ), ExtResource( 2 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 3 ) ], -"loop": true, -"name": "Hit", -"speed": 20.0 -} ] - -[node name="Hit" type="AnimatedSprite"] -frames = SubResource( 1 ) -animation = "Hit" -offset = Vector2( 1, 11 ) -script = ExtResource( 6 ) - -[connection signal="animation_finished" from="." to="." method="_on_Hit_animation_finished"] diff --git a/prefab/role/Player.tscn b/prefab/role/Player.tscn deleted file mode 100644 index 0389b0f..0000000 --- a/prefab/role/Player.tscn +++ /dev/null @@ -1,13 +0,0 @@ -[gd_scene load_steps=4 format=2] - -[ext_resource path="res://prefab/role/Role.tscn" type="PackedScene" id=1] -[ext_resource path="res://src/role/Player.cs" type="Script" id=2] -[ext_resource path="res://prefab/weapon/Gun.tscn" type="PackedScene" id=4] - -[node name="Player" instance=ExtResource( 1 )] -collision_layer = 8 -script = ExtResource( 2 ) -GunPrefab = ExtResource( 4 ) - -[node name="AnimatedSprite" parent="." index="0"] -frame = 0 diff --git a/prefab/role/Role.tscn b/prefab/role/Role.tscn deleted file mode 100644 index cfaf82e..0000000 --- a/prefab/role/Role.tscn +++ /dev/null @@ -1,122 +0,0 @@ -[gd_scene load_steps=19 format=2] - -[ext_resource path="res://src/role/Role.cs" type="Script" id=1] -[ext_resource path="res://resource/sprite/role/role2.png" type="Texture" id=2] -[ext_resource path="res://resource/sprite/role/role1.png" type="Texture" id=3] - -[sub_resource type="AtlasTexture" id=17] -atlas = ExtResource( 3 ) -region = Rect2( 0, 24, 16, 24 ) - -[sub_resource type="AtlasTexture" id=18] -atlas = ExtResource( 3 ) -region = Rect2( 16, 24, 16, 24 ) - -[sub_resource type="AtlasTexture" id=19] -atlas = ExtResource( 3 ) -region = Rect2( 32, 24, 16, 24 ) - -[sub_resource type="AtlasTexture" id=20] -atlas = ExtResource( 3 ) -region = Rect2( 48, 24, 16, 24 ) - -[sub_resource type="AtlasTexture" id=21] -atlas = ExtResource( 3 ) -region = Rect2( 0, 48, 16, 24 ) - -[sub_resource type="AtlasTexture" id=22] -atlas = ExtResource( 3 ) -region = Rect2( 16, 48, 16, 24 ) - -[sub_resource type="AtlasTexture" id=23] -atlas = ExtResource( 3 ) -region = Rect2( 32, 48, 16, 24 ) - -[sub_resource type="AtlasTexture" id=24] -atlas = ExtResource( 3 ) -region = Rect2( 48, 48, 16, 24 ) - -[sub_resource type="AtlasTexture" id=25] -atlas = ExtResource( 3 ) -region = Rect2( 48, 48, 16, 24 ) - -[sub_resource type="AtlasTexture" id=26] -atlas = ExtResource( 3 ) -region = Rect2( 32, 48, 16, 24 ) - -[sub_resource type="AtlasTexture" id=27] -atlas = ExtResource( 3 ) -region = Rect2( 16, 48, 16, 24 ) - -[sub_resource type="AtlasTexture" id=28] -atlas = ExtResource( 3 ) -region = Rect2( 0, 48, 16, 24 ) - -[sub_resource type="SpriteFrames" id=6] -animations = [ { -"frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ) ], -"loop": true, -"name": "idle", -"speed": 7.0 -}, { -"frames": [ SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ) ], -"loop": true, -"name": "run", -"speed": 10.0 -}, { -"frames": [ SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ) ], -"loop": true, -"name": "reverseRun", -"speed": 10.0 -} ] - -[sub_resource type="RectangleShape2D" id=29] -extents = Vector2( 5, 7.5 ) - -[sub_resource type="RectangleShape2D" id=16] -extents = Vector2( 5, 4.5 ) - -[node name="Role" type="KinematicBody2D"] -collision_layer = 0 -script = ExtResource( 1 ) -Texture = ExtResource( 2 ) - -[node name="AnimatedSprite" type="AnimatedSprite" parent="."] -position = Vector2( 0, -12 ) -frames = SubResource( 6 ) -animation = "idle" -frame = 2 -playing = true - -[node name="HitArea" type="Area2D" parent="."] -visible = false - -[node name="CollisionShape2D" type="CollisionShape2D" parent="HitArea"] -visible = false -position = Vector2( 0, -7.5 ) -shape = SubResource( 29 ) - -[node name="InteractiveArea" type="Area2D" parent="."] -collision_layer = 0 -collision_mask = 4 -monitorable = false - -[node name="Collision" type="CollisionShape2D" parent="InteractiveArea"] -position = Vector2( 0, -4.5 ) -shape = SubResource( 16 ) - -[node name="Collision" type="CollisionShape2D" parent="."] -visible = false -position = Vector2( 0, -4.5 ) -shape = SubResource( 16 ) - -[node name="MountPoint" type="Position2D" parent="."] -position = Vector2( 2, -4 ) -z_index = 1 - -[node name="BackMountPoint" type="Position2D" parent="."] -position = Vector2( 0, -10 ) -z_index = -1 - -[connection signal="area_entered" from="InteractiveArea" to="." method="_OnPropsEnter"] -[connection signal="area_exited" from="InteractiveArea" to="." method="_OnPropsExit"] diff --git a/prefab/ui/Cursor.tscn b/prefab/ui/Cursor.tscn deleted file mode 100644 index ed6b36d..0000000 --- a/prefab/ui/Cursor.tscn +++ /dev/null @@ -1,31 +0,0 @@ -[gd_scene load_steps=3 format=2] - -[ext_resource path="res://src/effect/Cursor.cs" type="Script" id=2] -[ext_resource path="res://resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png" type="Texture" id=3] - -[node name="Cursor" type="Node2D"] -script = ExtResource( 2 ) - -[node name="LT" type="Sprite" parent="."] -texture = ExtResource( 3 ) -offset = Vector2( -2, -2 ) -region_enabled = true -region_rect = Rect2( 84, 36, 4, 4 ) - -[node name="LB" type="Sprite" parent="."] -texture = ExtResource( 3 ) -offset = Vector2( -2, 2 ) -region_enabled = true -region_rect = Rect2( 84, 40, 4, 4 ) - -[node name="RT" type="Sprite" parent="."] -texture = ExtResource( 3 ) -offset = Vector2( 2, -2 ) -region_enabled = true -region_rect = Rect2( 88, 36, 4, 4 ) - -[node name="RB" type="Sprite" parent="."] -texture = ExtResource( 3 ) -offset = Vector2( 2, 2 ) -region_enabled = true -region_rect = Rect2( 88, 40, 4, 4 ) diff --git a/prefab/ui/RoomUI.tscn b/prefab/ui/RoomUI.tscn deleted file mode 100644 index 727b74e..0000000 --- a/prefab/ui/RoomUI.tscn +++ /dev/null @@ -1,8 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://src/ui/RoomUI.cs" type="Script" id=1] - -[node name="RoomUI" type="Control"] -anchor_right = 1.0 -anchor_bottom = 1.0 -script = ExtResource( 1 ) diff --git a/prefab/weapon/Gun.tscn b/prefab/weapon/Gun.tscn deleted file mode 100644 index 2c54084..0000000 --- a/prefab/weapon/Gun.tscn +++ /dev/null @@ -1,103 +0,0 @@ -[gd_scene load_steps=8 format=2] - -[ext_resource path="res://src/weapon/gun/OrdinaryGun.cs" type="Script" id=1] -[ext_resource path="res://resource/materlal/Shadow.gdshader" type="Shader" id=2] - -[sub_resource type="ShaderMaterial" id=9] -resource_local_to_scene = true -shader = ExtResource( 2 ) -shader_param/shadowColor = Color( 1, 1, 1, 1 ) -shader_param/schedule = 0.0 - -[sub_resource type="StreamTexture" id=8] -load_path = "res://.import/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.stex" - -[sub_resource type="Animation" id=3] -resource_name = "Floodlight" -length = 3.0 -loop = true -step = 0.5 -tracks/0/type = "value" -tracks/0/path = NodePath("GunSprite:material:shader_param/shadowColor") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Color( 1, 1, 1, 1 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("GunSprite:material:shader_param/schedule") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0, 1.9, 2.4, 2.5, 3 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), -"update": 0, -"values": [ 0.0, 0.0, 1.0, 1.0, 0.0 ] -} - -[sub_resource type="Animation" id=4] -length = 0.001 -tracks/0/type = "value" -tracks/0/path = NodePath("GunSprite:material:shader_param/shadowColor") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Color( 1, 1, 1, 1 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("GunSprite:material:shader_param/schedule") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 7.8, 3.5 ) - -[node name="Gun" type="Area2D"] -collision_layer = 4 -collision_mask = 0 -script = ExtResource( 1 ) - -[node name="GunSprite" type="Sprite" parent="."] -material = SubResource( 9 ) -position = Vector2( 0.4, -2.6 ) -scale = Vector2( 0.8, 0.8 ) -texture = SubResource( 8 ) - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -autoplay = "Floodlight" -playback_process_mode = 0 -anims/Floodlight = SubResource( 3 ) -anims/RESET = SubResource( 4 ) - -[node name="OriginPoint" type="Position2D" parent="."] -position = Vector2( -3.60001, -1.1 ) - -[node name="ShellPoint" type="Position2D" parent="."] -position = Vector2( -2.60001, -2.60001 ) - -[node name="FirePoint" type="Position2D" parent="."] -position = Vector2( 7.39999, -1.1 ) - -[node name="Collision" type="CollisionShape2D" parent="."] -position = Vector2( 0.59999, 0.199997 ) -shape = SubResource( 1 ) diff --git a/prefab/weapon/bullet/HighSpeedBullet.tscn b/prefab/weapon/bullet/HighSpeedBullet.tscn deleted file mode 100644 index f3a97b6..0000000 --- a/prefab/weapon/bullet/HighSpeedBullet.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=5 format=2] - -[ext_resource path="res://src/weapon/bullet/HighSpeedBullet.cs" type="Script" id=1] -[ext_resource path="res://prefab/effect/Hit.tscn" type="PackedScene" id=2] - -[sub_resource type="Curve" id=1] -_data = [ Vector2( 0, 0.781588 ), 0.0, 0.0, 0, 0, Vector2( 1, 1 ), 0.0, 0.0, 0, 0 ] - -[sub_resource type="Gradient" id=2] -colors = PoolColorArray( 1, 1, 1, 0, 1, 1, 1, 0.705882 ) - -[node name="HighSpeedBullet" type="Node2D"] -script = ExtResource( 1 ) -Hit = ExtResource( 2 ) - -[node name="Line" type="Line2D" parent="."] -modulate = Color( 1, 0.937255, 0.843137, 1 ) -points = PoolVector2Array( 0, 0, 0, 10 ) -width = 1.0 -width_curve = SubResource( 1 ) -default_color = Color( 1, 1, 1, 1 ) -gradient = SubResource( 2 ) -begin_cap_mode = 2 -end_cap_mode = 2 - -[node name="RayCast2D" type="RayCast2D" parent="."] -visible = false diff --git a/prefab/weapon/bullet/OrdinaryBullets.tscn b/prefab/weapon/bullet/OrdinaryBullets.tscn deleted file mode 100644 index f9d4848..0000000 --- a/prefab/weapon/bullet/OrdinaryBullets.tscn +++ /dev/null @@ -1,18 +0,0 @@ -[gd_scene load_steps=4 format=2] - -[ext_resource path="res://src/weapon/bullet/OrdinaryBullets.cs" type="Script" id=1] -[ext_resource path="res://resource/sprite/bullet/bullet.png" type="Texture" id=2] -[ext_resource path="res://prefab/effect/Hit.tscn" type="PackedScene" id=3] - -[node name="OrdinaryBullets" type="Node2D"] -script = ExtResource( 1 ) -Hit = ExtResource( 3 ) - -[node name="RayCast2D" type="RayCast2D" parent="."] -enabled = true -cast_to = Vector2( 18, 0 ) - -[node name="Bullet" type="Sprite" parent="."] -position = Vector2( 0.5, 0 ) -texture = ExtResource( 2 ) -offset = Vector2( -7.5, 0 ) diff --git a/prefab/weapon/shell/ShellCase.tscn b/prefab/weapon/shell/ShellCase.tscn deleted file mode 100644 index 8741487..0000000 --- a/prefab/weapon/shell/ShellCase.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://resource/sprite/shell/shellCase.png" type="Texture" id=1] - -[node name="ShellCase" type="Sprite"] -texture = ExtResource( 1 ) diff --git a/project.godot b/project.godot deleted file mode 100644 index 34cffb4..0000000 --- a/project.godot +++ /dev/null @@ -1,180 +0,0 @@ -; Engine configuration file. -; It's best edited using the editor UI and not directly, -; since the parameters that go here are not all obvious. -; -; Format: -; [section] ; section goes between [] -; param=value ; assign values to parameters - -config_version=4 - -[application] - -config/name="DungeonShooting" -run/main_scene="res://scene/Room.tscn" -config/icon="res://icon.png" - -[autoload] - -GameManager="*res://src/manager/GameManager.cs" - -[display] - -window/size/width=480 -window/size/height=270 -window/size/test_width=1920 -window/size/test_height=1080 -window/dpi/allow_hidpi=true -window/vsync/vsync_via_compositor=true -window/stretch/aspect="keep_width" -window/stretch/shrink=4.0 - -[editor_plugins] - -enabled=PoolStringArray( "res://addons/vnen.tiled_importer/plugin.cfg" ) - -[importer_defaults] - -texture={ -"compress/bptc_ldr": 0, -"compress/hdr_mode": 0, -"compress/lossy_quality": 0.7, -"compress/mode": 0, -"compress/normal_map": 0, -"detect_3d": false, -"flags/anisotropic": false, -"flags/filter": false, -"flags/mipmaps": false, -"flags/repeat": 0, -"flags/srgb": 2, -"process/HDR_as_SRGB": false, -"process/fix_alpha_border": true, -"process/invert_color": false, -"process/normal_map_invert_y": false, -"process/premult_alpha": false, -"size_limit": 0, -"stream": false, -"svg/scale": 1.0 -} -vnen.tiled_tileset_importer={ -"custom_properties": true, -"embed_internal_images": false, -"image_flags": 3, -"post_import_script": "", -"save_tiled_properties": false, -"tile_metadata": false -} -vnen.tiled_importer={ -"add_background": true, -"collision_layer": 1, -"custom_properties": true, -"embed_internal_images": true, -"image_flags": 0, -"post_import_script": "", -"save_tiled_properties": false, -"tile_metadata": false, -"uv_clip": true -} - -[input] - -ui_left={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) - ] -} -ui_right={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) - ] -} -ui_up={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) - ] -} -ui_down={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) - ] -} -fire={ -"deadzone": 0.5, -"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) - ] -} -move_left={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -move_right={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -move_up={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -move_down={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -exchange={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":81,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -throw={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":71,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -mouse_roll_up={ -"deadzone": 0.5, -"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":4,"pressed":false,"doubleclick":false,"script":null) - ] -} -mouse_roll_down={ -"deadzone": 0.5, -"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":5,"pressed":false,"doubleclick":false,"script":null) - ] -} -interactive={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -reload={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} - -[layer_names] - -2d_physics/layer_1="wall" -2d_physics/layer_2="bullet" -2d_physics/layer_3="props" -2d_physics/layer_4="player" -2d_physics/layer_5="enemy" - -[physics] - -common/enable_pause_aware_picking=true - -[rendering] - -2d/snapping/use_gpu_pixel_snap=true -environment/default_environment="res://default_env.tres" - -[tiled_importer] - -enable_json_format=true diff --git a/resource/map/dungeon_test.tmx b/resource/map/dungeon_test.tmx deleted file mode 100644 index fb1ba2f..0000000 --- a/resource/map/dungeon_test.tmx +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129 - - - - -51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, -51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, -51,51,39,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,14,51,12,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,41,51,51, -51,51,52,118,119,119,119,119,119,119,119,119,119,119,119,119,119,120,50,51,52,19,19,19,19,19,19,19,19,19,19,19,19,19,19,118,120,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,44,35,35,35,35,35,35,35,35,35,35,36,0,0,34,35,46,51,44,35,36,0,0,34,35,35,35,35,35,35,35,35,35,35,35,46,51,51, -51,51,12,99,99,99,99,99,99,99,99,99,99,100,0,0,98,99,99,99,99,99,100,0,0,98,99,99,99,99,99,99,99,99,99,99,99,14,51,51, -51,51,52,19,19,19,19,19,19,19,19,19,19,20,0,0,18,19,19,19,19,19,20,0,0,18,19,19,19,19,19,19,19,19,19,19,19,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,44,35,35,36,0,0,34,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,36,0,0,34,35,35,46,51,51, -51,51,12,99,99,100,0,0,98,99,99,99,99,99,99,99,99,99,41,51,39,99,99,99,99,99,99,99,99,99,99,100,0,0,98,99,99,14,51,51, -51,51,52,19,19,20,0,0,117,118,118,118,118,118,118,118,118,119,50,51,52,19,19,19,19,19,19,19,19,19,19,20,0,0,18,19,19,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,99,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,35,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,51, -51,51,44,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,46,51,44,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,46,51,51, -51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, -51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51 - - - - - - - - - diff --git a/resource/map/dungeon_test.tmx.import b/resource/map/dungeon_test.tmx.import deleted file mode 100644 index 4df7810..0000000 --- a/resource/map/dungeon_test.tmx.import +++ /dev/null @@ -1,22 +0,0 @@ -[remap] - -importer="vnen.tiled_importer" -type="PackedScene" -path="res://.import/dungeon_test.tmx-238b1188e6139be0bed72a8fdf71cb3b.scn" - -[deps] - -source_file="res://resource/map/dungeon_test.tmx" -dest_files=[ "res://.import/dungeon_test.tmx-238b1188e6139be0bed72a8fdf71cb3b.scn" ] - -[params] - -custom_properties=true -tile_metadata=false -uv_clip=true -image_flags=0 -collision_layer=1 -embed_internal_images=true -save_tiled_properties=false -add_background=true -post_import_script="" diff --git a/resource/map/itch-io-DungeonTileset4.tsx b/resource/map/itch-io-DungeonTileset4.tsx deleted file mode 100644 index bf48d8a..0000000 --- a/resource/map/itch-io-DungeonTileset4.tsx +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resource/map/itch-io-DungeonTileset4.tsx.import b/resource/map/itch-io-DungeonTileset4.tsx.import deleted file mode 100644 index 83cec63..0000000 --- a/resource/map/itch-io-DungeonTileset4.tsx.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="vnen.tiled_tileset_importer" -type="TileSet" -path="res://.import/itch-io-DungeonTileset4.tsx-b6c599d7e258d91a298136a5a4002898.res" - -[deps] - -source_file="res://resource/map/itch-io-DungeonTileset4.tsx" -dest_files=[ "res://.import/itch-io-DungeonTileset4.tsx-b6c599d7e258d91a298136a5a4002898.res" ] - -[params] - -custom_properties=true -tile_metadata=false -image_flags=3 -embed_internal_images=false -save_tiled_properties=false -post_import_script="" diff --git a/resource/materlal/Shadow.gdshader b/resource/materlal/Shadow.gdshader deleted file mode 100644 index b3ba457..0000000 --- a/resource/materlal/Shadow.gdshader +++ /dev/null @@ -1,11 +0,0 @@ -shader_type canvas_item; - -uniform vec4 shadowColor : hint_color = vec4(0.0, 0.0, 0.0, 0.8); -uniform float schedule = 1.0; -//将贴图渲染为阴影 - -void fragment() { - vec4 textureColor = texture(TEXTURE, UV); - vec4 col = mix(textureColor, shadowColor, schedule); - COLOR = mix(vec4(0.0, 0.0, 0.0, 0.0), col, textureColor.a); -} diff --git a/resource/materlal/Shadow.tres b/resource/materlal/Shadow.tres deleted file mode 100644 index df4a9bf..0000000 --- a/resource/materlal/Shadow.tres +++ /dev/null @@ -1,9 +0,0 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=2] - -[ext_resource path="res://resource/materlal/Shadow.gdshader" type="Shader" id=1] - -[resource] -resource_local_to_scene = true -shader = ExtResource( 1 ) -shader_param/shadowColor = Color( 0, 0, 0, 0.8 ) -shader_param/schedule = 1.0 diff --git a/resource/sound/bgm/Intro.ogg b/resource/sound/bgm/Intro.ogg deleted file mode 100644 index bffdec1..0000000 --- a/resource/sound/bgm/Intro.ogg +++ /dev/null Binary files differ diff --git a/resource/sound/bgm/Intro.ogg.import b/resource/sound/bgm/Intro.ogg.import deleted file mode 100644 index 40e9321..0000000 --- a/resource/sound/bgm/Intro.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/Intro.ogg-058563f71fb5fd982135a064e68ee173.oggstr" - -[deps] - -source_file="res://resource/sound/bgm/Intro.ogg" -dest_files=[ "res://.import/Intro.ogg-058563f71fb5fd982135a064e68ee173.oggstr" ] - -[params] - -loop=true -loop_offset=0 diff --git a/resource/sound/sfx/ordinaryBullet.ogg b/resource/sound/sfx/ordinaryBullet.ogg deleted file mode 100644 index f5a886a..0000000 --- a/resource/sound/sfx/ordinaryBullet.ogg +++ /dev/null Binary files differ diff --git a/resource/sound/sfx/ordinaryBullet.ogg.import b/resource/sound/sfx/ordinaryBullet.ogg.import deleted file mode 100644 index 365ebbc..0000000 --- a/resource/sound/sfx/ordinaryBullet.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/ordinaryBullet.ogg-cfe42761de70631705f4e117ce06ad61.oggstr" - -[deps] - -source_file="res://resource/sound/sfx/ordinaryBullet.ogg" -dest_files=[ "res://.import/ordinaryBullet.ogg-cfe42761de70631705f4e117ce06ad61.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/resource/sprite/bullet/arrow.png b/resource/sprite/bullet/arrow.png deleted file mode 100644 index 4baebfb..0000000 --- a/resource/sprite/bullet/arrow.png +++ /dev/null Binary files differ diff --git a/resource/sprite/bullet/arrow.png.import b/resource/sprite/bullet/arrow.png.import deleted file mode 100644 index 4efd751..0000000 --- a/resource/sprite/bullet/arrow.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/arrow.png-5f9f0a3c4c243acf30e833eb04add206.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/bullet/arrow.png" -dest_files=[ "res://.import/arrow.png-5f9f0a3c4c243acf30e833eb04add206.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/bullet/bullet.aseprite b/resource/sprite/bullet/bullet.aseprite deleted file mode 100644 index 19447ed..0000000 --- a/resource/sprite/bullet/bullet.aseprite +++ /dev/null Binary files differ diff --git a/resource/sprite/bullet/bullet.png b/resource/sprite/bullet/bullet.png deleted file mode 100644 index fb6ccea..0000000 --- a/resource/sprite/bullet/bullet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/bullet/bullet.png.import b/resource/sprite/bullet/bullet.png.import deleted file mode 100644 index f4fef3f..0000000 --- a/resource/sprite/bullet/bullet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/bullet.png-d058b3cd1f93a450750c6a914d76f944.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/bullet/bullet.png" -dest_files=[ "res://.import/bullet.png-d058b3cd1f93a450750c6a914d76f944.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/Cursor.png b/resource/sprite/effect/Cursor.png deleted file mode 100644 index 0da59cf..0000000 --- a/resource/sprite/effect/Cursor.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/Cursor.png.import b/resource/sprite/effect/Cursor.png.import deleted file mode 100644 index 57797c5..0000000 --- a/resource/sprite/effect/Cursor.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Cursor.png-f84312eed1cbd6e1d306437a789ab745.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/Cursor.png" -dest_files=[ "res://.import/Cursor.png-f84312eed1cbd6e1d306437a789ab745.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/SmallShadow.png b/resource/sprite/effect/SmallShadow.png deleted file mode 100644 index 04d362a..0000000 --- a/resource/sprite/effect/SmallShadow.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/SmallShadow.png.import b/resource/sprite/effect/SmallShadow.png.import deleted file mode 100644 index e9c3943..0000000 --- a/resource/sprite/effect/SmallShadow.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/SmallShadow.png-8aae30cd42094d71e55e4d7fa6391d71.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/SmallShadow.png" -dest_files=[ "res://.import/SmallShadow.png-8aae30cd42094d71e55e4d7fa6391d71.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/Trajectory.png b/resource/sprite/effect/Trajectory.png deleted file mode 100644 index f6cd27a..0000000 --- a/resource/sprite/effect/Trajectory.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/Trajectory.png.import b/resource/sprite/effect/Trajectory.png.import deleted file mode 100644 index cbd1690..0000000 --- a/resource/sprite/effect/Trajectory.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Trajectory.png-76c08620c3b29f4d728c82f31f8f0bb9.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/Trajectory.png" -dest_files=[ "res://.import/Trajectory.png-76c08620c3b29f4d728c82f31f8f0bb9.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/fire/fire1.aseprite b/resource/sprite/effect/fire/fire1.aseprite deleted file mode 100644 index 1c47cfe..0000000 --- a/resource/sprite/effect/fire/fire1.aseprite +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/hit/hit0.png b/resource/sprite/effect/hit/hit0.png deleted file mode 100644 index a4457f0..0000000 --- a/resource/sprite/effect/hit/hit0.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/hit/hit0.png.import b/resource/sprite/effect/hit/hit0.png.import deleted file mode 100644 index 45dbac3..0000000 --- a/resource/sprite/effect/hit/hit0.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit0.png-17276b3668c4e0cb4c107848aa290086.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/hit/hit0.png" -dest_files=[ "res://.import/hit0.png-17276b3668c4e0cb4c107848aa290086.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/hit/hit1.png b/resource/sprite/effect/hit/hit1.png deleted file mode 100644 index fc1e151..0000000 --- a/resource/sprite/effect/hit/hit1.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/hit/hit1.png.import b/resource/sprite/effect/hit/hit1.png.import deleted file mode 100644 index e7c2785..0000000 --- a/resource/sprite/effect/hit/hit1.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit1.png-4c89ae30862deb32de3206a28a45db55.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/hit/hit1.png" -dest_files=[ "res://.import/hit1.png-4c89ae30862deb32de3206a28a45db55.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/hit/hit2.png b/resource/sprite/effect/hit/hit2.png deleted file mode 100644 index acf1526..0000000 --- a/resource/sprite/effect/hit/hit2.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/hit/hit2.png.import b/resource/sprite/effect/hit/hit2.png.import deleted file mode 100644 index 1308243..0000000 --- a/resource/sprite/effect/hit/hit2.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit2.png-0d34746142da1b03f2100dd624526a03.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/hit/hit2.png" -dest_files=[ "res://.import/hit2.png-0d34746142da1b03f2100dd624526a03.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/hit/hit3.png b/resource/sprite/effect/hit/hit3.png deleted file mode 100644 index 272462c..0000000 --- a/resource/sprite/effect/hit/hit3.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/hit/hit3.png.import b/resource/sprite/effect/hit/hit3.png.import deleted file mode 100644 index 7a82b40..0000000 --- a/resource/sprite/effect/hit/hit3.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit3.png-87522b4136861ca3b16e8936be841355.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/hit/hit3.png" -dest_files=[ "res://.import/hit3.png-87522b4136861ca3b16e8936be841355.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/effect/hit/hit4.png b/resource/sprite/effect/hit/hit4.png deleted file mode 100644 index aa1f261..0000000 --- a/resource/sprite/effect/hit/hit4.png +++ /dev/null Binary files differ diff --git a/resource/sprite/effect/hit/hit4.png.import b/resource/sprite/effect/hit/hit4.png.import deleted file mode 100644 index e703127..0000000 --- a/resource/sprite/effect/hit/hit4.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit4.png-7d42c20b94c8395d3b41e4bc03afae84.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/effect/hit/hit4.png" -dest_files=[ "res://.import/hit4.png-7d42c20b94c8395d3b41e4bc03afae84.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/UK.png b/resource/sprite/gun/UK.png deleted file mode 100644 index 58ade3f..0000000 --- a/resource/sprite/gun/UK.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/UK.png.import b/resource/sprite/gun/UK.png.import deleted file mode 100644 index b26a126..0000000 --- a/resource/sprite/gun/UK.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/UK.png-0e69e5e3a63ed303220ab24dee91e2e0.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/UK.png" -dest_files=[ "res://.import/UK.png-0e69e5e3a63ed303220ab24dee91e2e0.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/US.png b/resource/sprite/gun/US.png deleted file mode 100644 index 73a62df..0000000 --- a/resource/sprite/gun/US.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/US.png.import b/resource/sprite/gun/US.png.import deleted file mode 100644 index 115c1aa..0000000 --- a/resource/sprite/gun/US.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/US.png-4218465449a1caba531b79f6cbaf32fa.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/US.png" -dest_files=[ "res://.import/US.png-4218465449a1caba531b79f6cbaf32fa.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/USSR.png b/resource/sprite/gun/USSR.png deleted file mode 100644 index 4575498..0000000 --- a/resource/sprite/gun/USSR.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/USSR.png.import b/resource/sprite/gun/USSR.png.import deleted file mode 100644 index f0fb197..0000000 --- a/resource/sprite/gun/USSR.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/USSR.png-1b06adab8deb5898a39090b724b84133.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/USSR.png" -dest_files=[ "res://.import/USSR.png-1b06adab8deb5898a39090b724b84133.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/bow.png b/resource/sprite/gun/bow.png deleted file mode 100644 index 0654ef2..0000000 --- a/resource/sprite/gun/bow.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/bow.png.import b/resource/sprite/gun/bow.png.import deleted file mode 100644 index f113dd0..0000000 --- a/resource/sprite/gun/bow.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/bow.png-bf9e685f71e0011b6ec8dc0a31121391.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/bow.png" -dest_files=[ "res://.import/bow.png-bf9e685f71e0011b6ec8dc0a31121391.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun1.png b/resource/sprite/gun/gun1.png deleted file mode 100644 index fc6c2ce..0000000 --- a/resource/sprite/gun/gun1.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun1.png.import b/resource/sprite/gun/gun1.png.import deleted file mode 100644 index 087ecf0..0000000 --- a/resource/sprite/gun/gun1.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun1.png" -dest_files=[ "res://.import/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun2.png b/resource/sprite/gun/gun2.png deleted file mode 100644 index 8889f01..0000000 --- a/resource/sprite/gun/gun2.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun2.png.import b/resource/sprite/gun/gun2.png.import deleted file mode 100644 index 25a6717..0000000 --- a/resource/sprite/gun/gun2.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun2.png-67d4f6125e770591468ba3ab236736ef.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun2.png" -dest_files=[ "res://.import/gun2.png-67d4f6125e770591468ba3ab236736ef.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun3.png b/resource/sprite/gun/gun3.png deleted file mode 100644 index ebccd94..0000000 --- a/resource/sprite/gun/gun3.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun3.png.import b/resource/sprite/gun/gun3.png.import deleted file mode 100644 index 926b007..0000000 --- a/resource/sprite/gun/gun3.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun3.png-f2b98956d7fdf008b4a87a7be920ea12.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun3.png" -dest_files=[ "res://.import/gun3.png-f2b98956d7fdf008b4a87a7be920ea12.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun4.png b/resource/sprite/gun/gun4.png deleted file mode 100644 index d3643d2..0000000 --- a/resource/sprite/gun/gun4.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun4.png.import b/resource/sprite/gun/gun4.png.import deleted file mode 100644 index 0988715..0000000 --- a/resource/sprite/gun/gun4.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun4.png-ba6b1c54aee277c1e95a427dbdaaddeb.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun4.png" -dest_files=[ "res://.import/gun4.png-ba6b1c54aee277c1e95a427dbdaaddeb.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun5.png b/resource/sprite/gun/gun5.png deleted file mode 100644 index 9845085..0000000 --- a/resource/sprite/gun/gun5.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun5.png.import b/resource/sprite/gun/gun5.png.import deleted file mode 100644 index 0ad15f2..0000000 --- a/resource/sprite/gun/gun5.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun5.png-6f355c0cd6234d52c0b85a3bec0a414e.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun5.png" -dest_files=[ "res://.import/gun5.png-6f355c0cd6234d52c0b85a3bec0a414e.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun6.png b/resource/sprite/gun/gun6.png deleted file mode 100644 index b4948f3..0000000 --- a/resource/sprite/gun/gun6.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun6.png.import b/resource/sprite/gun/gun6.png.import deleted file mode 100644 index 902b284..0000000 --- a/resource/sprite/gun/gun6.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun6.png-0667c2b2b24159daf259f9cc3faa9fee.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun6.png" -dest_files=[ "res://.import/gun6.png-0667c2b2b24159daf259f9cc3faa9fee.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun7.png b/resource/sprite/gun/gun7.png deleted file mode 100644 index a4d1cea..0000000 --- a/resource/sprite/gun/gun7.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun7.png.import b/resource/sprite/gun/gun7.png.import deleted file mode 100644 index 4db95d5..0000000 --- a/resource/sprite/gun/gun7.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun7.png-c5124593247a40157a5388c936276859.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun7.png" -dest_files=[ "res://.import/gun7.png-c5124593247a40157a5388c936276859.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/gun8.png b/resource/sprite/gun/gun8.png deleted file mode 100644 index 6186597..0000000 --- a/resource/sprite/gun/gun8.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/gun8.png.import b/resource/sprite/gun/gun8.png.import deleted file mode 100644 index 64a7a07..0000000 --- a/resource/sprite/gun/gun8.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/gun8.png-ce26b9cb6654714a9891481124571c4f.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/gun8.png" -dest_files=[ "res://.import/gun8.png-ce26b9cb6654714a9891481124571c4f.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/gun/out/default.png b/resource/sprite/gun/out/default.png deleted file mode 100644 index e806751..0000000 --- a/resource/sprite/gun/out/default.png +++ /dev/null Binary files differ diff --git a/resource/sprite/gun/out/default.png.import b/resource/sprite/gun/out/default.png.import deleted file mode 100644 index debb2c7..0000000 --- a/resource/sprite/gun/out/default.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/default.png-e5a685da8f657e6b9105cc7f2f935dc9.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/gun/out/default.png" -dest_files=[ "res://.import/default.png-e5a685da8f657e6b9105cc7f2f935dc9.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/craftpix-net-228007/All Tileset/16x16.png b/resource/sprite/package/craftpix-net-228007/All Tileset/16x16.png deleted file mode 100644 index 4e0828a..0000000 --- a/resource/sprite/package/craftpix-net-228007/All Tileset/16x16.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/craftpix-net-228007/All Tileset/16x16.png.import b/resource/sprite/package/craftpix-net-228007/All Tileset/16x16.png.import deleted file mode 100644 index c09d5c9..0000000 --- a/resource/sprite/package/craftpix-net-228007/All Tileset/16x16.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/16x16.png-c75ae36b4e1df7d9b3c35eacb9b4cc0e.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/craftpix-net-228007/All Tileset/16x16.png" -dest_files=[ "res://.import/16x16.png-c75ae36b4e1df7d9b3c35eacb9b4cc0e.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/craftpix-net-228007/Palette/Pallete.txt b/resource/sprite/package/craftpix-net-228007/Palette/Pallete.txt deleted file mode 100644 index ad6e6d8..0000000 --- a/resource/sprite/package/craftpix-net-228007/Palette/Pallete.txt +++ /dev/null @@ -1 +0,0 @@ -This palette belongs to Kerrie Lake, and can be found and downloaded for free here: https://lospec.com/palette-list/resurrect-64 \ No newline at end of file diff --git a/resource/sprite/package/craftpix-net-228007/license.txt b/resource/sprite/package/craftpix-net-228007/license.txt deleted file mode 100644 index 673e1aa..0000000 --- a/resource/sprite/package/craftpix-net-228007/license.txt +++ /dev/null @@ -1 +0,0 @@ -https://craftpix.net/file-licenses/ \ No newline at end of file diff --git a/resource/sprite/package/craftpix-net-248911/16x16.png b/resource/sprite/package/craftpix-net-248911/16x16.png deleted file mode 100644 index 25987fc..0000000 --- a/resource/sprite/package/craftpix-net-248911/16x16.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/craftpix-net-248911/16x16.png.import b/resource/sprite/package/craftpix-net-248911/16x16.png.import deleted file mode 100644 index ee4ed50..0000000 --- a/resource/sprite/package/craftpix-net-248911/16x16.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/16x16.png-1fce0fa4d4d93e884e1588749849d671.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/craftpix-net-248911/16x16.png" -dest_files=[ "res://.import/16x16.png-1fce0fa4d4d93e884e1588749849d671.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/craftpix-net-248911/A Note to the Dev.txt b/resource/sprite/package/craftpix-net-248911/A Note to the Dev.txt deleted file mode 100644 index 6596983..0000000 --- a/resource/sprite/package/craftpix-net-248911/A Note to the Dev.txt +++ /dev/null @@ -1,15 +0,0 @@ -Ho ho, the title got you, huh! :) - -Hello, thank you for your purchase! - -I'm Caio, the Clockwork Raven Studios artist, owner, and i hope this product live up to your expectations, i want you to know that your interest in my projects is what makes me work on it even harder. - -In case if it doesn't take up too much of your time, I would like to see what you're thinking about it in the comments, in the page of the store that you purchased the product, this helps me a lot! - -You can also see my progress in the creation of new assets and/or make suggestions, follow my twitter here: https://twitter.com/cwrstudios - -If you like my work, i would recommend you to take a look at my Patreon, you get spoilers of my upcoming assets, a community and everything i already made for only $5, and for staying as a Patron you'll always receive my new assets for free! - -My Patreon: https://www.patreon.com/clockworkravenstudios - -Regards, Caio \ No newline at end of file diff --git a/resource/sprite/package/craftpix-net-248911/All Tileset/16x16.png b/resource/sprite/package/craftpix-net-248911/All Tileset/16x16.png deleted file mode 100644 index 25987fc..0000000 --- a/resource/sprite/package/craftpix-net-248911/All Tileset/16x16.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/craftpix-net-248911/All Tileset/16x16.png.import b/resource/sprite/package/craftpix-net-248911/All Tileset/16x16.png.import deleted file mode 100644 index e088b3a..0000000 --- a/resource/sprite/package/craftpix-net-248911/All Tileset/16x16.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/16x16.png-d8bed8f26fbbaf1616893fe6d5320b68.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/craftpix-net-248911/All Tileset/16x16.png" -dest_files=[ "res://.import/16x16.png-d8bed8f26fbbaf1616893fe6d5320b68.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/craftpix-net-248911/EsRson.gif b/resource/sprite/package/craftpix-net-248911/EsRson.gif deleted file mode 100644 index 493642d..0000000 --- a/resource/sprite/package/craftpix-net-248911/EsRson.gif +++ /dev/null Binary files differ diff --git a/resource/sprite/package/craftpix-net-248911/Palette/Pallete.txt b/resource/sprite/package/craftpix-net-248911/Palette/Pallete.txt deleted file mode 100644 index ad6e6d8..0000000 --- a/resource/sprite/package/craftpix-net-248911/Palette/Pallete.txt +++ /dev/null @@ -1 +0,0 @@ -This palette belongs to Kerrie Lake, and can be found and downloaded for free here: https://lospec.com/palette-list/resurrect-64 \ No newline at end of file diff --git a/resource/sprite/package/craftpix-net-248911/Rww2te.gif b/resource/sprite/package/craftpix-net-248911/Rww2te.gif deleted file mode 100644 index 977edd3..0000000 --- a/resource/sprite/package/craftpix-net-248911/Rww2te.gif +++ /dev/null Binary files differ diff --git a/resource/sprite/package/craftpix-net-248911/license.txt b/resource/sprite/package/craftpix-net-248911/license.txt deleted file mode 100644 index 673e1aa..0000000 --- a/resource/sprite/package/craftpix-net-248911/license.txt +++ /dev/null @@ -1 +0,0 @@ -https://craftpix.net/file-licenses/ \ No newline at end of file diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/Palette.txt b/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/Palette.txt deleted file mode 100644 index 7935d5a..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/Palette.txt +++ /dev/null @@ -1 +0,0 @@ -Credit to @PineTreePizza for this wonderful pallete (rosy 42), I also added 3 shades of blue from edg32. \ No newline at end of file diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/rosyandblue.png b/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/rosyandblue.png deleted file mode 100644 index 059079e..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/rosyandblue.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/rosyandblue.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/rosyandblue.png.import deleted file mode 100644 index c68ac76..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/Palette/rosyandblue.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/rosyandblue.png-823eb9038c5f2cbc94450fd430d78ea3.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/Palette/rosyandblue.png" -dest_files=[ "res://.import/rosyandblue.png-823eb9038c5f2cbc94450fd430d78ea3.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/Thanks.txt b/resource/sprite/package/itch-io-Controllers and Keyboard/Thanks.txt deleted file mode 100644 index 4092176..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/Thanks.txt +++ /dev/null @@ -1,5 +0,0 @@ -Thanks for buying this pack and supporting me, I hope you find it useful! -You can reach me through Twitter (@Vryell) if you have any feedback or want to know more about my work. -Find more packs at my itch.io page: -https://vryell.itch.io/ -That's it, Enjoy! :) \ No newline at end of file diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_minimal.png b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_minimal.png deleted file mode 100644 index 42f63ad..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_minimal.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_minimal.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_minimal.png.import deleted file mode 100644 index 31ec571..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_minimal.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/controller_minimal.png-0d558f5ee478244865d734f77309012b.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/controller_minimal.png" -dest_files=[ "res://.import/controller_minimal.png-0d558f5ee478244865d734f77309012b.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_ps.png b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_ps.png deleted file mode 100644 index 2ddc92d..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_ps.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_ps.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_ps.png.import deleted file mode 100644 index 3b9b419..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_ps.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/controller_ps.png-e881e7e438228055406c4d6de0149a86.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/controller_ps.png" -dest_files=[ "res://.import/controller_ps.png-e881e7e438228055406c4d6de0149a86.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_switch.png b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_switch.png deleted file mode 100644 index c71a38e..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_switch.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_switch.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_switch.png.import deleted file mode 100644 index 5469fd6..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_switch.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/controller_switch.png-16e9913a34ce9ee168f5a26032ae0bbe.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/controller_switch.png" -dest_files=[ "res://.import/controller_switch.png-16e9913a34ce9ee168f5a26032ae0bbe.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_xbox.png b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_xbox.png deleted file mode 100644 index 9c81125..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_xbox.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_xbox.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/controller_xbox.png.import deleted file mode 100644 index 1e5a4d3..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/controller_xbox.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/controller_xbox.png-fa81646ef545cd93817d59f7e8f835e8.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/controller_xbox.png" -dest_files=[ "res://.import/controller_xbox.png-fa81646ef545cd93817d59f7e8f835e8.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png b/resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png deleted file mode 100644 index b40cfe5..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png.import deleted file mode 100644 index e5a3095..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/cursors.png-55b4696ec687fbf2b2ebfd82d4d68569.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/cursors.png" -dest_files=[ "res://.import/cursors.png-55b4696ec687fbf2b2ebfd82d4d68569.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_all.png b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_all.png deleted file mode 100644 index 56e5cfe..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_all.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_all.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_all.png.import deleted file mode 100644 index de6496a..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_all.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/kb_dark_all.png-408255cd1508fd608010b1b415ca507d.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_all.png" -dest_files=[ "res://.import/kb_dark_all.png-408255cd1508fd608010b1b415ca507d.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png deleted file mode 100644 index 812b06c..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png.import deleted file mode 100644 index 5f5f7a8..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/kb_dark_alphanumeric.png-d76e8752bf10562d1845af41ea2f435a.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_alphanumeric.png" -dest_files=[ "res://.import/kb_dark_alphanumeric.png-d76e8752bf10562d1845af41ea2f435a.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_symbols.png b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_symbols.png deleted file mode 100644 index 80ec1f0..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_symbols.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_symbols.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_symbols.png.import deleted file mode 100644 index 77f6b6d..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_symbols.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/kb_dark_symbols.png-6f6db880c11887ef6a5dc38d40958664.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/kb_dark_symbols.png" -dest_files=[ "res://.import/kb_dark_symbols.png-6f6db880c11887ef6a5dc38d40958664.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_all.png b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_all.png deleted file mode 100644 index d276361..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_all.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_all.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_all.png.import deleted file mode 100644 index a6bb43a..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_all.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/kb_light_all.png-5daac3b02355d3287a9cb0094e699555.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_all.png" -dest_files=[ "res://.import/kb_light_all.png-5daac3b02355d3287a9cb0094e699555.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png deleted file mode 100644 index 042d8bc..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png.import deleted file mode 100644 index 55d48bd..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/kb_light_alphanumeric.png-9a4f310ba51ea1705fa3e6915fc6c61e.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_alphanumeric.png" -dest_files=[ "res://.import/kb_light_alphanumeric.png-9a4f310ba51ea1705fa3e6915fc6c61e.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_symbols.png b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_symbols.png deleted file mode 100644 index faf5662..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_symbols.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_symbols.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_symbols.png.import deleted file mode 100644 index 4a9a2de..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_symbols.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/kb_light_symbols.png-7c56a42831293cf70cad986a4fdfe008.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/kb_light_symbols.png" -dest_files=[ "res://.import/kb_light_symbols.png-7c56a42831293cf70cad986a4fdfe008.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/mouse.png b/resource/sprite/package/itch-io-Controllers and Keyboard/mouse.png deleted file mode 100644 index a865059..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/mouse.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/mouse.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/mouse.png.import deleted file mode 100644 index 0e645ec..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/mouse.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/mouse.png-0bba541eff77196b02d9bfe03c1bf8f1.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/mouse.png" -dest_files=[ "res://.import/mouse.png-0bba541eff77196b02d9bfe03c1bf8f1.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/sticks.png b/resource/sprite/package/itch-io-Controllers and Keyboard/sticks.png deleted file mode 100644 index 46a5c6e..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/sticks.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-Controllers and Keyboard/sticks.png.import b/resource/sprite/package/itch-io-Controllers and Keyboard/sticks.png.import deleted file mode 100644 index b3e572c..0000000 --- a/resource/sprite/package/itch-io-Controllers and Keyboard/sticks.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/sticks.png-a72dfaa009a018e6aebafcbe3ac887ce.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-Controllers and Keyboard/sticks.png" -dest_files=[ "res://.import/sticks.png-a72dfaa009a018e6aebafcbe3ac887ce.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png b/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png deleted file mode 100644 index d3061e2..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png.import b/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png.import deleted file mode 100644 index 2d7da0b..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/0x72_16x16DungeonTileset.v4.png-6396055ec4f893d4df50f4141bd5ae56.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset.v4.png" -dest_files=[ "res://.import/0x72_16x16DungeonTileset.v4.png-6396055ec4f893d4df50f4141bd5ae56.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png b/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png deleted file mode 100644 index e1e0412..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png.import b/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png.import deleted file mode 100644 index 5c7f338..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/0x72_16x16DungeonTileset_walls.v2.png-07ea0aa57d9ad803149caff10d82b0cd.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset1/0x72_16x16DungeonTileset_walls.v2.png" -dest_files=[ "res://.import/0x72_16x16DungeonTileset_walls.v2.png-07ea0aa57d9ad803149caff10d82b0cd.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png b/resource/sprite/package/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png deleted file mode 100644 index b94b19d..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png.import b/resource/sprite/package/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png.import deleted file mode 100644 index e84f842..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Dungeon Tileset + Spikes.png-f34a2539d96c5686e4563036e35c8fe4.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset2/Dungeon Tileset + Spikes.png" -dest_files=[ "res://.import/Dungeon Tileset + Spikes.png-f34a2539d96c5686e4563036e35c8fe4.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset2/website.txt b/resource/sprite/package/itch-io-DungeonTileset2/website.txt deleted file mode 100644 index 193056a..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset2/website.txt +++ /dev/null @@ -1 +0,0 @@ -https://spicestudios.itch.io/dungeon-tileset \ No newline at end of file diff --git a/resource/sprite/package/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png b/resource/sprite/package/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png deleted file mode 100644 index aaecb48..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png.import b/resource/sprite/package/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png.import deleted file mode 100644 index 3f48d10..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/0x72_DungeonTilesetII_v1.3.png-e2603af2ff467994fd1c4956c08283bd.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset3/0x72_DungeonTilesetII_v1.3.png" -dest_files=[ "res://.import/0x72_DungeonTilesetII_v1.3.png-e2603af2ff467994fd1c4956c08283bd.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset3/website.txt b/resource/sprite/package/itch-io-DungeonTileset3/website.txt deleted file mode 100644 index ed3a826..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset3/website.txt +++ /dev/null @@ -1 +0,0 @@ -https://0x72.itch.io/dungeontileset-ii \ No newline at end of file diff --git a/resource/sprite/package/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png b/resource/sprite/package/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png deleted file mode 100644 index df021f3..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png.import b/resource/sprite/package/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png.import deleted file mode 100644 index 87831c9..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/16x16 dungeon ii wall reconfig v04 spritesheet.png-6767c22ad4c8992492744f622ee8ee86.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/16x16 dungeon ii wall reconfig v04 spritesheet.png" -dest_files=[ "res://.import/16x16 dungeon ii wall reconfig v04 spritesheet.png-6767c22ad4c8992492744f622ee8ee86.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/arrow.png b/resource/sprite/package/itch-io-DungeonTileset4/bow/arrow.png deleted file mode 100644 index 4baebfb..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/arrow.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/arrow.png.import b/resource/sprite/package/itch-io-DungeonTileset4/bow/arrow.png.import deleted file mode 100644 index 8ec9b8a..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/arrow.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/arrow.png-34432f7212242235dac055207f90dfe5.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/bow/arrow.png" -dest_files=[ "res://.import/arrow.png-34432f7212242235dac055207f90dfe5.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/bow.png b/resource/sprite/package/itch-io-DungeonTileset4/bow/bow.png deleted file mode 100644 index 0654ef2..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/bow.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/bow.png.import b/resource/sprite/package/itch-io-DungeonTileset4/bow/bow.png.import deleted file mode 100644 index 29eee44..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/bow.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/bow.png-18fabe8267c7565cc857b689f68b02f2.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/bow/bow.png" -dest_files=[ "res://.import/bow.png-18fabe8267c7565cc857b689f68b02f2.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit0.png b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit0.png deleted file mode 100644 index a4457f0..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit0.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit0.png.import b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit0.png.import deleted file mode 100644 index 5f9d9bb..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit0.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit0.png-ecbe35f4db16a42248361b52b27ba7c0.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit0.png" -dest_files=[ "res://.import/hit0.png-ecbe35f4db16a42248361b52b27ba7c0.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit1.png b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit1.png deleted file mode 100644 index fc1e151..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit1.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit1.png.import b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit1.png.import deleted file mode 100644 index ed894bc..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit1.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit1.png-53ddc242926ed3efa862e808bfd8c6d4.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit1.png" -dest_files=[ "res://.import/hit1.png-53ddc242926ed3efa862e808bfd8c6d4.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit2.png b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit2.png deleted file mode 100644 index acf1526..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit2.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit2.png.import b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit2.png.import deleted file mode 100644 index 9e91efa..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit2.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit2.png-491e58f5449a8922360397b148aea90f.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit2.png" -dest_files=[ "res://.import/hit2.png-491e58f5449a8922360397b148aea90f.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit3.png b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit3.png deleted file mode 100644 index 272462c..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit3.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit3.png.import b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit3.png.import deleted file mode 100644 index 7791d8b..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit3.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit3.png-330f9cad813070c4d319d59fa886a88d.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit3.png" -dest_files=[ "res://.import/hit3.png-330f9cad813070c4d319d59fa886a88d.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit4.png b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit4.png deleted file mode 100644 index aa1f261..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit4.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit4.png.import b/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit4.png.import deleted file mode 100644 index 3de7405..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit4.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hit4.png-9b5ee05c7b1891b1cd2d0db719913dd6.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset4/bow/effect/hit4.png" -dest_files=[ "res://.import/hit4.png-9b5ee05c7b1891b1cd2d0db719913dd6.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset4/website.txt b/resource/sprite/package/itch-io-DungeonTileset4/website.txt deleted file mode 100644 index cea76c3..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset4/website.txt +++ /dev/null @@ -1 +0,0 @@ -https://aekae13.itch.io/16x16-dungeon-walls-reconfig \ No newline at end of file diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png" "b/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png" deleted file mode 100644 index 78d05b1..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png" +++ /dev/null Binary files differ diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png.import" "b/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png.import" deleted file mode 100644 index 60d9811..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133lava\135.png.import" +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeon_ [lava].png-404f4fa21256a5f498060494d5be2f5f.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ [lava].png" -dest_files=[ "res://.import/dungeon_ [lava].png-404f4fa21256a5f498060494d5be2f5f.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png" "b/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png" deleted file mode 100644 index bd805ad..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png" +++ /dev/null Binary files differ diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png.import" "b/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png.import" deleted file mode 100644 index a3a1d1b..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ \133water\135.png.import" +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeon_ [water].png-442e60ad1b56c1106a802bc5bb3a3cea.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_ [water].png" -dest_files=[ "res://.import/dungeon_ [water].png-442e60ad1b56c1106a802bc5bb3a3cea.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_.png b/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_.png deleted file mode 100644 index 1716e99..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_.png.import b/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_.png.import deleted file mode 100644 index 2ed96da..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeon_.png-a571c3caf931bbdbb462a6376a8fdd37.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset5/dungeon_/dungeon_.png" -dest_files=[ "res://.import/dungeon_.png-a571c3caf931bbdbb462a6376a8fdd37.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png" "b/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png" deleted file mode 100644 index d55ac7c..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png" +++ /dev/null Binary files differ diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png.import" "b/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png.import" deleted file mode 100644 index 623ee0d..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133traps\135.png.import" +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/shadows_ [traps].png-bde224bad131ff9c0b6e4f167517ada3.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ [traps].png" -dest_files=[ "res://.import/shadows_ [traps].png-bde224bad131ff9c0b6e4f167517ada3.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png" "b/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png" deleted file mode 100644 index b40b97b..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png" +++ /dev/null Binary files differ diff --git "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png.import" "b/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png.import" deleted file mode 100644 index 4f8b7ba..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ \133water & lava\135.png.import" +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/shadows_ [water & lava].png-70786bffef5f3711109693fa35171042.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_ [water & lava].png" -dest_files=[ "res://.import/shadows_ [water & lava].png-70786bffef5f3711109693fa35171042.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_.png b/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_.png deleted file mode 100644 index 5e4d9e7..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_.png.import b/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_.png.import deleted file mode 100644 index 7309f09..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/shadows_.png-baa188947aece4585ebddba0da4c42db.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset5/shadows/shadows_.png" -dest_files=[ "res://.import/shadows_.png-baa188947aece4585ebddba0da4c42db.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset5/website.txt b/resource/sprite/package/itch-io-DungeonTileset5/website.txt deleted file mode 100644 index 34eae21..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset5/website.txt +++ /dev/null @@ -1 +0,0 @@ -https://analogstudios.itch.io/dungeonold \ No newline at end of file diff --git a/resource/sprite/package/itch-io-DungeonTileset6/acid_.png b/resource/sprite/package/itch-io-DungeonTileset6/acid_.png deleted file mode 100644 index 3c9aedd..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/acid_.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset6/acid_.png.import b/resource/sprite/package/itch-io-DungeonTileset6/acid_.png.import deleted file mode 100644 index 019b3f1..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/acid_.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/acid_.png-e63a11339056fd47e892df4519c97392.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/acid_.png" -dest_files=[ "res://.import/acid_.png-e63a11339056fd47e892df4519c97392.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png" "b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png" deleted file mode 100644 index 797ead0..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png" +++ /dev/null Binary files differ diff --git "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png.import" "b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png.import" deleted file mode 100644 index e13f9c2..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133blueCarpet\135.png.import" +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeonDecoration_0 [blueCarpet].png-4dcecaca6dbef6d320b32c9ae1950784.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 [blueCarpet].png" -dest_files=[ "res://.import/dungeonDecoration_0 [blueCarpet].png-4dcecaca6dbef6d320b32c9ae1950784.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png" "b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png" deleted file mode 100644 index 8234991..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png" +++ /dev/null Binary files differ diff --git "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png.import" "b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png.import" deleted file mode 100644 index 2397077..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133greenCarpet\135.png.import" +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeonDecoration_0 [greenCarpet].png-9122bdd784c537349011b9a2594d5661.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 [greenCarpet].png" -dest_files=[ "res://.import/dungeonDecoration_0 [greenCarpet].png-9122bdd784c537349011b9a2594d5661.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png" "b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png" deleted file mode 100644 index 8d38949..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png" +++ /dev/null Binary files differ diff --git "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png.import" "b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png.import" deleted file mode 100644 index 1241012..0000000 --- "a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 \133redCarpet\135.png.import" +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeonDecoration_0 [redCarpet].png-2d1f3a9c2f57faa444552a2d0e3516cd.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0 [redCarpet].png" -dest_files=[ "res://.import/dungeonDecoration_0 [redCarpet].png-2d1f3a9c2f57faa444552a2d0e3516cd.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0.png b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0.png deleted file mode 100644 index 800e66f..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0.png.import b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0.png.import deleted file mode 100644 index ce43925..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeonDecoration_0.png-e3177d51cf164450ed3c7abdca572c60.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_0.png" -dest_files=[ "res://.import/dungeonDecoration_0.png-e3177d51cf164450ed3c7abdca572c60.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_1.png b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_1.png deleted file mode 100644 index d89c519..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_1.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_1.png.import b/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_1.png.import deleted file mode 100644 index f85a8b2..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_1.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeonDecoration_1.png-2b19c60370baf98f0dcf644eda8ca490.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/dungeonDecoration_1.png" -dest_files=[ "res://.import/dungeonDecoration_1.png-2b19c60370baf98f0dcf644eda8ca490.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset6/dungeon_.png b/resource/sprite/package/itch-io-DungeonTileset6/dungeon_.png deleted file mode 100644 index 31115b3..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/dungeon_.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset6/dungeon_.png.import b/resource/sprite/package/itch-io-DungeonTileset6/dungeon_.png.import deleted file mode 100644 index 4bfd56d..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/dungeon_.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/dungeon_.png-25d95e08865a4d1f29f746a63042999d.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/dungeon_.png" -dest_files=[ "res://.import/dungeon_.png-25d95e08865a4d1f29f746a63042999d.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset6/fire_.png b/resource/sprite/package/itch-io-DungeonTileset6/fire_.png deleted file mode 100644 index 334d487..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/fire_.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset6/fire_.png.import b/resource/sprite/package/itch-io-DungeonTileset6/fire_.png.import deleted file mode 100644 index 70f6b86..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/fire_.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/fire_.png-608a552d85b43e8944048f037b71104a.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/fire_.png" -dest_files=[ "res://.import/fire_.png-608a552d85b43e8944048f037b71104a.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset6/traps_.png b/resource/sprite/package/itch-io-DungeonTileset6/traps_.png deleted file mode 100644 index c3c0028..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/traps_.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset6/traps_.png.import b/resource/sprite/package/itch-io-DungeonTileset6/traps_.png.import deleted file mode 100644 index 61b8a60..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/traps_.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/traps_.png-f033bf2a4c98f9e5cbb71425b28c2b74.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/traps_.png" -dest_files=[ "res://.import/traps_.png-f033bf2a4c98f9e5cbb71425b28c2b74.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset6/waterLavaAcid_.png b/resource/sprite/package/itch-io-DungeonTileset6/waterLavaAcid_.png deleted file mode 100644 index a9f8079..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/waterLavaAcid_.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-DungeonTileset6/waterLavaAcid_.png.import b/resource/sprite/package/itch-io-DungeonTileset6/waterLavaAcid_.png.import deleted file mode 100644 index 13a6b20..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/waterLavaAcid_.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/waterLavaAcid_.png-a2bc62b0ab3d07570363ecc92375a88a.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-DungeonTileset6/waterLavaAcid_.png" -dest_files=[ "res://.import/waterLavaAcid_.png-a2bc62b0ab3d07570363ecc92375a88a.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-DungeonTileset6/website.txt b/resource/sprite/package/itch-io-DungeonTileset6/website.txt deleted file mode 100644 index b5dd953..0000000 --- a/resource/sprite/package/itch-io-DungeonTileset6/website.txt +++ /dev/null @@ -1 +0,0 @@ -https://analogstudios.itch.io/dungeon \ No newline at end of file diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png deleted file mode 100644 index 92a0442..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png.import deleted file mode 100644 index ec01f15..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effect 1 - Sprite Sheet.png-cea2bf576dab2be1bad9688d74da2102.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effect 1 - Sprite Sheet.png" -dest_files=[ "res://.import/Effect 1 - Sprite Sheet.png-cea2bf576dab2be1bad9688d74da2102.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png deleted file mode 100644 index 22ca629..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png.import deleted file mode 100644 index e76c113..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effect 2 - Sprite Sheet.png-5b5a88e5a36b1bcb30375d73ad3fce59.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effect 2 - Sprite Sheet.png" -dest_files=[ "res://.import/Effect 2 - Sprite Sheet.png-5b5a88e5a36b1bcb30375d73ad3fce59.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png deleted file mode 100644 index 26158b5..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png.import deleted file mode 100644 index 565019d..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effect 3 - Sprite Sheet.png-f26a99907897583990b5ba8413303d59.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effect 3 - Sprite Sheet.png" -dest_files=[ "res://.import/Effect 3 - Sprite Sheet.png-f26a99907897583990b5ba8413303d59.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png deleted file mode 100644 index 4e8ebec..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png.import deleted file mode 100644 index 09e5af1..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effect 4 - Sprite Sheet.png-db555cf3efd35352dcef6b28d03cf0c4.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effect 4 - Sprite Sheet.png" -dest_files=[ "res://.import/Effect 4 - Sprite Sheet.png-db555cf3efd35352dcef6b28d03cf0c4.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png deleted file mode 100644 index d24f9ea..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png.import deleted file mode 100644 index c1dae12..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effect1 Gameboy Spritesheet.png-d78f0c281c1b2234b16ffb1cb3fa4a44.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effect1 Gameboy Spritesheet.png" -dest_files=[ "res://.import/Effect1 Gameboy Spritesheet.png-d78f0c281c1b2234b16ffb1cb3fa4a44.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png deleted file mode 100644 index 948f427..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png.import deleted file mode 100644 index f6d4414..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effect3 Gameboy Spritesheet.png-03385f7707a3c62fb8cba0c990d78d52.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effect3 Gameboy Spritesheet.png" -dest_files=[ "res://.import/Effect3 Gameboy Spritesheet.png-03385f7707a3c62fb8cba0c990d78d52.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png deleted file mode 100644 index 7e81424..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png.import deleted file mode 100644 index 6c4f167..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effect4 Gameboy Spritesheet.png-d956c077e872dfa01eec98b837fca939.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effect4 Gameboy Spritesheet.png" -dest_files=[ "res://.import/Effect4 Gameboy Spritesheet.png-d956c077e872dfa01eec98b837fca939.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png b/resource/sprite/package/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png deleted file mode 100644 index 01a154e..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png +++ /dev/null Binary files differ diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png.import b/resource/sprite/package/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png.import deleted file mode 100644 index e6b606f..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Effectst2 Gameboy Spritesheet.png-d088873c0f29ba2629a8958aa9e6e0b3.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/package/itch-io-pixel-battle-effects/Effectst2 Gameboy Spritesheet.png" -dest_files=[ "res://.import/Effectst2 Gameboy Spritesheet.png-d088873c0f29ba2629a8958aa9e6e0b3.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/package/itch-io-pixel-battle-effects/website.txt b/resource/sprite/package/itch-io-pixel-battle-effects/website.txt deleted file mode 100644 index 84a24d0..0000000 --- a/resource/sprite/package/itch-io-pixel-battle-effects/website.txt +++ /dev/null @@ -1 +0,0 @@ -https://pimen.itch.io/pixel-battle-effects \ No newline at end of file diff --git a/resource/sprite/role/role1.png b/resource/sprite/role/role1.png deleted file mode 100644 index 1418340..0000000 --- a/resource/sprite/role/role1.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role1.png.import b/resource/sprite/role/role1.png.import deleted file mode 100644 index 96acdd6..0000000 --- a/resource/sprite/role/role1.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role1.png-958d620452f56d0f9929cebb052b8bfc.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role1.png" -dest_files=[ "res://.import/role1.png-958d620452f56d0f9929cebb052b8bfc.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role10.png b/resource/sprite/role/role10.png deleted file mode 100644 index 6268724..0000000 --- a/resource/sprite/role/role10.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role10.png.import b/resource/sprite/role/role10.png.import deleted file mode 100644 index cd3ee95..0000000 --- a/resource/sprite/role/role10.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role10.png-9a8cf4092702d6dfcf1fa580c736c7da.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role10.png" -dest_files=[ "res://.import/role10.png-9a8cf4092702d6dfcf1fa580c736c7da.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role2.png b/resource/sprite/role/role2.png deleted file mode 100644 index 60cd623..0000000 --- a/resource/sprite/role/role2.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role2.png.import b/resource/sprite/role/role2.png.import deleted file mode 100644 index 4424f29..0000000 --- a/resource/sprite/role/role2.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role2.png-2684720cd846f0db30590472914d73a4.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role2.png" -dest_files=[ "res://.import/role2.png-2684720cd846f0db30590472914d73a4.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role3.png b/resource/sprite/role/role3.png deleted file mode 100644 index 802b0bf..0000000 --- a/resource/sprite/role/role3.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role3.png.import b/resource/sprite/role/role3.png.import deleted file mode 100644 index 896d073..0000000 --- a/resource/sprite/role/role3.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role3.png-03fa3f4e21f02035205dd8b89a4b74a0.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role3.png" -dest_files=[ "res://.import/role3.png-03fa3f4e21f02035205dd8b89a4b74a0.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role4.png b/resource/sprite/role/role4.png deleted file mode 100644 index 72031be..0000000 --- a/resource/sprite/role/role4.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role4.png.import b/resource/sprite/role/role4.png.import deleted file mode 100644 index f46acd3..0000000 --- a/resource/sprite/role/role4.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role4.png-59aa7b55db9715bdc94a3da6125357f1.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role4.png" -dest_files=[ "res://.import/role4.png-59aa7b55db9715bdc94a3da6125357f1.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role5.png b/resource/sprite/role/role5.png deleted file mode 100644 index a21325b..0000000 --- a/resource/sprite/role/role5.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role5.png.import b/resource/sprite/role/role5.png.import deleted file mode 100644 index 4df8a38..0000000 --- a/resource/sprite/role/role5.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role5.png-b1d13e0fab109f267ed1aea30db9f6ca.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role5.png" -dest_files=[ "res://.import/role5.png-b1d13e0fab109f267ed1aea30db9f6ca.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role6.png b/resource/sprite/role/role6.png deleted file mode 100644 index 0b5d02d..0000000 --- a/resource/sprite/role/role6.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role6.png.import b/resource/sprite/role/role6.png.import deleted file mode 100644 index abf2696..0000000 --- a/resource/sprite/role/role6.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role6.png-3a0c7af11a450a3f019259d4981c6722.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role6.png" -dest_files=[ "res://.import/role6.png-3a0c7af11a450a3f019259d4981c6722.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role7.png b/resource/sprite/role/role7.png deleted file mode 100644 index a7846a4..0000000 --- a/resource/sprite/role/role7.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role7.png.import b/resource/sprite/role/role7.png.import deleted file mode 100644 index 86a14f8..0000000 --- a/resource/sprite/role/role7.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role7.png-e169f92ca4e11ffdfafe149a3858e615.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role7.png" -dest_files=[ "res://.import/role7.png-e169f92ca4e11ffdfafe149a3858e615.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role8.png b/resource/sprite/role/role8.png deleted file mode 100644 index 6dc6f6b..0000000 --- a/resource/sprite/role/role8.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role8.png.import b/resource/sprite/role/role8.png.import deleted file mode 100644 index cfce4fb..0000000 --- a/resource/sprite/role/role8.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role8.png-82555aa265153047151369411ccedf05.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role8.png" -dest_files=[ "res://.import/role8.png-82555aa265153047151369411ccedf05.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/role/role9.png b/resource/sprite/role/role9.png deleted file mode 100644 index 111f8c3..0000000 --- a/resource/sprite/role/role9.png +++ /dev/null Binary files differ diff --git a/resource/sprite/role/role9.png.import b/resource/sprite/role/role9.png.import deleted file mode 100644 index b6bdadb..0000000 --- a/resource/sprite/role/role9.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/role9.png-1ee32c9bfcfb8679171718810a357e09.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/role/role9.png" -dest_files=[ "res://.import/role9.png-1ee32c9bfcfb8679171718810a357e09.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/shell/shellCase.aseprite b/resource/sprite/shell/shellCase.aseprite deleted file mode 100644 index fe6c181..0000000 --- a/resource/sprite/shell/shellCase.aseprite +++ /dev/null Binary files differ diff --git a/resource/sprite/shell/shellCase.png b/resource/sprite/shell/shellCase.png deleted file mode 100644 index 7a926c6..0000000 --- a/resource/sprite/shell/shellCase.png +++ /dev/null Binary files differ diff --git a/resource/sprite/shell/shellCase.png.import b/resource/sprite/shell/shellCase.png.import deleted file mode 100644 index b4b5232..0000000 --- a/resource/sprite/shell/shellCase.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/shellCase.png-4975fbe4d212e558e86355116ac96ab2.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/shell/shellCase.png" -dest_files=[ "res://.import/shellCase.png-4975fbe4d212e558e86355116ac96ab2.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/resource/sprite/ui/GUI.png b/resource/sprite/ui/GUI.png deleted file mode 100644 index c502477..0000000 --- a/resource/sprite/ui/GUI.png +++ /dev/null Binary files differ diff --git a/resource/sprite/ui/GUI.png.import b/resource/sprite/ui/GUI.png.import deleted file mode 100644 index ea31aab..0000000 --- a/resource/sprite/ui/GUI.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/GUI.png-56ce605f877ce7100610e88d3451eb06.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/ui/GUI.png" -dest_files=[ "res://.import/GUI.png-56ce605f877ce7100610e88d3451eb06.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=false -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 -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/scene/Room.tscn b/scene/Room.tscn deleted file mode 100644 index 4e72eca..0000000 --- a/scene/Room.tscn +++ /dev/null @@ -1,35 +0,0 @@ -[gd_scene load_steps=6 format=2] - -[ext_resource path="res://prefab/role/Player.tscn" type="PackedScene" id=1] -[ext_resource path="res://resource/map/dungeon_test.tmx" type="PackedScene" id=2] -[ext_resource path="res://src/room/RoomManager.cs" type="Script" id=3] -[ext_resource path="res://prefab/ui/Cursor.tscn" type="PackedScene" id=4] -[ext_resource path="res://src/camera/MainCamera.cs" type="Script" id=5] - -[node name="Room" type="Node2D"] -script = ExtResource( 3 ) -MouseCursor = ExtResource( 4 ) -UIPath = NodePath("") - -[node name="MapRoot" type="Node2D" parent="."] -z_index = -10 - -[node name="dungeon_test" parent="MapRoot" instance=ExtResource( 2 )] - -[node name="Camera2D" type="Camera2D" parent="."] -position = Vector2( 196, 128 ) -current = true -process_mode = 0 -smoothing_enabled = true -smoothing_speed = 8.0 -script = ExtResource( 5 ) - -[node name="ObjectRoot" type="Node2D" parent="."] - -[node name="ItemRoot" type="YSort" parent="."] - -[node name="Player" parent="ItemRoot" instance=ExtResource( 1 )] -position = Vector2( 196, 128 ) - -[node name="RemoteTransform2D" type="RemoteTransform2D" parent="ItemRoot/Player"] -remote_path = NodePath("../../../Camera2D") diff --git a/scene/TestNavigation.tscn b/scene/TestNavigation.tscn deleted file mode 100644 index 7a12f1f..0000000 --- a/scene/TestNavigation.tscn +++ /dev/null @@ -1,76 +0,0 @@ -[gd_scene load_steps=8 format=2] - -[ext_resource path="res://src/TestNavigation.cs" type="Script" id=1] -[ext_resource path="res://icon.png" type="Texture" id=2] -[ext_resource path="res://resource/sprite/package/craftpix-net-248911/16x16.png" type="Texture" id=3] - -[sub_resource type="NavigationPolygon" id=2] -vertices = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) -polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] - -[sub_resource type="TileSet" id=3] -0/name = "16x16.png 0" -0/texture = ExtResource( 3 ) -0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 1, 1, 1, 1 ) -0/region = Rect2( 0, 0, 16, 16 ) -0/tile_mode = 0 -0/occluder_offset = Vector2( 0, 0 ) -0/navigation_offset = Vector2( 0, 0 ) -0/navigation = SubResource( 2 ) -0/shape_offset = Vector2( 0, 0 ) -0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -0/shape_one_way = false -0/shape_one_way_margin = 0.0 -0/shapes = [ ] -0/z_index = 0 - -[sub_resource type="NavigationPolygon" id=4] -vertices = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) -polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] - -[sub_resource type="TileSet" id=5] -0/name = "16x16.png 0" -0/texture = ExtResource( 3 ) -0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 1, 1, 1, 1 ) -0/region = Rect2( 32, 0, 16, 16 ) -0/tile_mode = 0 -0/occluder_offset = Vector2( 0, 0 ) -0/navigation_offset = Vector2( 0, 0 ) -0/navigation = SubResource( 4 ) -0/shape_offset = Vector2( 0, 0 ) -0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -0/shape_one_way = false -0/shape_one_way_margin = 0.0 -0/shapes = [ ] -0/z_index = 0 - -[node name="TestNavigation" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Position2D" type="Position2D" parent="."] -z_index = -3 - -[node name="Navigation2D" type="Navigation2D" parent="Position2D"] - -[node name="Node2D" type="Node2D" parent="Position2D/Navigation2D"] - -[node name="TileMap" type="TileMap" parent="Position2D/Navigation2D/Node2D"] -tile_set = SubResource( 3 ) -cell_size = Vector2( 16, 16 ) -format = 1 -tile_data = PoolIntArray( 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327699, 0, 0, 327700, 0, 0, 327701, 0, 0, 327702, 0, 0, 327703, 0, 0, 327704, 0, 0, 327705, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393235, 0, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 0, 393240, 0, 0, 393241, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458771, 0, 0, 458772, 0, 0, 458773, 0, 0, 458774, 0, 0, 458775, 0, 0, 458776, 0, 0, 458777, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524307, 0, 0, 524308, 0, 0, 524309, 0, 0, 524310, 0, 0, 524311, 0, 0, 524312, 0, 0, 524313, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589843, 0, 0, 589844, 0, 0, 589845, 0, 0, 589846, 0, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655379, 0, 0, 655380, 0, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 0, 0, 720907, 0, 0, 720908, 0, 0, 720909, 0, 0, 720915, 0, 0, 720916, 0, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 720923, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0, 786452, 0, 0, 786453, 0, 0, 786454, 0, 0, 786455, 0, 0, 786456, 0, 0, 786457, 0, 0, 786458, 0, 0, 786459, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 851988, 0, 0, 851989, 0, 0, 851990, 0, 0, 851991, 0, 0, 851992, 0, 0, 851993, 0, 0, 851994, 0, 0, 851995, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 0, 0, 917523, 0, 0, 917524, 0, 0, 917525, 0, 0, 917526, 0, 0, 917527, 0, 0, 917528, 0, 0, 917529, 0, 0, 917530, 0, 0, 917531, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 0, 0, 983056, 0, 0, 983057, 0, 0, 983058, 0, 0, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0 ) - -[node name="Node2D2" type="Node2D" parent="Position2D/Navigation2D"] - -[node name="TileMap" type="TileMap" parent="Position2D/Navigation2D/Node2D2"] -tile_set = SubResource( 5 ) -cell_size = Vector2( 16, 16 ) -format = 1 -tile_data = PoolIntArray( 131088, 0, 0, 131089, 0, 0, 131090, 0, 0, 131091, 0, 0, 131092, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 196628, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262164, 0, 0, 327692, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0 ) - -[node name="Sprite" type="Sprite" parent="Position2D"] -position = Vector2( 33, 32 ) -scale = Vector2( 0.2, 0.2 ) -texture = ExtResource( 2 ) diff --git a/src/AnimatorNames.cs b/src/AnimatorNames.cs deleted file mode 100644 index 5645333..0000000 --- a/src/AnimatorNames.cs +++ /dev/null @@ -1,7 +0,0 @@ - -public static class AnimatorNames -{ - public static readonly string Idle = "idle"; - public static readonly string Run = "run"; - public static readonly string ReverseRun = "reverseRun"; -} \ No newline at end of file diff --git a/src/GameConfig.cs b/src/GameConfig.cs deleted file mode 100644 index 91ebe06..0000000 --- a/src/GameConfig.cs +++ /dev/null @@ -1,12 +0,0 @@ - -public static class GameConfig -{ - /// - /// 散射计算的默认距离 - /// - public static readonly float ScatteringDistance = 300; - /// - /// 重力加速度 - /// - public static readonly float G = 250f; -} \ No newline at end of file diff --git a/src/Pack.cs b/src/Pack.cs deleted file mode 100644 index a85287a..0000000 --- a/src/Pack.cs +++ /dev/null @@ -1,12 +0,0 @@ - -// public class Pack -// { -// public uint Size { get; private set; } - -// public Pack(uint size) -// { -// Size = size; -// } - - -// } \ No newline at end of file diff --git a/src/TestNavigation.cs b/src/TestNavigation.cs deleted file mode 100644 index 16ededf..0000000 --- a/src/TestNavigation.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Godot; - -public class TestNavigation : Node2D -{ - - private Navigation2D Navigation2D; - private Vector2[] points = new Vector2[0]; - - public override void _Ready() - { - Navigation2D = GetNode("Position2D/Navigation2D"); - } - - public override void _Input(InputEvent @event) - { - if (@event is InputEventMouseButton ieb) { - if (ieb.ButtonIndex == (int)ButtonList.Left && ieb.Pressed) - { - points = Navigation2D.GetSimplePath(Vector2.Zero, Navigation2D.ToLocal(ieb.Position)); - Update(); - string str = ""; - foreach (var item in points) - { - str += item; - } - GD.Print("路径: " + points.Length + ", " + str); - } - } - } - public override void _Draw() - { - if (points.Length >= 2) { - GD.Print("绘制线段..."); - DrawPolyline(points, Colors.Red); - // DrawMultiline(points, Colors.Red); - } - } - -} \ No newline at end of file diff --git a/src/camera/MainCamera.cs b/src/camera/MainCamera.cs deleted file mode 100644 index 8f97587..0000000 --- a/src/camera/MainCamera.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System.Collections.Generic; -using Godot; - -public class MainCamera : Camera2D -{ - /// - /// 当前场景的相机对象 - /// - public static MainCamera Main { get; private set; } - - /// - /// 恢复系数 - /// - [Export] - public float RecoveryCoefficient = 100f; - /// - /// 抖动开关 - /// - public bool Enable { get; set; } = true; - - private long _index = 0; - private Vector2 _prossesDistance = Vector2.Zero; - private Vector2 _prossesDirectiona = Vector2.Zero; - private readonly Dictionary _shakeMap = new Dictionary(); - - public override void _Ready() - { - Main = this; - } - public override void _PhysicsProcess(float delta) - { - _Shake(delta); - } - - /// - /// 设置帧抖动, 结束后自动清零, 需要每一帧调用 - /// - /// 抖动的力度 - public void ProssesShake(Vector2 value) - { - if (value.Length() > _prossesDistance.Length()) - { - _prossesDistance = value; - } - } - - public void ProssesDirectionalShake(Vector2 value) - { - _prossesDirectiona += value; - } - - /// - /// 创建一个抖动, 并设置抖动时间 - /// - /// 抖动力度 - /// 抖动生效时间 - public async void CreateShake(Vector2 value, float time) - { - if (time > 0) - { - long tempIndex = _index++; - SceneTreeTimer sceneTreeTimer = GetTree().CreateTimer(time); - _shakeMap[tempIndex] = value; - await ToSignal(sceneTreeTimer, "timeout"); - _shakeMap.Remove(tempIndex); - } - } - - //抖动调用 - private void _Shake(float delta) - { - if (Enable) - { - var _distance = _CalculateDistance(); - Offset += new Vector2( - (float)GD.RandRange(-_distance.x, _distance.x) - Offset.x, - (float)GD.RandRange(-_distance.y, _distance.y) - Offset.y - ); - Offset += _prossesDirectiona; - _prossesDistance = Vector2.Zero; - _prossesDirectiona = Vector2.Zero; - } - else - { - Offset = Offset.LinearInterpolate(Vector2.Zero, RecoveryCoefficient * delta); - } - } - - //计算相机需要抖动的值 - private Vector2 _CalculateDistance() - { - Vector2 temp = Vector2.Zero; - float length = 0; - foreach (var item in _shakeMap) - { - var value = item.Value; - float tempLenght = value.Length(); - if (tempLenght > length) - { - length = tempLenght; - temp = value; - } - } - return _prossesDistance.Length() > length ? _prossesDistance : temp; - } - -} diff --git a/src/effect/Cursor.cs b/src/effect/Cursor.cs deleted file mode 100644 index 06f6894..0000000 --- a/src/effect/Cursor.cs +++ /dev/null @@ -1,60 +0,0 @@ -using Godot; - -/// -/// 鼠标指针 -/// -public class Cursor : Node2D -{ - - private Sprite lt; - private Sprite lb; - private Sprite rt; - private Sprite rb; - - public override void _Ready() - { - lt = GetNode("LT"); - lb = GetNode("LB"); - rt = GetNode("RT"); - rb = GetNode("RB"); - } - - public override void _Process(float delta) - { - var targetGun = RoomManager.Current?.Player?.Holster.ActiveGun; - if (targetGun != null) - { - SetScope(targetGun.CurrScatteringRange, targetGun); - } - else - { - SetScope(0, targetGun); - } - SetCursorPos(); - } - - /// - /// 设置光标半径范围 - /// - private void SetScope(float scope, Gun targetGun) - { - if (targetGun != null) - { - var len = GlobalPosition.DistanceTo(targetGun.GlobalPosition); - if (targetGun.Attribute != null) - { - len = Mathf.Max(0, len - targetGun.Attribute.FirePosition.x); - } - scope = len / GameConfig.ScatteringDistance * scope; - } - lt.Position = new Vector2(-scope, -scope); - lb.Position = new Vector2(-scope, scope); - rt.Position = new Vector2(scope, -scope); - rb.Position = new Vector2(scope, scope); - } - - private void SetCursorPos() - { - Position = GetGlobalMousePosition(); - } -} \ No newline at end of file diff --git a/src/effect/Hit.cs b/src/effect/Hit.cs deleted file mode 100644 index 99b4b4d..0000000 --- a/src/effect/Hit.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Godot; - -public class Hit : AnimatedSprite -{ - - public override void _Ready() - { - Frame = 0; - Playing = true; - } - - /// - /// 动画结束, 销毁 - /// - private void _on_Hit_animation_finished() - { - QueueFree(); - } -} \ No newline at end of file diff --git a/src/effect/ThrowNode.cs b/src/effect/ThrowNode.cs deleted file mode 100644 index 882a718..0000000 --- a/src/effect/ThrowNode.cs +++ /dev/null @@ -1,208 +0,0 @@ -using System; -using Godot; - -/// -/// 模拟抛出的物体, 使用时将对象挂载到该节点上即可 -/// -public class ThrowNode : KinematicBody2D -{ - /// - /// 是否已经结束 - /// - /// - public bool IsOver { get; protected set; } = true; - /// - /// 物体大小 - /// - public Vector2 Size { get; protected set; } - /// - /// 起始坐标 - /// - public Vector2 StartPosition { get; protected set; } - /// - /// 移动方向, 0 - 360 - /// - /// - public float Direction { get; protected set; } - /// - /// x速度, 也就是水平速度 - /// - public float XSpeed { get; protected set; } - /// - /// y轴速度, 也就是竖直速度 - /// - /// - public float YSpeed { get; protected set; } - /// - /// 初始x轴组队 - /// - /// - public float StartXSpeed { get; protected set; } - /// - /// 初始y轴速度 - /// - public float StartYSpeed { get; protected set; } - /// - /// 旋转速度 - /// - public float RotateSpeed { get; protected set; } - /// - /// 挂载的对象 - /// - public Node2D Mount { get; protected set; } - /// - /// 碰撞组件 - /// - /// - public CollisionShape2D CollisionShape { get; protected set; } - /// - /// 绘制阴影的精灵 - /// - public Sprite ShadowSprite { get; protected set; } - - protected Sprite ShadowTarget { get; set; } - - private bool inversionX = false; - - public override void _Ready() - { - //只与墙壁碰撞 - CollisionMask = 1; - CollisionLayer = 0; - //创建碰撞器 - CollisionShape = new CollisionShape2D(); - var shape = new RectangleShape2D(); - shape.Extents = Size * 0.5f; - CollisionShape.Shape = shape; - AddChild(CollisionShape); - } - - /// - /// 初始化该抛物线对象的基础数据 - /// - /// 抛射的物体所占大小, 用于碰撞检测 - /// 起始点 - /// 起始高度 - /// 角度, 0 - 360 - /// 横轴速度 - /// 纵轴速度 - /// 旋转速度 - /// 需要挂载的节点 - /// 抛射的节点显示的纹理, 用于渲染阴影用 - public void InitThrow(Vector2 size, Vector2 start, float startHeight, float direction, float xSpeed, float ySpeed, float rotate, Node2D mount) - { - if (CollisionShape != null) - { - CollisionShape.Disabled = false; - } - - IsOver = false; - Size = size; - GlobalPosition = StartPosition = start; - Direction = direction; - XSpeed = xSpeed; - YSpeed = ySpeed; - StartXSpeed = xSpeed; - StartYSpeed = ySpeed; - RotateSpeed = rotate; - - if (mount != null) - { - Mount = mount; - AddChild(mount); - mount.Position = new Vector2(0, -startHeight); - } - } - - /// - /// 初始化该抛物线对象的基础数据, 并且渲染阴影 - /// - /// 抛射的物体所占大小, 用于碰撞检测 - /// 起始点 - /// 起始高度 - /// 角度, 0 - 360 - /// 横轴速度 - /// 纵轴速度 - /// 旋转速度 - /// 需要挂载的节点 - /// 抛射的节点显示的纹理, 用于渲染阴影用 - public void InitThrow(Vector2 size, Vector2 start, float startHeight, float direction, float xSpeed, float ySpeed, float rotate, Node2D mount, Sprite shadowTarget) - { - InitThrow(size, start, startHeight, direction, xSpeed, ySpeed, rotate, mount); - ShadowTarget = shadowTarget; - if (shadowTarget != null) - { - if (ShadowSprite == null) - { - //阴影 - ShadowSprite = new Sprite(); - ShadowSprite.ZIndex = -5; - ShadowSprite.Material = ResourceManager.ShadowMaterial; - AddChild(ShadowSprite); - } - inversionX = mount.Scale.y < 0 ? true : false; - if (inversionX) - { - ShadowSprite.Scale = shadowTarget.Scale * new Vector2(1, -1); - } - else - { - ShadowSprite.Scale = shadowTarget.Scale; - } - ShadowSprite.Texture = shadowTarget.Texture; - } - else if (ShadowSprite != null) - { - ShadowSprite.Texture = null; - } - } - - /// - /// 达到最高点时调用 - /// - protected virtual void OnMaxHeight(float height) - { - - } - - /// - /// 结束的调用 - /// - protected virtual void OnOver() - { - - } - - public override void _Process(float delta) - { - if (!IsOver) - { - MoveAndSlide(new Vector2(XSpeed, 0).Rotated(Direction * Mathf.Pi / 180)); - Mount.Position = new Vector2(0, Mount.Position.y - YSpeed * delta); - var rotate = Mount.GlobalRotationDegrees + RotateSpeed * delta; - Mount.GlobalRotationDegrees = rotate; - if (ShadowSprite != null) - { - ShadowSprite.GlobalRotationDegrees = rotate; - // ShadowSprite.GlobalRotationDegrees = rotate + (inversionX ? 180 : 0); - ShadowSprite.GlobalPosition = ShadowTarget.GlobalPosition + new Vector2(0, 1 - Mount.Position.y); - } - var ysp = YSpeed; - YSpeed -= GameConfig.G * delta; - //达到最高点 - if (ysp * YSpeed < 0) - { - OnMaxHeight(-Mount.Position.y); - } - //落地判断 - if (Mount.Position.y >= 0) - { - Mount.Position = new Vector2(0, 0); - IsOver = true; - CollisionShape.Disabled = true; - OnOver(); - } - } - } - -} \ No newline at end of file diff --git a/src/manager/GameManager.cs b/src/manager/GameManager.cs deleted file mode 100644 index 29d3962..0000000 --- a/src/manager/GameManager.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Godot; - -/// -/// 游戏主管理器, 自动加载 -/// -public class GameManager : Node2D -{ - public static GameManager Instance { get; private set; } - public GameManager() - { - GameManager.Instance = this; - } -} \ No newline at end of file diff --git a/src/manager/ResourceManager.cs b/src/manager/ResourceManager.cs deleted file mode 100644 index 83f9688..0000000 --- a/src/manager/ResourceManager.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System.Collections.Generic; -using Godot; - -public static class ResourceManager -{ - - /// - /// 2D阴影的材质 - /// - public static ShaderMaterial ShadowMaterial - { - get - { - if (_shadowMaterial == null) - { - _shadowMaterial = ResourceLoader.Load("res://resource/materlal/Shadow.tres"); - } - return _shadowMaterial; - } - } - private static ShaderMaterial _shadowMaterial; - - /// - /// 2D阴影的Shader - /// - public static Shader ShadowShader - { - get - { - if (_shadowShader == null) - { - _shadowShader = ResourceLoader.Load("res://resource/materlal/Shadow.gdshader"); - } - return _shadowShader; - } - } - private static Shader _shadowShader; - - private static readonly Dictionary CachePack = new Dictionary(); - - /// - /// 加载资源对象, 并且缓存当前资源对象, 可频繁获取 - /// - /// 资源路径 - public static T Load(string path) where T : class - { - if (CachePack.TryGetValue(path, out var pack)) - { - return (T)pack; - } - else - { - pack = ResourceLoader.Load(path); - if (pack != null) - { - CachePack.Add(path, pack); - return (T)pack; - } - } - return default(T); - } - - /// - /// 加载并实例化一个武器对象 - /// - /// 资源路径 - public static Gun LoadGunAndInstance(string path) - { - var pack = Load(path); - if (pack != null) - { - return pack.Instance(); - } - return null; - } - -} \ No newline at end of file diff --git a/src/manager/SoundManager.cs b/src/manager/SoundManager.cs deleted file mode 100644 index 2cf4f34..0000000 --- a/src/manager/SoundManager.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System; -using Godot; - -/// -/// 音频总线 区分不同的声音 添加声音效果 目前只有背景音乐 和音效 两个bus -/// -public enum BUS -{ - BGM = 0, - SFX = 1 -} - -/// -/// 声音管理 背景音乐管理 音效 -/// -public class SoundManager -{ - public static SoundManager Instance { get => SingleTon.singleTon; } - - private static class SingleTon - { - internal static SoundManager singleTon = new SoundManager(); - } - - private static AudioStreamPlayer audioStreamPlayer = new AudioStreamPlayer(); - - - /// - /// 背景音乐路径 - /// - public static string BGMPath = "res://resource/sound/bgm/"; - /// - /// 音效路径 - /// - public static string SFXPath = "res://resource/sound/sfx/"; - - /// - /// 播放声音 用于bgm - /// - /// bgm名字 在resource/sound/bgm/目录下 - /// 需要播放声音得节点 将成为音频播放节点的父节点 - /// 音量 - public static void PlayeMusic(string soundName, Node node, float volume) - { - AudioStream sound = ResourceManager.Load(BGMPath + soundName); - if (sound != null) - { - AudioStreamPlayer soundNode = new AudioStreamPlayer(); - node.AddChild(soundNode); - soundNode.Stream = sound; - soundNode.Bus = Enum.GetName(typeof(BUS), 0); - soundNode.VolumeDb = volume; - soundNode.Play(); - } - else - { - GD.Print("没有这个资源!!!"); - } - } - /// - /// 添加并播放音效 用于音效 - /// - /// 音效文件名字 在resource/sound/sfx/目录下 - /// 需要播放声音得节点 将成为音频播放节点的父节点 - /// 音量 - public static void PlaySoundEffect(string soundName, Node node, float volume = 0f) - { - AudioStream sound = ResourceManager.Load(SFXPath + soundName); - if (sound != null) - { - AudioStreamPlayer soundNode = new AudioStreamPlayer(); - node.AddChild(soundNode); - soundNode.Stream = sound; - soundNode.Bus = Enum.GetName(typeof(BUS), 1); - soundNode.VolumeDb = volume; - soundNode.Play(); - GD.Print("bus:", soundNode.Bus); - } - else - { - GD.Print("没有这个资源!!!"); - } - } -} \ No newline at end of file diff --git a/src/package/Holster.cs b/src/package/Holster.cs deleted file mode 100644 index 1c77cbf..0000000 --- a/src/package/Holster.cs +++ /dev/null @@ -1,227 +0,0 @@ -using Godot; - -/// -/// 角色身上的枪套, 存储角色携带的武器 -/// -public class Holster -{ - /// - /// 插槽类 - /// - public class GunSlot - { - /// - /// 是否启用 - /// - public bool Enable = false; - /// - /// 当前插槽存放的武器类型 - /// - public GunWeightType Type = GunWeightType.MainWeapon; - /// - /// 插槽存放的武器 - /// - public Gun Gun; - } - - /// - /// 归属者 - /// - public Role Master { get; } - - /// - /// 当前使用的武器对象 - /// - public Gun ActiveGun { get; private set; } - - /// - /// 当前使用的武器的索引 - /// - public int ActiveIndex { get; private set; } = 0; - - public GunSlot[] SlotList { get; } = new GunSlot[4]; - - public Holster(Role master) - { - Master = master; - - //创建枪的插槽, 默认前两个都是启用的 - GunSlot slot1 = new GunSlot(); - slot1.Enable = true; - SlotList[0] = slot1; - - GunSlot slot2 = new GunSlot(); - slot2.Enable = true; - slot2.Type = GunWeightType.DeputyWeapon; - SlotList[1] = slot2; - - GunSlot slot3 = new GunSlot(); - SlotList[2] = slot3; - - GunSlot slot4 = new GunSlot(); - slot4.Type = GunWeightType.DeputyWeapon; - SlotList[3] = slot4; - } - - /// - /// 拾起武器, 存入枪套中, 返回存放在枪套的位置, 如果容不下这把武器, 则会返回 -1 - /// - /// 武器对象 - public int PickupGun(Gun gun) - { - for (int i = 0; i < SlotList.Length; i++) - { - var item = SlotList[i]; - if (item.Enable && gun.Attribute.WeightType == item.Type && item.Gun == null) - { - item.Gun = gun; - ExchangeByIndex(i); - gun._PickUpGun(Master); - return i; - } - } - GD.PrintErr("存入武器失败!"); - return -1; - } - - /// - /// 移除指定位置的武器, 并返回这个武器对象, 如果移除正在使用的这把武器, 则会自动切换到上一把武器 - /// - /// 所在枪套的位置索引 - public Gun RmoveGun(int index) - { - if (index < 0 || index >= SlotList.Length) - { - return null; - } - var slot = SlotList[index]; - if (slot.Gun == null) - { - return null; - } - var gun = slot.Gun; - gun.GetParent().RemoveChild(gun); - slot.Gun = null; - - //如果是当前手持的武器, 就需要调用切换武器操作 - if (index == ActiveIndex) - { - //没有其他武器了 - if (ExchangePrev() == index) - { - ActiveIndex = 0; - ActiveGun = null; - } - } - gun._ThrowOutGun(); - return gun; - } - - /// - /// 切换到上一个武器 - /// - public int ExchangePrev() - { - var index = ActiveIndex - 1; - do - { - if (index < 0) - { - index = SlotList.Length - 1; - } - if (ExchangeByIndex(index)) - { - return index; - } - } while (index-- != ActiveIndex); - return -1; - } - - /// - /// 切换到下一个武器, - /// - public int ExchangeNext() - { - var index = ActiveIndex + 1; - do - { - if (index >= SlotList.Length) - { - index = 0; - } - if (ExchangeByIndex(index)) - { - return index; - } - } - while (index++ != ActiveIndex); - return -1; - } - - /// - /// 切换到指定索引的武器 - /// - public bool ExchangeByIndex(int index) - { - if (index == ActiveIndex && ActiveGun != null) return true; - if (index < 0 || index > SlotList.Length) return false; - var slot = SlotList[index]; - if (slot == null || slot.Gun == null) return false; - - //将上一把武器放到背后 - if (ActiveGun != null) - { - var tempParent = ActiveGun.GetParentOrNull(); - if (tempParent != null) - { - tempParent.RemoveChild(ActiveGun); - Master.BackMountPoint.AddChild(ActiveGun); - if (ActiveIndex == 0) - { - ActiveGun.Position = new Vector2(0, 5); - ActiveGun.RotationDegrees = 50; - ActiveGun.Scale = new Vector2(-1, 1); - } - else if (ActiveIndex == 1) - { - ActiveGun.Position = new Vector2(0, 0); - ActiveGun.RotationDegrees = 120; - ActiveGun.Scale = new Vector2(1, -1); - } - else if (ActiveIndex == 2) - { - ActiveGun.Position = new Vector2(0, 5); - ActiveGun.RotationDegrees = 310; - ActiveGun.Scale = new Vector2(1, 1); - } - else if (ActiveIndex == 3) - { - ActiveGun.Position = new Vector2(0, 0); - ActiveGun.RotationDegrees = 60; - ActiveGun.Scale = new Vector2(1, 1); - } - ActiveGun._Conceal(); - } - } - - //更改父节点 - var parent = slot.Gun.GetParentOrNull(); - if (parent == null) - { - Master.MountPoint.AddChild(slot.Gun); - } - else if (parent != Master.MountPoint) - { - parent.RemoveChild(slot.Gun); - Master.MountPoint.AddChild(slot.Gun); - } - - slot.Gun.Position = Vector2.Zero; - slot.Gun.Scale = Vector2.One; - slot.Gun.RotationDegrees = 0; - ActiveGun = slot.Gun; - ActiveIndex = index; - ActiveGun._Active(); - return true; - } -} diff --git a/src/props/IProp.cs b/src/props/IProp.cs deleted file mode 100644 index e7b1932..0000000 --- a/src/props/IProp.cs +++ /dev/null @@ -1,12 +0,0 @@ - -/// -/// 道具接口 -/// -public interface IProp -{ - /// - /// 与角色互动时调用 - /// - /// 触发者 - void Tnteractive(Role master); -} \ No newline at end of file diff --git a/src/role/CampEnum.cs b/src/role/CampEnum.cs deleted file mode 100644 index afe6f3b..0000000 --- a/src/role/CampEnum.cs +++ /dev/null @@ -1,8 +0,0 @@ - -public enum CampEnum -{ - // 友军 - Friend, - // 敌人 - Enemy -} \ No newline at end of file diff --git a/src/role/Player.cs b/src/role/Player.cs deleted file mode 100644 index d6ed468..0000000 --- a/src/role/Player.cs +++ /dev/null @@ -1,120 +0,0 @@ -using Godot; - -public class Player : Role -{ - /// - /// 移动加速度 - /// - public float Acceleration = 1500f; - - /// - /// 移动摩擦力 - /// - public float Friction = 800f; - /// - /// 移动速度 - /// - public Vector2 Velocity = Vector2.Zero; - - [Export] public PackedScene GunPrefab; - - public override void _EnterTree() - { - base._EnterTree(); - RoomManager.Current.Player = this; - } - - public override void _Ready() - { - base._Ready(); - Holster.SlotList[2].Enable = true; - Holster.SlotList[3].Enable = true; - PickUpGun(GunManager.GetGun1()); //0 - PickUpGun(GunManager.GetGun2()); //1 - PickUpGun(GunManager.GetGun3()); //2 - PickUpGun(GunManager.GetGun4()); //3 - } - - public override void _Process(float delta) - { - base._Process(delta); - - Vector2 mousePos = GetGlobalMousePosition(); - //枪口跟随鼠标 - MountPoint.LookAt(mousePos); - //脸的朝向 - if (mousePos.x > GlobalPosition.x && Face == FaceDirection.Left) - { - Face = FaceDirection.Right; - } - else if (mousePos.x < GlobalPosition.x && Face == FaceDirection.Right) - { - Face = FaceDirection.Left; - } - - if (Input.IsActionJustPressed("exchange")) //切换武器 - { - TriggerExchangeNext(); - } - else if (Input.IsActionJustPressed("throw")) //扔掉武器 - { - TriggerThrowGun(); - } - else if (Input.IsActionJustPressed("interactive")) //互动物体 - { - TriggerTnteractive(); - } - else if (Input.IsActionJustPressed("reload")) //换弹 - { - TriggerReload(); - } - if (Input.IsActionPressed("fire")) //开火 - { - TriggerAttack(); - } - } - - public override void _PhysicsProcess(float delta) - { - base._PhysicsProcess(delta); - Move(delta); - //播放动画 - PlayAnim(); - } - - private void Move(float delta) - { - //角色移动 - // 得到输入的 vector2 getvector方法返回值已经归一化过了noemalized - Vector2 dir = Input.GetVector("move_left", "move_right", "move_up", "move_down"); - // 移动. 如果移动的数值接近0(是用 摇杆可能出现 方向 可能会出现浮点),就fricition的值 插值 到 0 - // 如果 有输入 就以当前速度,用acceleration 插值到 对应方向 * 最大速度 - if (Mathf.IsZeroApprox(dir.x)) Velocity.x = Mathf.MoveToward(Velocity.x, 0, Friction * delta); - else Velocity.x = Mathf.MoveToward(Velocity.x, dir.x * MoveSpeed, Acceleration * delta); - - if (Mathf.IsZeroApprox(dir.y)) Velocity.y = Mathf.MoveToward(Velocity.y, 0, Friction * delta); - else Velocity.y = Mathf.MoveToward(Velocity.y, dir.y * MoveSpeed, Acceleration * delta); - - Velocity = MoveAndSlide(Velocity); - } - - // 播放动画 - private void PlayAnim() - { - if (Velocity != Vector2.Zero) - { - if ((Face == FaceDirection.Right && Velocity.x >= 0) || Face == FaceDirection.Left && Velocity.x <= 0) //向前走 - { - AnimatedSprite.Animation = AnimatorNames.Run; - } - else if ((Face == FaceDirection.Right && Velocity.x < 0) || Face == FaceDirection.Left && Velocity.x > 0) //向后走 - { - AnimatedSprite.Animation = AnimatorNames.ReverseRun; - } - } - else - { - AnimatedSprite.Animation = AnimatorNames.Idle; - } - } -} \ No newline at end of file diff --git a/src/role/Role.cs b/src/role/Role.cs deleted file mode 100644 index 335ba00..0000000 --- a/src/role/Role.cs +++ /dev/null @@ -1,240 +0,0 @@ -using System.Collections.Generic; -using Godot; - -/// -/// 脸的朝向 -/// -public enum FaceDirection -{ - Left, - Right, -} - -/// -/// 角色基类 -/// -public class Role : KinematicBody2D -{ - /// - /// 重写的纹理 - /// - [Export] public Texture Texture; - - /// - /// 移动速度 - /// - [Export] public float MoveSpeed = 150f; - - /// - /// 所属阵营 - /// - [Export] public CampEnum Camp; - - /// - /// 携带的道具包裹 - /// - public List PropsPack { get; } = new List(); - - /// - /// 角色携带的枪套 - /// - public Holster Holster { get; private set; } - - /// - /// 动画播放器 - /// - public AnimatedSprite AnimatedSprite { get; private set; } - /// - /// 武器挂载点 - /// - public Position2D MountPoint { get; private set; } - /// - /// 背后武器的挂载点 - /// - public Position2D BackMountPoint { get; private set; } - - /// - /// 脸的朝向 - /// - public FaceDirection Face { get => _face; set => SetFace(value); } - private FaceDirection _face; - - private Vector2 StartScele; - private readonly List InteractiveItemList = new List(); - - public override void _Ready() - { - StartScele = Scale; - AnimatedSprite = GetNode("AnimatedSprite"); - MountPoint = GetNode("MountPoint"); - BackMountPoint = GetNode("BackMountPoint"); - // 更改纹理 - ChangeFrameTexture(AnimatorNames.Idle, AnimatedSprite, Texture); - ChangeFrameTexture(AnimatorNames.Run, AnimatedSprite, Texture); - ChangeFrameTexture(AnimatorNames.ReverseRun, AnimatedSprite, Texture); - - Holster = new Holster(this); - Face = FaceDirection.Right; - } - - /// - /// 拾起一个武器, 并且切换到这个武器 - /// - /// 武器对象 - public void PickUpGun(Gun gun) - { - Holster.PickupGun(gun); - } - - /// - /// 切换到下一个武器 - /// - public void TriggerExchangeNext() - { - Holster.ExchangeNext(); - } - - /// - /// 切换到上一个武器 - /// - public void ExchangePrev() - { - Holster.ExchangePrev(); - } - - /// - /// 扔掉当前使用的武器, 切换到上一个武器 - /// - public void TriggerThrowGun() - { - var gun = Holster.RmoveGun(Holster.ActiveIndex); - //播放抛出效果 - if (gun != null) - { - if (Face == FaceDirection.Left) - { - gun.Scale *= new Vector2(1, -1); - gun.RotationDegrees = 180; - } - gun.Position = Vector2.Zero; - var temp = new ThrowGun(); - var startPos = GlobalPosition + new Vector2(0, 0); - var startHeight = 6; - var direction = GlobalRotationDegrees + MathUtils.RandRangeInt(-20, 20); - var xf = 30; - var yf = MathUtils.RandRangeInt(60, 120); - var rotate = MathUtils.RandRangeInt(-180, 180); - temp.InitThrow(new Vector2(20, 20), startPos, startHeight, direction, xf, yf, rotate, gun, gun.GunSprite); - RoomManager.Current.SortRoot.AddChild(temp); - } - } - - /// - /// 返回是否存在可互动的物体 - /// - public bool HasTnteractive() - { - return InteractiveItemList.Count > 0; - } - - /// - /// 触发与碰撞的物体互动 - /// - public void TriggerTnteractive() - { - if (HasTnteractive()) - { - var item = InteractiveItemList[InteractiveItemList.Count - 1]; - item.Tnteractive(this); - } - } - - /// - /// 触发换弹 - /// - public void TriggerReload() - { - if (Holster.ActiveGun != null) - { - Holster.ActiveGun._Reload(); - } - } - - /// - /// 触发攻击 - /// - public void TriggerAttack() - { - if (Holster.ActiveGun != null) - { - Holster.ActiveGun.Trigger(); - } - } - - /// - /// 设置脸的朝向 - /// - private void SetFace(FaceDirection face) - { - if (_face != face) - { - _face = face; - if (face == FaceDirection.Right) - { - RotationDegrees = 0; - Scale = StartScele; - } - else - { - RotationDegrees = 180; - Scale = new Vector2(StartScele.x, -StartScele.y); - } - } - } - - /// - /// 更改指定动画的纹理 - /// - private void ChangeFrameTexture(string anim, AnimatedSprite animatedSprite, Texture texture) - { - SpriteFrames spriteFrames = animatedSprite.Frames as SpriteFrames; - if (spriteFrames != null) - { - int count = spriteFrames.GetFrameCount(anim); - for (int i = 0; i < count; i++) - { - AtlasTexture temp = spriteFrames.GetFrame(anim, i) as AtlasTexture; - temp.Atlas = Texture; - } - } - } - - /// - /// 连接信号: InteractiveArea.area_entered - /// - private void _OnPropsEnter(Area2D other) - { - if (other is Gun gun) - { - if (!InteractiveItemList.Contains(gun)) - { - InteractiveItemList.Add(gun); - } - } - } - - /// - /// 连接信号: InteractiveArea.area_exited - /// - private void _OnPropsExit(Area2D other) - { - if (other is Gun gun) - { - if (InteractiveItemList.Contains(gun)) - { - InteractiveItemList.Remove(gun); - } - } - } - -} \ No newline at end of file diff --git a/src/room/RoomManager.cs b/src/room/RoomManager.cs deleted file mode 100644 index ff65623..0000000 --- a/src/room/RoomManager.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using Godot; - -/// -/// 房间管理器 -/// -public class RoomManager : Node2D -{ - /// - /// 鼠标指针 - /// - [Export] public PackedScene MouseCursor; - - [Export] public NodePath UIPath; - - public static RoomManager Current { get; private set; } - - public CanvasLayer UI; - public Cursor Cursor { get; private set; } - public Player Player { get; set; } - public Node2D ObjectRoot { get; private set; } - public YSort SortRoot { get; private set; } - - public override void _EnterTree() - { - Current = this; - Input.SetMouseMode(Input.MouseMode.Hidden); - // 初始化鼠标 - Cursor = MouseCursor.Instance(); - AddChild(Cursor); - - SortRoot = GetNode("ItemRoot"); - ObjectRoot = GetNode("ObjectRoot"); - - //初始化地图 - var node = GetNode("MapRoot").GetChild(0).GetNode("Config"); - Color color = (Color)node.GetMeta("ClearColor"); - VisualServer.SetDefaultClearColor(color); - } - - public override void _Ready() - { - SoundManager.PlayeMusic("intro.ogg", this, -17f); - } - - public override void _Process(float delta) - { - if (Input.IsActionJustPressed("fire")) - { - //CommonNodeManager.CreateThrowNode(); - } - } -} \ No newline at end of file diff --git a/src/ui/RoomUI.cs b/src/ui/RoomUI.cs deleted file mode 100644 index 2b5a2bf..0000000 --- a/src/ui/RoomUI.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Godot; - -public class RoomUI : Control -{ - public override void _Ready() - { - - } -} \ No newline at end of file diff --git a/src/utils/MathUtils.cs b/src/utils/MathUtils.cs deleted file mode 100644 index 9c6033a..0000000 --- a/src/utils/MathUtils.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Godot; - -public static class MathUtils -{ - /// - /// 返回一个区间内的随机小数 - /// - public static float RandRange(float min, float max) - { - if (min == max) return min; - if (min > max) - return GD.Randf() * (min - max) + max; - return GD.Randf() * (max - min) + min; - } - - /// - /// 返回一个区间内的随机整数 - /// - public static int RandRangeInt(int min, int max) - { - if (min == max) return min; - if (min > max) - return Mathf.FloorToInt(GD.Randf() * (min - max + 1) + max); - return Mathf.FloorToInt(GD.Randf() * (max - min + 1) + min); - } -} \ No newline at end of file diff --git a/src/weapon/bullet/Bullet.cs b/src/weapon/bullet/Bullet.cs deleted file mode 100644 index ec5ac06..0000000 --- a/src/weapon/bullet/Bullet.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Godot; - -/// -/// 子弹接口 -/// -public interface IBullet -{ - /// - /// 攻击目标阵营 - /// - CampEnum TargetCamp { get; } - /// - /// 发射该子弹的武器 - /// - Gun Gun { get; } - /// - /// 发射该子弹的物体对象 - /// - Node2D Master { get; } - /// - /// 初始化基础数据 - /// - /// 攻击的目标阵营 - /// 发射该子弹的枪对象 - /// 发射该子弹的角色 - void Init(CampEnum target, Gun gun, Node2D master); -} \ No newline at end of file diff --git a/src/weapon/bullet/HighSpeedBullet.cs b/src/weapon/bullet/HighSpeedBullet.cs deleted file mode 100644 index 039c416..0000000 --- a/src/weapon/bullet/HighSpeedBullet.cs +++ /dev/null @@ -1,72 +0,0 @@ -using Godot; - -/// -/// 高速子弹 -/// -public class HighSpeedBullet : Node2D, IBullet -{ - public CampEnum TargetCamp { get; private set; } - - public Gun Gun { get; private set; } - - public Node2D Master { get; private set; } - - /// - /// 碰撞物体后产生的火花 - /// - [Export] public PackedScene Hit; - - //射线检测节点 - private RayCast2D RayCast2D; - private Line2D Line; - private float ca = 1; - - public void Init(CampEnum target, Gun gun, Node2D master) - { - TargetCamp = target; - Gun = gun; - Master = master; - - //飞行距离 - var distance = MathUtils.RandRange(gun.Attribute.MinDistance, gun.Attribute.MaxDistance); - - //初始化子弹数据 - RayCast2D = GetNode("RayCast2D"); - Line = GetNode("Line"); - Modulate = Colors.White; - - // 目标点 - Vector2 targetPos = new Vector2(distance, 0); - RayCast2D.CastTo = targetPos; - RayCast2D.ForceRaycastUpdate(); - if (RayCast2D.IsColliding()) - { - //碰到物体 - Vector2 collPosition = RayCast2D.GetCollisionPoint(); - Node2D hit = Hit.Instance(); - hit.RotationDegrees = MathUtils.RandRangeInt(0, 360); - hit.GlobalPosition = collPosition; - GetTree().CurrentScene.AddChild(hit); - //划线的点坐标 - Line.SetPointPosition(1, new Vector2(Line.GlobalPosition.DistanceTo(collPosition), 0)); - } - else - { - //划线的点坐标 - Line.SetPointPosition(1, targetPos); - } - RayCast2D.Enabled = false; - } - - public override void _Process(float delta) - { - ca -= 12 * delta; - if (ca <= 0) { - QueueFree(); - return; - } - Color c = Modulate; - c.a = ca; - Modulate = c; - } -} \ No newline at end of file diff --git a/src/weapon/bullet/OrdinaryBullets.cs b/src/weapon/bullet/OrdinaryBullets.cs deleted file mode 100644 index 7e65b85..0000000 --- a/src/weapon/bullet/OrdinaryBullets.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using Godot; - -/// -/// 普通的子弹 -/// -public class OrdinaryBullets : Node2D, IBullet -{ - public CampEnum TargetCamp { get; private set; } - - public Gun Gun { get; private set; } - - public Node2D Master { get; private set; } - - /// - /// 碰撞物体后产生的火花 - /// - [Export] public PackedScene Hit; - - // 起始点坐标 - private Vector2 StartPosition; - // 最大飞行距离 - private float MaxDistance; - // 子弹飞行速度 - private float FlySpeed = 1500; - //当前子弹已经飞行的距离 - private float CurrFlyDistance = 0; - //射线碰撞节点 - private RayCast2D RayCast; - //子弹的精灵 - private Sprite BulletSprite; - //绘制阴影的精灵 - private Sprite ShadowSprite; - - private int frame = 0; - - public void Init(CampEnum target, Gun gun, Node2D master) - { - TargetCamp = target; - Gun = gun; - Master = master; - - MaxDistance = MathUtils.RandRange(gun.Attribute.MinDistance, gun.Attribute.MaxDistance); - StartPosition = GlobalPosition; - BulletSprite = GetNode("Bullet"); - BulletSprite.Visible = false; - RayCast = GetNode("RayCast2D"); - - //创建阴影 - ShadowSprite = new Sprite(); - ShadowSprite.Visible = false; - ShadowSprite.ZIndex = -1; - ShadowSprite.Texture = BulletSprite.Texture; - ShadowSprite.Offset = BulletSprite.Offset; - ShadowSprite.Material = ResourceManager.ShadowMaterial; - AddChild(ShadowSprite); - } - - public override void _Ready() - { - //生成时播放音效 - SoundManager.PlaySoundEffect("ordinaryBullet.ogg", this, 6f); - } - - public override void _PhysicsProcess(float delta) - { - if (frame++ == 0) - { - BulletSprite.Visible = true; - ShadowSprite.Visible = true; - } - //碰到墙壁 - if (RayCast.IsColliding()) - { - //var target = RayCast.GetCollider(); - var pos = RayCast.GetCollisionPoint(); - //播放受击动画 - Node2D hit = Hit.Instance(); - hit.RotationDegrees = MathUtils.RandRangeInt(0, 360); - hit.GlobalPosition = pos; - GetTree().CurrentScene.AddChild(hit); - QueueFree(); - } - else //没有碰到, 继续移动 - { - ShadowSprite.GlobalPosition = GlobalPosition + new Vector2(0, 5); - Position += new Vector2(FlySpeed * delta, 0).Rotated(Rotation); - - CurrFlyDistance += FlySpeed * delta; - if (CurrFlyDistance >= MaxDistance) - { - QueueFree(); - } - } - } - -} \ No newline at end of file diff --git a/src/weapon/gun/Gun.cs b/src/weapon/gun/Gun.cs deleted file mode 100644 index 0e8464a..0000000 --- a/src/weapon/gun/Gun.cs +++ /dev/null @@ -1,562 +0,0 @@ -using Godot; -using System; - -/// -/// 枪的基类 -/// -public abstract class Gun : Area2D, IProp -{ - /// - /// 开火回调事件 - /// - public event Action FireEvent; - - /// - /// 属性数据 - /// - public GunAttribute Attribute - { - get - { - if (_attribute == null) - { - throw new Exception("请先调用Init来初始化枪的属性"); - } - return _attribute; - } - private set => _attribute = value; - } - private GunAttribute _attribute; - - /// - /// 枪的图片 - /// - public Sprite GunSprite { get; private set; } - - /// - /// 动画播放器 - /// - /// - public AnimationPlayer AnimationPlayer { get; private set; } - - /// - /// 枪攻击的目标阵营 - /// - public CampEnum TargetCamp { get; set; } - - /// - /// 该武器的拥有者 - /// - public Role Master { get; private set; } - - /// - /// 当前弹夹弹药剩余量 - /// - public int CurrAmmo { get; private set; } - /// - /// 剩余弹药量 - /// - public int ResidueAmmo { get; private set; } - - /// - /// 枪管的开火点 - /// - public Position2D FirePoint { get; private set; } - /// - /// 枪管的原点 - /// - public Position2D OriginPoint { get; private set; } - /// - /// 弹壳抛出的点 - /// - public Position2D ShellPoint { get; private set; } - /// - /// 碰撞器节点 - /// - /// - public CollisionShape2D CollisionShape2D { get; private set; } - /// - /// 枪的当前散射半径 - /// - public float CurrScatteringRange { get; private set; } = 0; - /// - /// 是否在换弹中 - /// - /// - public bool Reloading { get; private set; } = false; - /// - /// 换弹计时器 - /// - public float ReloadTimer { get; private set; } = 0; - - //是否按下 - private bool triggerFlag = false; - //扳机计时器 - private float triggerTimer = 0; - //开火前延时时间 - private float delayedTime = 0; - //开火间隙时间 - private float fireInterval = 0; - //开火枪口角度 - private float fireAngle = 0; - //攻击冷却计时 - private float attackTimer = 0; - //攻击状态 - private bool attackFlag = false; - //按下的时间 - private float downTimer = 0; - //松开的时间 - private float upTimer = 0; - //连发次数 - private float continuousCount = 0; - //连发状态记录 - private bool continuousShootFlag = false; - - /// - /// 初始化时调用 - /// - protected abstract void Init(); - - /// - /// 单次开火时调用的函数 - /// - protected abstract void OnFire(); - - /// - /// 换弹时调用 - /// - protected abstract void OnReload(); - - /// - /// 发射子弹时调用的函数, 每发射一枚子弹调用一次, - /// 如果做霰弹枪效果, 一次开火发射5枚子弹, 则该函数调用5次 - /// - protected abstract void OnShootBullet(); - - /// - /// 当武器被拾起时调用 - /// - /// 拾起该武器的角色 - protected abstract void OnPickUp(Role master); - - /// - /// 当武器被扔掉时调用 - /// - protected abstract void OnThrowOut(); - - /// - /// 当武器被激活时调用, 也就是使用当武器是调用 - /// - protected abstract void OnActive(); - - /// - /// 当武器被收起时调用 - /// - protected abstract void OnConceal(); - - public override void _Process(float delta) - { - if (Master == null) //这把武器被扔在地上 - { - Reloading = false; - triggerTimer = triggerTimer > 0 ? triggerTimer - delta : 0; - triggerFlag = false; - attackFlag = false; - attackTimer = attackTimer > 0 ? attackTimer - delta : 0; - CurrScatteringRange = Mathf.Max(CurrScatteringRange - Attribute.ScatteringRangeBackSpeed * delta, Attribute.StartScatteringRange); - continuousCount = 0; - delayedTime = 0; - } - else if (Master.Holster.ActiveGun != this) //当前武器没有被使用 - { - Reloading = false; - triggerTimer = triggerTimer > 0 ? triggerTimer - delta : 0; - triggerFlag = false; - attackFlag = false; - attackTimer = attackTimer > 0 ? attackTimer - delta : 0; - CurrScatteringRange = Mathf.Max(CurrScatteringRange - Attribute.ScatteringRangeBackSpeed * delta, Attribute.StartScatteringRange); - continuousCount = 0; - delayedTime = 0; - } - else //正在使用中 - { - - //换弹 - if (Reloading) - { - ReloadTimer -= delta; - if (ReloadTimer <= 0) - { - ReloadTimer = 0; - ReloadSuccess(); - } - } - - if (triggerFlag) - { - if (upTimer > 0) //第一帧按下扳机 - { - upTimer = 0; - DownTrigger(); - } - downTimer += delta; - } - else - { - if (downTimer > 0) //第一帧松开扳机 - { - downTimer = 0; - UpTriggern(); - } - upTimer += delta; - } - - // 攻击的计时器 - if (attackTimer > 0) - { - attackTimer -= delta; - if (attackTimer < 0) - { - delayedTime += attackTimer; - attackTimer = 0; - } - } - else if (delayedTime > 0) //攻击延时 - { - delayedTime -= delta; - if (attackTimer < 0) - { - delayedTime = 0; - } - } - - //连发判断 - if (continuousCount > 0 && delayedTime <= 0 && attackTimer <= 0) - { - //开火 - TriggernFire(); - } - - if (!attackFlag && attackTimer <= 0) - { - CurrScatteringRange = Mathf.Max(CurrScatteringRange - Attribute.ScatteringRangeBackSpeed * delta, Attribute.StartScatteringRange); - } - triggerTimer = triggerTimer > 0 ? triggerTimer - delta : 0; - triggerFlag = false; - attackFlag = false; - - //枪身回归 - Position = Position.MoveToward(Vector2.Zero, 35 * delta); - if (fireInterval == 0) - { - RotationDegrees = 0; - } - else - { - RotationDegrees = Mathf.Lerp(0, fireAngle, attackTimer / fireInterval); - } - } - } - - public void Init(GunAttribute attribute) - { - if (_attribute != null) - { - throw new Exception("当前武器已经初始化过了!"); - } - - GunSprite = GetNode("GunSprite"); - FirePoint = GetNode("FirePoint"); - OriginPoint = GetNode("OriginPoint"); - ShellPoint = GetNode("ShellPoint"); - AnimationPlayer = GetNode("AnimationPlayer"); - CollisionShape2D = GetNode("Collision"); - - Attribute = attribute; - //更新图片 - GunSprite.Texture = attribute.Sprite; - GunSprite.Position = Attribute.CenterPosition; - //开火位置 - FirePoint.Position = new Vector2(attribute.FirePosition.x, -attribute.FirePosition.y); - OriginPoint.Position = new Vector2(0, -attribute.FirePosition.y); - - //弹药量 - CurrAmmo = attribute.CartridgeCapacity; - //剩余弹药量 - ResidueAmmo = attribute.MaxCartridgeCapacity - attribute.CartridgeCapacity; - - Init(); - } - - /// - /// 扳机函数, 调用即视为扣动扳机 - /// - public void Trigger() - { - //是否第一帧按下 - var justDown = downTimer == 0; - //是否能发射 - var flag = false; - if (continuousCount <= 0) //不能处于连发状态下 - { - if (Attribute.ContinuousShoot) //自动射击 - { - if (triggerTimer > 0) - { - if (continuousShootFlag) - { - flag = true; - } - } - else - { - flag = true; - if (delayedTime <= 0 && attackTimer <= 0) - { - continuousShootFlag = true; - } - } - } - else //半自动 - { - if (justDown && triggerTimer <= 0) - { - flag = true; - } - } - } - - if (flag) - { - if (Reloading) - { - //换弹中 - GD.Print("换弹中..." + (ReloadTimer / Attribute.ReloadTime)); - } - else if (CurrAmmo <= 0) - { - //子弹不够 - GD.Print("弹夹打空了, 按R换弹!"); - } - else - { - if (justDown) - { - //开火前延时 - delayedTime = Attribute.DelayedTime; - //扳机按下间隔 - triggerTimer = Attribute.TriggerInterval; - //连发数量 - if (!Attribute.ContinuousShoot) - { - continuousCount = MathUtils.RandRangeInt(Attribute.MinContinuousCount, Attribute.MaxContinuousCount); - } - } - if (delayedTime <= 0 && attackTimer <= 0) - { - TriggernFire(); - } - attackFlag = true; - } - - } - triggerFlag = true; - } - - /// - /// 刚按下扳机 - /// - private void DownTrigger() - { - - } - - /// - /// 刚松开扳机 - /// - private void UpTriggern() - { - continuousShootFlag = false; - if (delayedTime > 0) - { - continuousCount = 0; - } - } - - /// - /// 触发开火 - /// - private void TriggernFire() - { - continuousCount = continuousCount > 0 ? continuousCount - 1 : 0; - - //减子弹数量 - CurrAmmo--; - //开火间隙 - fireInterval = 60 / Attribute.StartFiringSpeed; - //攻击冷却 - attackTimer += fireInterval; - - //触发开火函数 - OnFire(); - - //开火发射的子弹数量 - var bulletCount = MathUtils.RandRangeInt(Attribute.MaxFireBulletCount, Attribute.MinFireBulletCount); - //枪口角度 - var angle = new Vector2(GameConfig.ScatteringDistance, CurrScatteringRange).Angle(); - - //创建子弹 - for (int i = 0; i < bulletCount; i++) - { - //先算枪口方向 - Rotation = (float)GD.RandRange(-angle, angle); - //发射子弹 - OnShootBullet(); - } - - //当前的散射半径 - CurrScatteringRange = Mathf.Min(CurrScatteringRange + Attribute.ScatteringRangeAddValue, Attribute.FinalScatteringRange); - //枪的旋转角度 - RotationDegrees -= Attribute.UpliftAngle; - fireAngle = RotationDegrees; - //枪身位置 - Position = new Vector2(Mathf.Max(-Attribute.MaxBacklash, Position.x - MathUtils.RandRange(Attribute.MinBacklash, Attribute.MaxBacklash)), Position.y); - - if (FireEvent != null) - { - FireEvent(this); - } - } - - /// - /// 触发换弹 - /// - public void _Reload() - { - if (CurrAmmo < Attribute.CartridgeCapacity && ResidueAmmo > 0 && !Reloading) - { - Reloading = true; - ReloadTimer = Attribute.ReloadTime; - OnReload(); - } - } - - /// - /// 换弹计时器时间到, 执行换弹操作 - /// - private void ReloadSuccess() - { - if (Attribute.AloneReload) //单独装填 - { - - } - else //换弹结束 - { - Reloading = false; - if (ResidueAmmo >= Attribute.CartridgeCapacity) - { - ResidueAmmo -= Attribute.CartridgeCapacity; - CurrAmmo = Attribute.CartridgeCapacity; - } - else - { - CurrAmmo = ResidueAmmo; - ResidueAmmo = 0; - } - } - } - - public void Tnteractive(Role master) - { - var parent = GetParent(); - parent.RemoveChild(this); - master.Holster.PickupGun(this); - parent.QueueFree(); - } - - /// - /// 触发落到地面 - /// - public void _FallToGround() - { - //启用碰撞 - CollisionShape2D.Disabled = false; - } - - /// - /// 触发拾起 - /// - public void _PickUpGun(Role master) - { - Master = master; - //握把位置 - GunSprite.Position = Attribute.HoldPosition; - AnimationPlayer.Play("RESET"); - ZIndex = 0; - //禁用碰撞 - CollisionShape2D.Disabled = true; - OnPickUp(master); - } - - /// - /// 触发抛出 - /// - public void _ThrowOutGun() - { - Master = null; - GunSprite.Position = Attribute.CenterPosition; - AnimationPlayer.Play("Floodlight"); - OnThrowOut(); - } - - /// - /// 触发启用武器 - /// - public void _Active() - { - OnActive(); - } - - /// - /// 触发收起武器 - /// - public void _Conceal() - { - OnConceal(); - } - - /// - /// 实例化并返回子弹对象 - /// - /// 子弹的预制体 - protected T CreateBullet(PackedScene bulletPack, Vector2 globalPostion, float globalRotation, Node parent = null) where T : Node2D, IBullet - { - return (T)CreateBullet(bulletPack, globalPostion, globalRotation, parent); - } - - /// - /// 实例化并返回子弹对象 - /// - /// 子弹的预制体 - protected IBullet CreateBullet(PackedScene bulletPack, Vector2 globalPostion, float globalRotation, Node parent = null) - { - // 实例化子弹 - Node2D bullet = bulletPack.Instance(); - // 设置坐标 - bullet.GlobalPosition = globalPostion; - // 旋转角度 - bullet.GlobalRotation = globalRotation; - if (parent == null) - { - RoomManager.Current.SortRoot.AddChild(bullet); - } - else - { - parent.AddChild(bullet); - } - // 调用初始化 - IBullet result = (IBullet)bullet; - result.Init(TargetCamp, this, null); - return result; - } -} \ No newline at end of file diff --git a/src/weapon/gun/GunAttribute.cs b/src/weapon/gun/GunAttribute.cs deleted file mode 100644 index db173dc..0000000 --- a/src/weapon/gun/GunAttribute.cs +++ /dev/null @@ -1,161 +0,0 @@ -using Godot; - -/// -/// 枪上的属性 -/// -public class GunAttribute -{ - /// - /// 武器的唯一id - /// - public string Id = "1"; - /// - /// 武器显示的名称 - /// - public string Name = "Gun1"; - /// - /// 主武器 - /// - public GunWeightType WeightType = GunWeightType.MainWeapon; - /// - /// 枪的图片 - /// - public Texture Sprite; - /// - /// 子弹预制体 - /// - public PackedScene BulletPack; - /// - /// 弹壳预制体 - /// - public PackedScene ShellPack; - /// - /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机 - /// - public bool ContinuousShoot = true; - /// - /// 弹夹容量 - /// - public int CartridgeCapacity = 30; - /// - /// 弹药容量上限 - /// - public int MaxCartridgeCapacity = 90; - /// - /// 装弹时间 - /// - public float ReloadTime = 1.5f; - /// - /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹枪装填效果 - /// - public bool AloneReload = false; - /// - /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true - /// - public bool AloneReloadCanShoot = false; - /// - /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false - /// - public bool LooseShoot = false; - /// - /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效 - /// - public int MinContinuousCount = 3; - /// - /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效 - /// - public int MaxContinuousCount = 3; - /// - /// 按下一次扳机后需要多长时间才能再次按下 - /// - public float TriggerInterval = 0; - /// - /// 初始射速, 初始每秒分钟能发射多少发子弹 - /// - public float StartFiringSpeed = 300; - /// - /// 最终射速, 最终每秒分钟能发射多少发子弹 - /// - public float FinalFiringSpeed = 300; - /// - /// 按下扳机并开火后射速增加速率 - /// - public float FiringSpeedAddSpeed = 2; - /// - /// 松开扳机后射速消散速率 - /// - public float FiringSpeedBackSpeed = 10; - /// - /// 单次开火发射子弹最小数量 - /// - public int MinFireBulletCount = 1; - /// - /// 单次开火发射子弹最大数量 - /// - public int MaxFireBulletCount = 1; - /// - /// 开火前延时 - /// - public float DelayedTime = 0f; - /// - /// 初始散射半径 - /// - public float StartScatteringRange = 0; - /// - /// 最终散射半径 - /// - public float FinalScatteringRange = 20; - /// - /// 每次发射后散射增加值 - /// - public float ScatteringRangeAddValue = 2; - /// - /// 松开扳机后散射销退速率 - /// - public float ScatteringRangeBackSpeed = 10; - /// - /// 子弹飞行最大距离 - /// - public float MaxDistance = 600; - /// - /// 子弹飞行最小距离 - /// - public float MinDistance = 800; - /// - /// 武器精灵的旋转中心坐标 - /// - public Vector2 CenterPosition = new Vector2(0, 0); - /// - /// 开火位置 - /// - public Vector2 FirePosition = new Vector2(11, 0); - /// - /// 握把位置 - /// - public Vector2 HoldPosition = new Vector2(4, -3); - /// - /// 重量 - /// - public float Weight = 11; - /// - /// 最大后坐力 (仅用于开火后枪身抖动) - /// - public float MaxBacklash = 4; - /// - /// 最小后坐力 (仅用于开火后枪身抖动) - /// - public float MinBacklash = 2; - /// - /// 开火后枪口上抬角度 - /// - public float UpliftAngle = 30; - /// - /// 开火后枪口角度恢复速度倍数 - /// - public float UpliftAngleRestore = 1; - - public GunAttribute() - { - - } -} \ No newline at end of file diff --git a/src/weapon/gun/GunManager.cs b/src/weapon/gun/GunManager.cs deleted file mode 100644 index c690018..0000000 --- a/src/weapon/gun/GunManager.cs +++ /dev/null @@ -1,172 +0,0 @@ -using System.Collections.Generic; -using Godot; - -public static class GunManager -{ - - public static Gun GetGun1() - { - //加载枪的 prefab - var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); - //设置基础属性 - var attr = new GunAttribute(); - attr.Id = "1"; - attr.Name = "Gun1"; - attr.Weight = 40; - attr.CenterPosition = new Vector2(0.4f, -2.6f); - attr.StartFiringSpeed = 480; - attr.StartScatteringRange = 30; - attr.FinalScatteringRange = 90; - attr.ScatteringRangeAddValue = 2f; - attr.ScatteringRangeBackSpeed = 40; - //连发 - attr.ContinuousShoot = true; - //扳机检测间隔 - attr.TriggerInterval = 0f; - //连发数量 - attr.MinContinuousCount = 3; - attr.MaxContinuousCount = 3; - //开火前延时 - attr.DelayedTime = 0f; - //攻击距离 - attr.MinDistance = 500; - attr.MaxDistance = 600; - //发射子弹数量 - attr.MinFireBulletCount = 1; - attr.MaxFireBulletCount = 1; - //抬起角度 - attr.UpliftAngle = 10; - //枪身长度 - attr.FirePosition = new Vector2(16, 1.5f); - attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun4.png"); - attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/OrdinaryBullets.tscn"); - attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); - gun.Init(attr); - return gun; - } - - public static Gun GetGun2() - { - //加载枪的 prefab - var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); - //设置基础属性 - var attr = new GunAttribute(); - attr.Id = "2"; - attr.Name = "Gun2"; - attr.Weight = 20; - attr.CenterPosition = new Vector2(0.4f, -2.6f); - attr.WeightType = GunWeightType.DeputyWeapon; - attr.StartFiringSpeed = 600; - attr.StartScatteringRange = 5; - attr.FinalScatteringRange = 60; - attr.ScatteringRangeAddValue = 8f; - attr.ScatteringRangeBackSpeed = 40; - //连发 - attr.ContinuousShoot = false; - //扳机检测间隔 - attr.TriggerInterval = 0.4f; - //连发数量 - attr.MinContinuousCount = 3; - attr.MaxContinuousCount = 3; - //开火前延时 - attr.DelayedTime = 0f; - //攻击距离 - attr.MinDistance = 500; - attr.MaxDistance = 600; - //发射子弹数量 - attr.MinFireBulletCount = 1; - attr.MaxFireBulletCount = 1; - //抬起角度 - attr.UpliftAngle = 30; - //枪身长度 - attr.FirePosition = new Vector2(10, 1.5f); - attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun3.png"); - attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/HighSpeedBullet.tscn"); - attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); - gun.Init(attr); - return gun; - } - - public static Gun GetGun3() - { - //加载枪的 prefab - var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); - //设置基础属性 - var attr = new GunAttribute(); - attr.Id = "3"; - attr.Name = "Gun3"; - attr.Weight = 30; - attr.CenterPosition = new Vector2(0.4f, -2.6f); - attr.StartFiringSpeed = 480; - attr.StartScatteringRange = 30; - attr.FinalScatteringRange = 90; - attr.ScatteringRangeAddValue = 2f; - attr.ScatteringRangeBackSpeed = 40; - //连发 - attr.ContinuousShoot = false; - //扳机检测间隔 - attr.TriggerInterval = 0f; - //连发数量 - attr.MinContinuousCount = 3; - attr.MaxContinuousCount = 3; - //开火前延时 - attr.DelayedTime = 0f; - //攻击距离 - attr.MinDistance = 500; - attr.MaxDistance = 600; - //发射子弹数量 - attr.MinFireBulletCount = 1; - attr.MaxFireBulletCount = 1; - //抬起角度 - attr.UpliftAngle = 10; - //枪身长度 - attr.FirePosition = new Vector2(16, 1.5f); - attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun2.png"); - attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/OrdinaryBullets.tscn"); - attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); - gun.Init(attr); - return gun; - } - - public static Gun GetGun4() - { - //加载枪的 prefab - var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn"); - //设置基础属性 - var attr = new GunAttribute(); - attr.Id = "4"; - attr.Name = "Gun4"; - attr.Weight = 10; - attr.CenterPosition = new Vector2(0.4f, -2.6f); - attr.WeightType = GunWeightType.DeputyWeapon; - attr.StartFiringSpeed = 600; - attr.StartScatteringRange = 5; - attr.FinalScatteringRange = 60; - attr.ScatteringRangeAddValue = 8f; - attr.ScatteringRangeBackSpeed = 40; - //连发 - attr.ContinuousShoot = false; - //扳机检测间隔 - attr.TriggerInterval = 0.4f; - //连发数量 - attr.MinContinuousCount = 3; - attr.MaxContinuousCount = 3; - //开火前延时 - attr.DelayedTime = 0f; - //攻击距离 - attr.MinDistance = 500; - attr.MaxDistance = 600; - //发射子弹数量 - attr.MinFireBulletCount = 1; - attr.MaxFireBulletCount = 1; - //抬起角度 - attr.UpliftAngle = 30; - //枪身长度 - attr.FirePosition = new Vector2(10, 1.5f); - attr.Sprite = ResourceManager.Load("res://resource/sprite/gun/gun7.png"); - attr.BulletPack = ResourceManager.Load("res://prefab/weapon/bullet/HighSpeedBullet.tscn"); - attr.ShellPack = ResourceManager.Load("res://prefab/weapon/shell/ShellCase.tscn"); - gun.Init(attr); - return gun; - } -} diff --git a/src/weapon/gun/GunWeightType.cs b/src/weapon/gun/GunWeightType.cs deleted file mode 100644 index 4181693..0000000 --- a/src/weapon/gun/GunWeightType.cs +++ /dev/null @@ -1,19 +0,0 @@ - -/// -/// 根据重量划分的武器类型 -/// -public enum GunWeightType -{ - /// - /// 副武器 - /// - DeputyWeapon = 1, - /// - /// 主武器 - /// - MainWeapon = 2, - /// - /// 重型武器 - /// - HeavyWeapon = 3 -} \ No newline at end of file diff --git a/src/weapon/gun/OrdinaryGun.cs b/src/weapon/gun/OrdinaryGun.cs deleted file mode 100644 index 31f869c..0000000 --- a/src/weapon/gun/OrdinaryGun.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using Godot; - - -/// -/// 普通的枪 -/// -public class OrdinaryGun : Gun -{ - protected override void Init() - { - - } - - protected override void OnFire() - { - //创建一个弹壳 - var temp = new ThrowShell(); - var startPos = GlobalPosition + new Vector2(0, 5); - var startHeight = 6; - var direction = GlobalRotationDegrees + MathUtils.RandRangeInt(-30, 30) + 180; - var xf = MathUtils.RandRangeInt(20, 60); - var yf = MathUtils.RandRangeInt(60, 120); - var rotate = MathUtils.RandRangeInt(-720, 720); - var sprite = Attribute.ShellPack.Instance(); - temp.InitThrow(new Vector2(5, 10), startPos, startHeight, direction, xf, yf, rotate, sprite, sprite); - RoomManager.Current.SortRoot.AddChild(temp); - //创建抖动 - MainCamera.Main.ProssesDirectionalShake(Vector2.Right.Rotated(GlobalRotation) * 1.5f); - } - - protected override void OnShootBullet() - { - //创建子弹 - CreateBullet(Attribute.BulletPack, FirePoint.GlobalPosition, (FirePoint.GlobalPosition - OriginPoint.GlobalPosition).Angle()); - } - - protected override void OnReload() - { - - } - - protected override void OnPickUp(Role master) - { - - } - - protected override void OnThrowOut() - { - - } - - protected override void OnActive() - { - - } - - protected override void OnConceal() - { - - } - -} \ No newline at end of file diff --git a/src/weapon/gun/ThrowGun.cs b/src/weapon/gun/ThrowGun.cs deleted file mode 100644 index 1b8b071..0000000 --- a/src/weapon/gun/ThrowGun.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Godot; - -public class ThrowGun : ThrowNode -{ - - private bool fristOver = true; - - public override void _Ready() - { - base._Ready(); - ZIndex = 2; - } - protected override void OnOver() - { - if (fristOver) - { - fristOver = false; - if (Mount is Gun gun) - { - gun._FallToGround(); - } - } - //如果落地高度不够低, 再抛一次 - if (StartYSpeed > 1) - { - InitThrow(Size, GlobalPosition, 0, Direction, XSpeed * 0.8f, StartYSpeed * 0.5f, RotateSpeed * 0.5f, null); - } - else - { - GetParent().RemoveChild(this); - RoomManager.Current.ObjectRoot.AddChild(this); - } - } - protected override void OnMaxHeight(float height) - { - ZIndex = 0; - } -} \ No newline at end of file diff --git a/src/weapon/shell/ThrowShell.cs b/src/weapon/shell/ThrowShell.cs deleted file mode 100644 index 26931b7..0000000 --- a/src/weapon/shell/ThrowShell.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Godot; - -/// -/// 弹壳 -/// -public class ThrowShell : ThrowNode -{ - - public override void _Ready() - { - base._Ready(); - ZIndex = 2; - } - - protected override void OnOver() - { - //如果落地高度不够低, 再抛一次 - if (StartYSpeed > 1) - { - InitThrow(Size, GlobalPosition, 0, Direction, XSpeed * 0.8f, StartYSpeed * 0.5f, RotateSpeed * 0.5f, null); - } - else - { - GetParent().RemoveChild(this); - RoomManager.Current.ObjectRoot.AddChild(this); - //等待被销毁 - AwaitDestroy(); - } - } - - private async void AwaitDestroy() - { - CollisionShape.Disabled = true; - //60秒后销毁 - await ToSignal(GetTree().CreateTimer(60), "timeout"); - QueueFree(); - } - - protected override void OnMaxHeight(float height) - { - ZIndex = 0; - } -} \ No newline at end of file