66 lines
1.6 KiB
Haskell
66 lines
1.6 KiB
Haskell
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.World (
|
|
module Dodge.Data.World,
|
|
module Dodge.Data.SaveSlot,
|
|
module Dodge.Data.CWorld,
|
|
module Dodge.Data.RightButtonOptions,
|
|
module Dodge.Data.SoundOrigin,
|
|
module Dodge.Data.Hammer,
|
|
) where
|
|
|
|
import Dodge.Data.SaveSlot
|
|
import Control.Lens
|
|
import qualified Data.Map.Strict as M
|
|
import qualified Data.Set as S
|
|
import Dodge.Data.CWorld
|
|
import Dodge.Data.Hammer
|
|
import Dodge.Data.RightButtonOptions
|
|
import Dodge.Data.SoundOrigin
|
|
import Geometry.Data
|
|
import SDL (MouseButton, Scancode)
|
|
import Sound.Data
|
|
import StreamingHelp
|
|
import System.Random
|
|
|
|
data World = World
|
|
{ _cWorld :: CWorld
|
|
, _randGen :: StdGen
|
|
, _toPlaySounds :: M.Map SoundOrigin Sound
|
|
, _playingSounds :: M.Map SoundOrigin Sound
|
|
, _mousePos :: Point2
|
|
, _keys :: S.Set Scancode
|
|
, _mouseButtons :: M.Map MouseButton Bool
|
|
, _hammers :: M.Map WorldHammer HammerPosition
|
|
, _testFloat :: Float
|
|
, _lLine :: (Point2, Point2)
|
|
, _rLine :: (Point2, Point2)
|
|
, _lrLine :: (Point2, Point2)
|
|
, _lSelect :: Point2
|
|
, _rSelect :: Point2
|
|
, _clickMousePos :: Point2
|
|
, _backspaceTimer :: Int
|
|
, _timeFlow :: TimeFlowStatus
|
|
, _rbOptions :: RightButtonOptions
|
|
}
|
|
|
|
data TimeFlowStatus
|
|
= RewindingNow
|
|
| RewindingLastFrame
|
|
| NormalTimeFlow
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data WorldHammer
|
|
= SubInvHam
|
|
| DoubleMouseHam
|
|
deriving (Eq, Ord, Show, Read, Enum, Bounded)
|
|
|
|
type HitEffect' =
|
|
Flame ->
|
|
StreamOf (Point2, Either Creature Wall) ->
|
|
World ->
|
|
(World, Maybe Flame)
|
|
|
|
makeLenses ''World
|