Files
loop/src/Dodge/Data/World.hs
T
2024-09-28 23:34:32 +01:00

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