~comcloudway/little_town

d6d1e992685c12128af740d2326ab7660327abbf — Jakob Meier 1 year, 6 months ago 69abade v0.2.2
Added blocks from Sketch Desert asset pack
6 files changed, 212 insertions(+), 134 deletions(-)

M .gitignore
M Cargo.lock
M Cargo.toml
M README.md
M fetch-assets.sh
M src/game/blocks.rs
M .gitignore => .gitignore +1 -0
@@ 1,6 1,7 @@
target/
assets/base/
assets/exp/
assets/desert
assets/fonts/
assets/ui/
local.data

M Cargo.lock => Cargo.lock +1 -1
@@ 1619,7 1619,7 @@ checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"

[[package]]
name = "little_town"
version = "0.2.1"
version = "0.2.2"
dependencies = [
 "async-std",
 "directories-next",

M Cargo.toml => Cargo.toml +1 -1
@@ 1,7 1,7 @@
[package]
name = "little_town"
description = "Build a small isometric town"
version = "0.2.1"
version = "0.2.2"
edition = "2021"
authors = [ "Jakob Meier <comcloudway@ccw.icu>" ]
readme = "README.org"

M README.md => README.md +8 -8
@@ 27,9 27,9 @@ with this 2D game
  - [ ] destroy block with long click
- [ ] Settings menu (i.e for Keybindings)
- [ ] Background music (ambient)
- [ ] Add more assets
- [x] Add more assets
  - [x] SketchTown Expansion pack
  - [ ] (MAYBE) [Sketch Desert](https://kenney.nl/assets/sketch-desert)
  - [x] (MAYBE) [Sketch Desert](https://kenney.nl/assets/sketch-desert)
- [x] Placing blocks on the other side of a block (Shift+Mouse)
  - [x] (requires) rotate block using Ctrl+Mouse



@@ 113,12 113,12 @@ you can follow this guide to build the binary yourself.
4. The output binary can be found in the `target` folder.

## Credits
The Assets were created by [Kenney](https://kenney.nl/)
The assets are designed by [Kenney](https://kenney.nl/)
and are licensed under [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/).
See below or a detailed list:

-   [Sketch Town](https://kenney.nl/assets/sketch-town) assets pack
-   [Sketch Town Expansion](https://kenney.nl/assets/sketch-town-expansion) asset pack
-   [UI Pack: RPG Expansion](https://kenney.nl/assets/ui-pack-rpg-expansion) asset pack
-   [Kenney Fonts](https://kenney.nl/assets/kenney-fonts)

- [Sketch Town](https://kenney.nl/assets/sketch-town) assets pack
- [Sketch Town Expansion](https://kenney.nl/assets/sketch-town-expansion) asset pack
- [Sektch Desert](https://kenney.nl/assets/sketch-desert) asset pack
- [UI Pack: RPG Expansion](https://kenney.nl/assets/ui-pack-rpg-expansion) asset pack
- [Kenney Fonts](https://kenney.nl/assets/kenney-fonts)

M fetch-assets.sh => fetch-assets.sh +15 -4
@@ 3,6 3,7 @@
# delete old assets
rm -rf assets/base
rm -rf assets/exp
rm -rf assets/desert
rm -rf assets/fonts
rm -rf assets/ui
# enable failsafe


@@ 13,7 14,7 @@ echo "⏳ Downloading Sketch Town base pack"
echo "from https://kenney.nl/assets/sketch-town"
mkdir -p assets/base
wget https://kenney.nl/content/3-assets/31-sketch-town/kenney_sketchtown_1.zip \
    -O assets/base.zip
    -O assets/base.zip -q
unzip assets/base.zip -d assets/base
rm assets/base.zip
echo "✅ Extracting pack 1 done"


@@ 23,17 24,27 @@ echo "⏳ Downloading Sketch Town Expansion pack"
echo "from https://kenney.nl/assets/sketch-town-expansion"
mkdir -p assets/exp
wget https://kenney.nl/content/3-assets/17-sketch-town-expansion/kenney_sketchtownexpansion.zip \
    -O assets/exp.zip
    -O assets/exp.zip -q
unzip assets/exp.zip -d assets/exp
rm assets/exp.zip
echo "✅ Extracting pack 2 done"

# fetch the sketch desert pack
echo "⏳ Downloading Sketch Desert pack"
echo "from https://kenney.nl/assets/sketch-desert"
mkdir -p assets/desert
wget https://kenney.nl/content/3-assets/10-sketch-desert/kenney_sketchdesert.zip \
    -O assets/desert.zip -q
unzip assets/desert.zip -d assets/desert
rm assets/desert.zip
echo "✅ Extracting pack 3 done"

# fetch ui pack
echo "⏳ Downloading RPG UI Pack"
echo "from https://kenney.nl/assets/ui-pack-rpg-expansion"
mkdir -p assets/ui
wget https://kenney.nl/content/3-assets/164-ui-pack-rpg-expansion/uipack-rpg.zip \
    -O assets/ui.zip
    -O assets/ui.zip -q
unzip assets/ui.zip -d assets/ui
rm assets/ui.zip
echo "✅ Extracting pack 3 done"


@@ 43,7 54,7 @@ echo "⏳ Downloading Kenney Fonts"
echo "from https://kenney.nl/assets/kenney-fonts"
mkdir -p assets/fonts
wget https://kenney.nl/content/3-assets/137-kenney-fonts/kenney_fontpackage.zip \
    -O assets/fonts.zip
    -O assets/fonts.zip -q
unzip assets/fonts.zip -d assets/fonts
rm assets/fonts.zip
echo "✅ Extracting fonts done"

M src/game/blocks.rs => src/game/blocks.rs +186 -120
@@ 87,11 87,13 @@ pub enum Category {
    Building,
    /// floor tiling
    /// i.e grass, dirt
    Blocks,
    Block,
    /// Blocks from the desert pack
    Desert,
    /// category containing roofs for buildings
    Roofs,
    Roof,
    /// Trees & Bushes
    Plants,
    Plant,
    /// River, Lake and water
    Water,
    /// blocks made from wood


@@ 186,6 188,14 @@ auto_gen_blocks!(
    ( BuildingStackCorner, "exp/Tiles/building_stackCorner", [Building] ),
    ( BuildingStackCornerBeige, "exp/Tiles/building_stackCornerBeige", [Building] ),

    ( DesertBuilding, "desert/Tiles/building_center", [Building, Desert] ),
    ( DesertBuildingSides, "desert/Tiles/building_sides", [Building, Desert] ),
    ( DesertDarkBuilding, "desert/Tiles/building_dark_center", [Building, Desert] ),
    ( DesertDarkBuildingDoor, "desert/Tiles/building_dark_center_door", [Building, Desert] ),
    ( DesertDarkBuildingWindows, "desert/Tiles/building_dark_center_windows", [Building, Desert] ),
    ( DesertDarkBuildingSides, "desert/Tiles/building_dark_sides", [Building, Desert] ),
    ( DesertDarkBuildingSidesWindows, "desert/Tiles/building_dark_sides_windows", [Building, Desert] ),

    ( CastleBend, "base/Tiles/castle_bend", [Building] ),
    ( CastleCenter, "base/Tiles/castle_center", [Building] ),
    ( CastleCorner, "base/Tiles/castle_corner", [Building] ),


@@ 199,129 209,183 @@ auto_gen_blocks!(
    ( CastleTowerCenter, "exp/Tiles/castle_towerCenter", [Building] ),
    ( CastleTowerBeige, "base/Tiles/castle_towerBeige", [Building] ),
    ( CastleTowerBeigeBase, "exp/Tiles/castle_towerBeigeBase", [Building] ),
    ( CastleTowerBeigeTop, "exp/Tiles/castle_towerBeigeTop", [Building, Roofs] ),
    ( CastleTowerBeigeTop, "exp/Tiles/castle_towerBeigeTop", [Building, Roof] ),
    ( CastleTowerBrown, "base/Tiles/castle_towerBrown", [Building] ),
    ( CastleTowerBrownBase, "exp/Tiles/castle_towerBrownBase", [Building] ),
    ( CastleTowerBrownTop, "exp/Tiles/castle_towerBrownTop", [Building, Roofs] ),
    ( CastleTowerBrownTop, "exp/Tiles/castle_towerBrownTop", [Building, Roof] ),
    ( CastleTowerGreen, "base/Tiles/castle_towerGreen", [Building] ),
    ( CastleTowerGreenBase, "exp/Tiles/castle_towerGreenBase", [Building] ),
    ( CastleTowerGreenTop, "exp/Tiles/castle_towerGreenTop", [Building, Roofs] ),
    ( CastleTowerGreenTop, "exp/Tiles/castle_towerGreenTop", [Building, Roof] ),
    ( CastleTowerPurple, "base/Tiles/castle_towerPurple", [Building] ),
    ( CastleTowerPurpleBase, "exp/Tiles/castle_towerPurpleBase", [Building] ),
    ( CastleTowerPurpleTop, "exp/Tiles/castle_towerPurpleTop", [Building, Roofs] ),
    ( CastleTowerPurpleTop, "exp/Tiles/castle_towerPurpleTop", [Building, Roof] ),
    ( CastleWall, "base/Tiles/castle_wall", [Building] ),
    ( CastleWindow, "base/Tiles/castle_window", [Building] ),

    ( Cliff, "exp/Tiles/cliff", [Blocks] ),
    ( CliffCorner, "exp/Tiles/cliff", [Blocks] ),
    ( CliffCornerInner, "exp/Tiles/cliff", [Blocks] ),
    ( CliffEntrance, "exp/Tiles/cliff", [Blocks] ),
    ( CliffTop, "exp/Tiles/cliff_top", [Blocks] ),
    ( CliffTopEntrance, "exp/Tiles/cliff_topEntrance", [Blocks] ),
    ( CliffTopCorner, "exp/Tiles/cliff_topCorner", [Blocks] ),
    ( CliffTopCornerInner, "exp/Tiles/cliff_topCornerInner", [Blocks] ),

    ( DirtCenter, "base/Tiles/dirt_center", [Blocks] ),
    ( DirtCorner, "exp/Tiles/dirt_corner", [Blocks] ),
    ( DirtLow, "base/Tiles/dirt_low", [Blocks] ),

    (Fence, "exp/Tiles/fence_wood", [Wood] ),
    (FenceCorner, "exp/Tiles/fence_woodCorner", [Wood] ),
    (FenceCurve, "exp/Tiles/fence_woodCurve", [Wood] ),
    (FenceEnd, "exp/Tiles/fence_woodEnd", [Wood] ),
    (FenceDouble, "exp/Tiles/fence_woodDouble", [Wood] ),
    (FenceDoubleCorner, "exp/Tiles/fence_woodDoubleCorner", [Wood] ),
    (FenceDoubleCurve, "exp/Tiles/fence_woodDoubleCurve", [Wood] ),
    (FenceDoubleEnd, "exp/Tiles/fence_woodDoubleEnd", [Wood]),

    ( Furrow, "exp/Tiles/furrow", [Plants] ),
    ( FurrowCropWheat, "exp/Tiles/furrow_cropWheat", [Plants] ),
    ( FurrowCrop, "exp/Tiles/furrow_crop", [Plants] ),
    ( FurrowEnd, "exp/Tiles/furrow_end", [Plants] ),

    ( Grass, "exp/Tiles/grass_block", [Blocks] ),
    ( GrassCenter, "base/Tiles/grass_center", [Blocks] ),
    ( GrassCorner, "base/Tiles/grass_corner", [Blocks] ),
    ( GrassPath, "base/Tiles/grass_path", [Blocks] ),
    ( GrassPathBend, "base/Tiles/grass_pathBend", [Blocks] ),
    ( GrassPathCorner, "base/Tiles/grass_pathCorner", [Blocks] ),
    ( GrassPathCrossing, "base/Tiles/grass_pathCrossing", [Blocks] ),
    ( GrassPathEnd, "base/Tiles/grass_pathEnd", [Blocks] ),
    ( GrassPathEndSquare, "base/Tiles/grass_pathEndSquare", [Blocks] ),
    ( GrassPathSlope, "base/Tiles/grass_pathSlope", [Blocks] ),
    ( GrassPathSplit, "base/Tiles/grass_pathSplit", [Blocks] ),
    ( GrassRiver, "base/Tiles/grass_river", [Blocks, Water] ),
    ( GrassRiverBend, "base/Tiles/grass_riverBend", [Blocks, Water] ),
    ( GrassRiverBridge, "base/Tiles/grass_riverBridge", [Blocks, Water] ),
    ( GrassRiverCorner, "base/Tiles/grass_riverCorner", [Blocks, Water] ),
    ( GrassRiverCrossing, "base/Tiles/grass_riverCrossing", [Blocks, Water] ),
    ( GrassRiverEnd, "base/Tiles/grass_riverEnd", [Blocks, Water] ),
    ( GrassRiverEndSquare, "base/Tiles/grass_riverEndSquare", [Blocks, Water] ),
    ( GrassRiverSlope, "base/Tiles/grass_riverSlope", [Blocks, Water] ),
    ( GrassRiverSplit, "base/Tiles/grass_riverSplit", [Blocks, Water] ),
    ( GrassSlope, "base/Tiles/grass_slope", [Blocks] ),
    ( GrassSlopeConcave, "base/Tiles/grass_slopeConcave", [Blocks] ),
    ( GrassSlopeConvex, "base/Tiles/grass_slopeConvex", [Blocks] ),
    ( GrassWater, "base/Tiles/grass_water", [Blocks, Water] ),
    ( GrassWaterConcave, "base/Tiles/grass_waterConcave", [Blocks, Water] ),
    ( GrassWaterConvex, "base/Tiles/grass_waterConvex", [Blocks, Water] ),
    ( GrassWaterRiver, "base/Tiles/grass_waterRiver", [Blocks, Water] ),

    ( RocksDirt, "base/Tiles/rocks_dirt", [Plants] ),
    ( RocksGrass, "base/Tiles/rocks_grass", [Plants] ),

    ( RoofChurchBeige, "base/Tiles/roof_churchBeige", [Building, Roofs] ),
    ( RoofChuchBrown, "base/Tiles/roof_churchBrown", [Building, Roofs] ),
    ( RoofChurchGreen, "base/Tiles/roof_churchGreen", [Building, Roofs] ),
    ( RoofChurchPurple, "base/Tiles/roof_churchPurple", [Building, Roofs] ),
    ( RoofGableBeige, "base/Tiles/roof_gableBeige", [Building, Roofs] ),
    ( RoofGableCornerBeige, "exp/Tiles/roof_gableCornerBeige", [Building, Roofs] ),
    ( RoofGableBrown, "base/Tiles/roof_gableBrown", [Building, Roofs] ),
    ( RoofGableCornerBrown, "exp/Tiles/roof_gableCornerBrown", [Building, Roofs] ),
    ( RoofGableGreen, "base/Tiles/roof_gableGreen", [Building, Roofs] ),
    ( RoofGableCornerGreen, "exp/Tiles/roof_gableCornerGreen", [Building, Roofs] ),
    ( RoofGablePurple, "base/Tiles/roof_gablePurple", [Building, Roofs] ),
    ( RoofGableCornerPurple, "exp/Tiles/roof_gableCornerPurple", [Building, Roofs] ),
    ( RoofPointBeige, "base/Tiles/roof_pointBeige", [Building, Roofs] ),
    ( RoofPointBrown, "base/Tiles/roof_pointBrown", [Building, Roofs] ),
    ( RoofPointGreen, "base/Tiles/roof_pointGreen", [Building, Roofs] ),
    ( RoofPointPurple, "base/Tiles/roof_pointPurple", [Building, Roofs] ),
    ( RoofRoundBeige, "base/Tiles/roof_roundBeige", [Building, Roofs] ),
    ( RoofRoundCornerBeige, "exp/Tiles/roof_roundCornerBeige", [Building, Roofs] ),
    ( RoofRoundBrown, "base/Tiles/roof_roundBrown", [Building, Roofs] ),
    ( RoofRoundCornerBrown, "exp/Tiles/roof_roundCornerBrown", [Building, Roofs] ),
    ( RoofRoundGreen, "base/Tiles/roof_roundGreen", [Building, Roofs] ),
    ( RoofRoundCornerGreen, "exp/Tiles/roof_roundCornerGreen", [Building, Roofs] ),
    ( RoofRoundPurple, "base/Tiles/roof_roundPurple", [Building, Roofs] ),
    ( RoofRoundCornerPurple, "exp/Tiles/roof_roundCornerPurple", [Building, Roofs] ),
    ( RoofRoundedBeige, "base/Tiles/roof_roundedBeige", [Building, Roofs] ),
    ( RoofRoundedBrown, "base/Tiles/roof_roundedBrown", [Building, Roofs] ),
    ( RoofRoundedGreen, "base/Tiles/roof_roundedGreen", [Building, Roofs] ),
    ( RoofRoundedPurple, "base/Tiles/roof_roundedPurple", [Building, Roofs] ),
    ( RoofSlantBeige, "base/Tiles/roof_slantBeige", [Building, Roofs] ),
    ( RoofSlantCornerBeige, "exp/Tiles/roof_slantCornerBeige", [Building, Roofs] ),
    ( RoofSlantCornerInnerBeige, "exp/Tiles/roof_slantCornerInnerBeige", [Building, Roofs] ),
    ( RoofSlantBrown, "base/Tiles/roof_slantBrown", [Building, Roofs] ),
    ( RoofSlantCornerBrown, "exp/Tiles/roof_slantCornerBrown", [Building, Roofs] ),
    ( RoofSlantCornerInnerBrown, "exp/Tiles/roof_slantCornerInnerBrown", [Building, Roofs] ),
    ( RoofSlantGreen, "base/Tiles/roof_slantGreen", [Building, Roofs] ),
    ( RoofSlantCornerGreen, "exp/Tiles/roof_slantCornerGreen", [Building, Roofs] ),
    ( RoofSlantCornerInnerGreen, "exp/Tiles/roof_slantCornerInnerGreen", [Building, Roofs] ),
    ( RoofSlantPurple, "base/Tiles/roof_slantPurple", [Building, Roofs] ),
    ( RoofSlantCornerPurple, "exp/Tiles/roof_slantCornerPurple", [Building, Roofs] ),
    ( RoofSlantCornerInnerPurple, "exp/Tiles/roof_slantCornerInnerPurple", [Building, Roofs] ),
    ( Cliff, "exp/Tiles/cliff", [Block] ),
    ( CliffCorner, "exp/Tiles/cliff", [Block] ),
    ( CliffCornerInner, "exp/Tiles/cliff", [Block] ),
    ( CliffEntrance, "exp/Tiles/cliff", [Block] ),
    ( CliffTop, "exp/Tiles/cliff_top", [Block] ),
    ( CliffTopEntrance, "exp/Tiles/cliff_topEntrance", [Block] ),
    ( CliffTopCorner, "exp/Tiles/cliff_topCorner", [Block] ),
    ( CliffTopCornerInner, "exp/Tiles/cliff_topCornerInner", [Block] ),

    ( DirtCenter, "base/Tiles/dirt_center", [Block] ),
    ( DirtCorner, "exp/Tiles/dirt_corner", [Block] ),
    ( DirtLow, "base/Tiles/dirt_low", [Block] ),

    ( Fence, "exp/Tiles/fence_wood", [Wood] ),
    ( FenceCorner, "exp/Tiles/fence_woodCorner", [Wood] ),
    ( FenceCurve, "exp/Tiles/fence_woodCurve", [Wood] ),
    ( FenceEnd, "exp/Tiles/fence_woodEnd", [Wood] ),
    ( FenceDouble, "exp/Tiles/fence_woodDouble", [Wood] ),
    ( FenceDoubleCorner, "exp/Tiles/fence_woodDoubleCorner", [Wood] ),
    ( FenceDoubleCurve, "exp/Tiles/fence_woodDoubleCurve", [Wood] ),
    ( FenceDoubleEnd, "exp/Tiles/fence_woodDoubleEnd", [Wood]),

    ( Furrow, "exp/Tiles/furrow", [Plant] ),
    ( FurrowCropWheat, "exp/Tiles/furrow_cropWheat", [Plant] ),
    ( FurrowCrop, "exp/Tiles/furrow_crop", [Plant] ),
    ( FurrowEnd, "exp/Tiles/furrow_end", [Plant] ),

    ( Grass, "exp/Tiles/grass_block", [Block] ),
    ( GrassCenter, "base/Tiles/grass_center", [Block] ),
    ( GrassCorner, "base/Tiles/grass_corner", [Block] ),
    ( GrassSlope, "base/Tiles/grass_slope", [Block] ),
    ( GrassSlopeConcave, "base/Tiles/grass_slopeConcave", [Block] ),
    ( GrassSlopeConvex, "base/Tiles/grass_slopeConvex", [Block] ),
    ( GrassPath, "base/Tiles/grass_path", [Block] ),
    ( GrassPathBend, "base/Tiles/grass_pathBend", [Block] ),
    ( GrassPathCorner, "base/Tiles/grass_pathCorner", [Block] ),
    ( GrassPathCrossing, "base/Tiles/grass_pathCrossing", [Block] ),
    ( GrassPathEnd, "base/Tiles/grass_pathEnd", [Block] ),
    ( GrassPathEndSquare, "base/Tiles/grass_pathEndSquare", [Block] ),
    ( GrassPathSlope, "base/Tiles/grass_pathSlope", [Block] ),
    ( GrassPathSplit, "base/Tiles/grass_pathSplit", [Block] ),
    ( GrassRiver, "base/Tiles/grass_river", [Block, Water] ),
    ( GrassRiverBend, "base/Tiles/grass_riverBend", [Block, Water] ),
    ( GrassRiverBridge, "base/Tiles/grass_riverBridge", [Block, Water] ),
    ( GrassRiverCorner, "base/Tiles/grass_riverCorner", [Block, Water] ),
    ( GrassRiverCrossing, "base/Tiles/grass_riverCrossing", [Block, Water] ),
    ( GrassRiverEnd, "base/Tiles/grass_riverEnd", [Block, Water] ),
    ( GrassRiverEndSquare, "base/Tiles/grass_riverEndSquare", [Block, Water] ),
    ( GrassRiverSlope, "base/Tiles/grass_riverSlope", [Block, Water] ),
    ( GrassRiverSplit, "base/Tiles/grass_riverSplit", [Block, Water] ),
    ( GrassWater, "base/Tiles/grass_water", [Block, Water] ),
    ( GrassWaterConcave, "base/Tiles/grass_waterConcave", [Block, Water] ),
    ( GrassWaterConvex, "base/Tiles/grass_waterConvex", [Block, Water] ),
    ( GrassWaterRiver, "base/Tiles/grass_waterRiver", [Block, Water] ),

    ( DesertGrass, "desert/Tiles/grass_center", [Block, Desert] ),
    ( DesertGrassSlope, "desert/Tiles/grass_slope", [Block, Desert] ),
    ( DesertGrassSlopeConcave, "desert/Tiles/grass_slopeConcave", [Block, Desert] ),
    ( DesertGrassSlopeConvex, "desert/Tiles/grass_slopeConvex", [Block, Desert] ),
    ( DesertGrassCorner, "desert/Tiles/grass_corner", [Block, Desert] ),
    ( DesertGrassPath, "desert/Tiles/grass_path", [Block, Desert] ),
    ( DesertGrassPathBend, "desert/Tiles/grass_pathBend", [Block, Desert] ),
    ( DesertGrassPathCorner, "desert/Tiles/grass_pathCorner", [Block, Desert] ),
    ( DesertGrassPathCrossing, "desert/Tiles/grass_pathCrossing", [Block, Desert] ),
    ( DesertGrassPathEnd, "desert/Tiles/grass_pathEnd", [Block, Desert] ),
    ( DesertGrassPathEndSquare, "desert/Tiles/grass_pathEndSquare", [Block, Desert] ),
    ( DesertGrassPathSlope, "desert/Tiles/grass_pathSlope", [Block, Desert] ),
    ( DesertGrassPathSplit, "desert/Tiles/grass_pathSplit", [Block, Desert] ),
    ( DesertGrassRiver, "desert/Tiles/grass_river", [Block, Desert, Water] ),
    ( DesertGrassRiverBend, "desert/Tiles/grass_riverBend", [Block, Desert, Water] ),
    ( DesertGrassRiverBridge, "desert/Tiles/grass_riverBridge", [Block, Desert, Water] ),
    ( DesertGrassRiverCorner, "desert/Tiles/grass_riverCorner", [Block, Desert, Water] ),
    ( DesertGrassRiverCrossing, "desert/Tiles/grass_riverCrossing", [Block, Desert, Water] ),
    ( DesertGrassRiverEnd, "desert/Tiles/grass_riverEnd", [Block, Desert, Water] ),
    ( DesertGrassRiverEndSquare, "desert/Tiles/grass_riverEndSquare", [Block, Desert, Water] ),
    ( DesertGrassRiverSlope, "desert/Tiles/grass_riverSlope", [Block, Desert, Water] ),
    ( DesertGrassRiverSplit, "desert/Tiles/grass_riverSplit", [Block, Desert, Water] ),
    ( DesertGrassWater, "desert/Tiles/grass_water", [Block, Desert, Water] ),
    ( DesertGrassWaterConcave, "desert/Tiles/grass_waterConcave", [Block, Desert, Water] ),
    ( DesertGrassWaterConvex, "desert/Tiles/grass_waterConvex", [Block, Desert, Water] ),
    ( DesertGrassWaterRiver, "desert/Tiles/grass_waterRiver", [Block, Desert, Water] ),

    ( RocksDirt, "base/Tiles/rocks_dirt", [Plant] ),
    ( RocksGrass, "base/Tiles/rocks_grass", [Plant] ),
    ( RocksDesert, "desert/Tiles/rocks", [Plant, Desert] ),

    ( DesertOverhang, "desert/Tiles/overhang", [Building, Desert] ),
    ( DesertOverhangSmall, "desert/Tiles/overhang_small", [Building, Desert] ),

    ( RoofChurchBeige, "base/Tiles/roof_churchBeige", [Building, Roof] ),
    ( RoofChuchBrown, "base/Tiles/roof_churchBrown", [Building, Roof] ),
    ( RoofChurchGreen, "base/Tiles/roof_churchGreen", [Building, Roof] ),
    ( RoofChurchPurple, "base/Tiles/roof_churchPurple", [Building, Roof] ),
    ( RoofGableBeige, "base/Tiles/roof_gableBeige", [Building, Roof] ),
    ( RoofGableCornerBeige, "exp/Tiles/roof_gableCornerBeige", [Building, Roof] ),
    ( RoofGableBrown, "base/Tiles/roof_gableBrown", [Building, Roof] ),
    ( RoofGableCornerBrown, "exp/Tiles/roof_gableCornerBrown", [Building, Roof] ),
    ( RoofGableGreen, "base/Tiles/roof_gableGreen", [Building, Roof] ),
    ( RoofGableCornerGreen, "exp/Tiles/roof_gableCornerGreen", [Building, Roof] ),
    ( RoofGablePurple, "base/Tiles/roof_gablePurple", [Building, Roof] ),
    ( RoofGableCornerPurple, "exp/Tiles/roof_gableCornerPurple", [Building, Roof] ),
    ( RoofPointBeige, "base/Tiles/roof_pointBeige", [Building, Roof] ),
    ( RoofPointBrown, "base/Tiles/roof_pointBrown", [Building, Roof] ),
    ( RoofPointGreen, "base/Tiles/roof_pointGreen", [Building, Roof] ),
    ( RoofPointPurple, "base/Tiles/roof_pointPurple", [Building, Roof] ),
    ( RoofRoundBeige, "base/Tiles/roof_roundBeige", [Building, Roof] ),
    ( RoofRoundCornerBeige, "exp/Tiles/roof_roundCornerBeige", [Building, Roof] ),
    ( RoofRoundBrown, "base/Tiles/roof_roundBrown", [Building, Roof] ),
    ( RoofRoundCornerBrown, "exp/Tiles/roof_roundCornerBrown", [Building, Roof] ),
    ( RoofRoundGreen, "base/Tiles/roof_roundGreen", [Building, Roof] ),
    ( RoofRoundCornerGreen, "exp/Tiles/roof_roundCornerGreen", [Building, Roof] ),
    ( RoofRoundPurple, "base/Tiles/roof_roundPurple", [Building, Roof] ),
    ( RoofRoundCornerPurple, "exp/Tiles/roof_roundCornerPurple", [Building, Roof] ),
    ( RoofRoundedBeige, "base/Tiles/roof_roundedBeige", [Building, Roof] ),
    ( RoofRoundedBrown, "base/Tiles/roof_roundedBrown", [Building, Roof] ),
    ( RoofRoundedGreen, "base/Tiles/roof_roundedGreen", [Building, Roof] ),
    ( RoofRoundedPurple, "base/Tiles/roof_roundedPurple", [Building, Roof] ),
    ( RoofSlantBeige, "base/Tiles/roof_slantBeige", [Building, Roof] ),
    ( RoofSlantCornerBeige, "exp/Tiles/roof_slantCornerBeige", [Building, Roof] ),
    ( RoofSlantCornerInnerBeige, "exp/Tiles/roof_slantCornerInnerBeige", [Building, Roof] ),
    ( RoofSlantBrown, "base/Tiles/roof_slantBrown", [Building, Roof] ),
    ( RoofSlantCornerBrown, "exp/Tiles/roof_slantCornerBrown", [Building, Roof] ),
    ( RoofSlantCornerInnerBrown, "exp/Tiles/roof_slantCornerInnerBrown", [Building, Roof] ),
    ( RoofSlantGreen, "base/Tiles/roof_slantGreen", [Building, Roof] ),
    ( RoofSlantCornerGreen, "exp/Tiles/roof_slantCornerGreen", [Building, Roof] ),
    ( RoofSlantCornerInnerGreen, "exp/Tiles/roof_slantCornerInnerGreen", [Building, Roof] ),
    ( RoofSlantPurple, "base/Tiles/roof_slantPurple", [Building, Roof] ),
    ( RoofSlantCornerPurple, "exp/Tiles/roof_slantCornerPurple", [Building, Roof] ),
    ( RoofSlantCornerInnerPurple, "exp/Tiles/roof_slantCornerInnerPurple", [Building, Roof] ),

    ( DesertDome, "desert/Tiles/dome", [Building, Desert, Roof] ),
    ( DesertDomeSmall, "desert/Tiles/dome_small", [Building, Desert, Roof] ),

    ( DesertStairs, "desert/Tiles/stairs_full", [Building, Desert] ),
    ( DesertStairsLeft, "desert/Tiles/stairs_left", [Building, Desert] ),
    ( DesertStairsRight, "desert/Tiles/stairs_right", [Building, Desert] ),

    ( StructureArch, "base/Tiles/structure_arch", [Wood] ),
    ( StructureHigh, "base/Tiles/structure_high", [Wood] ),
    ( StructureLow, "base/Tiles/structure_low", [Wood] ),

    ( Trees, "base/Tiles/tree_multiple", [Plants] ),
    ( Tree, "base/Tiles/tree_single", [Plants] ),
    (Pine, "exp/Tiles/tree_pine", [Plants] ),
    (PineLarge, "exp/Tiles/tree_pineLarge", [Plants] ),

    ( WaterCenter, "base/Tiles/water_center", [Blocks, Water] ),
    ( WaterFall, "base/Tiles/water_fall", [Blocks, Water] ),
    ( StructureTent, "desert/Tiles/structure_tent", [Building, Wood, Desert] ),
    ( StructureTentSlant, "desert/Tiles/structure_tentSlant", [Building, Wood, Desert] ),

    ( DesertTiles, "desert/Tiles/tiles", [Block, Desert] ),
    ( DesertTilesCrumbled, "desert/Tiles/tiles_crumbled", [Block, Desert] ),
    ( DesertTilesDecorated, "desert/Tiles/tiles_decorated", [Block, Desert] ),
    ( DesertTilesSteps, "desert/Tiles/tiles_steps", [Block, Desert] ),

    ( Trees, "base/Tiles/tree_multiple", [Plant] ),
    ( Tree, "base/Tiles/tree_single", [Plant] ),
    ( Pine, "exp/Tiles/tree_pine", [Plant] ),
    ( PineLarge, "exp/Tiles/tree_pineLarge", [Plant] ),
    ( PalmTree, "desert/Tiles/tree", [Plant, Desert] ),
    ( PalmTrees, "desert/Tiles/trees", [Plant, Desert] ),

    ( DesertWalls, "desert/Tiles/walls_square", [Desert, Building] ),
    ( DesertWallsBroken, "desert/Tiles/walls_broken", [Desert, Building] ),
    ( DesertWallsCorner, "desert/Tiles/walls_corner", [Desert, Building] ),
    ( DesertWallsEnd, "desert/Tiles/walls_end", [Desert, Building] ),
    ( DesertWallsLeft, "desert/Tiles/walls_left", [Desert, Building] ),
    ( DesertWallsRight, "desert/Tiles/walls_right", [Desert, Building] ),

    ( WaterCenter, "base/Tiles/water_center", [Block, Water] ),
    ( WaterFall, "base/Tiles/water_fall", [Block, Water] ),
    ( Well, "exp/Tiles/well", [Water] )
);
impl Default for Block {


@@ 336,9 400,10 @@ impl Category {
        vec![
            Category::All,
            Category::Building,
            Category::Blocks,
            Category::Roofs,
            Category::Plants,
            Category::Block,
            Category::Desert,
            Category::Roof,
            Category::Plant,
            Category::Water,
            Category::Wood,
        ]


@@ 347,12 412,13 @@ impl Category {
    pub fn get_name(&self) -> &str {
        match self {
            Category::Building => "Buildings",
            Category::Blocks => "Blocks",
            Category::Roofs => "Roofs",
            Category::Plants => "Plants",
            Category::Block => "Blocks",
            Category::Roof => "Roofs",
            Category::Plant => "Plants",
            Category::Water => "Water & River",
            Category::Wood => "Wood",
            Category::All => "All"
            Category::All => "All",
            Category::Desert => "Desert"
        }
    }
}