Add generic derivations and To/FromJSON instances
This commit is contained in:
+45
-19
@@ -1,22 +1,28 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
module Dodge.Combine.Data
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Equipment.Data
|
||||
import Dodge.Data.ItemAmount
|
||||
import Control.Lens
|
||||
import qualified Data.Map.Strict as M
|
||||
|
||||
-- this should probably store loaded ammo
|
||||
data ItemType = ItemType
|
||||
{_iyBase :: ItemBaseType
|
||||
,_iyModules :: M.Map ModuleSlot ItemModuleType
|
||||
,_iyStack :: Stack
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemType
|
||||
data Stack = NoStack | Stack IcAmount
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Stack where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Stack
|
||||
data CraftType
|
||||
= PIPE
|
||||
| TUBE
|
||||
@@ -67,8 +73,10 @@ data CraftType
|
||||
| TIMEMODULE
|
||||
| SIZEMODULE
|
||||
| GRAVITYMODULE
|
||||
deriving (Eq,Ord,Show,Enum,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Enum,Read,Generic)
|
||||
instance ToJSON CraftType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CraftType
|
||||
-- TODO make this an enum somehow...?
|
||||
data ItemBaseType
|
||||
= NOTDEFINED
|
||||
@@ -88,8 +96,10 @@ data ItemBaseType
|
||||
| MEDKIT Int
|
||||
| CRAFT CraftType
|
||||
--
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemBaseType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemBaseType
|
||||
data EquipItemType
|
||||
= MAGSHIELD
|
||||
| FLAMESHIELD
|
||||
@@ -105,7 +115,10 @@ data EquipItemType
|
||||
| JUMPLEGS
|
||||
| JETPACK
|
||||
| AUTODETECTOR Detector
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON EquipItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON EquipItemType
|
||||
data LeftItemType
|
||||
= BOOSTER
|
||||
| REWINDER
|
||||
@@ -113,8 +126,10 @@ data LeftItemType
|
||||
| BLINKERUNSAFE
|
||||
| SHRINKER
|
||||
| SPAWNER
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON LeftItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON LeftItemType
|
||||
data HeldItemType
|
||||
= BANGSTICK {_xNum :: Int}
|
||||
| PISTOL
|
||||
@@ -175,8 +190,10 @@ data HeldItemType
|
||||
| HELDDETECTOR Detector
|
||||
| TORCH
|
||||
| FLATSHIELD
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON HeldItemType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HeldItemType
|
||||
data ItemModuleType
|
||||
= EMPTYMODULE
|
||||
| DRUMMAG
|
||||
@@ -200,13 +217,18 @@ data ItemModuleType
|
||||
| LAUNCHHOME
|
||||
| EXTRABATTERY
|
||||
| ATTACHTORCH
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemModuleType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemModuleType
|
||||
data Detector
|
||||
= ITEMDETECTOR
|
||||
| CREATUREDETECTOR
|
||||
| WALLDETECTOR
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Detector where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Detector
|
||||
data ModuleSlot
|
||||
= ModBullet
|
||||
| ModBulletSpawn
|
||||
@@ -219,8 +241,12 @@ data ModuleSlot
|
||||
| ModTeleport
|
||||
| ModDualBeam
|
||||
| ModHeldAttach
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ModuleSlot where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ModuleSlot
|
||||
instance ToJSONKey ModuleSlot
|
||||
instance FromJSONKey ModuleSlot
|
||||
makeLenses ''ItemType
|
||||
makeLenses ''ItemBaseType
|
||||
makeLenses ''HeldItemType
|
||||
|
||||
Reference in New Issue
Block a user