Broken: refactor terminals

This commit is contained in:
2022-07-25 00:45:15 +01:00
parent d1bf49319a
commit d219d8d889
25 changed files with 505 additions and 364 deletions
+3 -3
View File
@@ -15,7 +15,7 @@ data ButtonEvent = ButtonDoNothing
{_bpState :: ButtonState
,_bpEvent :: ButtonEvent
,_bpSound :: SoundID
,_bpEff :: WorldEffect
,_bpEff :: WdWd
}
-- | ButtonSwitch
-- {_bonState :: ButtonState
@@ -28,8 +28,8 @@ data ButtonEvent = ButtonDoNothing
-- ,_boffEff :: WorldEffect
-- }
| ButtonSimpleSwith
{_bonEff :: WorldEffect
,_boffEff :: WorldEffect
{_bonEff :: WdWd
,_boffEff :: WdWd
}
| ButtonAccessTerminal
+2 -2
View File
@@ -5,9 +5,8 @@ import ShapePicture.Data
import Geometry.Data
import Control.Lens
data CorpseResurrection = NoResurrection
deriving (Eq,Ord,Show,Read)
data Corpse = Corpse
{ _cpID :: Int
, _cpPos :: Point2
@@ -15,4 +14,5 @@ data Corpse = Corpse
, _cpSPic :: SPic
, _cpRes :: CorpseResurrection
}
deriving (Eq,Ord,Show,Read)
makeLenses ''Corpse
+1 -1
View File
@@ -12,5 +12,5 @@ data ForegroundShape = ForegroundShape
, _fsRad :: Float -- This should probably be a bounding box
, _fsSPic :: SPic
}
deriving ()
deriving (Eq,Ord,Show,Read)
makeLenses ''ForegroundShape
+3 -1
View File
@@ -20,6 +20,7 @@ data MachineDraw = MachineDrawMempty
| MachineDrawTerminal
| MachineDrawTurret
| MachineDrawDamageSensor Float (PaletteColor,DecorationShape)
deriving (Eq,Ord,Show,Read)
data Machine = Machine
{ _mcID :: Int
, _mcWallIDs :: IS.IntSet
@@ -36,6 +37,7 @@ data Machine = Machine
, _mcName :: String
, _mcCloseSound :: Maybe SoundID
}
deriving (Eq,Ord,Show,Read)
data MachineType
= StaticMachine
| Turret
@@ -44,6 +46,6 @@ data MachineType
, _tuFireTime :: Int
, _tuMCrID :: Maybe Int
}
deriving (Eq,Ord,Show,Read)
makeLenses ''Machine
makeLenses ''MachineType
+3 -3
View File
@@ -17,13 +17,13 @@ data Sensor = NoSensor
, _proxRequirement :: ProximityRequirement
, _sensToggle :: Bool
}
deriving (Eq,Ord)
deriving (Eq,Ord,Show,Read)
data ProximityRequirement
= RequireHealth {_proxReqMinHealth :: Int}
| RequireEquipment {_proxReqEquipment :: ItemBaseType}
| RequireImpossible
deriving (Eq,Ord,Show)
deriving (Eq,Ord,Show,Read)
data CloseToggle = NotClose | IsClose
deriving (Eq,Ord,Show)
deriving (Eq,Ord,Show,Read)
makeLenses ''Sensor
makeLenses ''ProximityRequirement
+99
View File
@@ -0,0 +1,99 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Data.Terminal
where
import Dodge.Data.WorldEffect
import Color
import Control.Lens
import qualified Data.Text as T
import qualified Data.Map.Strict as M
data TerminalStatus = TerminalOff | TerminalBusy | TerminalReady
deriving (Eq,Ord,Show,Read)
data TerminalInput = TerminalInput
{ _tiText :: T.Text
, _tiFocus :: Bool
, _tiSel :: (Int,Int)
}
deriving (Eq,Ord,Show,Read)
data TerminalBootProgram = TerminalBootMempty
| TerminalBootLines [TerminalLine]
deriving (Eq,Ord,Show,Read)
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
, _tmScrollCommands :: [TerminalCommand]
, _tmWriteCommands :: [TerminalCommand]
, _tmDeathEffect :: TmWdWd -- Terminal -> World -> World
, _tmStatus :: TerminalStatus
, _tmCommandHistory :: [String]
, _tmToggles :: M.Map String TerminalToggle
}
deriving (Eq,Ord,Show,Read)
data TerminalLineString = TerminalLineConst String Color
deriving (Eq,Ord,Show,Read)
data TmTm = TmId
| TmTmClearDisplayedLines
| TmTmSetStatus TerminalStatus
deriving (Eq,Ord,Show,Read)
data TerminalLine
= TerminalLineDisplay
{_tlPause :: Int
,_tlString :: TerminalLineString -- World -> (String, Color)
}
| TerminalLineTerminalEffect
{_tlPause :: Int
,_tlTermEffect :: TmTm -- Terminal -> Terminal
}
| TerminalLineEffect
{_tlPause :: Int
,_tlEffect :: TmWdWd --Terminal -> World -> World
}
deriving (Eq,Ord,Show,Read)
data TerminalToggle = TerminalToggle
{ _ttTriggerID :: Int
, _ttDeathEffect :: BlBl
}
deriving (Eq,Ord,Show,Read)
data BlBl = BlNegate
| BlConst Bool
| BlId
deriving (Eq,Ord,Show,Read)
data EffectArguments
= NoArguments {_cmdEffect :: [TerminalLine]}
| OneArgument
{_argType :: String
,_argList :: M.Map String [TerminalLine]
}
deriving (Eq,Ord,Show,Read)
data TerminalCommandEffect = TerminalCommandArguments EffectArguments
| TerminalCommandEffectDamageCoding
| TerminalCommandEffectSensorParameter
| TerminalCommandEffectLinkedObject
| TerminalCommandEffectHelp
| TerminalCommandEffectNoArgumentsStr String
| TerminalCommandEffectCommands
| TerminalCommandEffectSingleCommand WdWd [String]
| TerminalCommandEffectNone
deriving (Eq,Ord,Show,Read)
data TerminalCommand = TerminalCommand
{ _tcString :: String
, _tcAlias :: [String]
, _tcHelp :: String
, _tcEffect :: TerminalCommandEffect -- Terminal -> World -> EffectArguments
}
deriving (Eq,Ord,Show,Read)
makeLenses ''Terminal
makeLenses ''TerminalLine
makeLenses ''TerminalCommand
makeLenses ''TerminalInput
+9 -2
View File
@@ -3,15 +3,16 @@ import Dodge.Data.CreatureEffect
import Sound.Data
import Geometry.Data
import Dodge.Data.SoundOrigin
data WorldEffect = NoWorldEffect
data WdWd = NoWorldEffect
| SetTrigger Bool Int
| WorldEffects [WorldEffect]
| WorldEffects [WdWd]
| SetLSCol Point3 Int
| AccessTerminal (Maybe Int)
| UnlockInv Int
| SoundStart SoundOrigin Point2 SoundID (Maybe Int)
| MakeStartCloudAt Point3
| TorqueCr Float Int
| WdWdNegateTrig Int
deriving (Eq,Ord,Show,Read)
data WdP2 = WdP2Const Point2
| WdYouPos
@@ -37,3 +38,9 @@ data DrWdWd = DrWdId
| DrWdMechanismStepwise Int [Int] [(Point2,Point2)]
| DoorMechanism
deriving (Eq,Ord,Show,Read)
data TmWdWd = TmWdId
| TmWdWdDisconnectTerminal
| TmWdWdfromWdWd WdWd
| TmWdWdTermSound SoundID
| TmWdWdDoDeathTriggers
deriving (Eq,Ord,Show,Read)