Refactor concurrent side effects
This commit is contained in:
+17
-13
@@ -1,5 +1,5 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE DeriveAnyClass #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
@@ -9,16 +9,17 @@ module Dodge.Data.Universe (
|
||||
module Dodge.Data.World,
|
||||
module Data.Preload,
|
||||
module Picture.Data,
|
||||
module Loop.Data
|
||||
module Loop.Data,
|
||||
) where
|
||||
|
||||
import Loop.Data
|
||||
import Control.Lens
|
||||
--import qualified Data.Map.Strict as M
|
||||
import Data.Preload
|
||||
import Data.Sequence (Seq (..))
|
||||
import qualified Data.Text as T
|
||||
import Dodge.Data.Config
|
||||
import Dodge.Data.World
|
||||
import Loop.Data
|
||||
import Picture.Data
|
||||
import SDL (Scancode)
|
||||
|
||||
@@ -27,18 +28,19 @@ data Universe = Universe
|
||||
, _preloadData :: PreloadData
|
||||
, _uvScreenLayers :: [ScreenLayer]
|
||||
, _uvIOEffects :: Universe -> IO Universe
|
||||
, _uvConcEffects :: ConcEffect
|
||||
, _uvSideEffects :: Seq SideEffect
|
||||
, _uvConfig :: Configuration
|
||||
, _uvTestString :: Universe -> [String]
|
||||
, _uvCanContinue :: Bool
|
||||
, _uvMSeed :: Maybe Int
|
||||
}
|
||||
|
||||
data ConcEffect = NoConcEffect
|
||||
| NewConcEffect {_ceFunction :: ConcurrentEffect Universe
|
||||
, _ceString :: String, _ceIsBlocking :: Bool}
|
||||
| BlockingConcEffect {_ceString :: String}
|
||||
| BackgroundConcEffect {_ceString :: String}
|
||||
data SideEffect
|
||||
= NewSideEffect
|
||||
{ _ceSideEffect :: IO (Universe -> Maybe Universe)
|
||||
, _ceString :: String
|
||||
}
|
||||
| RunningSideEffect {_ceString :: String}
|
||||
|
||||
data OptionScreenFlag = NormalOptions | GameOverOptions | SplashOptions
|
||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||
@@ -59,6 +61,7 @@ data ScreenLayer
|
||||
{ _scInput :: T.Text
|
||||
, _scFooter :: String
|
||||
}
|
||||
|
||||
-- | WaitScreen
|
||||
-- { _scWaitMessage :: Universe -> String
|
||||
-- , _scWaitTime :: Int
|
||||
@@ -67,9 +70,10 @@ data ScreenLayer
|
||||
-- { _scDisplay :: Universe -> Picture
|
||||
-- }
|
||||
|
||||
data MenuOptionDisplay = MODString {_modString :: String}
|
||||
| MODBlockedString {_modString :: String}
|
||||
| MODStringOption {_modString :: String,_modOption :: String}
|
||||
data MenuOptionDisplay
|
||||
= MODString {_modString :: String}
|
||||
| MODBlockedString {_modString :: String}
|
||||
| MODStringOption {_modString :: String, _modOption :: String}
|
||||
|
||||
data MenuOption
|
||||
= Toggle
|
||||
@@ -93,5 +97,5 @@ data IntID a = IntID Int a
|
||||
|
||||
makeLenses ''Universe
|
||||
makeLenses ''ScreenLayer
|
||||
makeLenses ''ConcEffect
|
||||
makeLenses ''SideEffect
|
||||
makeLenses ''MenuOptionDisplay
|
||||
|
||||
Reference in New Issue
Block a user