From 86d118af6af5e47bd335541f0896a93d12de9949 Mon Sep 17 00:00:00 2001 From: Kienan Stewart Date: Sat, 24 Nov 2018 13:36:49 -0500 Subject: [PATCH] Add uncomitted changes --- assets/tilemaps/default/sample_level.tmx | 58 +++ assets/ui/clock.xcf | Bin 0 -> 78535 bytes assets/ui/icons/help.png | Bin 0 -> 715 bytes assets/ui/icons/help.xcf | Bin 0 -> 3318 bytes assets/ui/icons/progress_texture.xcf | Bin 0 -> 1870 bytes ....png-2db149efb21bb9bbfac413be9641e085.stex | Bin 0 -> 1924 bytes ....png-09b4a660a58c86478b8ce31163fe5a4d.stex | Bin 0 -> 3202 bytes ....png-defc6fd14185d12b7de4e2cbc06ae785.stex | Bin 0 -> 324 bytes ....png-b7950067027b0d689b097507982efb2a.stex | Bin 0 -> 1072 bytes ....png-e2b8cfcaccb3e2cf0ea7059f79a1642c.stex | Bin 0 -> 781 bytes ....png-90b2798c1dfceadf2b73486f421d1f9c.stex | Bin 0 -> 219 bytes ....png-457c15d58017cd09c9bd2f6adbe8ac4e.stex | Bin 0 -> 450 bytes ....png-c9952a90dbaaecffbc9e220ef4dbdc8d.stex | Bin 0 -> 1640 bytes ....png-cf1cddecd73dd335a077840111cb9343.stex | Bin 0 -> 1300 bytes ....png-87dff282d0a16c1706f7235cbdb25bb6.stex | Bin 0 -> 1544 bytes ....png-1e119bbfbb4a1c0ab0627bf2e30a96d2.stex | Bin 0 -> 1652 bytes ....png-056a3a2e257801d36b0b2b85a83d0c60.stex | Bin 0 -> 811 bytes ....png-ef727fc4b3b4a5e804e2f623484b6474.stex | Bin 0 -> 811 bytes ....png-cfef9686b4b28753118fd0b3683f052e.stex | Bin 0 -> 1217 bytes game/game.gd | 249 ++++++++++ game/game.tscn | 411 ++++++++++++++++ game/help_popup.gd | 23 + game/levels/sample/level.gd | 22 + game/levels/sample/level.tscn | 37 ++ game/levels/sample/sample_level.tmx | 58 +++ game/levels/sample/sample_level.tmx.import | 20 + game/levels/sample/sample_level.tsx | 22 + game/levels/sample/sample_level.tsx.import | 20 + game/levels/sample/terrain.tscn | 26 + game/levels/tilesets/default/default.tres | 102 ++++ game/levels/tilesets/default/default.tsx | 22 + .../tilesets/default/default.tsx.import | 20 + game/levels/tilesets/default/png/bridge.png | Bin 0 -> 1990 bytes .../tilesets/default/png/bridge.png.import | 32 ++ game/levels/tilesets/default/png/farm.png | Bin 0 -> 365 bytes .../tilesets/default/png/farm.png.import | 32 ++ game/levels/tilesets/default/png/grass.png | Bin 0 -> 1123 bytes .../tilesets/default/png/grass.png.import | 32 ++ game/levels/tilesets/default/png/house.png | Bin 0 -> 271 bytes .../tilesets/default/png/house.png.import | 32 ++ .../tilesets/default/png/road_cross.png | Bin 0 -> 1660 bytes .../default/png/road_cross.png.import | 32 ++ .../tilesets/default/png/road_single.png | Bin 0 -> 1249 bytes .../default/png/road_single.png.import | 32 ++ .../tilesets/default/png/road_straight.png | Bin 0 -> 1489 bytes .../default/png/road_straight.png.import | 32 ++ game/levels/tilesets/default/png/road_tee.png | Bin 0 -> 1647 bytes .../tilesets/default/png/road_tee.png.import | 32 ++ game/levels/tilesets/default/png/water.png | Bin 0 -> 1266 bytes .../tilesets/default/png/water.png.import | 32 ++ .../levels/tilesets/default/source/bridge.xcf | Bin 0 -> 5650 bytes game/levels/tilesets/default/source/farm.xcf | Bin 0 -> 1151 bytes game/levels/tilesets/default/source/grass.xcf | Bin 0 -> 3240 bytes game/levels/tilesets/default/source/house.xcf | Bin 0 -> 891 bytes .../tilesets/default/source/road_cross.xcf | Bin 0 -> 3406 bytes .../tilesets/default/source/road_single.xcf | Bin 0 -> 2637 bytes .../tilesets/default/source/road_straight.xcf | Bin 0 -> 3367 bytes .../tilesets/default/source/road_tee.xcf | Bin 0 -> 3550 bytes game/levels/tilesets/default/source/water.xcf | Bin 0 -> 2833 bytes game/mainmenu.tscn | 5 + game/project.godot | 4 +- game/tests/test-2d.tscn | 2 +- game/ui/clock.png | Bin 0 -> 2634 bytes game/ui/clock.png.import | 32 ++ game/ui/current_resources.gd | 33 ++ game/ui/current_resources.tscn | 449 ++++++++++++++++++ game/ui/help.png | Bin 0 -> 715 bytes game/ui/help.png.import | 32 ++ game/ui/mapsize.gd | 19 + game/ui/mapsize.tscn | 77 +++ game/ui/progress_texture.png | Bin 0 -> 494 bytes game/ui/progress_texture.png.import | 32 ++ game/ui/prompt.gd | 45 ++ game/ui/resource_progress_bar.gd | 21 + game/ui/resource_progress_bar.tscn | 91 ++++ game/ui/timer.gd | 43 ++ game/ui/timer.tscn | 93 ++++ 77 files changed, 2353 insertions(+), 3 deletions(-) create mode 100644 assets/tilemaps/default/sample_level.tmx create mode 100644 assets/ui/clock.xcf create mode 100644 assets/ui/icons/help.png create mode 100644 assets/ui/icons/help.xcf create mode 100644 assets/ui/icons/progress_texture.xcf create mode 100644 game/.import/bridge.png-2db149efb21bb9bbfac413be9641e085.stex create mode 100644 game/.import/clock.png-09b4a660a58c86478b8ce31163fe5a4d.stex create mode 100644 game/.import/farm.png-defc6fd14185d12b7de4e2cbc06ae785.stex create mode 100644 game/.import/grass.png-b7950067027b0d689b097507982efb2a.stex create mode 100644 game/.import/help.png-e2b8cfcaccb3e2cf0ea7059f79a1642c.stex create mode 100644 game/.import/house.png-90b2798c1dfceadf2b73486f421d1f9c.stex create mode 100644 game/.import/progress_texture.png-457c15d58017cd09c9bd2f6adbe8ac4e.stex create mode 100644 game/.import/road_cross.png-c9952a90dbaaecffbc9e220ef4dbdc8d.stex create mode 100644 game/.import/road_single.png-cf1cddecd73dd335a077840111cb9343.stex create mode 100644 game/.import/road_straight.png-87dff282d0a16c1706f7235cbdb25bb6.stex create mode 100644 game/.import/road_tee.png-1e119bbfbb4a1c0ab0627bf2e30a96d2.stex create mode 100644 game/.import/tiled.png-056a3a2e257801d36b0b2b85a83d0c60.stex create mode 100644 game/.import/tiled.png-ef727fc4b3b4a5e804e2f623484b6474.stex create mode 100644 game/.import/water.png-cfef9686b4b28753118fd0b3683f052e.stex create mode 100644 game/game.gd create mode 100644 game/game.tscn create mode 100644 game/help_popup.gd create mode 100644 game/levels/sample/level.gd create mode 100644 game/levels/sample/level.tscn create mode 100644 game/levels/sample/sample_level.tmx create mode 100644 game/levels/sample/sample_level.tmx.import create mode 100644 game/levels/sample/sample_level.tsx create mode 100644 game/levels/sample/sample_level.tsx.import create mode 100644 game/levels/sample/terrain.tscn create mode 100644 game/levels/tilesets/default/default.tres create mode 100644 game/levels/tilesets/default/default.tsx create mode 100644 game/levels/tilesets/default/default.tsx.import create mode 100644 game/levels/tilesets/default/png/bridge.png create mode 100644 game/levels/tilesets/default/png/bridge.png.import create mode 100644 game/levels/tilesets/default/png/farm.png create mode 100644 game/levels/tilesets/default/png/farm.png.import create mode 100644 game/levels/tilesets/default/png/grass.png create mode 100644 game/levels/tilesets/default/png/grass.png.import create mode 100644 game/levels/tilesets/default/png/house.png create mode 100644 game/levels/tilesets/default/png/house.png.import create mode 100644 game/levels/tilesets/default/png/road_cross.png create mode 100644 game/levels/tilesets/default/png/road_cross.png.import create mode 100644 game/levels/tilesets/default/png/road_single.png create mode 100644 game/levels/tilesets/default/png/road_single.png.import create mode 100644 game/levels/tilesets/default/png/road_straight.png create mode 100644 game/levels/tilesets/default/png/road_straight.png.import create mode 100644 game/levels/tilesets/default/png/road_tee.png create mode 100644 game/levels/tilesets/default/png/road_tee.png.import create mode 100644 game/levels/tilesets/default/png/water.png create mode 100644 game/levels/tilesets/default/png/water.png.import create mode 100644 game/levels/tilesets/default/source/bridge.xcf create mode 100644 game/levels/tilesets/default/source/farm.xcf create mode 100644 game/levels/tilesets/default/source/grass.xcf create mode 100644 game/levels/tilesets/default/source/house.xcf create mode 100644 game/levels/tilesets/default/source/road_cross.xcf create mode 100644 game/levels/tilesets/default/source/road_single.xcf create mode 100644 game/levels/tilesets/default/source/road_straight.xcf create mode 100644 game/levels/tilesets/default/source/road_tee.xcf create mode 100644 game/levels/tilesets/default/source/water.xcf create mode 100644 game/mainmenu.tscn create mode 100644 game/ui/clock.png create mode 100644 game/ui/clock.png.import create mode 100644 game/ui/current_resources.gd create mode 100644 game/ui/current_resources.tscn create mode 100644 game/ui/help.png create mode 100644 game/ui/help.png.import create mode 100644 game/ui/mapsize.gd create mode 100644 game/ui/mapsize.tscn create mode 100644 game/ui/progress_texture.png create mode 100644 game/ui/progress_texture.png.import create mode 100644 game/ui/prompt.gd create mode 100644 game/ui/resource_progress_bar.gd create mode 100644 game/ui/resource_progress_bar.tscn create mode 100644 game/ui/timer.gd create mode 100644 game/ui/timer.tscn diff --git a/assets/tilemaps/default/sample_level.tmx b/assets/tilemaps/default/sample_level.tmx new file mode 100644 index 0000000..d6d184b --- /dev/null +++ b/assets/tilemaps/default/sample_level.tmx @@ -0,0 +1,58 @@ + + + + + +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4, +1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4, +1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4, +4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,1,1, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 + + + diff --git a/assets/ui/clock.xcf b/assets/ui/clock.xcf new file mode 100644 index 0000000000000000000000000000000000000000..84ff4bb5ac2422ef8db46aef9d6ec6afbcac8003 GIT binary patch literal 78535 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 literal 0 HcmV?d00001 diff --git a/assets/ui/icons/help.png b/assets/ui/icons/help.png new file mode 100644 index 0000000000000000000000000000000000000000..71b8014961325847e08d4ef42a08e2c8991c3a30 GIT binary patch literal 715 zcmV;+0yO=JP)pfE)k-03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00J*bL_t(o!_8N}YZO5g z{^so-3M(?6g_dXIUvPzmMM`5M*lm+G2m$vGP*Q1|3)qT~CU_ufW9@%%gKysO%8^wFDu(JZBm$QJ?gyNY035~= z5gmZ5K+I7J5fK32asZDUA5{(_2QCsK0=)8Mciu`5Stkh*2_8{a?{bYol{gnfKLhk0 zptZU7%rj{~A~vj+o;XDp@B+z}98b$w=eBJ(nE3-U|77MT7*ZQJ(oVzIbc*YzEx)N^KDns=Wft1AJ343pCG z+bk{X)G+fl5pCpo{-xjV|0;^&N0w##0QQZ~=6F1&%kqq)75yj;c3k!$Q%aR*OEH~J zufyhK-U}geW`2=n*{jqTohvY(&u8lTjFDa` z7HpD3wo}IL#ld7Pj%I6dIQ{p>^FQNa)GKyxal8Nk002ovPDHLkV1hbREX4o- literal 0 HcmV?d00001 diff --git a/assets/ui/icons/help.xcf b/assets/ui/icons/help.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c8f6511c2960a7112411e00c2802fb8685792326 GIT binary patch literal 3318 zcmeHJ&u<%55Pr6kjpKEaO+tVJNJ~!X!Kg*}yj5FKic}S)2jIA|*Uq+UJF+(-2C4lA zD$D_HAaTeE38^Qp?jOL3e*h$Y2oS28CMhXd@9X!yed{=>137WxN#i#&-@MuJ%=^}^ z`;85It5UOTe&7i#TMPAhNG5}iMM(bAr$SJ$UVuzM49JUGXWSCvuVSC6BWh z3R-P@MQx>aea*GczkXh=G0FuEox{t2WFTeVup3x@^r^z*L7bNnd#pjYNwAtrxMjOpLBa|ZjX5Oy}}(3#~27Kg&& zNJw7mjGERuHu1`cUKr8M5xqE~^J&bdq(Ax@2f!p=k zaOnxtXD>U;=t`~CgnFgj@~ieux7o4Za)V&at=vw*Qpf+uv)_0#oojMLd6UL%_*-7U zp1aM^cLU$;*j+V)z-`tyalPziuUV?NOt|KDyi(O~dzH{{HSHj5!+G+4{ma$3wb=>% zTGtM|TF8{Gtx}^^_3Uc5={Ed|cB$(yEN$IKZMaRUF!n*O+&!(NQ$_!BUmf@5?$f?3 z;wa9=@jk{q_$ihXau6S&o%@lDqlf#0SjMmh(Ey`4gz+`Tb2yOlN9++nnAjuS67GZ1 z{ZHD&W&9n(2MEt6+ww6>J6Hd&hAld^HwPEL`QzyipS{dc<-g>petnIjdRsntXZEGm zp}fygU953b_vF(od;fuyQ|$fc@_U-sB6))&T0M|=xZgOGA9F80gbnQXHUK+5eX!xg R9RVBY(RT=J(06NEJOddmX2Jjf literal 0 HcmV?d00001 diff --git a/assets/ui/icons/progress_texture.xcf b/assets/ui/icons/progress_texture.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b505f35a5dbe1515fe7e7eefd4fbf9cf1c0d8d6c GIT binary patch literal 1870 zcmcJO&rcdb6vt%f|-(8CVM-PHXKvlx_o7>15nD_D;onFXcm_@tIU=W<2Dj z#1<5(Sfh(xY8yc8=NJ}YoAV$s25p?Cp`0m<2fzN9s&j>^CokWo=410O%^oD z33;B5nYBFReWqpkl5dpe-ALIzVZn|qDs&F$UY?M?G^OD~OzjMcA@o$nyqIY)L? z*GrNphUY36#%x1O!K1ngx|xAvgA2<+9SUcbcH%euZ02ER>x_X63)u0B5~ zild+O?X$);>+^NvY`Zc8Y*(c*9S`J wIGdrAjvg3FaZKXbCLO30`vkHHyQvgDVjM0J;Z3DbA?Wi6f;SKpxRz4>0ur>9p8x;= literal 0 HcmV?d00001 diff --git a/game/.import/bridge.png-2db149efb21bb9bbfac413be9641e085.stex b/game/.import/bridge.png-2db149efb21bb9bbfac413be9641e085.stex new file mode 100644 index 0000000000000000000000000000000000000000..a4683b2576a09849118999614a72124357dd5bf6 GIT binary patch literal 1924 zcmV-~2YdKOL{n5C0000W000040000001yWO0001J2LJ$2PDdb#P)yTVj^~}n_L`+n7bya58pMPcj zCBOM?G6TGTQ;^y=4s`0H_6r!Ncdt@fSH^oS|7ngH6zec100iK@Vi^K82D&$z;jJZH+xvavh1d^=; zW>yfBRN6Gbl7!BI)pW@;htk@FKt<9h3kNF$0HjWs0!#4(xlx>o7BmVfhEo`=aAGh+ zRY+nd!dMv_Cj=>ED#%+gW|XK?E|X#<=JXS(Tmi_HGvyJbpkT>R1<6+OT%A}hK~I5z z6%>=8BE{i-hEFi1?k%Q`_VZ_9t zWK0_bXe2>J#R2NT=K*n!NQ-kqPS8}2Xbr+C;A*NJcvlhdm0Vh(RRJ%?EZwl+J;a2W z5X}&TMiSmD;+irxg%VIQf?tu{Iio*A)sd_OlJf~MLvR9q)}G*Z$B)L$?pO@}<}!Up zlkbq6Fbp$6$SAoO6GfZ{ai|K0197Bb!D04-v3*4JE1XJ6gB9me)8m(2ajpVl8MTr2 z@E;b#w=B|Yyd4nBAVgcTL&H3if%in+wGQj?{C@M-4RnF#z3Andf6kVN2Y{k%#4&0F(pEbjN{0D z*t1$Lna}4mZAVYW#}SEJvi}MG{O}K2jpUfw?e~1R{lMM&j_qcHS#>I|mO_V2&*BQ~ z>W<|xrx8*_$mET_|0}p3?u9Hx;jrFWnY^%$m{{KyvCh>hOD097mv_xiD_4YyQdvmF;X1x z+gF6Qe<%OQ!@qj<8t;|;?m)g2d6s;g~Iw5_PT)y%% z)s(1$n384>X+HTi@$4!2#pWv3)5se2rn9}q zJC#z)kng2|sx9sx#jO{j^fV8@Ak8kwO-FwD2MBAtG;^eXfIGiNW>-kNz!q2Nd`6xQ zCp(_ZMbFvEp}O)R)xJ21&RpeNZJn0-A!k>}^DhbNNjHDN`{h%bi{~^KpQ5fK`#Igk z6{+*k2_NV`J& zbF!2fAr)saRn=<{a(%zY2c|kH_XN#-NmqmLT9mY`Rvd<>_{Fnd(D!rtR>>%>_k=7s zF@^-4FHWK>^4tt;1oih6?u3YbbU+?8;EyjnPQg2mTb|>!e~2_iWO^--HCmvZwvD#H=lGDJv65@8Irm!Cu9iGYhFFbcJM9Fi zD5#x?D0OE{0#z&g$7`OIgrp4Sdi=gfIU0Xj?ZkK|_n@r-PAf^d+!3ZRRtu2|1SyV7 z5Q3{nOc6~4j^^-VEGz0VBnMqn26V2VaJ-Pny&F)V_JR6Wll_G_oP%Vt06(k#v#Hs!2bZ&8UT-D@Iz$)0000< KMNUMnLSTYwb&Vnb literal 0 HcmV?d00001 diff --git a/game/.import/clock.png-09b4a660a58c86478b8ce31163fe5a4d.stex b/game/.import/clock.png-09b4a660a58c86478b8ce31163fe5a4d.stex new file mode 100644 index 0000000000000000000000000000000000000000..89e55eff6ff8af658bd6408ebb1b6347927c56de GIT binary patch literal 3202 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 QfZk^CboFyt=akR{08UDRzW@LL literal 0 HcmV?d00001 diff --git a/game/.import/grass.png-b7950067027b0d689b097507982efb2a.stex b/game/.import/grass.png-b7950067027b0d689b097507982efb2a.stex new file mode 100644 index 0000000000000000000000000000000000000000..4e31f4964b0600a2d8431998dd43e0092bad824c GIT binary patch literal 1072 zcmV-01kd|NL{n5C0000W000040000001yWO0000K1ONa~PDdb#P)cYX6bIobbb zy-*<&_tseVFK+EXlL^@y63Hy=P(p`1RCAXg=uPwY+d%?ILBsE&fN4-^LOOVN8lJDk zznA>xICoE95y>LF`^eXz+%_%}V0fqjM1=U8<9q<%*P<4}%UyM^TF!iUQ%NrlR{H-N|sPkc!Ywjt1w#e56a zXQ?G%WEA5mE4zd8mqiVRTGp>t-hFiV){@wcmL8XXqE(z!Gj2f7Zlv>gSejM=9;o7w;V3u^ z8I1-VHArK*KTXhWT`cKg@_ABdsN!2`6jVtik@~FQrU)EpsLPJg)40|v17|4C*N45) zA<9tWk3L2RndI|gjhmuaNa_=Tv<^+PUNn)+I$c0I90+&ISIZH%79Mz41nz4~p+K#m zWa1`CNT%u-c<&B!KUa^#3En?GxK0(ap`M*1yFRE{C*cPUHaWS@`FX>3ee{@SX|~Sl zttQWE=L3-BEt6}1zgB-OV$gFNos2cmVwmDg61r?2nqQ|IxDJ^T>g&n%tH3k5SiE2+ ztkaM!v#}u|J}jlyE*7X6YH??unJ4QH24pQqVy02!fw$+wqTaT1#t}4PE%$%4!t0E= z9gpWyKtpT@c~|?!KZeR<7r}B1AAwPJCF?@LQ{AAa;`W^()mu+Y_E7Hr&hc1BB>f4Pzn$c+5q>~d3Vlm8JZfBsm0$#;#*-wIRQk^7oSgKBE zl+?t!gdh8?ABMkT#REQf1pW|Zc(5cb@$4m)(VhFeE^ zjO)O8k~t7(PaMMAd#)TidbioBHToGxOJz%|Y8oVwL{n5C0000W000040000001yWO0002-0ssI|PDdb#P)&=G{HjD#ybCim0cP;L7RZExFNgmS={WpJ3F&`7nJzH z+#NTw-}~l!GjC^v2F4P|fVGh^CqO<#@3;94T-RJ%fRk~?SPqY zJO019?*|N3?X-YnKERW8V=foGd8jN)%ChVUP*w6gC(rYh_*~11wTSH<+fnTq}x#q9~T+UJRN? zteS_mmt}d|2RbOr@{XBZ%=7$8RaFmF^~Cpmh^&hwzw@hiqh(2L{Rw>(s=DP<@Tsb* zpTKwEg>L}s&`B+xtDOpb%*;h{4~wl9D;x*FE3Ftg79B63bd)NYV)9EDDb=NufRzzm1`UrShr)F79R~p@dbM6B0MntB5=FjTB z#R9Y;;eU7{|820?nuAc)8zOSa%zgpS!~Td9;dYM-h?UBQFld*3*O7>nVZh0xH@Db! z$1zYOLWWS2|87=gEiMv#sMw8{;<{B;)oEt^*K$yTNBL{1r*)wR=SFkiDR#AhRH@u- ziwLZJ;HOs%=t&*znqt>x3|)wd7(y`n)X}a}>e~W_4iKBb9LORIEJWtVrh<3Qg{MB0 zR+Z+?xu!HbC#O1;{+Gw{n1~o@41eun(iZWruV!$@m(v<&b3OkJmDMG0%?R~|00000 LNkvXXu0mjf>PKxF literal 0 HcmV?d00001 diff --git a/game/.import/house.png-90b2798c1dfceadf2b73486f421d1f9c.stex b/game/.import/house.png-90b2798c1dfceadf2b73486f421d1f9c.stex new file mode 100644 index 0000000000000000000000000000000000000000..62b8d82b2c9ef3f3bab4755a4798129ee5dd7873 GIT binary patch literal 219 zcmZ>F2@X+UU|;}Y79eI|5MXBnlKX);z|UQw6G-rKNpS(Wyq+E|K|opoggMxNWN}s1 z7a-N->Eaj?(fW4!LB0bD9L`7o|4%PBGGyDL={KqOUWnKH9jCp1?r!IyqxcE{K2>$%xc!q0LadVgt6EvS9S(V^hVo|1NDI#XgV!}dd| zXI6ba=IY7bF~x1&p41|Z=lUAq8$%O<1a-S-_ zD?f9dCqNLSuwes&V<3|6SG$}PIxDLrTcq`ri~TUJpjdi9wATyg z-y%WgVCUx|a@q4GoM)l)8IrvJg8xVF1(qq!f6B%qk~pV1pUGmmK%S2Mm<~e$P-qK- zKvezuD(g#zrUU6ZmpB)&(g28)qAIgBhe$I3GRQ^Qwln~us(zL=HamS5riby?1xZHB z!qKLN3E}xL3^ED;7-K(z#2*_kkFaJu}a s!S`>+W_K8NFY$Hs5A*6vrJVx!1stljlKDyyzW@LL07*qoM6N<$f~wNFsQ>@~ literal 0 HcmV?d00001 diff --git a/game/.import/road_cross.png-c9952a90dbaaecffbc9e220ef4dbdc8d.stex b/game/.import/road_cross.png-c9952a90dbaaecffbc9e220ef4dbdc8d.stex new file mode 100644 index 0000000000000000000000000000000000000000..0979abf6276468f144667095acf5e5211bd151bb GIT binary patch literal 1640 zcmV-u2ABCqL{n5C0000W000040000001yWO0000?1^@t1PDdb#P)ZSS9K3Ty`Jfr*|oQ% zQori%SNGg=&plP*4davFe0aQE0Y3&lo}PU0>-y;I7w!7ugZbj+n(XVCHWg6L+fMd| zw5^-SXiRsP!+vKL8&#{M{e_eY1JI3BbLfqyNcv0T-Ykq$r^%l2i!QD6vM= zDCG%g1?2q=|M2^dZ=UNr008KK=d0J-K3~sn&14HHDk889pon6-V`|h=dutcj+DqUR z*a7?d8@~$xFInuFx8%G{LV;bZ2xCbxh;pKcaAwcuE#_kL#(OF_MJ7auT16BL>bw1}&+WW!Hjiyz*xs$r-kX5+cLKO4K$h&=GKU@%6Id8I z6O~HTM<_PfPD+XCe@;voayG7c@Mg@xwcy8)R1W7*^^Y^)o=y=`|d+HUvd=InF}uzhvT z_SN}=0B-{zM$Itm#p8!7uPE8a=RI)8VJ%9{40$dqt{{Z;eviIu+L}!S(FYBuc{Bl{$3*8&w$pT=r z1m6J9fM=T4k7HVuyuMU=Mneu-zz0@AoMHczVdFmsu9q0wC3rG4by0!eE(<00Tvb;exz8f|O%gmDxBBRJDq)& z6fs^LA)JsYNvKrDL1o#Ad&9nSI;*Nq$E=UE z44PJ`u1q$_y>EVhQ;o`m>KeBlv^`*)O*k2pW3uBzw?`T8Wv7;t?~MXD!PxGQ9V9!O zNgvUFq__hffuf=)mW?IQ!KaSxWibo|QHH0bP0jhLIXmQVG$~S15*0@&FtyBmPn?z8 z*1SW#N+tUq_Xbf=6u`D+Y?Il+!+>l%TO8P~xx0GJP-cR5mbQwrBT7bH#Zk>30Z$p8 z5TJ1(s%z}T^PnDuDHZILGjVo1XUrwA2d8^m_P~|wpDnarfL~yryXQ5%srNR4E6x+( z2MlX{1gunwwb~3F&O0yGyp(TBm8s+GZu1WG8vGKtJgP~sWb-G66P^Pvm*)w*BHIR- z2>pcgE8u}k8|tnFMzLs|1$0c^O1a2fj@J&^Nk@!53q=)>dp~D* z_nyP4<_w&pEfvISW7X<@b=h&B83)fdz?Z<^fWI&M9(;vE3EnoctZD-5DCMIz=lf0v z5uLOV9<7@iil?ittyRjqOBTD`E~Wi?$$oo3$QuEuj6Tku1z7ccOV!o;WqtD0QLFnN z`fQ9y+v#-M+ijJxs*zcX+boP3cY$keZ`F6kgIlp8ZqKffXGOfHC{Kxcs=As~>OwuE z?Ie>uJ@1hwWU&PAOYqCL0jQsR`qiB;?p;!K;KT^k)kaammXFQ*#$%lj5~XTbGJ8e| zF5eXVlTW{Tr%P!;nqsv&jcKa6pPkttb6g0AcaJlEXu=Uh4i2vwLVS?@A@O$sAnekw zFI%>j?z3~ZODjVtv3kT{zFUg<-t5jSu|-e6|787V3w#WG(ms0fz4rK<--%ittgPKjcaKTg&-Zz~?}`3HYO*Kf4WX+W) zfNuu;*=L{JUgvuN08}9Q>&vCrp@XQ=ud<|sl*8RDr6iMit)5a!O3JmAxtDSd8~`2A zZw9^(K-}!2r(aU~rKh$@f^3s^0+GD9#$`&DGvQvtV;LUv>Cxd6;1cL34maB!5U9}G$97e<(=%$AU4Pz<0T><xT`lu{e+ z+?2rFD?x2qe zZ2%px@LID zqj*!h03=yHR&Eb1=c)V9#L$_$3vf#&uQf$=XDn08cv#sT;HRH{m&Mt|`dPCdt)+b<}ca-@~2W0>8oBPHX*`tHZL_u zP0f1;AxU*HFJ8J8<0sp^7r@@}A;6pNm4QhugSzvVU7GGOTweu&A_AF|CVP>m2aeeg z?$t^Y81?xj2fz636S#Rmg04x)45xh$Q8 z*FDL;K|~7(X%4)g^v@iA5Bw4M3OHfxo*xDL=3=;amUx(qx-E(cinjUgKuvp2cUF4jC~=kJ@0%yDeu&l zgU;Om@b%!>Nd8{hmi(On06+fW#~+mZuEh5SfVW5J|041Kjs6WVqobJ8D0w;n0000< KMNUMnLSTZMf-$RJZrn)K_t7_aV%rY|E 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 literal 0 HcmV?d00001 diff --git a/game/.import/tiled.png-ef727fc4b3b4a5e804e2f623484b6474.stex b/game/.import/tiled.png-ef727fc4b3b4a5e804e2f623484b6474.stex new file mode 100644 index 0000000000000000000000000000000000000000..91f647c9fac304895d60be0977d95fdd0ded33cf GIT binary patch literal 811 zcmZ>F2@VNhU|;}Y79eI|5MXBnlKjj-F+X>OP9VX{CB+34;`Q`!2?Ek!06+5-4%>i~i+OBgD+?l2eiS;jiBe~|5nwqQ=++`)Zjng1UqpIT`RXULCLS#f(0i>t{kin(MD$W?Ho2vZ`|5X@-_W^__is(|f*HRr$@C9rycJ9#>ZIuh$NSeW!2R zx6D>4Jij7LJLHt;^&W%i`b&>nJ`gJqmRQAK_4~ZJX~Eaix23m!j!Ss(Wa+Yb)>Hkq zvpasV^nCPv>z-$E><$u7y?>s2H}gy3g%7tPYAa?i?5O#=?{?ME?)3D_hcgpSsitgS z@=@)R;Qg;x%C=nCF=HQt&9U^x+CvZLRBMT}-;DS_!LH_!O!%$HYv+GuME1TGJut0& z-ad8=zoB_Ju;4@VEG0&cLmdVmZuU*m6BXIzzyIcsZ9i81`?AD4g8BSe)7>gpXWXbf zw=L-An_}J@ikF!--#9GDa&eXS0XrjIgKk@yrE919PH(7vp_X)|jMePj!xK)oMRz3o z9*MmzI>QttV9_iGM!~6)SC1|~%KpDrMDp~i16l%l`e!%nF)4m9+xO6hSJEH0ui>iU zyR+_jDTB+-n#<0MG~(aAv^C$q&FKD@;`i#SQ_o(JsH+bAX7o~a!dKrTfA>F={&PY} v<@V2fkN*r}bBb3Tm{Z&aOllt5zj^OjKg!d($FKmH$Qe9c{an^LB{Ts526bt8 literal 0 HcmV?d00001 diff --git a/game/.import/water.png-cfef9686b4b28753118fd0b3683f052e.stex b/game/.import/water.png-cfef9686b4b28753118fd0b3683f052e.stex new file mode 100644 index 0000000000000000000000000000000000000000..900615cd497d0a73c62b274192b2c69d24d28f22 GIT binary patch literal 1217 zcmV;y1U~ymL{n5C0000W000040000001yWO0001`1ONa~PDdb#P)35f2Cj<;g}K56?or*8DWUIUT$Wr;0l(rd>)fX3AhvB**uAa zVBLuuau5!eQNrNfEJv_G02oBb;3anQ4xZpLfC!$AIXeNeFe5?5dXjLKNWgg#cM{yV z3p1(!B*NGt%u2k1l2(zQaHC*ZoedVOVh9<%-B6Kh8i1Dg&>S9 zFg7fse`dHLppXL;IHXX@9V?lUA{-Uw^BItY(%cNbNTsLCc?dCL=v#yvKo!{h-C!Bg zTsQQpk>$E#B(m&FA*PWo=Z-O0o8jOAOj{9Daycp7FbIdhga<1OjO9qU1Go`JitF&) zwcLon?YP8n5L`j}dBv%kSA>PJetVrp4kpXV;#-V5XNc1W&_ll$r7_y;%-y#ogqb0+ z{&*ukM{C4eomUJcO|1E#6la13E2zSK`nUpND!Mwx`uzZ8@)ikTR1ISd zR5(wvoL#taZ`|26qNFI{M%E`QLWnHe#d=bg<3Tn)nnDt(qi*9)44!Vb(1Ega;D&sr zMXA$4Db~-2+qshEQ>&kDlz{A*t7)?zaO25|poWfP$$l3mvDe=}xPmKY8Q1~Z?33G_ ztl)SVgXE-JO~4s!!O78{^4_c;4=V}B88UkfeBCz7d2(j5voPFvI+toPs+U2xzl$t( zvF^?GV^qgrJ9*UEx_S&Z+)>R%2{~DW@q9tAYF5Hi?4pX*gqTxc&8jeX^3xC<5_^xX ztYvdJXy;>;W>wUQtc2CBv14XzaA*}aZ-SjI?ip)XG4goAH1V|)hxo|Q_ZkA*K_4D& zwS73tkM&j5L5V_Nvih~y$rXeUR1v}Y{=%GhjG~9Jui^t~7H0_$5UEeQWgU8)a9}WO zx32HsxEx=&*iBk~ZoUq?EwT>!El0*p4PaLn^MTjVUcvhQwrlb7PmAWUNr|15w8T^F z94&qZpPdEuv0@?mykvM&b%kEew~G|NT|7w`zmoT2Cp)+c3ElWQ$AzB8`I5cIr|0Mv z&I;a(RfSGux^XT1xG9{gh~!Clk;T0UBYpUnf3!Zr>%4L2@?+blxK6qJYwBB2$bLqXwEuEsL_o5 zPcLR%K?(e94zS`$we9b;pUIP~uAaq{76!p%td5Z&lW?+do3R}75HmZn$YdvXk;$Dr fNtS+Y{(1NhLp3ZTt_#(A00000NkvXXu0mjf9wjoH literal 0 HcmV?d00001 diff --git a/game/game.gd b/game/game.gd new file mode 100644 index 0000000..97fc4a7 --- /dev/null +++ b/game/game.gd @@ -0,0 +1,249 @@ +extends Node + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + + +var command_registry = Dictionary(); +var command_history = [] + +export(bool) var debug = false + +export(NodePath) var level_path = 'res://levels/sample/level.tscn' +var level = null + +export(float) var turn_max_length = 60.0 # Seconds +var turn_time_left = -1.0 + +export(int) var population_start = 10 +export(int) var jobs_start = 0 +export(int) var food_start = 20 +export(int) var resources_start = 0 +export(int) var effort_start = 20 +export(int) var goods_start = 0 + +var game_resources = { + 'population': population_start, + 'jobs': jobs_start, + 'food': food_start, + 'resources': resources_start, + 'effort': effort_start, + 'goods': goods_start, +} +var turns = 0 + +var build_regex = RegEx.new() +var set_resource_regex = RegEx.new() +# Game rules ish +export(bool) var advance_turn_on_successful_command = true + +var game_object_registry = { + # TileMap ID. this is a crap way. but hey. do it fast. + 2: { + "name": 'road', + }, + 3: { + "name": 'road', + }, + 4: { + 'name': 'road', + }, + 5: { + 'name': 'road', + }, + 6: { + 'name': 'bridge', + }, + 7: { + 'name': 'house' + }, + 8: { + "name": 'farm', + "node_path": 'N/A', + } +} + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + self.register_command('help', funcref(self, "command_help")) + self.build_regex.compile("build (?[a-z_]*) (?\\d+),(?\\d+)") + self.register_command('build', funcref(self, "command_build")) + self.register_command('skip', funcref(self, 'command_skip')) + self.set_level(self.level_path) + if not self.debug: + get_node('ui/left sidebar/toggleWorldButton').hide() + if self.debug: + self.register_command('set_resource', funcref(self, 'command_set_resource')) + self.set_resource_regex.compile('set_resource (?[a-z_]*) (?\\d+)') + get_node('ui/right sidebar/resources').update_resources(self.game_resources) + +func set_level(path): + self.level = load(self.level_path).instance() + self.level.hide() + # Display? + get_node('world').add_child(self.level) + get_node('ui/right sidebar/MapSizeContainer').set_level_size(self.level.get_level_size()) + # Set objects / simulation parameters. + + # Start time + self.turn_time_left = self.turn_max_length + get_node('ui/right sidebar/timer').set_time_max(self.turn_max_length) + self.update_timer() + +func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. + self.turn_time_left -= delta + if self.turn_time_left <= 0.0: + self.advance_turn() + self.update_timer() + +func advance_turn(): + self.turn_time_left = self.turn_max_length + # Find people who can't get to jobs + # Find unfilled jobs + # Report unconnected buildings + # Update stats: consume food, word, etc. + self.turns += 1 + +func update_timer(): + get_node('ui/right sidebar/timer').set_time_left(self.turn_time_left) + +# A player has hit enter +func _on_prompt_text_entered(new_text): + history_append(new_text) + if new_text: + run_command(new_text) + # @TODO Run the command + get_node('ui/prompt').clear() + +func history_append(text, is_command_result = false, return_code = 0): + var n = get_node('ui/ViewportContainer/history') + if not n: + return + if is_command_result: + if return_code != 0: + n.push_color(Color(1.0, 0.0, 0.0, 1.0)) + n.add_text(' > (%d) %s' %[return_code, text]) + if return_code != 0: + n.pop() + else: + n.add_text("$ " + text) + n.newline() + +func history_search(): + pass + +func run_command(text): + var result; + var callback = parse_command(text) + if not callback[1]: + result = [-1, 'Command "%s" not found' % callback[0]] + else: + result = callback[1].call_func(text) + self.history_append(result[1], true, result[0]) + # Possibly advance the turn depending on the game rule. + if self.advance_turn_on_successful_command && result[0] == 0: + self.advance_turn() + +func parse_command(text): + var a = text.split(' ') + if self.command_registry.has(a[0]): + return [a[0], self.command_registry[a[0]]] + return [a[0], false] + +func register_command(name, callback): + self.command_registry[name] = callback; + +func remove_command(name): + if self.command_registry.has(name): + self.command_registry.erase(name); + +func command_help(text): + print("received command: '%s'" % text) + return [0, 'no!'] + +func command_set_resource(text): + var r = self.set_resource_regex.search(text) + if r == null: + return [-1, 'set_resource command could not match arguments. Format: set_resource '] + var resource_name = r.get_string(1) + if ! self.game_resources.has(resource_name): + return [-2, 'Resource "%s" does not exist' %resource_name] + var value = int(r.get_string(2)) + self.set_game_resource(resource_name, value) + return [0, 'Set resource "%s" to %d' %[resource_name, value]] + +func set_game_resource(name, value): + self.game_resources[name] = value + get_node('ui/right sidebar/resources').update_resources(self.game_resources) + +func command_build(text): + var r = self.build_regex.search(text) + if r == null: + return [-1, 'Build command could not match arguments. Format: build ,'] + var object_id = _get_obj_id_by_name(r.get_string(1)) + if object_id == null: + return [-3, "Object with id '%s' is not registered" % r.get_string(1)] + var p = Vector2(int(r.get_string(2)), int(r.get_string(3))) + if not _is_in_level(p): + return [-4, "Point %d,%d is not in current level" %[p.x, p.y]] + var obj_exists = _obj_exists_in_level(p) + if obj_exists: + var obj_name = self.game_object_registry[_obj_in_level(p)]['name'] + return [-5, "Object %s already exists at %d, %d" % [obj_name, p.x, p.y]] + # Check if base terrain is valid. + var terrain_object_id = self.level.get_node('terrain').get_cellv(p) + if terrain_object_id == -1: + return [-6, "No terrain underneath point at %d,%d" %[p.x, p.y]] + # grass + if terrain_object_id == 0 && object_id == 6: + return [-7, "Can not build over water at %d,%d" %[p.x, p.y]] + if terrain_object_id == 1 && object_id != 6: + return [-8, "Can not build over grass at %d,%d" %[p.x, p.y]] + # (optional) check resources + # Build + self.level.get_node('objects').set_cellv(p, object_id) + # (optional) spend resources + return [0, 'Built %s at %d,%d' % [self.game_object_registry[object_id]['name'], p.x, p.y]] + +func _is_in_level(v): + if v.x >= self.level.origin.x and v.x <= self.level.origin.x + self.level.width and \ + v.y >= self.level.origin.y and v.y <= self.level.origin.y + self.level.height: + return true + return false + +func _get_obj_id_by_name(n): + for i in self.game_object_registry.keys(): + if self.game_object_registry[i]['name'] == n: + return i + return null + +func _obj_in_level(v): + var c = self.level.get_node('objects').get_cellv(v) + if c == -1: + return null + return c + +func _obj_exists_in_level(v): + if _obj_in_level(v) != null: + return true + return false + + +func _on_toggleWorldButton_toggled(button_pressed): + print(button_pressed) + if self.level.is_visible_in_tree(): + self.level.hide() + else: + self.level.show() + +func command_skip(t): + self.advance_turn() + return [0, 'OK'] + +func _on_timer_skip_presssed(): + print('a') + self.advance_turn() diff --git a/game/game.tscn b/game/game.tscn new file mode 100644 index 0000000..fd1859b --- /dev/null +++ b/game/game.tscn @@ -0,0 +1,411 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://game.gd" type="Script" id=1] +[ext_resource path="res://ui/prompt.gd" type="Script" id=2] +[ext_resource path="res://ui/help.png" type="Texture" id=3] +[ext_resource path="res://ui/mapsize.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/timer.tscn" type="PackedScene" id=5] +[ext_resource path="res://ui/current_resources.tscn" type="PackedScene" id=6] +[ext_resource path="res://help_popup.gd" type="Script" id=7] + +[sub_resource type="Environment" id=1] + +background_mode = 0 +background_sky_custom_fov = 0.0 +background_color = Color( 0, 0, 0, 1 ) +background_energy = 1.0 +background_canvas_max_layer = 0 +ambient_light_color = Color( 0, 0, 0, 1 ) +ambient_light_energy = 1.0 +ambient_light_sky_contribution = 1.0 +fog_enabled = false +fog_color = Color( 0.5, 0.6, 0.7, 1 ) +fog_sun_color = Color( 1, 0.9, 0.7, 1 ) +fog_sun_amount = 0.0 +fog_depth_enabled = true +fog_depth_begin = 10.0 +fog_depth_curve = 1.0 +fog_transmit_enabled = false +fog_transmit_curve = 1.0 +fog_height_enabled = false +fog_height_min = 0.0 +fog_height_max = 100.0 +fog_height_curve = 1.0 +tonemap_mode = 0 +tonemap_exposure = 1.0 +tonemap_white = 1.0 +auto_exposure_enabled = false +auto_exposure_scale = 0.4 +auto_exposure_min_luma = 0.05 +auto_exposure_max_luma = 8.0 +auto_exposure_speed = 0.5 +ss_reflections_enabled = false +ss_reflections_max_steps = 64 +ss_reflections_fade_in = 0.15 +ss_reflections_fade_out = 2.0 +ss_reflections_depth_tolerance = 0.2 +ss_reflections_roughness = true +ssao_enabled = false +ssao_radius = 1.0 +ssao_intensity = 1.0 +ssao_radius2 = 0.0 +ssao_intensity2 = 1.0 +ssao_bias = 0.01 +ssao_light_affect = 0.0 +ssao_color = Color( 0, 0, 0, 1 ) +ssao_quality = 0 +ssao_blur = 3 +ssao_edge_sharpness = 4.0 +dof_blur_far_enabled = false +dof_blur_far_distance = 10.0 +dof_blur_far_transition = 5.0 +dof_blur_far_amount = 0.1 +dof_blur_far_quality = 1 +dof_blur_near_enabled = false +dof_blur_near_distance = 2.0 +dof_blur_near_transition = 1.0 +dof_blur_near_amount = 0.1 +dof_blur_near_quality = 1 +glow_enabled = false +glow_levels/1 = false +glow_levels/2 = false +glow_levels/3 = true +glow_levels/4 = false +glow_levels/5 = true +glow_levels/6 = false +glow_levels/7 = false +glow_intensity = 0.8 +glow_strength = 1.0 +glow_bloom = 0.0 +glow_blend_mode = 2 +glow_hdr_threshold = 1.0 +glow_hdr_scale = 2.0 +glow_bicubic_upscale = false +adjustment_enabled = false +adjustment_brightness = 1.0 +adjustment_contrast = 1.0 +adjustment_saturation = 1.0 + +[sub_resource type="World" id=2] + +environment = SubResource( 1 ) + +[node name="game" type="Node" index="0"] + +script = ExtResource( 1 ) +debug = true +level_path = "res://levels/sample/level.tscn" +turn_max_length = 60.0 +population_start = 10 +jobs_start = 0 +food_start = 20 +resources_start = 0 +effort_start = 20 +goods_start = 0 +advance_turn_on_successful_command = true + +[node name="ui" type="Control" parent="." index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 40.0 +margin_bottom = 40.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +_sections_unfolded = [ "Anchor", "Grow Direction", "Hint", "Margin", "Material", "Rect", "Visibility" ] + +[node name="left sidebar" type="VBoxContainer" parent="ui" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 175.0 +margin_bottom = 600.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 0 +_sections_unfolded = [ "Rect", "Size Flags" ] + +[node name="toggleWorldButton" type="CheckButton" parent="ui/left sidebar" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 175.0 +margin_bottom = 40.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +toggle_mode = true +enabled_focus_mode = 2 +shortcut = null +group = null +text = "Show World" +flat = false +align = 0 + +[node name="ViewportContainer" type="ViewportContainer" parent="ui" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 175.0 +margin_right = 850.0 +margin_bottom = 550.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch = false +stretch_shrink = 1 +_sections_unfolded = [ "Rect" ] + +[node name="history" type="RichTextLabel" parent="ui/ViewportContainer" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 2.0 +margin_top = 1.0 +margin_right = 677.0 +margin_bottom = 551.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = true +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +bbcode_enabled = false +bbcode_text = "" +visible_characters = -1 +percent_visible = 1.0 +meta_underlined = true +tab_size = 4 +text = "" +scroll_active = true +scroll_following = false +selection_enabled = false +override_selected_font_color = false + +[node name="Viewport" type="Viewport" parent="ui/ViewportContainer" index="1"] + +arvr = false +size = Vector2( 0, 0 ) +own_world = true +world = SubResource( 2 ) +transparent_bg = false +msaa = 0 +hdr = true +disable_3d = false +usage = 2 +debug_draw = 0 +render_target_v_flip = false +render_target_clear_mode = 0 +render_target_update_mode = 3 +audio_listener_enable_2d = false +audio_listener_enable_3d = false +physics_object_picking = false +gui_disable_input = false +gui_snap_controls_to_pixels = true +shadow_atlas_size = 0 +shadow_atlas_quad_0 = 2 +shadow_atlas_quad_1 = 2 +shadow_atlas_quad_2 = 3 +shadow_atlas_quad_3 = 4 + +[node name="prompt" type="LineEdit" parent="ui" index="2"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 175.0 +margin_top = 550.0 +margin_right = 850.0 +margin_bottom = 600.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 1 +size_flags_horizontal = 1 +size_flags_vertical = 1 +focus_mode = 2 +context_menu_enabled = true +placeholder_text = "Click here and type to start entering commands" +placeholder_alpha = 0.6 +caret_blink = true +caret_blink_speed = 0.65 +caret_position = 0 +script = ExtResource( 2 ) +_sections_unfolded = [ "Caret", "Placeholder", "Rect" ] + +[node name="right sidebar" type="VBoxContainer" parent="ui" index="3"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 850.0 +margin_right = 1025.0 +margin_bottom = 600.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 0 +_sections_unfolded = [ "Rect" ] + +[node name="help" type="Button" parent="ui/right sidebar" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 175.0 +margin_bottom = 38.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +toggle_mode = false +enabled_focus_mode = 2 +shortcut = null +group = null +text = "Help" +icon = ExtResource( 3 ) +flat = false +align = 1 +_sections_unfolded = [ "Rect", "Textures", "Theme", "Visibility" ] + +[node name="MapSizeContainer" parent="ui/right sidebar" index="1" instance=ExtResource( 4 )] + +margin_top = 42.0 +margin_bottom = 56.0 +alignment = 2 + +[node name="timer" parent="ui/right sidebar" index="2" instance=ExtResource( 5 )] + +margin_top = 60.0 +margin_bottom = 260.0 +rect_min_size = Vector2( 175, 200 ) + +[node name="resources" parent="ui/right sidebar" index="3" instance=ExtResource( 6 )] + +margin_top = 264.0 +margin_bottom = 464.0 +rect_min_size = Vector2( 175, 200 ) + +[node name="help_popup" type="PopupPanel" parent="ui" index="4"] + +editor/display_folded = true +visible = false +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 166.0 +margin_top = 2.0 +margin_right = 852.0 +margin_bottom = 539.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +popup_exclusive = true +script = ExtResource( 7 ) +_sections_unfolded = [ "Popup" ] + +[node name="Label" type="Label" parent="ui/help_popup" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 310.0 +margin_top = 5.0 +margin_right = 350.0 +margin_bottom = 19.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 4 +text = "Help" +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 + +[node name="ToolButton" type="ToolButton" parent="ui/help_popup" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 5.0 +margin_top = 5.0 +margin_right = 52.0 +margin_bottom = 27.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +toggle_mode = false +enabled_focus_mode = 2 +shortcut = null +group = null +text = "Close" +flat = true +align = 1 + +[node name="world" type="Node2D" parent="." index="1"] + +z_index = -1 +_sections_unfolded = [ "Transform", "Z Index" ] + +[connection signal="toggled" from="ui/left sidebar/toggleWorldButton" to="." method="_on_toggleWorldButton_toggled"] + +[connection signal="gui_input" from="ui/prompt" to="ui/prompt" method="_on_prompt_gui_input"] + +[connection signal="text_entered" from="ui/prompt" to="." method="_on_prompt_text_entered"] + +[connection signal="text_entered" from="ui/prompt" to="ui/prompt" method="_on_prompt_text_entered"] + +[connection signal="pressed" from="ui/right sidebar/help" to="ui/help_popup" method="_on_help_pressed"] + +[connection signal="skip_presssed" from="ui/right sidebar/timer" to="." method="_on_timer_skip_presssed"] + +[connection signal="pressed" from="ui/help_popup/ToolButton" to="ui/help_popup" method="_on_ToolButton_pressed"] + + diff --git a/game/help_popup.gd b/game/help_popup.gd new file mode 100644 index 0000000..5305a5b --- /dev/null +++ b/game/help_popup.gd @@ -0,0 +1,23 @@ +extends PopupPanel + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + +#func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. +# pass + + +func _on_help_pressed(): + self.popup() + + +func _on_ToolButton_pressed(): + self.hide() diff --git a/game/levels/sample/level.gd b/game/levels/sample/level.gd new file mode 100644 index 0000000..a3e1f71 --- /dev/null +++ b/game/levels/sample/level.gd @@ -0,0 +1,22 @@ +extends Node2D + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + +export(int) var height; +export(int) var width; +export(Vector2) var origin = Vector2(0, 0) + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + +#func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. +# pass + +func get_level_size(): + return Vector2(self.width, self.height) \ No newline at end of file diff --git a/game/levels/sample/level.tscn b/game/levels/sample/level.tscn new file mode 100644 index 0000000..939d160 --- /dev/null +++ b/game/levels/sample/level.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://levels/sample/level.gd" type="Script" id=1] +[ext_resource path="res://levels/sample/terrain.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/tilesets/default/default.tres" type="TileSet" id=3] + +[node name="level" type="Node2D"] + +script = ExtResource( 1 ) +height = 19 +width = 32 +origin = Vector2( 0, 0 ) + +[node name="terrain" parent="." index="0" instance=ExtResource( 2 )] + +[node name="objects" type="TileMap" parent="." index="1"] + +mode = 0 +tile_set = ExtResource( 3 ) +cell_size = Vector2( 32, 32 ) +cell_quadrant_size = 16 +cell_custom_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +cell_half_offset = 2 +cell_tile_origin = 0 +cell_y_sort = false +cell_clip_uv = false +collision_use_kinematic = false +collision_friction = 1.0 +collision_bounce = 0.0 +collision_layer = 1 +collision_mask = 1 +occluder_light_mask = 1 +format = 1 +tile_data = PoolIntArray( 196612, 8, 0, 196624, 7, 0 ) +_sections_unfolded = [ "Cell" ] + + diff --git a/game/levels/sample/sample_level.tmx b/game/levels/sample/sample_level.tmx new file mode 100644 index 0000000..d6d184b --- /dev/null +++ b/game/levels/sample/sample_level.tmx @@ -0,0 +1,58 @@ + + + + + +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4, +1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4, +1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4, +4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,1,1, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 + + + diff --git a/game/levels/sample/sample_level.tmx.import b/game/levels/sample/sample_level.tmx.import new file mode 100644 index 0000000..625f6e5 --- /dev/null +++ b/game/levels/sample/sample_level.tmx.import @@ -0,0 +1,20 @@ +[remap] + +importer="vnen.tiled_importer" +type="PackedScene" +valid=false + +[deps] + +source_file="res://levels/sample/sample_level.tmx" +source_md5="c93c2b42ad236f11d839e7afb7ef89ab" + +[params] + +custom_properties=false +tile_metadata=true +uv_clip=true +image_flags=7 +embed_internal_images=true +save_tiled_properties=false +post_import_script="" diff --git a/game/levels/sample/sample_level.tsx b/game/levels/sample/sample_level.tsx new file mode 100644 index 0000000..6d7a37a --- /dev/null +++ b/game/levels/sample/sample_level.tsx @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/game/levels/sample/sample_level.tsx.import b/game/levels/sample/sample_level.tsx.import new file mode 100644 index 0000000..2e83230 --- /dev/null +++ b/game/levels/sample/sample_level.tsx.import @@ -0,0 +1,20 @@ +[remap] + +importer="vnen.tiled_tileset_importer" +type="TileSet" +valid=false + +[deps] + +source_file="res://levels/sample/sample_level.tsx" +source_md5="093f655dca7c76883d0057a4d3963412" + +[params] + +custom_properties=true +tile_metadata=true +image_flags=7 +embed_internal_images=true +save_tiled_properties=true +apply_offset=false +post_import_script="" diff --git a/game/levels/sample/terrain.tscn b/game/levels/sample/terrain.tscn new file mode 100644 index 0000000..dbf53ba --- /dev/null +++ b/game/levels/sample/terrain.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://levels/tilesets/default/default.tres" type="TileSet" id=1] + +[node name="level" type="TileMap"] + +mode = 0 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 32, 32 ) +cell_quadrant_size = 16 +cell_custom_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +cell_half_offset = 2 +cell_tile_origin = 0 +cell_y_sort = false +cell_clip_uv = false +collision_use_kinematic = false +collision_friction = 1.0 +collision_bounce = 0.0 +collision_layer = 1 +collision_mask = 1 +occluder_light_mask = 1 +format = 1 +tile_data = PoolIntArray( 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, 0, 0, 17, 0, 0, 18, 0, 0, 19, 0, 0, 20, 0, 0, 21, 0, 0, 22, 0, 0, 23, 0, 0, 24, 0, 0, 25, 0, 0, 26, 0, 0, 27, 0, 0, 28, 0, 0, 29, 1, 0, 30, 0, 0, 31, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 65550, 0, 0, 65551, 0, 0, 65552, 0, 0, 65553, 0, 0, 65554, 0, 0, 65555, 0, 0, 65556, 0, 0, 65557, 0, 0, 65558, 0, 0, 65559, 0, 0, 65560, 0, 0, 65561, 0, 0, 65562, 0, 0, 65563, 0, 0, 65564, 1, 0, 65565, 1, 0, 65566, 0, 0, 65567, 0, 0, 131072, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 0, 0, 131082, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 0, 0, 131086, 0, 0, 131087, 0, 0, 131088, 0, 0, 131089, 0, 0, 131090, 0, 0, 131091, 0, 0, 131092, 0, 0, 131093, 0, 0, 131094, 0, 0, 131095, 0, 0, 131096, 0, 0, 131097, 0, 0, 131098, 0, 0, 131099, 0, 0, 131100, 1, 0, 131101, 0, 0, 131102, 0, 0, 131103, 0, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 196625, 0, 0, 196626, 0, 0, 196627, 0, 0, 196628, 0, 0, 196629, 0, 0, 196630, 0, 0, 196631, 0, 0, 196632, 0, 0, 196633, 0, 0, 196634, 1, 0, 196635, 1, 0, 196636, 1, 0, 196637, 0, 0, 196638, 0, 0, 196639, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262159, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 0, 0, 262163, 0, 0, 262164, 0, 0, 262165, 0, 0, 262166, 0, 0, 262167, 0, 0, 262168, 0, 0, 262169, 0, 0, 262170, 1, 0, 262171, 0, 0, 262172, 0, 0, 262173, 0, 0, 262174, 0, 0, 262175, 0, 0, 327680, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327692, 0, 0, 327693, 0, 0, 327694, 1, 0, 327695, 1, 0, 327696, 1, 0, 327697, 1, 0, 327698, 1, 0, 327699, 1, 0, 327700, 1, 0, 327701, 0, 0, 327702, 0, 0, 327703, 0, 0, 327704, 0, 0, 327705, 0, 0, 327706, 1, 0, 327707, 0, 0, 327708, 0, 0, 327709, 0, 0, 327710, 0, 0, 327711, 0, 0, 393216, 0, 0, 393217, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 1, 0, 393226, 1, 0, 393227, 1, 0, 393228, 1, 0, 393229, 1, 0, 393230, 1, 0, 393231, 0, 0, 393232, 0, 0, 393233, 0, 0, 393234, 0, 0, 393235, 0, 0, 393236, 1, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 0, 393240, 0, 0, 393241, 1, 0, 393242, 1, 0, 393243, 0, 0, 393244, 0, 0, 393245, 0, 0, 393246, 0, 0, 393247, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 1, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 0, 0, 458770, 0, 0, 458771, 0, 0, 458772, 1, 0, 458773, 0, 0, 458774, 0, 0, 458775, 1, 0, 458776, 1, 0, 458777, 1, 0, 458778, 0, 0, 458779, 0, 0, 458780, 0, 0, 458781, 0, 0, 458782, 0, 0, 458783, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 1, 0, 524297, 1, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 524307, 0, 0, 524308, 1, 0, 524309, 1, 0, 524310, 1, 0, 524311, 1, 0, 524312, 0, 0, 524313, 0, 0, 524314, 0, 0, 524315, 0, 0, 524316, 0, 0, 524317, 0, 0, 524318, 0, 0, 524319, 0, 0, 589824, 1, 0, 589825, 1, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 1, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 589843, 0, 0, 589844, 1, 0, 589845, 1, 0, 589846, 0, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 589852, 0, 0, 589853, 0, 0, 589854, 0, 0, 589855, 0, 0, 655360, 0, 0, 655361, 0, 0, 655362, 1, 0, 655363, 1, 0, 655364, 1, 0, 655365, 1, 0, 655366, 1, 0, 655367, 1, 0, 655368, 1, 0, 655369, 0, 0, 655370, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 0, 655377, 0, 0, 655378, 0, 0, 655379, 0, 0, 655380, 1, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 655388, 0, 0, 655389, 0, 0, 655390, 0, 0, 655391, 0, 0, 720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 1, 0, 720905, 1, 0, 720906, 1, 0, 720907, 1, 0, 720908, 1, 0, 720909, 1, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 1, 0, 720916, 1, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 720923, 0, 0, 720924, 0, 0, 720925, 0, 0, 720926, 0, 0, 720927, 0, 0, 786432, 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, 1, 0, 786447, 1, 0, 786448, 1, 0, 786449, 1, 0, 786450, 1, 0, 786451, 1, 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, 786460, 0, 0, 786461, 0, 0, 786462, 0, 0, 786463, 0, 0, 851968, 0, 0, 851969, 0, 0, 851970, 0, 0, 851971, 0, 0, 851972, 0, 0, 851973, 0, 0, 851974, 0, 0, 851975, 0, 0, 851976, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 1, 0, 851984, 1, 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, 851996, 0, 0, 851997, 0, 0, 851998, 0, 0, 851999, 0, 0, 917504, 0, 0, 917505, 0, 0, 917506, 0, 0, 917507, 0, 0, 917508, 0, 0, 917509, 0, 0, 917510, 0, 0, 917511, 0, 0, 917512, 0, 0, 917513, 0, 0, 917514, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 1, 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, 917532, 0, 0, 917533, 0, 0, 917534, 0, 0, 917535, 0, 0, 983040, 0, 0, 983041, 0, 0, 983042, 0, 0, 983043, 0, 0, 983044, 0, 0, 983045, 0, 0, 983046, 0, 0, 983047, 0, 0, 983048, 0, 0, 983049, 0, 0, 983050, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 0, 0, 983056, 1, 0, 983057, 1, 0, 983058, 1, 0, 983059, 1, 0, 983060, 1, 0, 983061, 1, 0, 983062, 1, 0, 983063, 1, 0, 983064, 1, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 983068, 0, 0, 983069, 0, 0, 983070, 0, 0, 983071, 0, 0, 1048576, 0, 0, 1048577, 0, 0, 1048578, 0, 0, 1048579, 0, 0, 1048580, 0, 0, 1048581, 0, 0, 1048582, 0, 0, 1048583, 0, 0, 1048584, 0, 0, 1048585, 0, 0, 1048586, 0, 0, 1048587, 0, 0, 1048588, 0, 0, 1048589, 0, 0, 1048590, 0, 0, 1048591, 0, 0, 1048592, 0, 0, 1048593, 0, 0, 1048594, 0, 0, 1048595, 0, 0, 1048596, 0, 0, 1048597, 0, 0, 1048598, 0, 0, 1048599, 0, 0, 1048600, 1, 0, 1048601, 1, 0, 1048602, 0, 0, 1048603, 0, 0, 1048604, 0, 0, 1048605, 0, 0, 1048606, 0, 0, 1048607, 0, 0, 1114112, 0, 0, 1114113, 0, 0, 1114114, 0, 0, 1114115, 0, 0, 1114116, 0, 0, 1114117, 0, 0, 1114118, 0, 0, 1114119, 0, 0, 1114120, 0, 0, 1114121, 0, 0, 1114122, 0, 0, 1114123, 0, 0, 1114124, 0, 0, 1114125, 0, 0, 1114126, 0, 0, 1114127, 0, 0, 1114128, 0, 0, 1114129, 0, 0, 1114130, 0, 0, 1114131, 0, 0, 1114132, 0, 0, 1114133, 0, 0, 1114134, 0, 0, 1114135, 0, 0, 1114136, 0, 0, 1114137, 1, 0, 1114138, 0, 0, 1114139, 0, 0, 1114140, 0, 0, 1114141, 0, 0, 1114142, 0, 0, 1114143, 0, 0, 1179648, 0, 0, 1179649, 0, 0, 1179650, 0, 0, 1179651, 0, 0, 1179652, 0, 0, 1179653, 0, 0, 1179654, 0, 0, 1179655, 0, 0, 1179656, 0, 0, 1179657, 0, 0, 1179658, 0, 0, 1179659, 0, 0, 1179660, 0, 0, 1179661, 0, 0, 1179662, 0, 0, 1179663, 0, 0, 1179664, 0, 0, 1179665, 0, 0, 1179666, 0, 0, 1179667, 0, 0, 1179668, 0, 0, 1179669, 0, 0, 1179670, 0, 0, 1179671, 0, 0, 1179672, 0, 0, 1179673, 1, 0, 1179674, 0, 0, 1179675, 0, 0, 1179676, 0, 0, 1179677, 0, 0, 1179678, 0, 0, 1179679, 0, 0 ) +_sections_unfolded = [ "Cell", "Collision", "Z Index" ] + + diff --git a/game/levels/tilesets/default/default.tres b/game/levels/tilesets/default/default.tres new file mode 100644 index 0000000..f54fdac --- /dev/null +++ b/game/levels/tilesets/default/default.tres @@ -0,0 +1,102 @@ +[gd_resource type="TileSet" load_steps=10 format=2] + +[ext_resource path="res://levels/tilesets/default/png/grass.png" type="Texture" id=1] +[ext_resource path="res://levels/tilesets/default/png/water.png" type="Texture" id=2] +[ext_resource path="res://levels/tilesets/default/png/road_cross.png" type="Texture" id=3] +[ext_resource path="res://levels/tilesets/default/png/road_single.png" type="Texture" id=4] +[ext_resource path="res://levels/tilesets/default/png/road_straight.png" type="Texture" id=5] +[ext_resource path="res://levels/tilesets/default/png/road_tee.png" type="Texture" id=6] +[ext_resource path="res://levels/tilesets/default/png/bridge.png" type="Texture" id=7] +[ext_resource path="res://levels/tilesets/default/png/house.png" type="Texture" id=8] +[ext_resource path="res://levels/tilesets/default/png/farm.png" type="Texture" id=9] + +[resource] + +0/name = "Grass" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 0, 0 ) +0/is_autotile = false +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shapes = [ ] +1/name = "Water" +1/texture = ExtResource( 2 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 0, 0, 0 ) +1/is_autotile = false +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shapes = [ ] +2/name = "Road (Cross)" +2/texture = ExtResource( 3 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 0, 0, 0, 0 ) +2/is_autotile = false +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"shape": null, +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/name = "Road (End)" +3/texture = ExtResource( 4 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 0, 0, 0 ) +3/is_autotile = false +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shapes = [ ] +4/name = "Road (Straight)" +4/texture = ExtResource( 5 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 0, 0, 0, 0 ) +4/is_autotile = false +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shapes = [ ] +5/name = "Road (Tee)" +5/texture = ExtResource( 6 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 0, 0, 0, 0 ) +5/is_autotile = false +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shapes = [ ] +6/name = "Bridge" +6/texture = ExtResource( 7 ) +6/tex_offset = Vector2( 0, 0 ) +6/modulate = Color( 1, 1, 1, 1 ) +6/region = Rect2( 0, 0, 0, 0 ) +6/is_autotile = false +6/occluder_offset = Vector2( 0, 0 ) +6/navigation_offset = Vector2( 0, 0 ) +6/shapes = [ ] +7/name = "House" +7/texture = ExtResource( 8 ) +7/tex_offset = Vector2( 0, 0 ) +7/modulate = Color( 1, 1, 1, 1 ) +7/region = Rect2( 0, 0, 0, 0 ) +7/is_autotile = false +7/occluder_offset = Vector2( 0, 0 ) +7/navigation_offset = Vector2( 0, 0 ) +7/shapes = [ ] +8/name = "Farm" +8/texture = ExtResource( 9 ) +8/tex_offset = Vector2( 0, 0 ) +8/modulate = Color( 1, 1, 1, 1 ) +8/region = Rect2( 0, 0, 0, 0 ) +8/is_autotile = false +8/occluder_offset = Vector2( 0, 0 ) +8/navigation_offset = Vector2( 0, 0 ) +8/shapes = [ ] +_sections_unfolded = [ "0", "1", "2", "3", "4", "5", "6", "7", "8" ] + diff --git a/game/levels/tilesets/default/default.tsx b/game/levels/tilesets/default/default.tsx new file mode 100644 index 0000000..6d7a37a --- /dev/null +++ b/game/levels/tilesets/default/default.tsx @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/game/levels/tilesets/default/default.tsx.import b/game/levels/tilesets/default/default.tsx.import new file mode 100644 index 0000000..b47c862 --- /dev/null +++ b/game/levels/tilesets/default/default.tsx.import @@ -0,0 +1,20 @@ +[remap] + +importer="vnen.tiled_tileset_importer" +type="TileSet" +valid=false + +[deps] + +source_file="res://levels/tilesets/default/default.tsx" +source_md5="093f655dca7c76883d0057a4d3963412" + +[params] + +custom_properties=true +tile_metadata=false +image_flags=7 +embed_internal_images=false +save_tiled_properties=false +apply_offset=false +post_import_script="" diff --git a/game/levels/tilesets/default/png/bridge.png b/game/levels/tilesets/default/png/bridge.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb92b39a025df7e16f30ff02a2965457e2ac78a GIT binary patch literal 1990 zcmV;%2RZnOP)oq_-W03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00$~bL_t(o!)=$#l3Yg- zhQG|JbLpP$o*8M76tYLYgf|2%fne)b;PrSHwk!x71P}%m#^5lvq!H3+`g%@Xl10_& zZae6Rj&rNL)SrJ<{VBisZ88JAfK!lqZ5-(Ij{07}I6Zrna&=|A*Ycli%%FIOF#$k` z5K{SOfFDx{WC|E4&Yvyw=*l9*XROj5a~36>;u4y=|-CL7AtCIl*yMwvKR82}*FU`i~-6XZq- zDq7Ges2EORw8DwO3{@eCod{!PY@86Jkf|VV#hFpEPPrJxO3djeQn><&`&n?gw_8Nsi}?vl}8pz26g63O|5m?1a;KWk6$ zyW>Y=W)Ccee{-F_p~(+OP8f!nAY_zWoQWdNgE&+L!+|)`u;4KJn6Z6A^edc7DT9^Z zQp@9)T?wuNVi~oO_V6DT!`Cd*E4&>L%j9eb2{S_||7ly20HTVBmOvsj;SE0A6J{R} zEYV4sQckBBn@6334W-KnMZL`D|YVk;1CB zY3TYM?>%`OVSkUTzauYRpo?4RuTgCYrU-)f0xE&Ld(Hg*PxRpxtsTH3F^q(9U^pBY z#{q!-;lN?PBZg23E2mP3(6lYHe#XVc1x?%0v>iHZu+8_3?n_etjNCmTw<}yT$BPAc z`z4o~KQpuUcu8c-jKjcgw`05AvfJ%A91g@75rGf_|L-Rv=;6SAw_~$evs^4$EElwG zhw}|>Ixvn8BzMQyK4sJ;Ucdbvm*ZFTE+AxLh-|l8-oCqM^YB1Si5LTUTIkdR#$bQ(fS}vK-=QM3cPsYa)iCeP&3I6i%4_b}nnAz?3yuW|X!}@{k zW`kJ`Dz0vY4w>%771-4sx5u1DND(2EbLKFNgc#YZH(Xs`v0AQ}&*n59$ZKSbc+W_T ziS>HJ-J3V;cRNB1fFR<_9_m`e_h^3w-6d{zjho+~vm2zDgGFrE5O;Uj<|T3a3L73E z?#U^TV&d-ZExYZW>+5Tlt0mqybh5{9wp(HtS+CbMcmgTw+O$DtkC5dp?(!34^#Z?m zf_6(xyOP|Qc4);&almh165jls{NKNkH{ZeVfTe-Wejuc`q?B1K7a$J*^5rYMSN6LD zAq(bu&<5HSw)zx#{4;FvAzVBG*OOFH12wQJW>o72qe7A%xBM99x45Uj#NK@cufKrz zUt_~PLl}5{cgNvyK)o*r2ueaQH^K~)euCdEcNq2vR*MEe~x5VK+_YZ5lDn3moh3m2I8u~}r#VvOIQ|#(9#CIri zJPEC81(DMU>8s@Om7l4WL>0u8GyeS|dqah2J0w%2^8t<*B)vocV%#raX(dLc?r^Y}B;?26oUDcYneA z<#U>=k7%wwL|sSrbGoY=QtN*pqb89OtGGPYzP>vqdRD3_xJ^0$Xq{rs6Wk}C6D}U% z7cYKAclnI2nR)SO%)J{Z{x-uq#suliYn`fmUDTBElzb{gb#-C<8G2Y1;v^BwL zCMlO5VH#s~BT|7NC2&bXaFfuj8BGL^=I~=IGwL!V2VGMJbgrOqY)Is+L&_&oO<>&pI!MO28DC1H6O$N<^QkcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAe$ms#F(l&f+pyh2M-(_pWz@5+K z@1`n69T8enKg0P^z`Ed*XSP%*$yV9fJ}@w_J-pMBxxi#ykC8)DOV_8yOPxY}ZBxRS z-v4nhV^8DRsL60DlVJxpgZ~MJa;5{CG6%94US2L(vUJ&(rqjD;^X8q6WiSq_DGqqF zLUT?+2J3`f2`N_%jGjANGs%}#t(IMUB=TO5-5wEVIlhO#Kmp6(>FVdQ&MBb@08=A` A)Bpeg literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/png/farm.png.import b/game/levels/tilesets/default/png/farm.png.import new file mode 100644 index 0000000..fbd43b6 --- /dev/null +++ b/game/levels/tilesets/default/png/farm.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/farm.png-defc6fd14185d12b7de4e2cbc06ae785.stex" + +[deps] + +source_file="res://levels/tilesets/default/png/farm.png" +source_md5="a8a0165c22ff60a9e8226a5079ffecd0" + +dest_files=[ "res://.import/farm.png-defc6fd14185d12b7de4e2cbc06ae785.stex" ] +dest_md5="2f62792167780bc1689e621e951723df" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/levels/tilesets/default/png/grass.png b/game/levels/tilesets/default/png/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..706c35e316194ca515ce9fd61a08c497e0c02f6f GIT binary patch literal 1123 zcmV-p1f2VcP)D+ocCZQsqDY{ZDL?*qCtt69|GpQWzo%fQST?sEQQEE)XR^cwYV&LIr`Q0%oEY z2nM7G_a(IZ1||`N7(zhEe)gpPMdFP$;mmiKVzTbz~{mi?*d7hl?_j6vT zkcoS1tos$WcA&|G>;oSAJ(`jiiM;;5lHLMH0wnZ$*j`_q{D%5TfSP3xV7-WyCQIZwiF7~3Q8t! zl7wWcj)C`fko$M_IGo`9;9!%J>ztoAEb61jG)uE}R&ObHl^y&T4Qr(9iJsSBdoOOh4 zR6?4#t8xwX+vPHd_a$qFMP+=7$HppJ%imE0Z_n)~<1JI?nWdSJMLUUCe!}Z4pJcM~ zR2OA&0w=Xo>%=5Vrv{YVsb+5v4a108XS0PG-eHHT)?*(jp~~onm{o^da~m0byU|B88cmyYa-u=3S%2}niZy-$Ud3+NPl9h!og{Nvs!nH= z)Wo`kAQ3BRuC)q42puDgszCB0WHhihqOmF7YSd+%6>9XeaXts_0g zb>KY7T!@oSKn8YKi5{pY9qe`PmAR|<>&pI!MO28H@0y0hJfM(lW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6fgF4aSVw#{C4_5z5@yz&YJ)KpRb55o55A85^Xu_f*nVO z$?s}~nc^(HAw?Uy9WQR-VRqWObX~)ZXD39uSp`MfzXbA6W)az*!__1_c`x&$cAn{n zrOy<8{q+0b?d==N?OE?Ks4*~dI502?G%(DVKauY&{}G0+Dt;3stC${;yF6X}T-G@y GGywp=Y*l*z literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/png/house.png.import b/game/levels/tilesets/default/png/house.png.import new file mode 100644 index 0000000..47816d6 --- /dev/null +++ b/game/levels/tilesets/default/png/house.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/house.png-90b2798c1dfceadf2b73486f421d1f9c.stex" + +[deps] + +source_file="res://levels/tilesets/default/png/house.png" +source_md5="8bac60f2c16f7350223cb826508d06ea" + +dest_files=[ "res://.import/house.png-90b2798c1dfceadf2b73486f421d1f9c.stex" ] +dest_md5="69b1c2780e71562bc7c1b04aebda2ac8" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/levels/tilesets/default/png/road_cross.png b/game/levels/tilesets/default/png/road_cross.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2e23a0737b9ffc7c33e9c4016c21647a206b32 GIT binary patch literal 1660 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 LNkvXXu0mjf)m=%= literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/png/road_single.png.import b/game/levels/tilesets/default/png/road_single.png.import new file mode 100644 index 0000000..40a73c0 --- /dev/null +++ b/game/levels/tilesets/default/png/road_single.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/road_single.png-cf1cddecd73dd335a077840111cb9343.stex" + +[deps] + +source_file="res://levels/tilesets/default/png/road_single.png" +source_md5="17801f7f903b615e6dfd371e21a1f3a8" + +dest_files=[ "res://.import/road_single.png-cf1cddecd73dd335a077840111cb9343.stex" ] +dest_md5="5e11880b21baef78db928866a5184cfa" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/levels/tilesets/default/png/road_straight.png b/game/levels/tilesets/default/png/road_straight.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad655aa620af2b4bb2ca59486b36a615bd4a2b2 GIT binary patch literal 1489 zcmV;?1upuDP)<_etjCFJc z+ByS{L2n(JFnItTgZ7?*Ay0~sFNH!8P-qF_XD~C}U71hDG$=!(I2*5sk3zJirAoEfe04SwaU2nFR z|L*&%i_ow&(iY~J0jhL&?`oA~0G)0nT3fYk{~o~M>zB{FeIuah76XP2+OSFQsw=a4 zSLQSpMKs&}SFDs&W+=5$YBgUTp8~jk@#^icZv+Hj0MGz{WCh^nwxF?qq?sE@BPoz* z+kPEmyD9Vev7{A%{`Je}_4Ui=vwZ+^a^3(KNQ2o-86@dD6QUr+7|LM?7Pq=sEJ=jd zatz>m0RH0D+kRhwajJvS+-kO#N*PGP3Sln72udJiX2@~8gwQf_1>ky$;^S-J{LO{V z&rSybJxBv-iiA6jR$;RvmQw0)do>!GVjLUY8cTtY+i|n`?U&boyZt@;v zDM_FrjOI>y5i97O;HA)L-vr>JI{2Um0EiTkG7v;2CBaMeGG9EgQahypvYwxv@>>81 zK#dH zEdl(LExwzCXz{5?ls%lM1S3H}22$n@8a+c|re#D2;0VAUX!f(Y&0=ihl)~|A01Uuf zDK|QEmkitGfCAD|G8h*~9fJIcNOQOO z!HnI(sd*WqU$wZqeGd%BpYr!b0Ox0?^sYXI)o11K*-{zv*jyWF5Rz{dd*-gXEUPWj$J3{Kv+z$}p$~2l0Bxr;pA#?cQGg>(yWCnA$ z#o>`J4v#((w7rV30GMZtb+~yKP%_&HcLPnlAKVDisNJcjP0kLRpqAU!D*N>nfb~Zr_K0@8%m0u4?VSM#5W=Lw z(E>D3kZd=VL~gFf0Wq*U*wT0to7IKJ{@vaH0OoBN4*)D_R_@i`U@q;RU<&Dgyeq8@ zs^R673`_FA?KPaN0bYZ1y)-8gRtF0TeZ`oRd7a588e z;eQaoYw?WiVrV%<;MlwtUmODFQ7ozQgwb+Pj3XRw#Z5}rt~+XSzWF_Xhjd`K2@wZ0 zI{|P6FEf@}iKG`ZueDj3_1U6jYamIaG&#S2es||@E*>9&7~8#anUo1&L1a}ML8L{C zglx>#8USQwGQ&Y~TF3?fw*c<;9mxp50aUsj04ULKkuZ=#hGmX9sP!@Zw_6)ro|%HQ znF_Fd4FCbSBDGsgWU;z}C=eVW4qhy^)52zE26tt|kfF_V`@I1Gz-jCN&XidsffSV? rm^U+yy5F3nm?U@rcz^rb&jI`ooRuj`?UQav00000NkvXXu0mjfpm>=? literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/png/road_straight.png.import b/game/levels/tilesets/default/png/road_straight.png.import new file mode 100644 index 0000000..617923c --- /dev/null +++ b/game/levels/tilesets/default/png/road_straight.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/road_straight.png-87dff282d0a16c1706f7235cbdb25bb6.stex" + +[deps] + +source_file="res://levels/tilesets/default/png/road_straight.png" +source_md5="b21b1e9a9c0cf458df8363de9ca44cc0" + +dest_files=[ "res://.import/road_straight.png-87dff282d0a16c1706f7235cbdb25bb6.stex" ] +dest_md5="9a59eaa499d6f84258b5fc36e37111df" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/levels/tilesets/default/png/road_tee.png b/game/levels/tilesets/default/png/road_tee.png new file mode 100644 index 0000000000000000000000000000000000000000..09b421fdd8c7bb5d61eff5dab246a19c7f5c30c9 GIT binary patch literal 1647 zcmV-#29WuQP)GI7o0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#Cr*%`FGFxZ+j08|MBG6OWm}8=Jv|~znV)*padigGfxg+W=U?i`vPO@DIJ3KKzwO) z=Z9St&~$k^jHj=sa(O1AxM3N?!3;2SPm&ywJ*QktIWNQZ9dQ5o)5rZ?8BlwRk!c{N zA#ih~By$%sGoOi4VD7Gn8bt%*e0g|q1ble%?B#e@1_X>iY4_dyoFx=S1h^YH8=eqY z-HzKjm9xBD9!NR|w$GnF?w&t=ytoU1Xu-?JdNA)mhA>57DdTw$^Cgmkl)PK54$Y{k z%Ll;MKzj1*<@T-srd9{Vl4qg@!Z1NpR7OzD@C>;dF->m~C2E`l9~z54z6RDWPP9Hg z8i8%2-sj*=AQ2YhfK+7&N)4q{$cBhv+HBtZ`T47}&+VUY@qjA{T4SN8)+)d-Zy1D% zAvFd}W>)HUd{f8qJH+s%82Jl<6R>P!uN9w|HD@3s8ud2cIDuJ2tpn1~K4@X&k_;TOS|U`o+m-&I0p4AT>JK9lle5S7T{qT&i@*9K$oHwx0mW zi0Tp1E8;$I;K?6Gshjoj(Xf7T@;~Q7w%mWKIvG)S51*Ud5Fn{eS>wj>WbTGaQvw*0 zp_(-fD?(oZKaW!X)l&RseSCCzorw%A(I-LmsZYi3_lBy+G|YCO9nj{??x;k>0(by? zWA4B90Crp0Puu&3lw20qoG)~BK`$% zsfY^vyE)=?Ed|{!>xLu**7aEKMHGlpyXm=}BTF6L?-6B-%H(v5&KCP$r+)dHm@db- zJbw%0!A-uC)9R}^0gBmMR3R#uNm0Zsqbp|gX?z1W%+tK47I3q)+V{NwaFzOdkBIty zh<|<;7jOHU>MO@|Srio_nvHsxr@)dtCFn}TSOZ1gk!Fi;Sn9BpiD@9FEp$uV7bXlm zxi41xX?1@;F5X@l)HMLx%hNf>3b3ur2J^JVQ+V!O`dEZ}t*~-Cl*~M1d4UvY+O{oR zB$ru|nHiWcDzLc`08w8xYR*A#kol`8Mn0BX0mrwVpNfV;dEPqnKrBj`vGh&Z?Ws zN|ZXU(S$J|-Zy4{cvITYM(XpTTP?n|+&#pzllzKyB6Y%(=8jyFsN{vLTiTA=rq+<0 z-bDYc9Z~9XiW+?#OIYq7rp4-kJZIGr>Li2_l0u;}N~I6)vq$8lGF=(vX;VPCOIvP; zjB(FAJ;3vQ%YA1lH|m*XXC|VCrV+CaoBI?s*=>M}^^21q51>xP6alg%4069TPmWBx z=8alMr2sdh0c`bh23*{!DQ${Kn04Ow_r2?KjFTb?LPnsUnj z1Hh0{-CUF?B~&NHb{n#A!va}#pBYe{#CVB0VQ!N`oA&m11^|%E=}^rYE)WW{kfI7t t)!n9#{~x7L6f=AT+koD;6nqxIe*h literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/png/road_tee.png.import b/game/levels/tilesets/default/png/road_tee.png.import new file mode 100644 index 0000000..f3ca092 --- /dev/null +++ b/game/levels/tilesets/default/png/road_tee.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/road_tee.png-1e119bbfbb4a1c0ab0627bf2e30a96d2.stex" + +[deps] + +source_file="res://levels/tilesets/default/png/road_tee.png" +source_md5="080f804e7072a19355aa4b5ee53654e7" + +dest_files=[ "res://.import/road_tee.png-1e119bbfbb4a1c0ab0627bf2e30a96d2.stex" ] +dest_md5="ee99abdaa173ac39ed31a360b170d4ac" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/levels/tilesets/default/png/water.png b/game/levels/tilesets/default/png/water.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9f014890eb52242e0b4e9d3eab094e19c15a71 GIT binary patch literal 1266 zcmV!#;$lxV*@(!NhGJpu4jX663vM?h-#d?x(mPo*P5_b~ZxC=9? z03^cLBFsv>f|6E|&NA*qf0cT3Z-B+S@7F@_o&QH3CkEHE}K zqkm?&A)t^06gZ?%${j12ks=%w=JOelgwos$zDT8~%XtVfV(43h8$cD<{M}#~(p)$6 zs*&ZoVkENcOChF_F6WLhSexPC0ZdyFRB|~f+%O1-z=Q`Y42Lj#I%kN}2hc;m7o{=U>&)G^C4`wFvHo}? zK1XZBTb)-7B~7gPpcH3<1uLk+efqcpVJf;h#`^sYB8&*on6`Uw%{5TXjeV7t2&ak_ zW5fO}2cIl3SgVnB;vgU_;YQXcD?*4Y+r@fPm*YV;KAJ)jsiSV=P7I!Iw$OpHbl`@3rbVgK zK`GYHhugW5MUcsiGAGOCwBx4(-lcCqfw z_G47XU^{u#*}8fRH{4OpMF}}sgzHq zIB4f%lx9`biL8XxuCZfgY;b55HgAHRE$$g>STXW=!Zh)<6NmW7(Dxbw+d&^5Znb?l z%a8R{)Io_tU$XkO*vS=y5L6Mt`u@V4cZ{Nkv9IC-X%=S*4-lzOyJa1Eoba<5Pb9DJ z-?$uKxY$iver~=FyDhQ~`YlJsO$}gI7xRJF(O$v&{>MqA z2A`b;^|4|h`n+U#Q+0)2&bNyczg;{@7{8MDVkbMe3klu$I>&{c#`%)H$EWA$7S0OZ zi&ceAWV&%J{J1HctBB-Dc#*}u2_t>@mw&WA!t1C3~0_eN2t+^{ZB7u zTtNx^Y!0yENww|ow4ce7tgfELlNJWSW2}ymAd_&iaGS9l@(?pSvdCm7cah1RJV};* cZvJ`r4?{I9BW3T+-2eap07*qoM6N<$f?H8TcmMzZ literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/png/water.png.import b/game/levels/tilesets/default/png/water.png.import new file mode 100644 index 0000000..d553cb4 --- /dev/null +++ b/game/levels/tilesets/default/png/water.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water.png-cfef9686b4b28753118fd0b3683f052e.stex" + +[deps] + +source_file="res://levels/tilesets/default/png/water.png" +source_md5="96a9ed8fd6d25eaf7ba8656bf1072fd8" + +dest_files=[ "res://.import/water.png-cfef9686b4b28753118fd0b3683f052e.stex" ] +dest_md5="4100211fef875f35a450c8e296a15f03" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/levels/tilesets/default/source/bridge.xcf b/game/levels/tilesets/default/source/bridge.xcf new file mode 100644 index 0000000000000000000000000000000000000000..1a8bdd80770e5cbe57f46d04386a58a4cf534a53 GIT binary patch literal 5650 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 literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/source/grass.xcf b/game/levels/tilesets/default/source/grass.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b2830e4f1b519a43792db13338abda0a2b728813 GIT binary patch literal 3240 zcmZ`*+ioMr5mj~1jYCorC3`mr{J_Wc!v^**I1ff10<3P(g%ruTbI9S0$l>s!RX!m= z{vpU~KEqEzfc!xM7_o!I_HNeF>dNF)lL{1MGgPyibv;#GQ>7>#oYiMuSP$bQSi@6a zEk4(eYwQ1 z`Ny@P>zXE|(8N6n{z!SL>AIn5Ob6K_AvCFJxA-jtRY(dUNn1#bG$A+05T;xRs*x^8 zYNAFZNP%EeSrC!1p>JTVh}dC4Vrd{stcCKctTMwE2F@&GVm$zmDJ`M11(t@M1YC9n z<3P(2Qr-a~qg_a0gULh|#ZMh<(AmiyF!QcSQyBmeo+N`2(qJ{%AeKdBkkmnE=d2~A z4m}8QY?3Nq;=nK&hO%_aW?)F(GE)9r^Uf#@Xx}p;gAp=?G}1{^w9=AB@=hSnI$||A z*@zPIuzAB&!!R|IjGGmsB;P~WFf7w9QR&JuO=HOs!jdes2Jlx zH+0gMN#qC@x@npV4YWH0>evZk-LfqU;H0%?+#DSr9iN;uMC0q`>1n&w?sOcdgOB66 zeh`KMxQ)iCIK68#O?V66HQj|5Q1DOxq|rQWwVC1iA%%+wUw47;x(+!HuICGXaoVER zyLQKQJQ(Z7y>h0ZX`T(I$u7uN)WJE+E9cK{g!a!(p1l;3E)3;$eq?>jm8&x@kTxiu^3=_qzZ} z?srbdbvw!e+fRq%$&{u)7NaandT}=j0>n&?aR1;g6!|W4(*yX?cshIi z`r-l>W|L{5+$3=nxSW_IJIjmN`T4~K49ur<;QR(QvNZ07PQRZF(z9V+Okw`wVor0K z{dqc@Ovd?e(2x8M^dT@B7w~XCX9v?6&Hi>iEyjo>^g2m8NV9C1kEhca)a6XfFQ>C& zG)&^aZ4cz&J=F7jQp~1uD&~I$gvlsNBHwBC6Sj`r5A(bzCN%lubjBWLMV|J%Ub`9N z;&C|)01n1EyEs>AOnafzYJ?HW;%&@9oMod?UQCcjG5;+*q`km7J@ErSf)HmRWj6{W z03f*7cbX?E!zdqRf`cd~a4{|NVbb+G&Epm-6gSk37)g?%NQ#M={DABwq1SF4wb~E} z0@N=>U*V!s_$bEtXq2H&oYwJS6Baz*_k5IT6!rRPc7_X1lYTdJJFSzWlV%IGMx9Ib zHt=Ql6H2K6gR0a{^W^9VZ%d=uY*6D*cxyVI4?Ep1?hXaywojWUhlh9-504KISrpb# zQvolZ{2Nqq>vZox96anF?9=|cgTrGs!f&4IN$&>lT&J_UM|%&udporA{oelmAu#dV ziB}r2<9)pX_E$Tvc6WAn#Lo5Z-ofF~aid91YLR=*uV;k6tF6tAYQ-+0oe^3J>9^dl zO15ramn;iiM90{{?7=KTQ!y>>Bj|YgJ@LA}6rfCW5&a_NT+UQ=Ij=pU|+Q2M8 zM@7$qplV9!b3#|my8=Ne;Sv4X=5eCzq0ez2gc@|D_JB@_o+p09&VM`+LAXb^1Y8KS zC)MB|pttOfw>)8i3kDuwhs3ws{*^WipcU#STBE*{XHVkq3`Ns;1fyLWh?-lw1~;sR zX-o)L*G)3Xx@RWF8dQJ;J9@uvL75C`DyF?0)udk;)?*vTKt?M@sxViO0HIy+Tv);( z)y7TzA8@UpbK_?oqe1`I7q|n?J-CS4xVJEfNHY;W=h85R2?^5QshP#00u8r*_yi4( za4||5a|P1u6~-9flEafsUznUeb;Txzm1!a({X3=3NPx&jRg_BLk$KMsG2!$#%wZRp zewA{iV&lIMl*hs}r16#qAqEdK%a!W7SieD`*_Oq5!~{dxaD3lF)dqWGvsT;Ks8-7? zu^fHhs2%E+>gMLw*7jCya~*utD)MQ5ZK=4}`bMn=F4(G+p^osmSUHlvpl0oIt+u_j z4gPwyQZBK5+ye`6;a--?)!JrlleMYxMmbOyf&3t5VLy~B8~Dd-{T9jy02x4Tka)yV zdTUoIRp8rR-&E+Sj1+JJgz<(wuOi#}_<41m))(wSl&Qp7e2e$2vR>Qz==rl}&wujM GPyP*Wo}X&~ literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/source/house.xcf b/game/levels/tilesets/default/source/house.xcf new file mode 100644 index 0000000000000000000000000000000000000000..0bcd5fec5a720e4589ae3b276180bd551272c2c4 GIT binary patch literal 891 zcmc(d%TB^T6oyYngvupc6c@(DEMb9xSAYdE(Zp9Mr7aVoC2fhYFg}5aPvRpo{->Rq z8gcDO{{COjWu}=0-YAIGl5^;`Xpp3bwI`Ekt(L?3 zzz^JL9mR5x*(eScjvU{Ovp4}0QyOA)abmQn%fEp~_sQ0ART#)gu@{nuQ%RE>?Lw7G z6}l@g;rYn-6EFS#K%V}c$}>Ml`5a7Gp9R6C5ua#d>bTEA9PPsF*!XX7R3ZL58nO*@ z`-Nc`-Ilms;zo&^C2p0t4d!)=r~!CCj`GdOGbEG&31^{KyuvwTF7eJUZ>SV{Afa!l zs{7Q`9k_s+P?c)hrb@;YI@fLFET~Ht`bgRW*hmPtfLr>^u%M&Hh0P1Ke{!2YqQ{RJ FeF0ezrnmqA literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/source/road_cross.xcf b/game/levels/tilesets/default/source/road_cross.xcf new file mode 100644 index 0000000000000000000000000000000000000000..fc5345efdcb4cb7e82c73a94072301792898c578 GIT binary patch literal 3406 zcmZ`*d2Afj8Q-_3j~D_8&YNR*$7}D}Nw8xm2&)_w$sbT!M1$YV?Cj+@YsWDpF>)Mg zswSRYuW3RX4iO?mXw{~b(m!Z{qKYCFR0&cEse)1`oH>3^uhIb{m5ALS^Bipv^9vu6I zAoc!VXc75uSK5cA5B+gjf?HTRw4;q1`;!k3jgIWuWwnh?gMMx}bUIhy)Gf)>ynacB z%f??NH(Vt*UL~)%N^ZJJz7}K}clq;xK=aY>>djb0Z1&+LL4cbcu(j`nn|{LLu^*%l zkIk-DrVdQ0YC5eVwU$Zmf8vmB1)$lf{eVtRrqpyMvj{rWYC5H+07I#2=JBb=4;`{K z+B|A0J()_SCo`FY)YYRJ@J1<3P3`~1A#{jZ6jPbWw5mRS;3><+p_(bkR)kP#2!G%p zpfsn2qEtnNESdfL0duM5gz8eYl&Yp|4Ym+{`cy5g?we3qdQVJ1Ae3r`gC-CdW`MDW zMrr`aP^lXDs8&iV!wMBmxYR0*2-Vc7W*U^$2^CB!sVYT5va7BXb#$xxgqnsYgmkNp zjC~Ru+^RN_vJ#=Rp{AkQT6%IaLlv||YAU5VA-#)I05hkm)2K*wq*epPv?VXzs~|i) z9bmbVrmzZLp}K617VQSrZPV1rDXP$EMyJ|ntHPa{OsDKAr0URX@NTqa;RX)rMfyO+ zuF{r*QznhlR=NKHC#NPYQkjfp2KA@ZeS7!q1B!YEk|FS=ZLL9n_wEB5ol-!m%LWTW zvdNtTVJRAwh!~F~hsI$}6x=Zomg8|*3Mb;r;JlKENOB@BgQmZ)Z+sl~#Yys#C?^uK ztVH9nhpD%d6eLlKZHX!h2@gCpj>f53P8P*TvM(Bz`v*rXR|m<;B9X#_EEXuPjKN@JJAa6AeP3ColSk_|%BRz+EfN2tCi$6^wZqY))6l173g=(HS< z$&f3Shy(8?+7T!+90vnLY6>VVl$Kr>A(t+7?wdyGd5TrJFv;%W~{Ze^J_4|cIF1G1vpEL$@)^b#3NXCi$6MTZ7zTqG)+>ZsSa5*6!8RWIS_1-<*?@J1 z=fJDL2ZLUWxz_fez~Uy_9)xR*FX*=ff3Owk0?a{(D$6q%I@^F@Rk6kfLL9EgZd(@f zelPFydZFck&Nc?Z!dCJu_J!89`MoT|cXW8a0bAB}cYrwyralM?%LYpk=>E=H3lzEn z%OKlvYj@BKEV1v#Ww63{+x)nBabAG{E0rCP08&VBJWwTq&cJ+09r@14(Ab*)w{eErUtx5*6) zJL_%{kNo3eNizU1&HQ!yt=E9@B^S5($Oo4zx?$+G^68f!UF&gqVAm>+HTSKa!EHuT(` zIC`qAo5(zBXvI^njz4hs?LD{Lw7%ue+it$)jvpxf4~_op^@~-=cEvOnE=<4vyCcsX zd}4oU&-2eb{mkJPe{<}mSN?J$r-2&uT6uQn+}Tf0o|u0B_=hJy{OIFPK0AHp?B^FN zhIs{DL1y02D&=yin9t75T__Y$(OE)8eL**`I6zx4G_9spE0u+EQPYv`qEGOoI=i9k z@U+*=Do}MAc3SBb7if@ybW^K2Y7Q_$I?@&u4pXPychu})ThU-_H7kva;7>GZm|JWPS;?mF7Nw|DCtrK7KqId*H6y?$~(W10zqqTQE$AS=Ot?xvx&V zdGy&Q(UaMyZdlb+SAWfFCiKHc-=zE-$!`rY5}-Mn!V+GK8ozlCMHoBiJCYv-YN z$SfMw?99nG4&1Zmnrm00m2TT5XG<*e=Pws@!!&A@+{}qrf7)FKBfsQnj~xE{g$3vW z&@Fs@@|9ifPQWkMtsgx0uel1WWNiWP6Mq=wVaG1luit*`(=3?N!4%J*I2OK+!VO(J zUpq6uPy@7BEL@!a)xAv=Zrt$5%ctf_)k>+5&*jd)_uQTJ7JT!b*G^q7R!Z6V*-Mwt L9iQrUK>_~;$Arc2 literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/source/road_single.xcf b/game/levels/tilesets/default/source/road_single.xcf new file mode 100644 index 0000000000000000000000000000000000000000..14fcbb3f7cb1802e11b6e82f1e04261a4c07bbbf GIT binary patch literal 2637 zcmZ`)drVu`8Nb&Ta27&LlBT)7zSq7sf$#_c_Q=R4RSH=ftx~5|y7$_?egHPcal)el zve30t@6&+k}fT)%jv*}h|& zj%nGkKhF34&iDA8^Rq-W*8dzk8t!F#V|@_}7F#mp?*hYd__GIWTgUe?3>mD)z{0!^rMozHDzxm9!(Mfe7HP+u9 zjWkDxVm%0hY#gf}9(lem!VVAi#d;dH*Y`%lgMEWTY<*#C9*Ty#+15j?h4l!ht#s4? zrJ+ZZZl1IM-$A9L!_RexV*^pPZF3fY&p!$*Va=xpVk2y9AbcV+jOqt_dxs+UX14;w~r z@wadBE4TPNw)jN^_NjZFjK7Lu&^V8T+{bpM~f|*X%Yoy%p`5Z zC(f%9F5&W;64%DgO<_AeM@`bIqQ~P!kdScAP-IzBR5gB9k55ful~|dCtGI?M4^(zJ=maaolmO)v5@Bwf+RV5FjrjcEnS2HZy~^ibnt zNCXR(o|Ggs5t$;H0NHpM4I$)mX&080CAgl9Ze)`7V4umT4=^I6y_i`d;f^n1lNiX# zZA4BFb#XX{3v1pke>ggdo)*xNp>9C)ygSg#YaI`E+qv0fq*EwJz^*_Sf~cjD|-E1e$nmq z2YUJd+=1cT3NL!R!B}6=%Zb6BFp`#A5!}4cJundVxqWW8fTZQJZcYe>dIO@z4P-$a zAnb*P-a-u0LWalV5BNlnz+oUQmvf8WK&Z#h3B}Ok<$XP2KOcY)vOPS3t{Tg7f*AC>c^<|QFh0wPf&QVWz`J>_3}S=x`-V@Sa*Kke zJLD-aG`N5#bP`_0(-}L3-W{?6et~lf(8L#w1qx8QkLTRb7sh%#oC&oa;5jcOAtnR| z0=qfUEdUuFj`v`zf)AL(nTZ2|IS`mD2~2LZKGo4k;$)t((lw6ShISNyb@Qi}WQ|D4Uh4J94DS zZnN7c3h7H`Z6xJtXmLSLxB)0c=B>2NPSZ9DV$he&QZ{JpWEm@o1SNA6!?+p`x=5-R z+88U_bg+hGk-pH+N?MuyE=M7oATtznqG^VrO2B7U%7)u;=3%jamZV*EPReS9c?8VQ zl1$ClkA0D{LZ32-4btK2c&eRZD0^d*qd?IhS*GdBb$mXm+`*>@Vu1gZ?}oohZ-XX_`0l4){o|(zBWt9R_pZM+*i>bLF3UTPz4oWMgptp$ zB>(Z(x1#$%*yU|UE_^h5Kb>DqE#3LcYsW1JD{s;NaC0G>%dITjzBbXZ6Je(M7cSpS zWHQ<1`?uad510i@)eK*nzGtMfsfF3gFMp!|Ir@JC5M(9hK6vG*1!dV!{`v-jl6U7m zc(r3s5qkSZBArPm@6NtIbqp1*+fTkdy^z5(tIPLhet)5WrR;t0%q4UAoROHja{g$c zzw^b9?i#CW`SjwGtgmgXXBTJRop^dL z!pu*;KAl-x-`L39|NAdrJh}^EJ321>c`>`Xo?D*3_C~m+3So~opSe7rTrn0uz53&! zCmjS}DGSa0^uy^}^B-TDI`M?lj8$VsW!sq_{p!*?Karkoc&rTDjb$u{J%cZdh+ngo e( zg%oIfe|D0lRVUG+Nl3spq=^X-(Y;o5eO?VLy0DRa2W$+3Kbv8%-~B_425ne(!7hfa zg|dKR`E|@~ZxR zkI%c^H{|a|474##l*AE9HJZZ$Mzv#r-yE7Zpp8&5n2mZ zTfnsQYfRVf>HjYv)6wCBo-Y4@k8WLi3*h0eg9Wzz(13r0_78ORdWVtyU{BAmcjVsz zBJ2M}tK`2;Q5^~kdwWfSlP+vj(emA%uBUxNgNFw4WkcOSYaMLVom;Ti7i6Tqp&-Md zA#an*Zj;MzlPhkMD{qslKt_JoRw)SRJ+yA0j8&r1`U?ULC)%K^Jpw0M^y=0gM<1mc zt&j~Jo00`gz{Eu+R$-BVDRD_qBxzg;jR!*~Pio3F#X?*b z<)A2!hk`-nI5I90;-V}oL0OpyiPFTeli0~}fKgGFf(K}88p z9tVitj?01^nwXSBk{q0v&}`ITLQE6_%J}5b;DoG5q6kbYsG=Y%a!?M*5`}!8Hu!6J$Y>#fksmoPv^yLj-U$IW=_@#Zacn3FClc zV!EsS21`-pXbx<*=KQvL!vz#nK)Jf>o zI^FKkQK)G#6L;8n7qE`@cIVT`x`>He9lWdE!FPICd-s7+Y!phtL|Lc3 z9iWSMbb1H##sKX$&fVeU+nr8VcOO6qm5Es$tliVw=XP_B_Upjf2Ga4&KhO42+|eiQBj~hO@if z9-gr>dEZg1jbj+j=7g9T8^gdnVocJ?+1dS8hr@2?m?8#7lu5G=w$0{*Z;Z*Zc2Gpg z#&`xnmSwCQxB)iLSna%vZL{*6t)s`^i6~4T<8b!&xHyJ$a-M^SpBr)Kahh>Dp6=r9 zRy$@-_m7OeaHO}O?&Mrf&cWFoj)7+mKYzr(ig||>n#J2~JlApX*~7z~fXg&t#sd_R z0M2q9J-u#6o@W`JVXc@o#o9UEiDHDkGHv8Ha3qVcGk)=?S5Z>pPR9_gA^>BQ3_d zExVw=+ErLXl7xXao9hcOVrtrI){%P3Vzktn&AWD?`NZRto-zQlm}uj6WL<>EbrfYV z8Vt3y1lh1{7q$y3f=3A>VKh;c$w1XLwB(Hel6oCoM;mE_k#1-P2$AA39Yqjz_uOA^ z)>EdsIy6H#MkI7p!_EhqECz#~Akci`DufJHX0t($V>rwwXk~C6MVd$*0GLlaq1V;u z2xG0u2nfw59@p!tae}hcH=1xj$aho+S~UboTk2_CkK<@Q@uZH>*Hq(_fucyf2#5K^ z(>kKMMsJ|dYgvK>MU-re1ZX4)9j?<8c{Y#hX|u7q28XgV?%3I601ESoQ|5bH&3Lum zsN4FTC!X2^MbBfSX=gJ{)Q}YU?Z@}-Z@YgDleK0&sUs=sTaQ1rk6Fdb1`4GXrwF}) zXnOdGz2Dsi>hP}cIa>uFlAgGb<(6EJ}{+}FCJwE-th1VETf zT&-(qZf>#Q1hfMYEwm#^HPkoOlQ===<3?&pT@93m!1ZPe^1j+|2&Q^7^aUp@W>j7@ zn)B;wov(a!{?kiWuivB{U^^Wm>P|E-btdaeA6}e^B%_hU!sqYx-nS8y!zKECFMV`*E}_O_@r8f9 z`OKEml2WMETv5%FKl=Fkd`eA3W8n+$5AP(`qYhzrKK|m_=}0;ik43+_@Wx6Z;yO~%@O~oTO{xAisN)xpVe>f9UQyDdJ z=w=K|7Yqm9n@MCAm(t1bxgYPZE7QWfE&-fQEn!P)MvYv2r|$t{IV#Jd;lQu2r zHkFQD{Y{X6m?!}}Z|M8*i_CH^x4f8`J@e}Gwk_pAmrO_g8d=I=Idyp{6}@))EztScVBpL6X2zyhhCmtTG6hkxok#VxO{r@!AhiE`q*nXvnwmN zZmle5)cGr?L-&>eUflS^PiGc$D;QEwCuT4H>Y1(UpyXk!ZtrW;$a`)%6Q8?w_SG(0 zi(0Xv#r68Nf({N0U pOkciwBYflRsRuV8?ecpL{qj;co(y09?6b?)ubd9Hl)yi%{{k*%W+wmu literal 0 HcmV?d00001 diff --git a/game/levels/tilesets/default/source/road_tee.xcf b/game/levels/tilesets/default/source/road_tee.xcf new file mode 100644 index 0000000000000000000000000000000000000000..7ce568662e1a46654a3cc97aad84330562e04c7d GIT binary patch literal 3550 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 VPGLlVb-$z_0B&Jx-e~G`_dm1x^J)M9 literal 0 HcmV?d00001 diff --git a/game/ui/clock.png.import b/game/ui/clock.png.import new file mode 100644 index 0000000..2b53509 --- /dev/null +++ b/game/ui/clock.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/clock.png-09b4a660a58c86478b8ce31163fe5a4d.stex" + +[deps] + +source_file="res://ui/clock.png" +source_md5="c51f169ca04f3f1454f4a36aca7b902a" + +dest_files=[ "res://.import/clock.png-09b4a660a58c86478b8ce31163fe5a4d.stex" ] +dest_md5="45be711dfb788be0dcd6c54e33bb9fda" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/ui/current_resources.gd b/game/ui/current_resources.gd new file mode 100644 index 0000000..438c46c --- /dev/null +++ b/game/ui/current_resources.gd @@ -0,0 +1,33 @@ +extends Panel + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + +var resources = [ + 'population', + 'jobs', + 'food', + 'resources', + 'effort', + 'goods' +] + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + +func update_resources(r): + print(self.resources) + for i in self.resources: + if not i: + continue + var v = r[i] + get_node('HBoxContainer/%s/progress' %i).value = v + get_node('HBoxContainer/%s' %i).hint_tooltip = '%s: %d' %[i, v] + +#func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. +# pass diff --git a/game/ui/current_resources.tscn b/game/ui/current_resources.tscn new file mode 100644 index 0000000..4d560ee --- /dev/null +++ b/game/ui/current_resources.tscn @@ -0,0 +1,449 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/current_resources.gd" type="Script" id=1] +[ext_resource path="res://ui/progress_texture.png" type="Texture" id=2] + +[node name="resources" type="Panel"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 64.0 +margin_right = 175.0 +margin_bottom = 264.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +script = ExtResource( 1 ) +_sections_unfolded = [ "Rect" ] + +[node name="HBoxContainer" type="HBoxContainer" parent="." index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 179.0 +margin_bottom = 197.0 +rect_min_size = Vector2( 175, 200 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 1 +_sections_unfolded = [ "Rect" ] + +[node name="population" type="VBoxContainer" parent="HBoxContainer" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 4.0 +margin_right = 29.0 +margin_bottom = 200.0 +rect_min_size = Vector2( 25, 0 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 2 +_sections_unfolded = [ "Rect" ] + +[node name="progress" type="TextureProgress" parent="HBoxContainer/population" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 21.0 +margin_right = 25.0 +margin_bottom = 196.0 +rect_min_size = Vector2( 0, 175 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = null +texture_over = null +texture_progress = ExtResource( 2 ) +fill_mode = 3 +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Rect", "Textures" ] + +[node name="icon" type="TextureRect" parent="HBoxContainer/population" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 200.0 +margin_right = 25.0 +margin_bottom = 200.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch_mode = 0 + +[node name="jobs" type="VBoxContainer" parent="HBoxContainer" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 33.0 +margin_right = 58.0 +margin_bottom = 200.0 +rect_min_size = Vector2( 25, 0 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 2 +_sections_unfolded = [ "Rect" ] + +[node name="progress" type="TextureProgress" parent="HBoxContainer/jobs" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 21.0 +margin_right = 25.0 +margin_bottom = 196.0 +rect_min_size = Vector2( 0, 175 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = null +texture_over = null +texture_progress = ExtResource( 2 ) +fill_mode = 3 +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Rect", "Textures" ] + +[node name="icon" type="TextureRect" parent="HBoxContainer/jobs" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 200.0 +margin_right = 25.0 +margin_bottom = 200.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch_mode = 0 + +[node name="food" type="VBoxContainer" parent="HBoxContainer" index="2"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 62.0 +margin_right = 87.0 +margin_bottom = 200.0 +rect_min_size = Vector2( 25, 0 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 2 +_sections_unfolded = [ "Hint", "Rect" ] + +[node name="progress" type="TextureProgress" parent="HBoxContainer/food" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 21.0 +margin_right = 25.0 +margin_bottom = 196.0 +rect_min_size = Vector2( 0, 175 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = null +texture_over = null +texture_progress = ExtResource( 2 ) +fill_mode = 3 +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Rect", "Textures" ] + +[node name="icon" type="TextureRect" parent="HBoxContainer/food" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 200.0 +margin_right = 25.0 +margin_bottom = 200.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch_mode = 0 + +[node name="resources" type="VBoxContainer" parent="HBoxContainer" index="3"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 91.0 +margin_right = 116.0 +margin_bottom = 200.0 +rect_min_size = Vector2( 25, 0 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 2 +_sections_unfolded = [ "Rect" ] + +[node name="progress" type="TextureProgress" parent="HBoxContainer/resources" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 21.0 +margin_right = 25.0 +margin_bottom = 196.0 +rect_min_size = Vector2( 0, 175 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = null +texture_over = null +texture_progress = ExtResource( 2 ) +fill_mode = 3 +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Rect", "Textures" ] + +[node name="icon" type="TextureRect" parent="HBoxContainer/resources" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 200.0 +margin_right = 25.0 +margin_bottom = 200.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch_mode = 0 + +[node name="effort" type="VBoxContainer" parent="HBoxContainer" index="4"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 120.0 +margin_right = 145.0 +margin_bottom = 200.0 +rect_min_size = Vector2( 25, 0 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 2 +_sections_unfolded = [ "Rect" ] + +[node name="progress" type="TextureProgress" parent="HBoxContainer/effort" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 21.0 +margin_right = 25.0 +margin_bottom = 196.0 +rect_min_size = Vector2( 0, 175 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = null +texture_over = null +texture_progress = ExtResource( 2 ) +fill_mode = 3 +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Rect", "Textures" ] + +[node name="icon" type="TextureRect" parent="HBoxContainer/effort" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 200.0 +margin_right = 25.0 +margin_bottom = 200.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch_mode = 0 + +[node name="goods" type="VBoxContainer" parent="HBoxContainer" index="5"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 149.0 +margin_right = 174.0 +margin_bottom = 200.0 +rect_min_size = Vector2( 25, 0 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 2 +_sections_unfolded = [ "Rect" ] + +[node name="progress" type="TextureProgress" parent="HBoxContainer/goods" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 21.0 +margin_right = 25.0 +margin_bottom = 196.0 +rect_min_size = Vector2( 0, 175 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = null +texture_over = null +texture_progress = ExtResource( 2 ) +fill_mode = 3 +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Rect", "Textures" ] + +[node name="icon" type="TextureRect" parent="HBoxContainer/goods" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 200.0 +margin_right = 25.0 +margin_bottom = 200.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 + + diff --git a/game/ui/help.png b/game/ui/help.png new file mode 100644 index 0000000000000000000000000000000000000000..fba24f7ef34953fa4b212deb41bce59eb0dbe793 GIT binary patch literal 715 zcmV;+0yO=JP)WFU8GbZ8()Nlj2>E@cM*00J*bL_t(o!_8N}YZO5g z{^so-3M(?6g_dXIUvPzmMM`5M*lm+G2m$vGP*Q1|3)qT~CU_ufW9@%%gKysO%8^wFDu(JZBm$QJ?gyNY035~= z5gmZ5K+I7J5fK32asZDUA5{(_2QCsK0=)8Mciu`5Stkh*2_8{a?{bYol{gnfKLhk0 zptZU7%rj{~A~vj+o;XDp@B+z}98b$w=eBJ(nE3-U|77MT7*ZQJ(oVzIbc*YzEx)N^KDns=Wft1AJ343pCG z+bk{X)G+fl5pCpo{-xjV|0;^&N0w##0QQZ~=6F1&%kqq)75yj;c3k!$Q%aR*OEH~J zufyhK-U}geW`2=n*{jqTohvY(&u8lTjFDa` z7HpD3wo}IL#ld7Pj%I6dIQ{p>^FQNa)GKyxal8Nk002ovPDHLkV1iZ8EYSb} literal 0 HcmV?d00001 diff --git a/game/ui/help.png.import b/game/ui/help.png.import new file mode 100644 index 0000000..a0de751 --- /dev/null +++ b/game/ui/help.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/help.png-e2b8cfcaccb3e2cf0ea7059f79a1642c.stex" + +[deps] + +source_file="res://ui/help.png" +source_md5="b6dca20b5d1cd4c2fa015b2a78630632" + +dest_files=[ "res://.import/help.png-e2b8cfcaccb3e2cf0ea7059f79a1642c.stex" ] +dest_md5="0dcba7b3df6253b41024d662b57f5e15" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/ui/mapsize.gd b/game/ui/mapsize.gd new file mode 100644 index 0000000..eb4e430 --- /dev/null +++ b/game/ui/mapsize.gd @@ -0,0 +1,19 @@ +extends HBoxContainer + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + + +func set_level_size(size): + get_node('mapsize').text = '%d x %d' % [size.x, size.y] + +#func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. +# pass diff --git a/game/ui/mapsize.tscn b/game/ui/mapsize.tscn new file mode 100644 index 0000000..84ac5e0 --- /dev/null +++ b/game/ui/mapsize.tscn @@ -0,0 +1,77 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/mapsize.gd" type="Script" id=1] + +[node name="MapSizeContainer" type="HBoxContainer"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 175.0 +margin_bottom = 14.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 0 +script = ExtResource( 1 ) + +[node name="icon" type="TextureRect" parent="." index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_bottom = 14.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch_mode = 0 + +[node name="Label" type="Label" parent="." index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 4.0 +margin_right = 61.0 +margin_bottom = 14.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 4 +text = "Map Size" +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 + +[node name="mapsize" type="Label" parent="." index="2"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 65.0 +margin_right = 96.0 +margin_bottom = 14.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 4 +text = "X x X" +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 + + diff --git a/game/ui/progress_texture.png b/game/ui/progress_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..51fbfa0dafdfe27840919710fdb6bf35c5dbedf7 GIT binary patch literal 494 zcmVz2O^N75GhXf*E3xlY|L!LTsTt4(R`}z>Td4$dpPuO`@@HWZ^Q2WJCN7m@Md!# z{0v}9>+k*U=d>Mu+#f!FQ%e5X?>_F_=o~W1%wj@8Ra4V5e{lc=UEnlKCD_-27c>2a zL8LZ`Qc~=O66`8}f*F~?fHej}X4AuC2?mK1JdbA>XU#yKB`10c$-3Y}*(BI_JWwXl!=+Oy!56Y`c;b;biBA1?qAb z2F?TkQyOPTc(I`Zq%_Vj!QlGyjC|X+Ahc54M)PLlbnM2PS5Mm}o-V)Z@b$~FyL+1M k9@6t1Zr9DH#tja@FC412l7#K~0ssI207*qoM6N<$f}j}CO8@`> literal 0 HcmV?d00001 diff --git a/game/ui/progress_texture.png.import b/game/ui/progress_texture.png.import new file mode 100644 index 0000000..6c61f83 --- /dev/null +++ b/game/ui/progress_texture.png.import @@ -0,0 +1,32 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/progress_texture.png-457c15d58017cd09c9bd2f6adbe8ac4e.stex" + +[deps] + +source_file="res://ui/progress_texture.png" +source_md5="1f3e052e1febf74611f78d634c3e4a30" + +dest_files=[ "res://.import/progress_texture.png-457c15d58017cd09c9bd2f6adbe8ac4e.stex" ] +dest_md5="d304153aa385c6eb7be032a85fdeef13" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=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 +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/ui/prompt.gd b/game/ui/prompt.gd new file mode 100644 index 0000000..095cb4c --- /dev/null +++ b/game/ui/prompt.gd @@ -0,0 +1,45 @@ +extends LineEdit + + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + +#func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. +# pass + + +# This only fires when a user presses enter +func _on_prompt_text_entered(new_text): + print(text) + pass # replace with function body + + +# Here we can do tab complete, ctrl-c clear line, etc. +# ctrl-r search +func _on_prompt_gui_input(ev): + # Check if we have focus on the prompt + if not self.has_focus(): + return + if ev is InputEventKey and ev.pressed: + if ev.scancode == KEY_C: + # This is Ctrl-c + if ev.get_scancode_with_modifiers() == 268435523: + # Emit signal on clear? + self.clear() + # How to mark input as consumed + if ev.scancode == KEY_TAB: + # @TODO: Autocomplete current text if possible + print("@TODO: Implemement auto-complete") + if ev.scancode == KEY_R: + # This is Ctrl-r + if ev.get_scancode_with_modifiers() == 268435538: + # Emit signal to start search + print("@TODO Implementare Ctrl-r Search") \ No newline at end of file diff --git a/game/ui/resource_progress_bar.gd b/game/ui/resource_progress_bar.gd new file mode 100644 index 0000000..f10065a --- /dev/null +++ b/game/ui/resource_progress_bar.gd @@ -0,0 +1,21 @@ +extends VBoxContainer + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + +export(Texture) var icon; +export(String) var name; +export(Texture) var progress_texture; + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + if this.icon: + get_node('TextureRect').texture = this.icon + + +#func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. +# pass diff --git a/game/ui/resource_progress_bar.tscn b/game/ui/resource_progress_bar.tscn new file mode 100644 index 0000000..76a64ed --- /dev/null +++ b/game/ui/resource_progress_bar.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/resource_progress_bar.gd" type="Script" id=1] + +[node name="VBoxContainer" type="VBoxContainer"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 1.0 +margin_bottom = 40.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +alignment = 0 +script = ExtResource( 1 ) +icon = null +name = null +progress_texture = null + +[node name="ProgressBar" type="TextureProgress" parent="." index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 1.0 +margin_bottom = 1.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 0 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = null +texture_over = null +texture_progress = null +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Percent" ] + +[node name="TextureRect" type="TextureRect" parent="." index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 5.0 +margin_right = 1.0 +margin_bottom = 5.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +stretch_mode = 0 + +[node name="Label" type="Label" parent="." index="2"] + +visible = false +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 9.0 +margin_right = 1.0 +margin_bottom = 23.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 4 +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 + + diff --git a/game/ui/timer.gd b/game/ui/timer.gd new file mode 100644 index 0000000..ba7d06d --- /dev/null +++ b/game/ui/timer.gd @@ -0,0 +1,43 @@ +extends Panel + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + +var t_max = 60.0 +var t = 60.0 + +signal skip_presssed + +func set_time_max(t): + self.t_max = t + self.set_time_left(t) + +func set_time_left(t): + if t == null && self.t > self.t_max: + self.t = self.t_max + if t <= self.t_max: + self.t = t + get_node('timeleft').text = self.format_time(self.t) + +func format_time(t): + var minutes = t / 60; + var seconds = int(t) % 60; + return '%d:%02d' % [minutes, seconds] + +func _draw(): + pass + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + +#func _process(delta): +# # Called every frame. Delta is time since last frame. +# # Update game logic here. +# pass + + +func _on_skip_pressed(): + emit_signal('skip_pressed') diff --git a/game/ui/timer.tscn b/game/ui/timer.tscn new file mode 100644 index 0000000..67ebf2d --- /dev/null +++ b/game/ui/timer.tscn @@ -0,0 +1,93 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/timer.gd" type="Script" id=1] +[ext_resource path="res://ui/clock.png" type="Texture" id=2] + +[node name="timer" type="Panel"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 18.0 +margin_right = 175.0 +margin_bottom = 218.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +script = ExtResource( 1 ) +_sections_unfolded = [ "Rect" ] + +[node name="TextureRect" type="TextureRect" parent="." index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 175.0 +margin_bottom = 175.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 1 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +texture = ExtResource( 2 ) +stretch_mode = 0 +_sections_unfolded = [ "Rect" ] + +[node name="timeleft" type="Label" parent="." index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 39.0 +margin_top = 179.0 +margin_right = 131.0 +margin_bottom = 210.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 4 +text = "asdf +" +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 +_sections_unfolded = [ "Hint", "Rect" ] + +[node name="skip" type="Button" parent="." index="2"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 103.0 +margin_top = 173.0 +margin_right = 174.0 +margin_bottom = 200.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +toggle_mode = false +enabled_focus_mode = 2 +shortcut = null +group = null +text = "Skip" +flat = false +align = 1 +_sections_unfolded = [ "Anchor", "Grow Direction", "Hint", "Margin" ] + +[connection signal="pressed" from="skip" to="." method="_on_skip_pressed"] + +