{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE EmptyDataDeriving #-} module Dodge.Data.Item.Location where import Dodge.Data.Equipment.Misc import Control.Lens import Data.Aeson import Data.Aeson.TH import NewInt -- it would be nice to have these as empty types, but I'm not sure how to get -- aeson to handle that data FloorInt = FloorInt deriving (Eq,Ord,Show,Read) -- should use these.. data InvInt = InvInt deriving (Eq,Ord,Show,Read) data TurretInt deriving (Eq,Ord,Show,Read) data CrInt = CrInt deriving (Eq,Ord,Show,Read) data ItmInt = ItmInt deriving (Eq,Ord,Show,Read) data ItemLocation = InInv { _ilCrID :: Int , _ilInvID :: Int , _ilIsRoot :: Bool -- of any item , _ilIsSelected :: Bool , _ilIsAttached :: Bool -- to selected item , _ilEquipSite :: Maybe EquipSite } | OnTurret {_ilTuID :: Int} | OnFloor {_ilFlID :: NewInt FloorInt} | InVoid deriving (Eq, Show, Ord, Read) --Generic, Flat) makeLenses ''ItemLocation deriveJSON defaultOptions ''InvInt deriveJSON defaultOptions ''FloorInt deriveJSON defaultOptions ''ItemLocation deriveJSON defaultOptions ''ItmInt deriveJSON defaultOptions ''CrInt