summaryrefslogtreecommitdiff
path: root/lib/Properties.hs
diff options
context:
space:
mode:
authorstuebinm2021-09-20 02:17:13 +0200
committerstuebinm2021-09-20 02:17:13 +0200
commita4476a3e6d44e8e2ae054a8aec68836b2e813c60 (patch)
tree3afe870489a119223b62b17f12e8b79117699a17 /lib/Properties.hs
parent5b8ed8ad906e92bce5b8576b29ae6f2cc46d8696 (diff)
lint embedded tilesets
Diffstat (limited to 'lib/Properties.hs')
-rw-r--r--lib/Properties.hs15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/Properties.hs b/lib/Properties.hs
index 4dada7d..395bc87 100644
--- a/lib/Properties.hs
+++ b/lib/Properties.hs
@@ -9,7 +9,7 @@ module Properties (checkLayerProperty, checkMap) where
import Control.Monad (unless, when)
import Data.Text (Text, isPrefixOf)
import Tiled2 (Layer (..), Property (..), PropertyValue (..),
- Tiledmap (..))
+ Tiledmap (..), Tileset (..))
import Util (layerIsEmpty, prettyprint)
import LintWriter (LintWriter, complain, dependsOn, forbid, info,
@@ -131,6 +131,7 @@ checkMap :: Tiledmap -> LintWriter ()
checkMap tiledmap = do
-- check properties
mapM_ (checkMapProperty tiledmap) (tiledmapProperties tiledmap)
+ mapM_ checkTileset (tiledmapTilesets tiledmap)
-- some layers should exist
hasLayerNamed "start" (const True)
"The map must have one layer named \"start\""
@@ -151,7 +152,17 @@ checkMap tiledmap = do
unless (any pred layers)
$ complain err
-
+-- | check an embedded tile set.
+--
+-- Important to collect dependency files
+checkTileset :: Tileset -> LintWriter ()
+checkTileset tileset = do
+ -- TODO: can tilesets be non-local dependencies?
+ dependsOn $ Local (tilesetImage tileset)
+
+ -- reject tilesets unsuitable for workadventure
+ unless (tilesetTilewidth tileset == 32 && tilesetTileheight tileset == 32)
+ $ complain $ "Tileset " <> tilesetName tileset <> " must have tile size 32 by 32"
-- | does this layer have the given property?
containsProperty :: [Property] -> Text -> Bool