module Dodge.Initialisation where import Dodge.Default.World import Dodge.Save import Dodge.Data import Dodge.Data.SoundOrigin import Dodge.Creature --import Dodge.Zone import Dodge.Floor import Dodge.Layout import Dodge.Story import Dodge.WorldEvent.Cloud import Dodge.SoundLogic import Dodge.SoundLogic.LoadSound --import Dodge.Creature.Perception import Geometry.Data --import Shape.Data --import Dodge.Render.Shape --import Picture --import Dodge.GameRoom --import Geometry import System.Random import qualified Data.Set as S import qualified Data.IntMap.Strict as IM import qualified Data.Map as M --import Data.Maybe --import Control.Lens --import Data.List (partition) --import Data.List (sortOn) firstWorld :: IO World firstWorld = do -- i <- randomRIO (0,5000) let i = 2 putStrLn $ "Seed for level generation: " ++ show ( i :: Int) return $ generateLevelFromRoomList levx $ initialWorld {_randGen = mkStdGen i} initialWorld :: World initialWorld = defaultWorld { _keys = S.empty , _cameraCenter = V2 0 0 , _cameraRot = 0 , _cameraZoom = 10 , _creatures = IM.fromList [(0,startCr)] , _props = IM.empty , _walls = IM.empty , _forceFields = IM.empty , _floorItems = IM.empty , _randGen = mkStdGen 2 , _mousePos = V2 0 0 , _testString = testStringInit , _yourID = 0 , _worldEvents = storeLevel . soundStart BackgroundSound (V2 0 0) foamSprayFadeOutS Nothing . foldr ((.) . makeStartCloudAt) id [V3 x y 5 | x <- [-5,-3..5] , y <- [-5,-3..5]] , _pressPlates = IM.empty , _buttons = IM.empty , _toPlaySounds = M.empty , _decorations = IM.empty , _storedLevel = Nothing , _menuLayers = [TerminalScreen 300 rezText'] , _worldState = M.empty } testStringInit :: World -> [String] testStringInit _ = [] --testStringInit = mapMaybe f . IM.elems . flattenIMIMIM . _znObjects . _wallsZone -- where -- f dr | _wlColor dr == V4 0 1 0 1 = Just . show $ _wlLine dr -- | otherwise = Nothing --testStringInit _ = [] --testStringInit w = [show . length $ newSounds w] --testStringInit w = (show . _crPos $ _creatures w IM.! 0) -- : (map show . _grBound . last $ sortOn _grName grs) -- ++ closeRooms -- where -- closeRooms = map _grName $ filter (pointInOrOnPolygon p . _grBound) grs -- grs = _gameRooms w -- p = _cameraViewFrom w