Add generic derivations and To/FromJSON instances

This commit is contained in:
2022-07-25 22:49:18 +01:00
parent f5604ef429
commit b8e8413daa
99 changed files with 1406 additions and 517 deletions
+19 -6
View File
@@ -1,16 +1,21 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Data.Button where
import GHC.Generics
import Data.Aeson
import Dodge.Data.WorldEffect
import Control.Lens
import Geometry.Data
import Sound.Data
import Color
data ButtonDraw = DefaultDrawButton Color
| DefaultDrawSwitch Color Color
| DrawNoButton
deriving (Eq,Ord,Show,Read)
deriving (Eq,Ord,Show,Read,Generic)
instance ToJSON ButtonDraw where
toEncoding = genericToEncoding defaultOptions
instance FromJSON ButtonDraw
data ButtonEvent = ButtonDoNothing
| ButtonPress
{_bpState :: ButtonState
@@ -33,8 +38,10 @@ data ButtonEvent = ButtonDoNothing
,_boffEff :: WdWd
}
| ButtonAccessTerminal
deriving (Eq,Ord,Show,Read)
deriving (Eq,Ord,Show,Read,Generic)
instance ToJSON ButtonEvent where
toEncoding = genericToEncoding defaultOptions
instance FromJSON ButtonEvent
data Button = Button
{ _btPict :: ButtonDraw --Button -> SPic
, _btPos :: Point2
@@ -47,8 +54,14 @@ data Button = Button
, _btName :: String
, _btColor :: Color
}
deriving (Eq,Ord,Show,Read)
deriving (Eq,Ord,Show,Read,Generic)
instance ToJSON Button where
toEncoding = genericToEncoding defaultOptions
instance FromJSON Button
data ButtonState = BtOn | BtOff | BtNoLabel
deriving (Eq,Ord,Show,Read)
deriving (Eq,Ord,Show,Read,Generic)
instance ToJSON ButtonState where
toEncoding = genericToEncoding defaultOptions
instance FromJSON ButtonState
makeLenses ''Button
makeLenses ''ButtonEvent