packages feed

aeson-tiled-0.0.2.0: src/Codec/Tiled/World.hs

module Codec.Tiled.World where

import Data.Aeson (FromJSON(..), ToJSON(..), genericParseJSON, genericToJSON)
import Data.Text (Text)
import Data.Vector (Vector)
import GHC.Generics (Generic)

import Codec.Tiled.Aeson (mkOptions, remapFields_)
import Codec.Tiled.World.Map (Map)
import Codec.Tiled.World.Pattern (Pattern)

data World = World
  { maps                 :: Maybe (Vector Map)
  , patterns             :: Maybe (Vector Pattern)
  , type_                :: Maybe Text              -- ^ @world@ (for world files)
  , onlyShowAdjacentMaps :: Maybe Bool
  }
  deriving (Eq, Show, Generic)

instance FromJSON World where
  parseJSON = genericParseJSON (mkOptions remapFields_)

instance ToJSON World where
  toJSON = genericToJSON (mkOptions remapFields_)