From c74a9c7fcb6a9f03351f6ff35ea035d1e03f63a4 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Wed, 17 Nov 2021 02:59:34 +0100 Subject: make map parser work with more maps I found yet more properties that weren't really documented or weren't marked as optional, hurray! --- lib/Properties.hs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lib/Properties.hs') 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" -- cgit v1.2.3