packages feed

titan-1.0.2: src/Model/Model.hs

module Model.Model where

-- | Application Model. Contains information about the simulation and the
--   frames captured so far.
data Model = Model
  { selectedFrame         :: Maybe Int      -- ^ Currently selected frame in the GUI
  , selectedFrameInput    :: Maybe String   -- ^ Input of currently selected frame
  , curSimFrame           :: Maybe Int      -- ^ Currently simulated frame in the game
  , frames                :: [Frame]        -- ^ (Best) knowledge of frames in the game
  }

-- | Default model with no loaded simulation.
emptyBM :: Model
emptyBM = Model
  { selectedFrame      = Nothing
  , selectedFrameInput = Nothing
  , curSimFrame        = Nothing
  , frames             = []
  }

-- | Game frame.
data Frame = Frame
  { fSelected   :: Bool
  , fCached     :: Bool
  , fCurrent    :: Bool
  , fBreakpoint :: Bool
  , fError      :: Bool
  , fNumber     :: Int
  }
 deriving (Show, Eq)

frameDeselect :: Frame -> Frame
frameDeselect f = f { fSelected = False }

frameSelect :: Frame -> Frame
frameSelect f = f { fSelected = True }

frameNotCurrent :: Frame -> Frame
frameNotCurrent f = f { fCurrent = False }

frameCurrent :: Frame -> Frame
frameCurrent f = f { fCurrent = True }

defaultSelectedFrame   = Frame True  True False False False
defaultFrame           = Frame False True False False False
defaultCurrentFrame    = Frame False False True False False
defaultBreakpointFrame = Frame False True False True  False
defaultErrorFrame      = Frame False True False False True

-- | Selection of frames used to visualize the Stream Viewer.
defaultFrames = zipWith ($)
         [ defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultErrorFrame,    defaultFrame,           defaultCurrentFrame
         , defaultFrame,         defaultBreakpointFrame, defaultSelectedFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame,           defaultFrame
         , defaultFrame,         defaultFrame
         ]
         [0..]