diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..db2e4ff --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.gd linguist-language=GDScript diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..27a8ab4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +/routes-native/target +/routes-native/Cargo.lock +*~ +*.swp +*.swo +.fscache + +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +*.lnk diff --git a/.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.md5 b/.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.md5 deleted file mode 100644 index 89c7768..0000000 --- a/.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="c2ceedfd75487630e8ea3dabf6a2b9a8" -dest_md5="e8cb687282207ab1f7b495245c9750c7" - diff --git a/.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.stex b/.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.stex deleted file mode 100644 index ed77303..0000000 Binary files a/.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.stex and /dev/null differ diff --git a/.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.md5 b/.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.md5 deleted file mode 100644 index a6438e1..0000000 --- a/.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="faab8881882c2dd7d342bc32adada8a6" -dest_md5="f11ba84b73a027d723bf7a1bd9d7f206" - diff --git a/.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.stex b/.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.stex deleted file mode 100644 index a3817bf..0000000 Binary files a/.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.stex and /dev/null differ diff --git a/.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.md5 b/.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.md5 deleted file mode 100644 index 37aeff5..0000000 --- a/.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="669feed92f644398c1a1d4d49c923eea" -dest_md5="7f94170f05bbe3f73f5199f234b905ea" - diff --git a/.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.stex b/.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.stex deleted file mode 100644 index fcd67a0..0000000 Binary files a/.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.stex and /dev/null differ diff --git a/.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.md5 b/.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.md5 deleted file mode 100644 index 267e4cc..0000000 --- a/.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="6bb298972ae11c8c9821caed7f258b66" -dest_md5="f2fd136a7ef0a6e044086e2ba56227c3" - diff --git a/.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.stex b/.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.stex deleted file mode 100644 index 5702f8a..0000000 Binary files a/.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.stex and /dev/null differ diff --git a/.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.md5 b/.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.md5 deleted file mode 100644 index 3c15e21..0000000 --- a/.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2752f228fecaeb92e0f2b076c28027ea" -dest_md5="878ce27f3864533955dba347e3812976" - diff --git a/.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.stex b/.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.stex deleted file mode 100644 index 4a496ad..0000000 Binary files a/.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.stex and /dev/null differ diff --git a/.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.md5 b/.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.md5 deleted file mode 100644 index 1b99bf6..0000000 --- a/.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="af9d5cf5b0e44e705c0df85d7c846c57" -dest_md5="9fb385faf18f3c43f7029b0d81164628" - diff --git a/.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.stex b/.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.stex deleted file mode 100644 index 2601e8e..0000000 Binary files a/.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.stex and /dev/null differ diff --git a/.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.md5 b/.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.md5 deleted file mode 100644 index 88ac055..0000000 --- a/.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="5cc3dacc9037b47e7183b7b4bfda4403" -dest_md5="78af387fb5a31697eb498e6814ab0f01" - diff --git a/.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.stex b/.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.stex deleted file mode 100644 index 552b5db..0000000 Binary files a/.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.stex and /dev/null differ diff --git a/.import/platform3.png-5311651b484696e407a2e6d5496f1c30.md5 b/.import/platform3.png-5311651b484696e407a2e6d5496f1c30.md5 deleted file mode 100644 index 6a00752..0000000 --- a/.import/platform3.png-5311651b484696e407a2e6d5496f1c30.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ea9c66f74493fe79d8ad87804f9d05d9" -dest_md5="cb4a12326cc8280988260062d802f136" - diff --git a/.import/platform3.png-5311651b484696e407a2e6d5496f1c30.stex b/.import/platform3.png-5311651b484696e407a2e6d5496f1c30.stex deleted file mode 100644 index 6ae3669..0000000 Binary files a/.import/platform3.png-5311651b484696e407a2e6d5496f1c30.stex and /dev/null differ diff --git a/.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.md5 b/.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.md5 deleted file mode 100644 index 0fd75b4..0000000 --- a/.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="9c3bc1326fd0badebe9e0a7931eaf86c" -dest_md5="e0dd63d56a05c39d8b755dd8edc3b2ad" - diff --git a/.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.stex b/.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.stex deleted file mode 100644 index 3230de4..0000000 Binary files a/.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.stex and /dev/null differ diff --git a/.import/purple.png-32855686abb92c88335339d26d1584c7.md5 b/.import/purple.png-32855686abb92c88335339d26d1584c7.md5 deleted file mode 100644 index e565c4c..0000000 --- a/.import/purple.png-32855686abb92c88335339d26d1584c7.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="8eadeb8bbf891f004e43352cc2e67542" -dest_md5="e4bcb9a55f2a4b582724442e7c362891" - diff --git a/.import/purple.png-32855686abb92c88335339d26d1584c7.stex b/.import/purple.png-32855686abb92c88335339d26d1584c7.stex deleted file mode 100644 index 0c064c1..0000000 Binary files a/.import/purple.png-32855686abb92c88335339d26d1584c7.stex and /dev/null differ diff --git a/.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.md5 b/.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.md5 deleted file mode 100644 index 05a5882..0000000 --- a/.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0bc636281e64916e731a8a6d8e40c0ff" -dest_md5="6af147d917b3d1ad2cb9fce4daf43d3d" - diff --git a/.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.stex b/.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.stex deleted file mode 100644 index ab2cf2e..0000000 Binary files a/.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.stex and /dev/null differ diff --git a/.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.md5 b/.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.md5 deleted file mode 100644 index f1c87e7..0000000 --- a/.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="b1c3441f4097c8ecb7b28e28e63031cc" -dest_md5="0ccc925a53515f2444c2ca7a6e6ff4eb" - diff --git a/.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.stex b/.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.stex deleted file mode 100644 index e6ccbb6..0000000 Binary files a/.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.stex and /dev/null differ diff --git a/.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.md5 b/.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.md5 deleted file mode 100644 index 70720be..0000000 --- a/.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="938048d60ddee2a80d56cecd6002b6e9" -dest_md5="92b4a796b3e171c0e7f0d6ada0086ab6" - diff --git a/.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.stex b/.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.stex deleted file mode 100644 index 543c793..0000000 Binary files a/.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.stex and /dev/null differ diff --git a/Global/Randomizer.gd b/Global/Randomizer.gd deleted file mode 100644 index 1cf274e..0000000 --- a/Global/Randomizer.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Node - -onready var rng = RandomNumberGenerator.new() - -func set_seed(new_seed): - rng.seed = new_seed diff --git a/Resources/External/Graphics/Tiles/outline.ase b/Resources/External/Graphics/Tiles/outline.ase deleted file mode 100644 index 9b3d986..0000000 Binary files a/Resources/External/Graphics/Tiles/outline.ase and /dev/null differ diff --git a/Resources/External/Graphics/Tiles/outline.png b/Resources/External/Graphics/Tiles/outline.png deleted file mode 100644 index b2dd2af..0000000 Binary files a/Resources/External/Graphics/Tiles/outline.png and /dev/null differ diff --git a/Resources/External/Graphics/Tiles/outline.png.import b/Resources/External/Graphics/Tiles/outline.png.import deleted file mode 100644 index 3cbb360..0000000 --- a/Resources/External/Graphics/Tiles/outline.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/External/Graphics/Tiles/outline.png" -dest_files=[ "res://.import/outline.png-254141a7dcf1bc01b7e07098c4c1c7a1.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/Resources/External/Graphics/Water/close_to_land.ase b/Resources/External/Graphics/Water/close_to_land.ase deleted file mode 100644 index 0168385..0000000 Binary files a/Resources/External/Graphics/Water/close_to_land.ase and /dev/null differ diff --git a/Resources/External/Graphics/Water/water1.ase b/Resources/External/Graphics/Water/water1.ase deleted file mode 100644 index 370e494..0000000 Binary files a/Resources/External/Graphics/Water/water1.ase and /dev/null differ diff --git a/Resources/External/Graphics/mulfok62-1x.png.import b/Resources/External/Graphics/mulfok62-1x.png.import deleted file mode 100644 index 746e604..0000000 --- a/Resources/External/Graphics/mulfok62-1x.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/External/Graphics/mulfok62-1x.png" -dest_files=[ "res://.import/mulfok62-1x.png-6ecf59a597dd7a67f5b738d2c0239b7b.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/Resources/Graphics/Tiles/blue.png b/Resources/Graphics/Tiles/blue.png deleted file mode 100644 index c14ed5b..0000000 Binary files a/Resources/Graphics/Tiles/blue.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/blue.png.import b/Resources/Graphics/Tiles/blue.png.import deleted file mode 100644 index ff81067..0000000 --- a/Resources/Graphics/Tiles/blue.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/blue.png" -dest_files=[ "res://.import/blue.png-2cd44d93824d3f98709a3749551f4ec1.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/Resources/Graphics/Tiles/green.png b/Resources/Graphics/Tiles/green.png deleted file mode 100644 index f8b918d..0000000 Binary files a/Resources/Graphics/Tiles/green.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/green.png.import b/Resources/Graphics/Tiles/green.png.import deleted file mode 100644 index 802f3a7..0000000 --- a/Resources/Graphics/Tiles/green.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/green.png" -dest_files=[ "res://.import/green.png-448f4aac7f20aee9994c54bdb3cf1731.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/Resources/Graphics/Tiles/platform.png b/Resources/Graphics/Tiles/platform.png deleted file mode 100644 index 93f0545..0000000 Binary files a/Resources/Graphics/Tiles/platform.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/platform.png.import b/Resources/Graphics/Tiles/platform.png.import deleted file mode 100644 index 71faf19..0000000 --- a/Resources/Graphics/Tiles/platform.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/platform.png" -dest_files=[ "res://.import/platform.png-e79897c7ff8195dc0091ae3e9c22a315.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/Resources/Graphics/Tiles/platform2.png b/Resources/Graphics/Tiles/platform2.png deleted file mode 100644 index 4e5bd00..0000000 Binary files a/Resources/Graphics/Tiles/platform2.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/platform2.png.import b/Resources/Graphics/Tiles/platform2.png.import deleted file mode 100644 index bf97618..0000000 --- a/Resources/Graphics/Tiles/platform2.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/platform2.png" -dest_files=[ "res://.import/platform2.png-cbd51a920a2794e07690642dfd7cd1d3.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/Resources/Graphics/Tiles/platform3.png b/Resources/Graphics/Tiles/platform3.png deleted file mode 100644 index 50d637d..0000000 Binary files a/Resources/Graphics/Tiles/platform3.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/platform3.png.import b/Resources/Graphics/Tiles/platform3.png.import deleted file mode 100644 index c569f01..0000000 --- a/Resources/Graphics/Tiles/platform3.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/platform3.png-5311651b484696e407a2e6d5496f1c30.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/platform3.png" -dest_files=[ "res://.import/platform3.png-5311651b484696e407a2e6d5496f1c30.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/Resources/Graphics/Tiles/platform4.png b/Resources/Graphics/Tiles/platform4.png deleted file mode 100644 index 4980e43..0000000 Binary files a/Resources/Graphics/Tiles/platform4.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/platform4.png.import b/Resources/Graphics/Tiles/platform4.png.import deleted file mode 100644 index b87e23d..0000000 --- a/Resources/Graphics/Tiles/platform4.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/platform4.png" -dest_files=[ "res://.import/platform4.png-b382dee3050ec03f5e07cd2a9931649e.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/Resources/Graphics/Tiles/purple.png b/Resources/Graphics/Tiles/purple.png deleted file mode 100644 index e4c9077..0000000 Binary files a/Resources/Graphics/Tiles/purple.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/purple.png.import b/Resources/Graphics/Tiles/purple.png.import deleted file mode 100644 index ddda807..0000000 --- a/Resources/Graphics/Tiles/purple.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/purple.png-32855686abb92c88335339d26d1584c7.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/purple.png" -dest_files=[ "res://.import/purple.png-32855686abb92c88335339d26d1584c7.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/Resources/Graphics/Tiles/red.png b/Resources/Graphics/Tiles/red.png deleted file mode 100644 index 54eda82..0000000 Binary files a/Resources/Graphics/Tiles/red.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/yellow.png b/Resources/Graphics/Tiles/yellow.png deleted file mode 100644 index 9675e93..0000000 Binary files a/Resources/Graphics/Tiles/yellow.png and /dev/null differ diff --git a/Resources/Graphics/Tiles/yellow.png.import b/Resources/Graphics/Tiles/yellow.png.import deleted file mode 100644 index 4cff6ce..0000000 --- a/Resources/Graphics/Tiles/yellow.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Tiles/yellow.png" -dest_files=[ "res://.import/yellow.png-90e160c7824b62ddeb574a5e60507be3.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/Resources/Graphics/Water/close_to_land.png b/Resources/Graphics/Water/close_to_land.png deleted file mode 100644 index 3eb3056..0000000 Binary files a/Resources/Graphics/Water/close_to_land.png and /dev/null differ diff --git a/Resources/Graphics/Water/close_to_land.png.import b/Resources/Graphics/Water/close_to_land.png.import deleted file mode 100644 index f2c7b60..0000000 --- a/Resources/Graphics/Water/close_to_land.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Water/close_to_land.png" -dest_files=[ "res://.import/close_to_land.png-01e739a54f71f449c550df208cfbaab1.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/Resources/Graphics/Water/water1.png b/Resources/Graphics/Water/water1.png deleted file mode 100644 index 1cbfa2b..0000000 Binary files a/Resources/Graphics/Water/water1.png and /dev/null differ diff --git a/Resources/Graphics/Water/water1.png.import b/Resources/Graphics/Water/water1.png.import deleted file mode 100644 index 9e66add..0000000 --- a/Resources/Graphics/Water/water1.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Resources/Graphics/Water/water1.png" -dest_files=[ "res://.import/water1.png-96dd6aee434a7808b413abd6ab0e2583.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=1 -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/World/Map.tscn b/World/Map.tscn deleted file mode 100644 index 4dba70f..0000000 --- a/World/Map.tscn +++ /dev/null @@ -1,21 +0,0 @@ -[gd_scene load_steps=4 format=2] - -[ext_resource path="res://World/TileHandler.gd" type="Script" id=1] -[ext_resource path="res://World/Tools/Camera/Camera.tscn" type="PackedScene" id=2] -[ext_resource path="res://World/Props/WaterTexture.tscn" type="PackedScene" id=3] - -[node name="Map" type="Node2D"] - -[node name="BackgroundProps" type="Node2D" parent="."] -z_index = -1 - -[node name="WaterTexture" parent="BackgroundProps" instance=ExtResource( 3 )] - -[node name="Grid" type="Node2D" parent="."] -script = ExtResource( 1 ) -map_size = Vector2( 64, 64 ) - -[node name="CameraController" parent="." instance=ExtResource( 2 )] - -[connection signal="size_updated" from="Grid" to="CameraController" method="_on_Grid_size_updated"] -[connection signal="limits_changed" from="CameraController" to="BackgroundProps/WaterTexture" method="_on_CameraController_limits_changed"] diff --git a/World/Props/WaterTexture.gd b/World/Props/WaterTexture.gd deleted file mode 100644 index df65387..0000000 --- a/World/Props/WaterTexture.gd +++ /dev/null @@ -1,10 +0,0 @@ -extends TextureRect - - - -func _on_CameraController_limits_changed(lefttop: Vector2, bottomright: Vector2) -> void: - rect_position = lefttop - rect_position.x -= 64 - rect_position.y -= 64 - rect_size.x = abs(lefttop.x) + bottomright.x + 64 - rect_size.y = abs(lefttop.y) + bottomright.y + 64 diff --git a/World/Props/WaterTexture.tscn b/World/Props/WaterTexture.tscn deleted file mode 100644 index 099be7b..0000000 --- a/World/Props/WaterTexture.tscn +++ /dev/null @@ -1,16 +0,0 @@ -[gd_scene load_steps=4 format=2] - -[ext_resource path="res://Resources/Graphics/Water/water1.png" type="Texture" id=1] -[ext_resource path="res://World/Props/WaterTexture.gd" type="Script" id=2] - -[sub_resource type="Animation" id=1] -resource_name = "Move" - -[node name="WaterTexture" type="TextureRect"] -texture = ExtResource( 1 ) -expand = true -stretch_mode = 2 -script = ExtResource( 2 ) - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/Move = SubResource( 1 ) diff --git a/World/TileHandler.gd b/World/TileHandler.gd deleted file mode 100644 index 7368f39..0000000 --- a/World/TileHandler.gd +++ /dev/null @@ -1,23 +0,0 @@ -extends Node2D -export var map_size = Vector2(32, 16) -var tiles = [] -signal size_updated(tiles) - -func _ready() -> void: - spawn() - -func spawn(): - var Tile = preload("res://World/Tiles/Tile.tscn") - for x in range(0, map_size.x): - for y in range (0, map_size.y): - var tile = Tile.instance() - tile.set_tile_id(Vector2(x,y)) - # tile is coast if its on one of the outer borders - if x == 0 or x == map_size.x -1 or y == 0 or y==map_size.y -1: - tile.is_coast = true - tiles.append(tile) - add_child(tile) - update_size() - -func update_size(): - emit_signal("size_updated", tiles) diff --git a/World/Tiles/CoastalProps.gd b/World/Tiles/CoastalProps.gd deleted file mode 100644 index 91bb931..0000000 --- a/World/Tiles/CoastalProps.gd +++ /dev/null @@ -1,17 +0,0 @@ -extends Node2D - -func _ready() -> void: - set_random_platform() - -# selects one of the platform sprites randomly and picks it -func set_random_platform(): - var sprite = $Platform - var reflection = $Reflection - var sprites = [ - preload("res://Resources/Graphics/Tiles/platform.png"), - preload("res://Resources/Graphics/Tiles/platform2.png"), - preload("res://Resources/Graphics/Tiles/platform3.png"), - preload("res://Resources/Graphics/Tiles/platform4.png"), - ] - sprite.texture = sprites[Randomizer.rng.randi_range(0, sprites.size() - 1)] - reflection.texture = sprite.texture diff --git a/World/Tiles/CoastalProps.tscn b/World/Tiles/CoastalProps.tscn deleted file mode 100644 index 121e343..0000000 --- a/World/Tiles/CoastalProps.tscn +++ /dev/null @@ -1,70 +0,0 @@ -[gd_scene load_steps=10 format=2] - -[ext_resource path="res://Resources/Graphics/Water/close_to_land.png" type="Texture" id=2] -[ext_resource path="res://Resources/Graphics/Tiles/platform.png" type="Texture" id=3] -[ext_resource path="res://World/Tiles/CoastalProps.gd" type="Script" id=4] - -[sub_resource type="ParticlesMaterial" id=6] -emission_shape = 2 -emission_box_extents = Vector3( 16, 1, 1 ) -flag_disable_z = true -direction = Vector3( 0, -1, 0 ) -gravity = Vector3( 0, 5, 0 ) -initial_velocity = 10.0 -initial_velocity_random = 0.5 -orbit_velocity = 0.0 -orbit_velocity_random = 0.0 - -[sub_resource type="AtlasTexture" id=2] -atlas = ExtResource( 2 ) -region = Rect2( 0, 0, 32, 32 ) - -[sub_resource type="AtlasTexture" id=3] -atlas = ExtResource( 2 ) -region = Rect2( 32, 0, 32, 32 ) - -[sub_resource type="AtlasTexture" id=4] -atlas = ExtResource( 2 ) -region = Rect2( 64, 0, 32, 32 ) - -[sub_resource type="AtlasTexture" id=5] -atlas = ExtResource( 2 ) -region = Rect2( 96, 0, 32, 32 ) - -[sub_resource type="SpriteFrames" id=1] -animations = [ { -"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ) ], -"loop": true, -"name": "default", -"speed": 2.0 -} ] - -[node name="CoastalProps" type="Node2D"] -script = ExtResource( 4 ) - -[node name="Platform" type="Sprite" parent="."] -position = Vector2( 0, 16 ) -z_index = -1 -texture = ExtResource( 3 ) - -[node name="Particles2D" type="Particles2D" parent="."] -position = Vector2( 0, 29 ) -z_index = -1 -amount = 2 -lifetime = 2.0 -randomness = 1.0 -process_material = SubResource( 6 ) - -[node name="Reflection" type="Sprite" parent="."] -self_modulate = Color( 1, 1, 1, 0.113725 ) -position = Vector2( 0, 37 ) -z_index = -1 -texture = ExtResource( 3 ) -flip_v = true - -[node name="Water" type="AnimatedSprite" parent="."] -position = Vector2( 0, 16 ) -z_index = -1 -frames = SubResource( 1 ) -frame = 2 -playing = true diff --git a/World/Tiles/Reflection.gd b/World/Tiles/Reflection.gd deleted file mode 100644 index 0a6696b..0000000 --- a/World/Tiles/Reflection.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Sprite - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - texture = get_node("../Platform").texture - diff --git a/World/Tiles/Tile.gd b/World/Tiles/Tile.gd deleted file mode 100644 index b62e0f1..0000000 --- a/World/Tiles/Tile.gd +++ /dev/null @@ -1,31 +0,0 @@ -extends Area2D -enum outline_colors{PURPLE, RED, BLUE, GREEN, YELLOW} -var tile_id = Vector2(0,0) -var is_coast = false - -func _ready() -> void: - if is_coast: - add_child(preload("res://World/Tiles/CoastalProps.tscn").instance()) - -func change_color_to(color): - var sprite = $Sprite - if color == outline_colors.PURPLE: - sprite.texture = preload("res://Resources/Graphics/Tiles/purple.png") - elif color == outline_colors.RED: - sprite.texture = preload("res://Resources/Graphics/Tiles/red.png") - elif color == outline_colors.BLUE: - sprite.texture = preload("res://Resources/Graphics/Tiles/blue.png") - elif color == outline_colors.GREEN: - sprite.texture = preload("res://Resources/Graphics/Tiles/green.png") - elif color == outline_colors.YELLOW: - sprite.texture = preload("res://Resources/Graphics/Tiles/yellow.png") - -func set_tile_id(id: Vector2): - tile_id = id - set_position(id) - -func set_position(id: Vector2): - position.x = id.x * 32 - position.y = id.y * 26 - if (fmod(id.y, 2)) == 0: - position.x += 16 diff --git a/World/Tiles/Tile.tscn b/World/Tiles/Tile.tscn deleted file mode 100644 index 6d92f2a..0000000 --- a/World/Tiles/Tile.tscn +++ /dev/null @@ -1,14 +0,0 @@ -[gd_scene load_steps=3 format=2] - -[ext_resource path="res://Resources/Graphics/Tiles/purple.png" type="Texture" id=1] -[ext_resource path="res://World/Tiles/Tile.gd" type="Script" id=2] - -[node name="Tile" type="Area2D"] -script = ExtResource( 2 ) - -[node name="Sprite" type="Sprite" parent="."] -texture = ExtResource( 1 ) - -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] -visible = false -polygon = PoolVector2Array( -15, -9, -14, -10, -12, -11, -9, -12, -7, -13, -4, -14, -2, -15, 2, -15, 4, -14, 7, -13, 9, -12, 12, -11, 14, -10, 15, -9, 15, 9, 14, 10, 12, 11, 9, 12, 7, 13, 4, 14, 2, 15, -2, 15, -4, 14, -7, 13, -9, 12, -12, 11, -14, 10, -15, 9 ) diff --git a/World/Tools/Camera/Camera.gd b/World/Tools/Camera/Camera.gd deleted file mode 100644 index d78d73d..0000000 --- a/World/Tools/Camera/Camera.gd +++ /dev/null @@ -1,53 +0,0 @@ -extends Camera2D -export var zoom_strength = 0.6 -export var zoom_limit_upper = 2 -export var zoom_limit_lower = 0.05 -signal limits_changed(lefttop, bottomright) - -func _process(_delta: float) -> void: - # position - var left = Input.get_action_strength("move_camera_left") - var right = Input.get_action_strength("move_camera_right") - var x_direction = right - left - var up = Input.get_action_strength("move_camera_up") - var down = Input.get_action_strength("move_camera_down") - var y_direction = down - up - var direction = Vector2(x_direction, y_direction) - global_position += direction.normalized() * zoom.x * 3 - - #mouse drag - if Input.is_action_pressed("camera_drag"): - var distance = clamp(global_position.distance_to(get_global_mouse_position()) / 24, 0, 10) - global_position.x += global_position.direction_to(get_global_mouse_position()).x * distance - global_position.y += global_position.direction_to(get_global_mouse_position()).y * distance - - # if camera goes out of bounds, then reset it - var halfwidth = ProjectSettings.get("display/window/size/width") / 2 - var halfheight = ProjectSettings.get("display/window/size/height") / 2 - if global_position.x - halfwidth * (zoom.x) <= limit_left : - global_position.x = limit_left + (halfwidth) * (zoom.x) - elif global_position.x + halfwidth * zoom.x >= limit_right: - global_position.x = limit_right - halfwidth * zoom.x - if global_position.y - halfheight * zoom.x <= limit_top: - global_position.y = limit_top + halfheight * zoom.x - elif global_position.y + halfheight * zoom.x >= limit_bottom: - global_position.y = limit_bottom - halfheight * zoom.x - - # zoom - var zoom_direction = 0 - if Input.is_action_just_released("camera_zoom_in") or Input.is_action_pressed("camera_zoom_in"): - zoom_direction = zoom_strength * -1 - elif Input.is_action_just_released("camera_zoom_out") or Input.is_action_pressed("camera_zoom_out"): - zoom_direction = zoom_strength - if zoom_limit_lower <= (zoom.x + zoom_direction) && (zoom.x + zoom_direction) <= zoom_limit_upper: - zoom.x = lerp(zoom.x, zoom.x + zoom_direction, 0.1) - zoom.y = lerp(zoom.y, zoom.y + zoom_direction, 0.1) - -func _on_Grid_size_updated(tiles: Array) -> void: - limit_left = tiles.front().global_position.x - 64 - limit_top = tiles.front().global_position.y - 64 - limit_bottom = tiles.back().global_position.y + 64 - limit_right = tiles.back().global_position.x + 64 - position.x = limit_right / 2.0 - position.y = limit_bottom / 2.0 - emit_signal("limits_changed", Vector2(limit_left, limit_top), Vector2(limit_right, limit_bottom)) diff --git a/World/Tools/Camera/Camera.tscn b/World/Tools/Camera/Camera.tscn deleted file mode 100644 index 0e11322..0000000 --- a/World/Tools/Camera/Camera.tscn +++ /dev/null @@ -1,18 +0,0 @@ -[gd_scene load_steps=3 format=2] - -[ext_resource path="res://World/Tools/Camera/Camera.gd" type="Script" id=1] -[ext_resource path="res://icon.png" type="Texture" id=3] - -[node name="Camera" type="Camera2D"] -current = true -smoothing_enabled = true -drag_margin_left = 0.8 -drag_margin_top = 0.8 -drag_margin_right = 0.8 -drag_margin_bottom = 0.8 -script = ExtResource( 1 ) - -[node name="Icon" type="Sprite" parent="."] -visible = false -position = Vector2( 0, -3 ) -texture = ExtResource( 3 ) diff --git a/World/Tools/Camera/Drag.gd b/World/Tools/Camera/Drag.gd deleted file mode 100644 index 306cb7e..0000000 --- a/World/Tools/Camera/Drag.gd +++ /dev/null @@ -1,5 +0,0 @@ -extends Node2D - - -func _physics_process(delta: float) -> void: - global_position = get_global_mouse_position() diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..f972373 --- /dev/null +++ b/build.sh @@ -0,0 +1,7 @@ +#!/usr/bin/bash + +cd "./routes-native" +cargo build --release +cd "../" + +cp "./routes-native/target/release/libroutes_native.so" "./godot/native/" -i diff --git a/build/libroutes_native.so b/build/libroutes_native.so new file mode 100644 index 0000000..caedfd5 Binary files /dev/null and b/build/libroutes_native.so differ diff --git a/Build/codename-routes.x86_64 b/build/routes.x86_64 similarity index 74% rename from Build/codename-routes.x86_64 rename to build/routes.x86_64 index 90d1a90..5a4e56e 100755 Binary files a/Build/codename-routes.x86_64 and b/build/routes.x86_64 differ diff --git a/.import/.gdignore b/godot/.import/.gdignore similarity index 100% rename from .import/.gdignore rename to godot/.import/.gdignore diff --git a/godot/.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.md5 b/godot/.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.md5 new file mode 100644 index 0000000..9b2d15f --- /dev/null +++ b/godot/.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.md5 @@ -0,0 +1,3 @@ +source_md5="72b25c45d4743c578ac08e56b209be81" +dest_md5="73042650bec74eec84c50b98d4bafc70" + diff --git a/godot/.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.stex b/godot/.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.stex new file mode 100644 index 0000000..3eca1ec Binary files /dev/null and b/godot/.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.stex differ diff --git a/godot/.import/default.png-3bbe939339db863d2d767f4cc6888a76.md5 b/godot/.import/default.png-3bbe939339db863d2d767f4cc6888a76.md5 new file mode 100644 index 0000000..065d655 --- /dev/null +++ b/godot/.import/default.png-3bbe939339db863d2d767f4cc6888a76.md5 @@ -0,0 +1,3 @@ +source_md5="59c9436dc5ea53f2bc3dac38af894dec" +dest_md5="a62e530f259d2076dd7d2e62bc1d97b6" + diff --git a/godot/.import/default.png-3bbe939339db863d2d767f4cc6888a76.stex b/godot/.import/default.png-3bbe939339db863d2d767f4cc6888a76.stex new file mode 100644 index 0000000..94f5e19 Binary files /dev/null and b/godot/.import/default.png-3bbe939339db863d2d767f4cc6888a76.stex differ diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/godot/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 similarity index 100% rename from .import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 rename to godot/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/godot/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex similarity index 100% rename from .import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex rename to godot/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex diff --git a/default_env.tres b/godot/default_env.tres similarity index 100% rename from default_env.tres rename to godot/default_env.tres diff --git a/export_presets.cfg b/godot/export_presets.cfg similarity index 91% rename from export_presets.cfg rename to godot/export_presets.cfg index f1e43c8..96ff950 100644 --- a/export_presets.cfg +++ b/godot/export_presets.cfg @@ -7,7 +7,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="Build/codename-routes.x86_64" +export_path="../build/routes.x86_64" script_export_mode=1 script_encryption_key="" diff --git a/icon.png b/godot/icon.png similarity index 100% rename from icon.png rename to godot/icon.png diff --git a/icon.png.import b/godot/icon.png.import similarity index 100% rename from icon.png.import rename to godot/icon.png.import diff --git a/godot/native/StateServer.gdns b/godot/native/StateServer.gdns new file mode 100644 index 0000000..28cdef3 --- /dev/null +++ b/godot/native/StateServer.gdns @@ -0,0 +1,8 @@ +[gd_resource type="NativeScript" load_steps=2 format=2] + +[ext_resource path="res://native/nativelibrary.gdnlib" type="GDNativeLibrary" id=1] + +[resource] +resource_name = "StateServer" +class_name = "StateServer" +library = ExtResource( 1 ) diff --git a/godot/native/StateServer.tscn b/godot/native/StateServer.tscn new file mode 100644 index 0000000..b57c586 --- /dev/null +++ b/godot/native/StateServer.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://native/StateServer.gdns" type="Script" id=1] + +[node name="StateServer" type="Node"] +script = ExtResource( 1 ) diff --git a/godot/native/libroutes_native.so b/godot/native/libroutes_native.so new file mode 100755 index 0000000..06496e7 Binary files /dev/null and b/godot/native/libroutes_native.so differ diff --git a/godot/native/nativelibrary.gdnlib b/godot/native/nativelibrary.gdnlib new file mode 100644 index 0000000..c7cfb83 --- /dev/null +++ b/godot/native/nativelibrary.gdnlib @@ -0,0 +1,14 @@ +[entry] + +X11.64="res://native/libroutes_native.so" + +[dependencies] + +X11.64=[ ] + +[general] + +singleton=false +load_once=true +symbol_prefix="godot_" +reloadable=true diff --git a/godot/project.godot b/godot/project.godot new file mode 100644 index 0000000..98e704e --- /dev/null +++ b/godot/project.godot @@ -0,0 +1,82 @@ +; 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="routes" +run/main_scene="res://world/Main.tscn" +config/icon="res://icon.png" + +[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 +} + +[input] + +camera_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) + ] +} +camera_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) + ] +} +camera_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) + ] +} +camera_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) + ] +} +zoom_in={ +"deadzone": 0.5, +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"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) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":61,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +zoom_out={ +"deadzone": 0.5, +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"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) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":45,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +environment/default_environment="res://default_env.tres" diff --git a/godot/saves.gd b/godot/saves.gd new file mode 100644 index 0000000..1eccaec --- /dev/null +++ b/godot/saves.gd @@ -0,0 +1,16 @@ +extends Node + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/godot/sprite/tiles/terrain/default.png b/godot/sprite/tiles/terrain/default.png new file mode 100644 index 0000000..0c3cfb6 Binary files /dev/null and b/godot/sprite/tiles/terrain/default.png differ diff --git a/Resources/Graphics/Tiles/red.png.import b/godot/sprite/tiles/terrain/default.png.import similarity index 70% rename from Resources/Graphics/Tiles/red.png.import rename to godot/sprite/tiles/terrain/default.png.import index 57785c0..aadb6f4 100644 --- a/Resources/Graphics/Tiles/red.png.import +++ b/godot/sprite/tiles/terrain/default.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.stex" +path="res://.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.stex" metadata={ "vram_texture": false } [deps] -source_file="res://Resources/Graphics/Tiles/red.png" -dest_files=[ "res://.import/red.png-c3051ca11bb5b8c8686a8a85a9586dff.stex" ] +source_file="res://sprite/tiles/terrain/default.png" +dest_files=[ "res://.import/default.png-13971fa1f37d4ea367b7aa5973d2bb0a.stex" ] [params] diff --git a/godot/world/Main.tscn b/godot/world/Main.tscn new file mode 100644 index 0000000..756abba --- /dev/null +++ b/godot/world/Main.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://world/worldcam.gd" type="Script" id=1] +[ext_resource path="res://world/World.tscn" type="PackedScene" id=2] + +[node name="Main" type="Node2D"] + +[node name="Worldcam" type="Camera2D" parent="."] +current = true +zoom = Vector2( 0.4, 0.4 ) +script = ExtResource( 1 ) + +[node name="World" parent="." instance=ExtResource( 2 )] diff --git a/godot/world/StateApi.gd b/godot/world/StateApi.gd new file mode 100644 index 0000000..33ef3f4 --- /dev/null +++ b/godot/world/StateApi.gd @@ -0,0 +1,37 @@ +extends Node + +onready var server = $StateServer + +export var xsize = 256 +export var ysize = 256 +export var zsize = 16 + +var Tilemap = preload("res://world/Tilemap.tscn") +var tilemaps = [] + +func _ready(): + server.generate_world(xsize, ysize, zsize) + print(server.get_tile_at(0,0,0)) + +func respawn_tilemaps(amount: int): + tilemaps = [] + for i in range(0, amount + 1): + var map = Tilemap.instance() + map.position.y -= i * map.cell_size.y + map.z_index = i + add_child(map) + tilemaps.push_back(map) + +func get_tile_at(pos: Vector3) -> String: + return server.get_tile_at(int(pos.x), int(pos.y), int(pos.z)) + +func update_tiles(tile_positions: PoolVector3Array): + for tile in tile_positions: + tilemaps[tile.z].set_tile_graphics(Vector2(tile.x, tile.y), + get_tile_at(tile)) + +func _on_StateServer_request_init(): + respawn_tilemaps(zsize - 1) + +func _on_StateServer_changed_tiletypes(tile_positions: PoolVector3Array): + call_deferred("update_tiles", tile_positions) diff --git a/godot/world/Tilemap.gd b/godot/world/Tilemap.gd new file mode 100644 index 0000000..5d078f2 --- /dev/null +++ b/godot/world/Tilemap.gd @@ -0,0 +1,4 @@ +extends TileMap + +func set_tile_graphics(pos: Vector2, id: int): + set_cell(pos.x,pos.y,0,false,false,false,Vector2(1,2)) diff --git a/godot/world/Tilemap.tscn b/godot/world/Tilemap.tscn new file mode 100644 index 0000000..bd723c0 --- /dev/null +++ b/godot/world/Tilemap.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://world/terrain/terrain.tres" type="TileSet" id=1] +[ext_resource path="res://world/Tilemap.gd" type="Script" id=2] + +[node name="Tilemap" type="TileMap"] +position = Vector2( -2, 0 ) +mode = 1 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 32, 16 ) +cell_tile_origin = 1 +collision_layer = 0 +collision_mask = 0 +format = 1 +script = ExtResource( 2 ) diff --git a/godot/world/World.tscn b/godot/world/World.tscn new file mode 100644 index 0000000..b58654f --- /dev/null +++ b/godot/world/World.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://world/StateApi.gd" type="Script" id=1] +[ext_resource path="res://native/StateServer.tscn" type="PackedScene" id=3] + +[node name="World" type="Node"] +script = ExtResource( 1 ) + +[node name="StateServer" parent="." instance=ExtResource( 3 )] + +[connection signal="changed_tiletypes" from="StateServer" to="." method="_on_StateServer_changed_tiletypes"] +[connection signal="request_init" from="StateServer" to="." method="_on_StateServer_request_init"] diff --git a/godot/world/state_server.gdns b/godot/world/state_server.gdns new file mode 100644 index 0000000..71fee6c --- /dev/null +++ b/godot/world/state_server.gdns @@ -0,0 +1,10 @@ +[gd_resource type="NativeScript" load_steps=2 format=2] + +[sub_resource type="GDNativeLibrary" id=1] +entry/X11.64 = "res://native/libroutes_native.so" +dependency/X11.64 = [ ] + +[resource] +resource_name = "StateServer" +class_name = "StateServer" +library = SubResource( 1 ) diff --git a/godot/world/terrain/terrain.tres b/godot/world/terrain/terrain.tres new file mode 100644 index 0000000..321c0c2 --- /dev/null +++ b/godot/world/terrain/terrain.tres @@ -0,0 +1,26 @@ +[gd_resource type="TileSet" load_steps=2 format=2] + +[ext_resource path="res://sprite/tiles/terrain/default.png" type="Texture" id=1] + +[resource] +0/name = "default.png 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 320, 160 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 32, 32 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +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 diff --git a/godot/world/worldcam.gd b/godot/world/worldcam.gd new file mode 100644 index 0000000..9c2a935 --- /dev/null +++ b/godot/world/worldcam.gd @@ -0,0 +1,22 @@ +extends Camera2D +export var min_zoom = 0.4 +export var speed = 200 +var zoomlevel = 0.4 + + +func _process(delta): + move_around(delta) + handle_zoom() + +func move_around(delta): + var xdirection = Input.get_action_strength("camera_right") - Input.get_action_strength("camera_left") + var ydirection = Input.get_action_strength("camera_down") - Input.get_action_strength("camera_up") + var direction = Vector2(xdirection, ydirection).normalized() * delta * speed * zoom + position = lerp(position, position + direction, 2) + +func handle_zoom(): + if Input.is_action_just_pressed("zoom_in"): + zoomlevel = clamp(zoomlevel - 0.1, 0.1, 2) + if Input.is_action_just_pressed("zoom_out"): + zoomlevel = clamp(zoomlevel + 0.1, 0.1, 2) + zoom = Vector2(zoomlevel, zoomlevel) diff --git a/Resources/External/Graphics/mulfok62-1x.png b/libresprite/mulfok62-1x.png similarity index 100% rename from Resources/External/Graphics/mulfok62-1x.png rename to libresprite/mulfok62-1x.png diff --git a/libresprite/tiles/default.ase b/libresprite/tiles/default.ase new file mode 100644 index 0000000..3834f0a Binary files /dev/null and b/libresprite/tiles/default.ase differ diff --git a/project.godot b/project.godot deleted file mode 100644 index 5d636e6..0000000 --- a/project.godot +++ /dev/null @@ -1,169 +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="codename-routes" -run/main_scene="res://World/Map.tscn" -boot_splash/fullsize=false -config/icon="res://icon.png" - -[autoload] - -Randomizer="*res://Global/Randomizer.gd" - -[display] - -window/size/width=640 -window/size/height=360 -window/size/test_height=1 -window/stretch/mode="2d" -window/stretch/aspect="keep" - -[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 -} - -[input] - -ui_accept={ -"deadzone": 0.5, -"events": [ ] -} -ui_select={ -"deadzone": 0.5, -"events": [ ] -} -ui_cancel={ -"deadzone": 0.5, -"events": [ ] -} -ui_focus_next={ -"deadzone": 0.5, -"events": [ ] -} -ui_focus_prev={ -"deadzone": 0.5, -"events": [ ] -} -ui_left={ -"deadzone": 0.5, -"events": [ ] -} -ui_right={ -"deadzone": 0.5, -"events": [ ] -} -ui_up={ -"deadzone": 0.5, -"events": [ ] -} -ui_down={ -"deadzone": 0.5, -"events": [ ] -} -ui_page_up={ -"deadzone": 0.5, -"events": [ ] -} -ui_page_down={ -"deadzone": 0.5, -"events": [ ] -} -ui_home={ -"deadzone": 0.5, -"events": [ ] -} -ui_end={ -"deadzone": 0.5, -"events": [ ] -} -move_camera_left={ -"deadzone": 0.1, -"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":0,"physical_scancode":65,"unicode":0,"echo":false,"script":null) -, 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) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null) - ] -} -move_camera_right={ -"deadzone": 0.1, -"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":0,"physical_scancode":68,"unicode":0,"echo":false,"script":null) -, 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) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null) - ] -} -move_camera_up={ -"deadzone": 0.1, -"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null) -, 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) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":87,"unicode":0,"echo":false,"script":null) - ] -} -move_camera_down={ -"deadzone": 0.1, -"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":83,"unicode":0,"echo":false,"script":null) -, 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) - ] -} -camera_zoom_in={ -"deadzone": 0.1, -"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"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) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":6,"axis_value":1.0,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":61,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":61,"unicode":0,"echo":false,"script":null) - ] -} -camera_zoom_out={ -"deadzone": 0.1, -"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"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) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":7,"axis_value":1.0,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":45,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":45,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -camera_drag={ -"deadzone": 0.1, -"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"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":2,"pressed":false,"doubleclick":false,"script":null) - ] -} - -[physics] - -common/enable_pause_aware_picking=true - -[rendering] - -environment/default_clear_color=Color( 0.552941, 0.717647, 1, 1 ) -environment/default_environment="res://default_env.tres" - -[world] - -2d/cell_size=32 diff --git a/routes-native/Cargo.toml b/routes-native/Cargo.toml new file mode 100644 index 0000000..631ac24 --- /dev/null +++ b/routes-native/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "routes-native" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib"] + +[dependencies] +gdnative = {version = "0.10", features = ["async"]} +strum = { version = "0.24", features = ["derive"] } +strum_macros = "0.24" +derive_builder = "0.11.2" +# tokio = {version = "1.18.0", features = ["sync"]} +# lazy_static = "1.4.0" +# pathfinding = "3.0.12" +toml = "0.5.9" + +[profile.dev.package."*"] +opt-level = 3 + +[profile.dev] +opt-level=1 + diff --git "a/routes-native/\\" "b/routes-native/\\" new file mode 100644 index 0000000..d3de4a1 --- /dev/null +++ "b/routes-native/\\" @@ -0,0 +1,44 @@ +use gdnative::{export::hint::EnumHint, prelude::*}; +use lazy_static::lazy_static; +use std::{string::ToString, vec}; +use strum::IntoEnumIterator; +use strum_macros::{Display, EnumIter}; +use tokio::sync::RwLock; + +lazy_static! { + // static ref STATE: RwLock = RwLock::new(Vector3::new(1.0, 2.0, 3.0)); +} + +#[derive(Debug, EnumIter, Display, FromVariant, ToVariant)] +enum Terrain { + Earth, + Rock, + Sand, + Water, + Air, +} + +#[derive(NativeClass)] +#[inherit(Node)] +pub struct StateServer; + +#[methods] +impl StateServer { + fn new(_owner: &Node) -> Self { + StateServer + } + + #[export] + fn _ready(&self, _owner: &Node) { + // godot_print!("hello, state") + } + + #[export] + fn terrain_types(&self, _owner: &Node) -> EnumHint{ + let mut hints = vec![]; + for terrain in Terrain::iter() { + hints.push(terrain.to_string()); + } + EnumHint::new(hints) + } +} diff --git a/routes-native/src/lib.rs b/routes-native/src/lib.rs new file mode 100644 index 0000000..0cc9c9d --- /dev/null +++ b/routes-native/src/lib.rs @@ -0,0 +1,9 @@ +use gdnative::prelude::*; + +mod stateserver; + +fn init(handle: InitHandle) { + handle.add_class::(); +} + +godot_init!(init); diff --git a/routes-native/src/stateserver.rs b/routes-native/src/stateserver.rs new file mode 100644 index 0000000..6c63371 --- /dev/null +++ b/routes-native/src/stateserver.rs @@ -0,0 +1,57 @@ +use gdnative::prelude::*; + +mod saves; +mod world; + +#[derive(NativeClass)] +#[inherit(Node)] +#[register_with(Self::register)] +pub struct StateServer { + world: world::World, +} + +#[methods] +impl StateServer { + fn new(_owner: &Node) -> Self { + StateServer { + world: world::World::new(0, 0, 0), + } + } + + #[export] + fn load_from_file(&self, _owner: &Node, file: GodotString) { + saves::load(&file.to_string()); + } + + #[export] + fn save_from_file(&self, _owner: &Node, file: GodotString) { + saves::save(&file.to_string()); + } + + #[export] + fn _ready(&self, _owner: &Node) {} + + #[export] + fn generate_world(&mut self, _owner: &Node, xsize: usize, ysize: usize, zsize: usize) { + self.world = world::World::new(xsize, ysize, zsize); + let w = self.world.generate(); + _owner.emit_signal("request_init", &[]); + _owner.emit_signal("changed_tiletypes", &[Variant::new(&w)]); + } + + #[export] + fn get_tile_at(&self, _owner: &Node, x: usize, y: usize, z: usize) -> u16 { + self.world.get_tile_at(x, y, z) + } +} + +// signals +impl StateServer { + fn register(builder: &ClassBuilder) { + builder + .signal("changed_tiletypes") + .with_param("tile_positions", VariantType::Vector3Array) + .done(); + builder.signal("request_init").done(); + } +} diff --git a/routes-native/src/stateserver/pathing.rs b/routes-native/src/stateserver/pathing.rs new file mode 100644 index 0000000..e69de29 diff --git a/routes-native/src/stateserver/saves.rs b/routes-native/src/stateserver/saves.rs new file mode 100644 index 0000000..da80bd1 --- /dev/null +++ b/routes-native/src/stateserver/saves.rs @@ -0,0 +1,9 @@ +use toml; + +pub fn load (file: &str){ + +} + +pub fn save (file: &str){ + +} diff --git a/routes-native/src/stateserver/world.rs b/routes-native/src/stateserver/world.rs new file mode 100644 index 0000000..4b78618 --- /dev/null +++ b/routes-native/src/stateserver/world.rs @@ -0,0 +1,53 @@ +use gdnative::prelude::*; + +mod tiles; + +pub struct World { + xsize: usize, + ysize: usize, + zsize: usize, + tiles: Vec>>, +} + +impl World { + pub fn get_tile_at(&self, x: usize, y: usize, z: usize) -> u16{ + //TODO: error handling, or maybe just do that in godot + self.tiles[x][y][z] + } + pub fn generate(&mut self) -> Vector3Array{ + self.tiles = get_vec3(self.xsize, self.ysize, self.zsize); + let mut ret: Vector3Array = Vector3Array::new(); + for x in 0..self.xsize { + for y in 0..self.ysize { + for z in 0..self.zsize { + ret.push(Vector3::new(x as f32, y as f32, z as f32)); + self.tiles[x][y][z] = tiles::Tiletypes::Dirt as u16; + } + } + } + ret + } + pub fn new(xsize: usize, ysize: usize, zsize: usize) -> World { + World { + xsize, + ysize, + zsize, + tiles: get_vec3(xsize, ysize, zsize), + } + } +} + +fn get_vec3(xsize: usize, ysize: usize, zsize: usize) -> Vec>> { + let mut zvec: Vec = Vec::with_capacity(zsize); + zvec.resize(zsize, 0); + + let mut yvec: Vec> = Vec::with_capacity(ysize); + yvec.resize(ysize, zvec.clone()); + + let mut xvec: Vec>> = Vec::with_capacity(xsize); + xvec.resize(ysize, yvec.clone()); + + yvec.push(zvec); + xvec.push(yvec); + xvec +} diff --git a/routes-native/src/stateserver/world/tiles.rs b/routes-native/src/stateserver/world/tiles.rs new file mode 100644 index 0000000..fa824b8 --- /dev/null +++ b/routes-native/src/stateserver/world/tiles.rs @@ -0,0 +1,35 @@ +use derive_builder::Builder; +use strum::{AsRefStr, EnumDiscriminants, EnumIter, FromRepr}; + +#[derive(AsRefStr, EnumIter, FromRepr, EnumDiscriminants, Clone)] +#[repr(u16)] +pub enum Tiletypes { + Air, + Water, + Grass, + Dirt, + Sand, +} + +#[allow(dead_code)] +#[derive(Builder)] +pub struct Tile { + kind: Tiletypes, + #[builder(default = "true")] + is_support: bool, + #[builder(default = "true")] + needs_support: bool, + #[builder(default = "vec![]")] + can_be_above: Vec, + #[builder(default = "vec![]")] + can_be_next_to: Vec, +} + +impl Tile { + pub fn new(kind: Tiletypes) -> Tile { + TileBuilder::default().kind(kind).is_support(false).build().unwrap() + } + pub fn kind_to_string(&self) -> String { + self.kind.as_ref().to_string() + } +}