summaryrefslogtreecommitdiff
path: root/lib/TiledAbstract.hs
diff options
context:
space:
mode:
authorstuebinm2022-02-28 00:39:54 +0100
committerstuebinm2022-03-19 19:57:16 +0100
commit596096823872aaa491e1a208f70da820322a766f (patch)
tree320185abe5882b3732d6a23879e13fcb87d83039 /lib/TiledAbstract.hs
parentb7c0cd8fbef6147bf1ff2e30abfcf5c4c025862b (diff)
separate tiled modules out into own package
Diffstat (limited to 'lib/TiledAbstract.hs')
-rw-r--r--lib/TiledAbstract.hs85
1 files changed, 0 insertions, 85 deletions
diff --git a/lib/TiledAbstract.hs b/lib/TiledAbstract.hs
deleted file mode 100644
index f55e75e..0000000
--- a/lib/TiledAbstract.hs
+++ /dev/null
@@ -1,85 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module TiledAbstract where
-
-import Universum
-
-import qualified Data.Vector as V
-import Tiled (GlobalId, Layer (..), Object (..), Property (..),
- PropertyValue (..), Tile (..), Tiledmap (..),
- Tileset (..), mkTiledId)
-import Util (showText)
-
-class HasProperties a where
- getProperties :: a -> [Property]
- adjustProperties :: ([Property] -> Maybe [Property]) -> a -> a
-
-instance HasProperties Layer where
- getProperties = maybeToMonoid . layerProperties
- adjustProperties f layer = layer
- { layerProperties = f (getProperties layer) }
-
-instance HasProperties Tileset where
- getProperties = maybeToMonoid . tilesetProperties
- adjustProperties f tileset = tileset
- { tilesetProperties = f (getProperties tileset) }
-
-instance HasProperties Tile where
- getProperties = V.toList . maybeToMonoid . tileProperties
- adjustProperties f tile = tile
- { tileProperties = (fmap V.fromList . f) (getProperties tile) }
-
-instance HasProperties Object where
- getProperties = V.toList . maybeToMonoid . objectProperties
- adjustProperties f obj = obj
- { objectProperties = (fmap V.fromList . f) (getProperties obj) }
-
-instance HasProperties Tiledmap where
- getProperties = maybeToMonoid . tiledmapProperties
- adjustProperties f tiledmap = tiledmap
- { tiledmapProperties = f (getProperties tiledmap) }
-
-class HasData a where
- getData :: a -> Maybe (Vector GlobalId)
-instance HasData Layer where
- getData = layerData
-instance HasData Tile where
- getData _ = Nothing
-
-
-class HasTypeName a where
- typeName :: Proxy a -> Text
-instance HasTypeName Layer where
- typeName _ = "layer"
-instance HasTypeName Tileset where
- typeName _ = "tileset"
-instance HasTypeName Property where
- typeName _ = "property"
-
-
-class HasName a where
- getName :: a -> Text
-instance HasName Layer where
- getName = layerName
-instance HasName Tileset where
- getName = tilesetName
-instance HasName Property where
- getName (Property n _) = n
-instance HasName Tile where
- getName tile = "[tile with global id " <> showText (tileId tile) <> "]"
-
-
-class IsProperty a where
- asProperty :: a -> PropertyValue
-instance IsProperty PropertyValue where
- asProperty = id
- {-# INLINE asProperty #-}
-instance IsProperty Text where
- asProperty = StrProp
- {-# INLINE asProperty #-}
-
-
-layerIsEmpty :: HasData a => a -> Bool
-layerIsEmpty layer = case getData layer of
- Nothing -> True
- Just d -> all ((==) $ mkTiledId 0) d