Cleanup
This commit is contained in:
+112
-70
@@ -1,134 +1,176 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Terminal
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.WorldEffect
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Terminal where
|
||||
|
||||
import Color
|
||||
import Control.Lens
|
||||
import qualified Data.Text as T
|
||||
import Data.Aeson
|
||||
import qualified Data.Map.Strict as M
|
||||
import qualified Data.Text as T
|
||||
import Dodge.Data.WorldEffect
|
||||
import GHC.Generics
|
||||
|
||||
data TerminalStatus = TerminalOff | TerminalBusy | TerminalReady
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalStatus where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalStatus where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalStatus
|
||||
|
||||
instance FromJSON TerminalStatus
|
||||
|
||||
data TerminalInput = TerminalInput
|
||||
{ _tiText :: T.Text
|
||||
, _tiFocus :: Bool
|
||||
, _tiSel :: (Int,Int)
|
||||
{ _tiText :: T.Text
|
||||
, _tiFocus :: Bool
|
||||
, _tiSel :: (Int, Int)
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalInput where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalInput where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalInput
|
||||
data TerminalBootProgram = TerminalBootMempty
|
||||
|
||||
instance FromJSON TerminalInput
|
||||
|
||||
data TerminalBootProgram
|
||||
= TerminalBootMempty
|
||||
| TerminalBootLines [TerminalLine]
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalBootProgram where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalBootProgram where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalBootProgram
|
||||
|
||||
instance FromJSON TerminalBootProgram
|
||||
|
||||
data Terminal = Terminal
|
||||
{ _tmID :: Int
|
||||
, _tmBootProgram :: TerminalBootProgram -- Terminal -> World -> [TerminalLine]
|
||||
, _tmButtonID :: Int
|
||||
, _tmMachineID :: Int
|
||||
, _tmName :: String
|
||||
, _tmDisplayedLines :: [(String,Color)]
|
||||
, _tmFutureLines :: [TerminalLine]
|
||||
, _tmMaxLines :: Int
|
||||
, _tmTitle :: String
|
||||
, _tmInput :: TerminalInput
|
||||
{ _tmID :: Int
|
||||
, _tmBootProgram :: TerminalBootProgram -- Terminal -> World -> [TerminalLine]
|
||||
, _tmButtonID :: Int
|
||||
, _tmMachineID :: Int
|
||||
, _tmName :: String
|
||||
, _tmDisplayedLines :: [(String, Color)]
|
||||
, _tmFutureLines :: [TerminalLine]
|
||||
, _tmMaxLines :: Int
|
||||
, _tmTitle :: String
|
||||
, _tmInput :: TerminalInput
|
||||
, _tmScrollCommands :: [TerminalCommand]
|
||||
, _tmWriteCommands :: [TerminalCommand]
|
||||
, _tmDeathEffect :: TmWdWd -- Terminal -> World -> World
|
||||
, _tmWriteCommands :: [TerminalCommand]
|
||||
, _tmDeathEffect :: TmWdWd -- Terminal -> World -> World
|
||||
, _tmStatus :: TerminalStatus
|
||||
, _tmCommandHistory :: [String]
|
||||
, _tmToggles :: M.Map String TerminalToggle
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Terminal where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Terminal where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Terminal
|
||||
|
||||
instance FromJSON Terminal
|
||||
|
||||
data TerminalLineString = TerminalLineConst String Color
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalLineString where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalLineString where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalLineString
|
||||
data TmTm = TmId
|
||||
|
||||
instance FromJSON TerminalLineString
|
||||
|
||||
data TmTm
|
||||
= TmId
|
||||
| TmTmClearDisplayedLines
|
||||
| TmTmSetStatus TerminalStatus
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TmTm where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TmTm where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TmTm
|
||||
|
||||
instance FromJSON TmTm
|
||||
|
||||
data TerminalLine
|
||||
= TerminalLineDisplay
|
||||
{_tlPause :: Int
|
||||
,_tlString :: TerminalLineString -- World -> (String, Color)
|
||||
{ _tlPause :: Int
|
||||
, _tlString :: TerminalLineString -- World -> (String, Color)
|
||||
}
|
||||
| TerminalLineTerminalEffect
|
||||
{_tlPause :: Int
|
||||
,_tlTermEffect :: TmTm -- Terminal -> Terminal
|
||||
{ _tlPause :: Int
|
||||
, _tlTermEffect :: TmTm -- Terminal -> Terminal
|
||||
}
|
||||
| TerminalLineEffect
|
||||
{_tlPause :: Int
|
||||
,_tlEffect :: TmWdWd --Terminal -> World -> World
|
||||
{ _tlPause :: Int
|
||||
, _tlEffect :: TmWdWd --Terminal -> World -> World
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalLine where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON TerminalLine
|
||||
|
||||
data TerminalToggle = TerminalToggle
|
||||
{ _ttTriggerID :: Int
|
||||
, _ttDeathEffect :: BlBl
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalToggle where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalToggle where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalToggle
|
||||
data BlBl = BlNegate
|
||||
|
||||
instance FromJSON TerminalToggle
|
||||
|
||||
data BlBl
|
||||
= BlNegate
|
||||
| BlConst Bool
|
||||
| BlId
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON BlBl where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON BlBl where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BlBl
|
||||
|
||||
instance FromJSON BlBl
|
||||
|
||||
data EffectArguments
|
||||
= NoArguments {_cmdEffect :: [TerminalLine]}
|
||||
| OneArgument
|
||||
{_argType :: String
|
||||
,_argList :: M.Map String [TerminalLine]
|
||||
| OneArgument
|
||||
{ _argType :: String
|
||||
, _argList :: M.Map String [TerminalLine]
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON EffectArguments where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON EffectArguments
|
||||
data TerminalCommandEffect = TerminalCommandArguments EffectArguments
|
||||
|
||||
data TerminalCommandEffect
|
||||
= TerminalCommandArguments EffectArguments
|
||||
| TerminalCommandEffectDamageCoding
|
||||
| TerminalCommandEffectSensorParameter
|
||||
| TerminalCommandEffectLinkedObject
|
||||
| TerminalCommandEffectLinkedObject
|
||||
| TerminalCommandEffectHelp
|
||||
| TerminalCommandEffectNoArgumentsStr String
|
||||
| TerminalCommandEffectCommands
|
||||
| TerminalCommandEffectSingleCommand WdWd [String]
|
||||
| TerminalCommandEffectNone
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalCommandEffect where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalCommandEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalCommandEffect
|
||||
|
||||
instance FromJSON TerminalCommandEffect
|
||||
|
||||
data TerminalCommand = TerminalCommand
|
||||
{ _tcString :: String
|
||||
, _tcAlias :: [String]
|
||||
, _tcHelp :: String
|
||||
, _tcAlias :: [String]
|
||||
, _tcHelp :: String
|
||||
, _tcEffect :: TerminalCommandEffect -- Terminal -> World -> EffectArguments
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalCommand where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalCommand where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalCommand
|
||||
|
||||
instance FromJSON TerminalCommand
|
||||
|
||||
makeLenses ''TerminalInput
|
||||
makeLenses ''Terminal
|
||||
makeLenses ''TerminalLine
|
||||
|
||||
Reference in New Issue
Block a user