diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs new file mode 100644 index 000000000..597969610 --- /dev/null +++ b/src/Dodge/Default/World.hs @@ -0,0 +1,101 @@ +module Dodge.Default.World + where +import Dodge.Data +import Dodge.Data.Menu +import Dodge.Base +import Dodge.Debug.Flag.Data +import Dodge.Config.Data +import Dodge.Config.KeyConfig +import Dodge.Item.Data +import Picture +import Geometry + +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 ((&)) +defaultWorld :: World +defaultWorld = World + { _keys = S.empty + , _mouseButtons = S.empty + , _cameraCenter = (0,0) + , _cameraRot = 0 + , _cameraZoom = 1 + , _cameraViewFrom = (0,0) + , _creatures = IM.empty + , _creaturesZone = IM.empty + , _creatureGroups = IM.empty + , _clouds = IM.empty + , _cloudsZone = IM.empty + , _itemPositions = IM.empty + , _projectiles = IM.empty + , _particles = [] + , _staticWalls = [] + , _walls = IM.empty + , _wallsZone = IM.empty + , _forceFields = IM.empty + , _floorItems = IM.empty + , _randGen = mkStdGen 2 + , _mousePos = (0,0) + , _testString = [] + , _yourID = 0 + , _worldEvents = id + , _pressPlates = IM.empty + , _buttons = IM.empty + , _soundQueue = [] + , _sounds = M.empty + , _corpses = IM.empty + , _decorations = IM.empty + , _storedLevel = Nothing + , _menuLayers = [LevelMenu 1] + , _worldState = M.empty + , _worldTriggers = S.empty + , _clickMousePos = (0,0) + , _pathGraph = Data.Graph.Inductive.Graph.empty + , _pathGraph' = [] + , _pathPoints = IM.empty + , _pathInc = M.empty + , _carteDisplay = False + , _carteCenter = (0,0) + , _carteZoom = 0.5 + , _carteRot = 0 + , _lightSources = IM.empty + , _tempLightSources = [youLight] + , _closeActiveObjects = [] + , _seenLocations = IM.fromList + [(0, (_crPos . you, "CURRENT POSITION")) + ,(1, (const (0,0) , "START POSITION")) + ] + , _selLocation = 0 + , _keyConfig = defaultKeyConfigSDL + , _config = defaultConfig + , _sideEffects = [] + , _doneSideEffects = [] + , _debugFlags = defaultDebugFlags + , _inventoryMode = TopInventory + , _lClickHammer = HammerUp + , _foregroundDecorations = + [ setDepth (-0.1) $ color orange $ pictures + [ polygon $ rectNSEW 50 40 140 (-20) + , translate 60 45 $ scale 0.5 1 $ thickArc 0 pi 75 10 + , translate (-20) 300 $ polygon $ rectNSEW 10 0 40 0 + ] + , setDepth (-0.2) $ rotate 0.75 $ pictures + $ map f [5,25,45,65] + ] + } + where + f x = polygon $ rectNSEW (x - 20) (x-22) 500 0 +defaultDebugFlags :: DebugFlags +defaultDebugFlags = DebugFlags + { _noClip = False + , _displaySecondsPerFrame = True + } +youLight :: TempLightSource +youLight = + TLS { _tlsPos = (0,0) + ,_tlsRad = 300 + ,_tlsIntensity = 0.1 + ,_tlsUpdate = \w _ -> (w, Just (youLight {_tlsPos = _crPos (you w)})) + }