summaryrefslogtreecommitdiff
path: root/lib/Properties.hs
diff options
context:
space:
mode:
authorstuebinm2021-11-17 02:59:34 +0100
committerstuebinm2021-11-17 02:59:34 +0100
commitc74a9c7fcb6a9f03351f6ff35ea035d1e03f63a4 (patch)
tree6a83d87cb133c8ebb89ec34f56da40726dbf61f2 /lib/Properties.hs
parent919f57bfb30ef2adda996bf708ba6d1f70c42945 (diff)
make map parser work with more maps
I found yet more properties that weren't really documented or weren't marked as optional, hurray!
Diffstat (limited to 'lib/Properties.hs')
-rw-r--r--lib/Properties.hs16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/Properties.hs b/lib/Properties.hs
index 2ef587c..bdb7911 100644
--- a/lib/Properties.hs
+++ b/lib/Properties.hs
@@ -3,7 +3,7 @@
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
--- | Contains checks for custom properties of the map json
+-- | Contains checks for custom ties of the map json
module Properties (checkMap, checkTileset, checkLayer) where
@@ -15,7 +15,7 @@ import Tiled2 (HasProperties (adjustProperties, getProperties),
Tiledmap (..), Tileset (..))
import Util (layerIsEmpty, prettyprint)
-import Data.Maybe (fromMaybe)
+import Data.Maybe (fromMaybe, isJust)
import LintConfig (LintConfig (..))
import LintWriter (LintWriter, adjust, askContext, askFileDepth,
complain, dependsOn, forbid, lintConfig,
@@ -97,6 +97,8 @@ checkTileset = do
unless (tilesetImageheight tileset < 4096 && tilesetImagewidth tileset < 4096)
$ warn "Tilesets should not be larger than 4096×4096 pixels in total"
+ when (isJust (tilesetSource tileset))
+ $ complain "Tilesets must be embedded and cannot be loaded from external files."
-- TODO: check copyright!
requireProperty "copyright"
mapM_ checkTilesetProperty (fromMaybe [] $ tilesetProperties tileset)
@@ -111,8 +113,16 @@ checkTilesetProperty (Property name _value) = case name of
checkLayer :: LintWriter Layer
checkLayer = do
layer <- askContext
+ when (isJust (layerImage layer))
+ $ complain "imagelayer are not supported."
+ unless (layerType layer == "tilelayer")
+ $ complain "only tilelayer are supported."
mapM_ checkLayerProperty (getProperties layer)
+ case layerLayers layer of
+ Nothing -> pure ()
+ Just layers -> error "walint doesn't support grouplayers for now"
+
-- | Checks a single (custom) property of a layer
@@ -147,6 +157,8 @@ checkLayerProperty p@(Property name _value) = case name of
"audioLoop" -> do
isBool p
requireProperty "playAudio"
+ "playAudioLoop" ->
+ warn "'playAudioLoop' is deprecated; please use 'audioLoop' instead."
"audioVolume" -> do
isBool p
requireProperty "playAudio"