htiled 0.1.2.0 → 0.1.3.0
raw patch · 2 files changed
+18/−9 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Tiled.Types: iHeight :: Image -> Int
- Data.Tiled.Types: iSource :: Image -> FilePath
- Data.Tiled.Types: iTrans :: Image -> Maybe (Word8, Word8, Word8)
- Data.Tiled.Types: iWidth :: Image -> Int
- Data.Tiled.Types: instance Eq Image
- Data.Tiled.Types: instance Eq Layer
- Data.Tiled.Types: instance Eq MapOrientation
- Data.Tiled.Types: instance Eq Object
- Data.Tiled.Types: instance Eq Polygon
- Data.Tiled.Types: instance Eq Polyline
- Data.Tiled.Types: instance Eq Tile
- Data.Tiled.Types: instance Eq TiledMap
- Data.Tiled.Types: instance Eq Tileset
- Data.Tiled.Types: instance Ord Tile
- Data.Tiled.Types: instance Show Image
- Data.Tiled.Types: instance Show Layer
- Data.Tiled.Types: instance Show MapOrientation
- Data.Tiled.Types: instance Show Object
- Data.Tiled.Types: instance Show Polygon
- Data.Tiled.Types: instance Show Polyline
- Data.Tiled.Types: instance Show Tile
- Data.Tiled.Types: instance Show TiledMap
- Data.Tiled.Types: instance Show Tileset
- Data.Tiled.Types: layerData :: Layer -> Map (Int, Int) Tile
- Data.Tiled.Types: layerImage :: Layer -> Image
- Data.Tiled.Types: layerIsVisible :: Layer -> Bool
- Data.Tiled.Types: layerName :: Layer -> String
- Data.Tiled.Types: layerObjects :: Layer -> [Object]
- Data.Tiled.Types: layerOpacity :: Layer -> Float
- Data.Tiled.Types: layerProperties :: Layer -> Properties
- Data.Tiled.Types: mapHeight :: TiledMap -> Int
- Data.Tiled.Types: mapLayers :: TiledMap -> [Layer]
- Data.Tiled.Types: mapOrientation :: TiledMap -> MapOrientation
- Data.Tiled.Types: mapPath :: TiledMap -> FilePath
- Data.Tiled.Types: mapProperties :: TiledMap -> Properties
- Data.Tiled.Types: mapTileHeight :: TiledMap -> Int
- Data.Tiled.Types: mapTileWidth :: TiledMap -> Int
- Data.Tiled.Types: mapTilesets :: TiledMap -> [Tileset]
- Data.Tiled.Types: mapWidth :: TiledMap -> Int
- Data.Tiled.Types: objectGid :: Object -> Maybe Word32
- Data.Tiled.Types: objectHeight :: Object -> Maybe Int
- Data.Tiled.Types: objectName :: Object -> Maybe String
- Data.Tiled.Types: objectPolygon :: Object -> Maybe Polygon
- Data.Tiled.Types: objectPolyline :: Object -> Maybe Polyline
- Data.Tiled.Types: objectProperties :: Object -> Properties
- Data.Tiled.Types: objectType :: Object -> Maybe String
- Data.Tiled.Types: objectWidth :: Object -> Maybe Int
- Data.Tiled.Types: objectX :: Object -> Int
- Data.Tiled.Types: objectY :: Object -> Int
- Data.Tiled.Types: tileGid :: Tile -> Word32
- Data.Tiled.Types: tileIsDiagFlipped :: Tile -> Bool
- Data.Tiled.Types: tileIsHFlipped :: Tile -> Bool
- Data.Tiled.Types: tileIsVFlipped :: Tile -> Bool
- Data.Tiled.Types: tsImages :: Tileset -> [Image]
- Data.Tiled.Types: tsInitialGid :: Tileset -> Word32
- Data.Tiled.Types: tsMargin :: Tileset -> Int
- Data.Tiled.Types: tsName :: Tileset -> String
- Data.Tiled.Types: tsSpacing :: Tileset -> Int
- Data.Tiled.Types: tsTileHeight :: Tileset -> Int
- Data.Tiled.Types: tsTileProperties :: Tileset -> [(Word32, Properties)]
- Data.Tiled.Types: tsTileWidth :: Tileset -> Int
+ Data.Tiled.Load: instance GHC.Read.Read Data.Tiled.Load.ImageType
+ Data.Tiled.Types: [iSource] :: Image -> FilePath
+ Data.Tiled.Types: [iTrans] :: Image -> Maybe (Word8, Word8, Word8)
+ Data.Tiled.Types: [iWidth, iHeight] :: Image -> Int
+ Data.Tiled.Types: [layerData] :: Layer -> Map (Int, Int) Tile
+ Data.Tiled.Types: [layerImage] :: Layer -> Image
+ Data.Tiled.Types: [layerIsVisible] :: Layer -> Bool
+ Data.Tiled.Types: [layerName] :: Layer -> String
+ Data.Tiled.Types: [layerObjects] :: Layer -> [Object]
+ Data.Tiled.Types: [layerOpacity] :: Layer -> Float
+ Data.Tiled.Types: [layerProperties] :: Layer -> Properties
+ Data.Tiled.Types: [mapLayers] :: TiledMap -> [Layer]
+ Data.Tiled.Types: [mapOrientation] :: TiledMap -> MapOrientation
+ Data.Tiled.Types: [mapPath] :: TiledMap -> FilePath
+ Data.Tiled.Types: [mapProperties] :: TiledMap -> Properties
+ Data.Tiled.Types: [mapTileHeight] :: TiledMap -> Int
+ Data.Tiled.Types: [mapTileWidth] :: TiledMap -> Int
+ Data.Tiled.Types: [mapTilesets] :: TiledMap -> [Tileset]
+ Data.Tiled.Types: [mapWidth, mapHeight] :: TiledMap -> Int
+ Data.Tiled.Types: [objectGid] :: Object -> Maybe Word32
+ Data.Tiled.Types: [objectName] :: Object -> Maybe String
+ Data.Tiled.Types: [objectPolygon] :: Object -> Maybe Polygon
+ Data.Tiled.Types: [objectPolyline] :: Object -> Maybe Polyline
+ Data.Tiled.Types: [objectProperties] :: Object -> Properties
+ Data.Tiled.Types: [objectType] :: Object -> Maybe String
+ Data.Tiled.Types: [objectWidth, objectHeight] :: Object -> Maybe Int
+ Data.Tiled.Types: [objectX, objectY] :: Object -> Int
+ Data.Tiled.Types: [tileGid] :: Tile -> Word32
+ Data.Tiled.Types: [tileIsVFlipped, tileIsHFlipped, tileIsDiagFlipped] :: Tile -> Bool
+ Data.Tiled.Types: [tsImages] :: Tileset -> [Image]
+ Data.Tiled.Types: [tsInitialGid] :: Tileset -> Word32
+ Data.Tiled.Types: [tsName] :: Tileset -> String
+ Data.Tiled.Types: [tsSpacing, tsMargin] :: Tileset -> Int
+ Data.Tiled.Types: [tsTileProperties] :: Tileset -> [(Word32, Properties)]
+ Data.Tiled.Types: [tsTileWidth, tsTileHeight] :: Tileset -> Int
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.Image
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.Layer
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.MapOrientation
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.Object
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.Polygon
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.Polyline
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.Tile
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.TiledMap
+ Data.Tiled.Types: instance GHC.Classes.Eq Data.Tiled.Types.Tileset
+ Data.Tiled.Types: instance GHC.Classes.Ord Data.Tiled.Types.Tile
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.Image
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.Layer
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.MapOrientation
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.Object
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.Polygon
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.Polyline
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.Tile
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.TiledMap
+ Data.Tiled.Types: instance GHC.Show.Show Data.Tiled.Types.Tileset
- Data.Tiled.Types: Image :: FilePath -> Maybe (Word8, Word8, Word8) -> Int -> Int -> Image
+ Data.Tiled.Types: Image :: FilePath -> Maybe (Word8, Word8, Word8) -> Int -> Image
- Data.Tiled.Types: Object :: Maybe String -> Maybe String -> Properties -> Int -> Int -> Maybe Int -> Maybe Int -> Maybe Word32 -> Maybe Polygon -> Maybe Polyline -> Object
+ Data.Tiled.Types: Object :: Maybe String -> Maybe String -> Properties -> Int -> Maybe Int -> Maybe Word32 -> Maybe Polygon -> Maybe Polyline -> Object
- Data.Tiled.Types: Tile :: Word32 -> Bool -> Bool -> Bool -> Tile
+ Data.Tiled.Types: Tile :: Word32 -> Bool -> Tile
- Data.Tiled.Types: TiledMap :: FilePath -> MapOrientation -> Int -> Int -> Int -> Int -> Properties -> [Tileset] -> [Layer] -> TiledMap
+ Data.Tiled.Types: TiledMap :: FilePath -> MapOrientation -> Int -> Int -> Int -> Properties -> [Tileset] -> [Layer] -> TiledMap
- Data.Tiled.Types: Tileset :: String -> Word32 -> Int -> Int -> Int -> Int -> [Image] -> [(Word32, Properties)] -> Tileset
+ Data.Tiled.Types: Tileset :: String -> Word32 -> Int -> Int -> [Image] -> [(Word32, Properties)] -> Tileset
Files
- htiled.cabal +1/−1
- src/Data/Tiled/Load.hs +17/−8
htiled.cabal view
@@ -1,5 +1,5 @@ Name: htiled-Version: 0.1.2.0+Version: 0.1.3.0 Synopsis: Import from the Tiled map editor. Description: Import maps from the .tmx map format generated by Tiled, <http://www.mapeditor.org>.
src/Data/Tiled/Load.hs view
@@ -46,11 +46,14 @@ getAttrR ∷ (Read α, Num α) ⇒ String → IOSArrow XmlTree α getAttrR a = arr read . getAttrValue0 a -getAttrMaybe ∷ (Read α, Num α) ⇒ String → IOSArrow XmlTree (Maybe α)+getAttrMaybeR ∷ (Read α, Num α) ⇒ String → IOSArrow XmlTree (Maybe α)+getAttrMaybeR a = arr (fmap read) . getAttrMaybe a++getAttrMaybe ∷ String → IOSArrow XmlTree (Maybe String) getAttrMaybe a = arr tm . getAttrValue a where tm "" = Nothing- tm s = Just $ read s+ tm s = Just s doMap ∷ FilePath → IOSArrow XmlTree TiledMap doMap mapPath = proc m → do@@ -175,24 +178,30 @@ tsName ← getAttrValue "name" ⤙ ts tsTileWidth ← getAttrR "tilewidth" ⤙ ts tsTileHeight ← getAttrR "tileheight" ⤙ ts- tsMargin ← arr (fromMaybe 0) . getAttrMaybe "margin" ⤙ ts- tsSpacing ← arr (fromMaybe 0) . getAttrMaybe "spacing" ⤙ ts+ tsMargin ← arr (fromMaybe 0) . getAttrMaybeR "margin" ⤙ ts+ tsSpacing ← arr (fromMaybe 0) . getAttrMaybeR "spacing" ⤙ ts tsImages ← images ⤙ ts tsTileProperties ← listA tileProperties ⤙ ts returnA ⤙ Tileset {..} where tileProperties ∷ IOSArrow XmlTree (Word32, Properties) tileProperties = getChildren >>> isElem >>> hasName "tile" >>> getAttrR "id" &&& properties- images = listA (getChildren >>> image)+ images = listA (getChildren >>> (image <+> tileImage)) +data ImageType = TileImage | NormalImage deriving (Read)+ image ∷ IOSArrow XmlTree Image image = isElem >>> hasName "image" >>> proc img → do- iSource ← getAttrValue "source" ⤙ img- iTrans ← arr (fmap colorToTriplet . listToMaybe) . listA (getAttrValue0 "trans") ⤙ img iWidth ← getAttrR "width" ⤙ img iHeight ← getAttrR "height" ⤙ img+ iSource ← getAttrValue0 "source" ⤙ img+ iTrans ← arr (fmap colorToTriplet) . getAttrMaybe "trans" ⤙ img returnA ⤙ Image {..} where- colorToTriplet x = (h x, h $ drop 2 x, h $ drop 4 x)+ colorToTriplet :: Integral i => String -> (i,i,i)+ colorToTriplet x = (h x , h (drop 2 x) , h (drop 4 x)) where h (y:z:_) = fromIntegral $ digitToInt y * 16 + digitToInt z h _ = error "invalid color in an <image ...> somewhere."++tileImage :: IOSArrow XmlTree Image+tileImage = isElem >>> hasName "tile" >>> getChildren >>> image