module Dodge.Default.World where import Dodge.Data import Dodge.Base --import Dodge.Config.KeyConfig import Dodge.Bounds --import Dodge.Menu --import Picture import Geometry.Data --import Picture.Texture --import Data.Preload import Control.Lens import System.Random import qualified Data.IntMap.Strict as IM import qualified Data.Map as M import qualified Data.Set as S import Data.Graph.Inductive.Graph hiding ((&)) --import qualified Data.Vector.Fusion.Stream.Monadic as VS defaultWorld :: World defaultWorld = World { _keys = S.empty , _magnets = IM.empty , _mouseButtons = S.empty , _cameraCenter = V2 0 0 , _cameraRot = 0 , _cameraZoom = 1 , _cameraViewFrom = V2 0 0 , _viewDistance = 1000 , _modifications = IM.empty , _creatures = IM.empty , _creaturesZone = Zone IM.empty , _creatureGroups = IM.empty , _clouds = [] , _cloudsZone = Zone IM.empty , _gusts = IM.empty , _gustsZone = Zone IM.empty , _itemPositions = IM.empty , _props = IM.empty , _instantParticles = [] , _particles = [] , _walls = IM.empty , _blocks = IM.empty , _machines = IM.empty , _doors = IM.empty , _coordinates = IM.empty , _triggers = IM.empty , _wallsZone = Zone IM.empty , _floorItems = IM.empty , _floorTiles = [] , _randGen = mkStdGen 2 , _mousePos = V2 0 0 , _testString = const [] , _yourID = 0 , _worldEvents = id , _delayedEvents = [] , _pressPlates = IM.empty , _buttons = IM.empty , _toPlaySounds = M.empty , _playingSounds = M.empty , _corpses = Zone IM.empty , _decorations = IM.empty --, _savedWorlds = M.empty -- , _menuLayers = [] , _clickMousePos = V2 0 0 , _pathGraph = Data.Graph.Inductive.Graph.empty , _pathGraphP = [] , _pathPoints = IM.empty , _carteDisplay = False , _carteCenter = V2 0 0 , _carteZoom = 0.5 , _carteRot = 0 , _lightSources = IM.empty , _tempLightSources = [youLight] , _closeObjects = [] , _seenLocations = IM.fromList [(0, (_crPos . you, "CURRENT POSITION")) ,(1, (const (V2 0 0) , "START POSITION")) ] , _selLocation = 0 --, _keyConfig = defaultKeyConfigSDL -- , _config = defaultConfig , _sideEffects = return , _inventoryMode = TopInventory , _foregroundShape = mempty , _distortions = [] , _gameRooms = [] , _worldClock = 0 , _worldBounds = defaultBounds , _maybeWorld = Nothing' , _rewindWorlds = [] , _timeFlow = NormalTimeFlow , _youHammerPosition = HammerUp , _worldTerminal = Nothing' } youLight :: TempLightSource youLight = TLS { _tlsParam = LSParam {_lsPos = V3 0 0 0 ,_lsRad = 300 ,_lsCol = 0.1 } ,_tlsUpdate = \w _ -> Just (youLight & tlsParam . lsPos .~ f (_crPos $ you w)) ,_tlsTime = 0 } where f (V2 x y) = V3 x y 100