84 lines
2.2 KiB
Haskell
84 lines
2.2 KiB
Haskell
{-# LANGUAGE DeriveAnyClass #-}
|
|
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# 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,
|
|
module Dodge.Data.Input,
|
|
) where
|
|
|
|
import NewInt
|
|
import Control.Lens
|
|
import Data.IntMap.Strict (IntMap)
|
|
import Data.IntSet (IntSet)
|
|
import qualified Data.Map.Strict as M
|
|
import Data.Set (Set)
|
|
import Dodge.Data.CWorld
|
|
import Dodge.Data.Hammer
|
|
import Dodge.Data.Input
|
|
import Dodge.Data.RightButtonOptions
|
|
import Dodge.Data.SaveSlot
|
|
import Dodge.Data.SoundOrigin
|
|
import Geometry.Data
|
|
import Sound.Data
|
|
import System.Random
|
|
|
|
data WorldEventFlag
|
|
= InventoryChange
|
|
| CombineInventoryChange
|
|
deriving (Eq, Ord, Enum, Bounded)
|
|
|
|
data World = World
|
|
{ _cWorld :: CWorld
|
|
, _pastWorlds :: [LWorld]
|
|
, _timeFlow :: TimeFlowStatus
|
|
, _randGen :: StdGen
|
|
, _toPlaySounds :: M.Map SoundOrigin Sound
|
|
, _playingSounds :: M.Map SoundOrigin Sound
|
|
, _input :: Input
|
|
, _testFloat :: Float
|
|
, _rbOptions :: RightButtonOptions
|
|
, _hud :: HUD
|
|
, _worldEventFlags :: Set WorldEventFlag
|
|
, _crZoning :: IntMap (IntMap IntSet)
|
|
, _clZoning :: IntMap (IntMap [Cloud])
|
|
, _wlZoning :: IntMap (IntMap IntSet) -- Zoning IM.IntMap Wall
|
|
, _pnZoning :: IntMap (IntMap [(Int, Point2)]) --Zoning IM.IntMap Creature
|
|
, _peZoning :: IntMap (IntMap (Set PathEdgeNodes))
|
|
, _gsZoning :: IntMap (IntMap IntSet)
|
|
, _wCam :: Camera
|
|
}
|
|
|
|
data TimeFlowStatus
|
|
= DeathTime
|
|
{_deathDelay :: Int}
|
|
| NormalTimeFlow
|
|
| ItemScrollTimeFlow
|
|
{ _scrollSmoothing :: Int
|
|
, _reverseAmount :: Int
|
|
, _futureWorlds :: [LWorld]
|
|
, _scrollItemID :: NewInt ItmInt
|
|
}
|
|
| CameraScrollTimeFlow
|
|
{ _scrollSmoothing :: Int
|
|
, _reverseAmount :: Int
|
|
, _futureWorlds :: [LWorld]
|
|
}
|
|
| RewindLeftClick
|
|
{ _reverseAmount :: Int
|
|
, _scrollItemID :: NewInt ItmInt
|
|
}
|
|
| PausedTimeFlow
|
|
{ _timeFlowCharge :: Int
|
|
, _scrollItemID :: NewInt ItmInt
|
|
}
|
|
|
|
makeLenses ''TimeFlowStatus
|
|
makeLenses ''World
|