This commit is contained in:
2022-06-09 11:29:42 +01:00
parent 1789a3785d
commit e4e7122070
43 changed files with 44 additions and 196 deletions
+1 -2
View File
@@ -4,7 +4,7 @@ module Dodge.Annotation
( module Dodge.Annotation.Data ( module Dodge.Annotation.Data
, module Dodge.Annotation , module Dodge.Annotation
) where ) where
import Dodge.RandomHelp import RandomHelp
import Dodge.Tree import Dodge.Tree
import Dodge.Room import Dodge.Room
import Dodge.Data import Dodge.Data
@@ -12,7 +12,6 @@ import Dodge.Annotation.Data
--import LensHelp --import LensHelp
import Control.Monad.State import Control.Monad.State
import System.Random
--import Control.Lens --import Control.Lens
import Data.Maybe import Data.Maybe
+1 -2
View File
@@ -9,13 +9,12 @@ import Dodge.Item.Weapon.LaserPath
import Geometry import Geometry
import LensHelp import LensHelp
import Picture import Picture
import Dodge.RandomHelp import RandomHelp
import Dodge.Zone import Dodge.Zone
import Dodge.Base.Collide import Dodge.Base.Collide
import Shape import Shape
import Data.List (sortOn) import Data.List (sortOn)
import System.Random
import MonadHelp import MonadHelp
import Control.Monad.State import Control.Monad.State
import Data.Maybe import Data.Maybe
+1 -1
View File
@@ -5,7 +5,7 @@ import Dodge.Zone
import Dodge.WorldEvent.Sound import Dodge.WorldEvent.Sound
import Dodge.Wall.Delete import Dodge.Wall.Delete
import Dodge.Wall.Dust import Dodge.Wall.Dust
import Dodge.RandomHelp import RandomHelp
import Geometry import Geometry
--import Geometry.ConvexPoly --import Geometry.ConvexPoly
+1 -2
View File
@@ -7,7 +7,7 @@ module Dodge.Creature.Perception
import Dodge.Data import Dodge.Data
import Dodge.Creature.Vocalization import Dodge.Creature.Vocalization
import Dodge.Base.Collide import Dodge.Base.Collide
import Dodge.RandomHelp import RandomHelp
--import Dodge.SoundLogic --import Dodge.SoundLogic
import Geometry.Vector import Geometry.Vector
--import Geometry.Data --import Geometry.Data
@@ -18,7 +18,6 @@ import Sound.Data
import Control.Monad.State import Control.Monad.State
import Data.Maybe import Data.Maybe
import Control.Lens import Control.Lens
import System.Random
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
+1 -2
View File
@@ -16,13 +16,12 @@ import Dodge.Item.Weapon.BulletGuns
import Dodge.Item.Consumable import Dodge.Item.Consumable
import Geometry import Geometry
import Picture import Picture
import Dodge.RandomHelp import RandomHelp
import Data.Maybe import Data.Maybe
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import Control.Lens import Control.Lens
import Control.Monad.State import Control.Monad.State
--import System.Random
pistolCrit :: Creature pistolCrit :: Creature
pistolCrit = defaultCreature pistolCrit = defaultCreature
+1 -2
View File
@@ -13,7 +13,7 @@ import Dodge.Creature.Impulse.Movement
--import Dodge.Creature.Test --import Dodge.Creature.Test
--import Dodge.Base --import Dodge.Base
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.RandomHelp import RandomHelp
import Dodge.WorldEvent import Dodge.WorldEvent
--import Dodge.WallCreatureCollisions --import Dodge.WallCreatureCollisions
import Dodge.Creature.Action import Dodge.Creature.Action
@@ -36,7 +36,6 @@ import Control.Monad.State
--import Control.Monad --import Control.Monad
--import qualified SDL --import qualified SDL
--import qualified SDL.Mixer as Mix --import qualified SDL.Mixer as Mix
import System.Random
--import qualified Data.Set as S --import qualified Data.Set as S
--import qualified Data.Map as M --import qualified Data.Map as M
--import qualified Data.Vector as V --import qualified Data.Vector as V
+1 -2
View File
@@ -26,14 +26,13 @@ import Dodge.Data
--import Dodge.Room.RunPast --import Dodge.Room.RunPast
--import MonadHelp --import MonadHelp
import LensHelp import LensHelp
import Dodge.RandomHelp import RandomHelp
--import Color --import Color
--import Dodge.Wire --import Dodge.Wire
--import Control.Lens --import Control.Lens
import Control.Monad.State import Control.Monad.State
--import Control.Monad.Loops --import Control.Monad.Loops
import System.Random
--import Data.Sequence hiding (zipWith) --import Data.Sequence hiding (zipWith)
--import Data.Maybe --import Data.Maybe
--import qualified Data.IntMap.Strict as IM --import qualified Data.IntMap.Strict as IM
+1 -2
View File
@@ -1,10 +1,9 @@
module Dodge.Item.Random where module Dodge.Item.Random where
import Dodge.Data import Dodge.Data
import Dodge.RandomHelp import RandomHelp
import Dodge.Item.Weapon.BulletGuns import Dodge.Item.Weapon.BulletGuns
import Control.Monad.State import Control.Monad.State
import System.Random
randBlockBreakWeapon :: RandomGen g => State g Item randBlockBreakWeapon :: RandomGen g => State g Item
randBlockBreakWeapon = takeOne [bangStick 1,bangCane] randBlockBreakWeapon = takeOne [bangStick 1,bangCane]
+1 -2
View File
@@ -19,7 +19,7 @@ import Dodge.Zone
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.WorldEvent.SpawnParticle import Dodge.WorldEvent.SpawnParticle
import Dodge.WorldEvent.Cloud import Dodge.WorldEvent.Cloud
import Dodge.RandomHelp import RandomHelp
import Geometry import Geometry
import Picture import Picture
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
@@ -33,7 +33,6 @@ import Data.Maybe
import Control.Lens import Control.Lens
import Control.Applicative import Control.Applicative
import Control.Monad.State import Control.Monad.State
import System.Random
launcher :: Item launcher :: Item
launcher = defaultGun launcher = defaultGun
+1 -2
View File
@@ -63,7 +63,7 @@ import Dodge.Base.Collide
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Reloading import Dodge.Reloading
import Dodge.WorldEvent import Dodge.WorldEvent
import Dodge.RandomHelp import RandomHelp
import Dodge.Inventory.Lock import Dodge.Inventory.Lock
import Dodge.Creature.HandPos import Dodge.Creature.HandPos
import Dodge.Creature.Test import Dodge.Creature.Test
@@ -76,7 +76,6 @@ import Dodge.LightSource
--import Data.Preload --import Data.Preload
import LensHelp import LensHelp
import System.Random
--import Control.Lens --import Control.Lens
import Control.Monad.State import Control.Monad.State
import Data.Maybe import Data.Maybe
+1 -2
View File
@@ -21,7 +21,7 @@ import Geometry
--import Geometry.ConvexPoly --import Geometry.ConvexPoly
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import Tile import Tile
import Dodge.RandomHelp import RandomHelp
import Color import Color
import Shape import Shape
--import Padding --import Padding
@@ -29,7 +29,6 @@ import Shape
import Data.List (nubBy) import Data.List (nubBy)
import Data.Traversable import Data.Traversable
import Control.Lens import Control.Lens
import System.Random
import Data.Foldable import Data.Foldable
import qualified Control.Foldl as L import qualified Control.Foldl as L
import Data.Maybe import Data.Maybe
+1 -2
View File
@@ -7,7 +7,7 @@ module Dodge.LevelGen.LevelStructure
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
--import Dodge.Tree.Compose.Data --import Dodge.Tree.Compose.Data
import Dodge.Data import Dodge.Data
import Dodge.RandomHelp import RandomHelp
import Color import Color
import LensHelp import LensHelp
@@ -16,7 +16,6 @@ import qualified Data.IntMap.Strict as IM
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
--import Control.Lens --import Control.Lens
import Control.Monad.State import Control.Monad.State
import System.Random
worldToGenWorld :: IM.IntMap Room -> World -> World worldToGenWorld :: IM.IntMap Room -> World -> World
worldToGenWorld rms w = w worldToGenWorld rms w = w
+1 -2
View File
@@ -4,7 +4,7 @@ import Dodge.Data
import Dodge.Tree import Dodge.Tree
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
import Dodge.Room import Dodge.Room
import Dodge.RandomHelp import RandomHelp
import Dodge.Creature import Dodge.Creature
import Dodge.Item.Craftable import Dodge.Item.Craftable
import Dodge.Item.Weapon.BulletGun.Rod import Dodge.Item.Weapon.BulletGun.Rod
@@ -12,7 +12,6 @@ import Dodge.Item
--import LensHelp --import LensHelp
--import Dodge.Item.Equipment --import Dodge.Item.Equipment
import System.Random
import Control.Monad.State import Control.Monad.State
bossKeyItems :: RandomGen g => [ (State g (SubCompTree Room), State g ItemBaseType) ] bossKeyItems :: RandomGen g => [ (State g (SubCompTree Room), State g ItemBaseType) ]
+1 -2
View File
@@ -9,13 +9,12 @@ import Dodge.Damage
--import Dodge.Base.Collide --import Dodge.Base.Collide
import Dodge.Particle.Spark import Dodge.Particle.Spark
--import Dodge.WorldEvent.ThingsHit --import Dodge.WorldEvent.ThingsHit
import Dodge.RandomHelp import RandomHelp
import Picture import Picture
import Geometry import Geometry
--import qualified IntMapHelp as IM --import qualified IntMapHelp as IM
import LensHelp import LensHelp
import System.Random
import Control.Monad.State import Control.Monad.State
--import Data.Function (on) --import Data.Function (on)
--import Data.List --import Data.List
+1 -1
View File
@@ -1,7 +1,7 @@
module Dodge.Placement.Instance.Creature where module Dodge.Placement.Instance.Creature where
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
import Dodge.Data import Dodge.Data
import Dodge.RandomHelp import RandomHelp
import Dodge.Creature.ArmourChase import Dodge.Creature.ArmourChase
import Dodge.Creature.ChaseCrit import Dodge.Creature.ChaseCrit
+1 -1
View File
@@ -8,7 +8,7 @@ import Geometry
import Dodge.Creature.Inanimate import Dodge.Creature.Inanimate
import Shape.Data import Shape.Data
import Dodge.Default import Dodge.Default
import Dodge.RandomHelp import RandomHelp
import Color import Color
import Shape import Shape
import ShapePicture import ShapePicture
+1 -2
View File
@@ -8,10 +8,9 @@ import Shape
import Geometry import Geometry
import Color import Color
import LensHelp import LensHelp
import Dodge.RandomHelp import RandomHelp
--import Dodge.Base.NewID --import Dodge.Base.NewID
import System.Random
import Control.Monad.State import Control.Monad.State
import qualified Quaternion as Q import qualified Quaternion as Q
import Data.List (zip4) import Data.List (zip4)
-113
View File
@@ -1,113 +0,0 @@
{- Helpers for random generation. -}
module Dodge.RandomHelp where
import Geometry
import System.Random
import Control.Monad.State
import Data.List
randomRanges :: (Random a,RandomGen g) => [a] -> State g a
randomRanges = join . takeOne . f
where
f (x:y:ys) = state (randomR (x,y)) : f ys
f _ = []
takeOne :: RandomGen g => [a] -> State g a
takeOne xs = state (randomR (0,length xs - 1)) >>= (\i -> return (xs !! i))
takeOneWeighted :: (RandomGen g, Random b, Ord b, Num b) => [b] -> [a] -> State g a
takeOneWeighted ws xs = state (randomR (0, sum ws)) >>= (\w -> return (xs !! i w ws))
where
i y (z:zs)
| y <= z = 0
| otherwise = 1 + i (y-z) zs
i _ _ = 0
takeOneMore :: RandomGen g => ([a],[a]) -> State g ([a],[a])
takeOneMore ( _,[]) = error "trying to takeOneMore from empty list"
takeOneMore (xs,ys) = do
i <- state $ randomR (0,length ys - 1)
let (zs, w:ws) = splitAt i ys
return (w:xs, zs ++ ws)
takeNMore :: RandomGen g => Int -> ([a],[a]) -> State g ([a],[a])
takeNMore n p = foldl' (flip $ const (>>= takeOneMore)) (return p) [1..n]
takeN :: RandomGen g => Int -> [a] -> State g [a]
takeN 0 _ = return []
takeN i xs = fst <$> takeNMore i ([],xs)
-- | Randomly shuffle a list.
shuffle :: RandomGen g => [a] -> State g [a]
shuffle xs = do
rands <- forM [0..length xs-1] $ \i -> state $ randomR (0,i)
let f ys rand = let (as,b:bs) = splitAt rand ys
in (as ++ bs, b)
let (_,zs) = mapAccumR f xs rands
return zs
-- | Randomly shuffle the tail of a list, not safe.
shuffleTail :: RandomGen g => [a] -> State g [a]
shuffleTail (x:xs) = (x :) <$> shuffle xs
shuffleTail _ = undefined
-- select elements from a list randomly
-- each element has the same independent chance of being selected
randomSelectionFromList :: RandomGen g => Float -> [a] -> State g [a]
randomSelectionFromList = filterM . const . randProb
randProb :: RandomGen g => Float -> State g Bool
randProb p = do
p1 <- state $ randomR (0,1)
return (p1 < p)
randInCirc :: RandomGen g => Float -> State g Point2
randInCirc maxRad = do
rad <- state $ randomR (0,maxRad)
ang <- state $ randomR (0,2*pi)
return $ rad *.* unitVectorAtAngle ang
randOnUnitSphere :: RandomGen g => State g Point3
randOnUnitSphere = do
z <- state $ randomR (negate 1,1)
longitude <- state $ randomR (0, 2*pi)
let (V2 x y) = sqrt (1 - z^(2::Int)) *.* unitVectorAtAngle longitude
return (V3 x y z)
randOnHemisphere :: RandomGen g => State g Point3
randOnHemisphere = do
z <- state $ randomR (0,1)
longitude <- state $ randomR (0, 2*pi)
let (V2 x y) = sqrt (1 - z^(2::Int)) *.* unitVectorAtAngle longitude
return (V3 x y z)
randInHemisphere :: RandomGen g => State g Point3
randInHemisphere = do
p <- randOnHemisphere
r <- state $ randomR (0,1)
return $ r *.*.* p
randInRect :: RandomGen g => Float -> Float -> State g Point2
randInRect w h = do
x <- state $ randomR (0,w)
y <- state $ randomR (0,h)
return (V2 x y)
maybeTakeOne :: RandomGen g => [a] -> State g (Maybe a)
maybeTakeOne [] = return Nothing
maybeTakeOne xs = state (randomR (0,length xs - 1)) >>= (\i -> return (Just (xs !! i)))
randsSpread :: RandomGen g => (Float,Float) -> Int -> State g [Float]
randsSpread (a,b) i
| i <= 0 = error "tried to take <= 0 randsSpread"
| otherwise = zipWith (+) [a+x,a+2*x..] <$> replicateM i (state $ randomR (0,x))
where
x = (b-a)/fromIntegral i
randsOnCirc :: RandomGen g => Int -> State g [Float]
randsOnCirc = randsSpread (0,2*pi)
--randsOnCirc i
-- | i <= 0 = error "tried to take <= 0 randsOnCirc"
-- | otherwise = zipWith (+) [x,2*x..] <$> replicateM i (state $ randomR (0,x))
-- where
-- x = 2*pi/fromIntegral i
+1 -2
View File
@@ -9,12 +9,11 @@ import Dodge.Default.Wall
import Dodge.Data import Dodge.Data
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.LevelGen.Switch import Dodge.LevelGen.Switch
import Dodge.RandomHelp import RandomHelp
import Geometry import Geometry
import Picture import Picture
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import System.Random
import Control.Monad.State import Control.Monad.State
{- | A passage with a switch that opens forward access while closing backwards access. -} {- | A passage with a switch that opens forward access while closing backwards access. -}
airlock :: RandomGen g => State g Room airlock :: RandomGen g => State g Room
+1 -2
View File
@@ -12,14 +12,13 @@ import Dodge.Room.Corridor
import Dodge.Room.Path import Dodge.Room.Path
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
import Dodge.Creature import Dodge.Creature
import Dodge.RandomHelp import RandomHelp
import Dodge.Tree import Dodge.Tree
import Dodge.LevelGen.StaticWalls import Dodge.LevelGen.StaticWalls
import Geometry import Geometry
import LensHelp import LensHelp
import Control.Monad.State import Control.Monad.State
import System.Random
roomGlassOctogon roomGlassOctogon
:: Float -- ^ Size :: Float -- ^ Size
-> Room -> Room
+1 -2
View File
@@ -3,7 +3,7 @@ module Dodge.Room.Containing where
import Dodge.Data import Dodge.Data
import Dodge.Tree import Dodge.Tree
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.RandomHelp import RandomHelp
import Dodge.Room.Procedural import Dodge.Room.Procedural
import Dodge.Room.Tanks import Dodge.Room.Tanks
import Dodge.Room.Link import Dodge.Room.Link
@@ -12,7 +12,6 @@ import LensHelp
import Geometry import Geometry
--import Dodge.Item.Equipment --import Dodge.Item.Equipment
import System.Random
import Control.Monad.State import Control.Monad.State
import Data.List import Data.List
+1 -2
View File
@@ -4,7 +4,7 @@ import Dodge.RoomLink
import Dodge.Creature import Dodge.Creature
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.Data import Dodge.Data
import Dodge.RandomHelp import RandomHelp
import Dodge.Default.Wall import Dodge.Default.Wall
import Dodge.Tree import Dodge.Tree
import Dodge.Placement.Instance import Dodge.Placement.Instance
@@ -19,7 +19,6 @@ import LensHelp
import qualified Data.Set as S import qualified Data.Set as S
import Control.Monad.State import Control.Monad.State
--import Control.Monad.Loops --import Control.Monad.Loops
import System.Random
glassLesson :: RandomGen g => State g (SubCompTree Room) glassLesson :: RandomGen g => State g (SubCompTree Room)
glassLesson = do glassLesson = do
i <- takeOne [1,2,3] i <- takeOne [1,2,3]
+1 -2
View File
@@ -25,13 +25,12 @@ import Geometry
import Color import Color
import Shape import Shape
import LensHelp import LensHelp
import Dodge.RandomHelp import RandomHelp
--import Dodge.SoundLogic --import Dodge.SoundLogic
import qualified Data.Set as S import qualified Data.Set as S
import Data.Maybe import Data.Maybe
import Control.Monad.State import Control.Monad.State
import System.Random
cenLasTur :: Room cenLasTur :: Room
cenLasTur = roomNgon 8 200 & rmPmnts .~ cenLasTur = roomNgon 8 200 & rmPmnts .~
+1 -3
View File
@@ -21,17 +21,15 @@ import Dodge.ShiftPoint
import Dodge.Placement.Shift import Dodge.Placement.Shift
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
import Dodge.Data import Dodge.Data
import Dodge.RandomHelp import RandomHelp
import Geometry import Geometry
import Data.Tile import Data.Tile
import Dodge.RoomLink import Dodge.RoomLink
import System.Random
import Control.Monad.State import Control.Monad.State
import Control.Lens import Control.Lens
import Data.List import Data.List
import qualified Data.Set as S import qualified Data.Set as S
--import System.Random
chooseOneInLink :: RandomGen g => Room -> State g Room chooseOneInLink :: RandomGen g => Room -> State g Room
chooseOneInLink r = restrictToFstInLink <$> shuffleLinks r chooseOneInLink r = restrictToFstInLink <$> shuffleLinks r
+1 -2
View File
@@ -16,7 +16,7 @@ import Dodge.Room.Procedural
--import Dodge.Layout.Tree.Either --import Dodge.Layout.Tree.Either
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
import Dodge.LevelGen.Switch import Dodge.LevelGen.Switch
import Dodge.RandomHelp import RandomHelp
import Dodge.Creature.Inanimate import Dodge.Creature.Inanimate
import Dodge.Creature import Dodge.Creature
import Dodge.LightSource import Dodge.LightSource
@@ -26,7 +26,6 @@ import LensHelp
--import Shape --import Shape
import qualified Data.Set as S import qualified Data.Set as S
import System.Random
import Control.Monad.State import Control.Monad.State
import Data.Maybe import Data.Maybe
--import Data.Tree --import Data.Tree
+1 -2
View File
@@ -14,7 +14,7 @@ import Dodge.Room.Procedural
--import Dodge.Layout.Tree.Either --import Dodge.Layout.Tree.Either
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
--import Dodge.LevelGen.Switch --import Dodge.LevelGen.Switch
import Dodge.RandomHelp import RandomHelp
import Dodge.Creature.Inanimate import Dodge.Creature.Inanimate
import Dodge.Creature import Dodge.Creature
--import Dodge.LightSource --import Dodge.LightSource
@@ -24,7 +24,6 @@ import LensHelp
import Data.Tile import Data.Tile
import qualified Data.Set as S import qualified Data.Set as S
import System.Random
import Control.Monad.State import Control.Monad.State
--import qualified Data.IntMap as IM --import qualified Data.IntMap as IM
+1 -3
View File
@@ -7,7 +7,6 @@ module Dodge.Room.Modify.Girder
--import Dodge.Data --import Dodge.Data
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.Data import Dodge.Data
import Dodge.RandomHelp
--import Dodge.Room.Procedural --import Dodge.Room.Procedural
import Dodge.Room.Foreground import Dodge.Room.Foreground
--import Dodge.Room.RoadBlock --import Dodge.Room.RoadBlock
@@ -20,12 +19,11 @@ import Color
import Shape import Shape
import LensHelp import LensHelp
import Geometry import Geometry
import RandomHelp
import Data.Maybe import Data.Maybe
import Data.List (nub) import Data.List (nub)
--import Data.Tree
import Control.Monad.State import Control.Monad.State
import System.Random
import qualified Data.Set as S import qualified Data.Set as S
addGirderNS :: RandomGen g => (Point2 -> Point2 -> Shape) -> Color -> Room -> State g Room addGirderNS :: RandomGen g => (Point2 -> Point2 -> Shape) -> Color -> Room -> State g Room
+1 -2
View File
@@ -8,14 +8,13 @@ import Dodge.Creature
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.Room.Procedural import Dodge.Room.Procedural
--import Dodge.Room.Link --import Dodge.Room.Link
import Dodge.RandomHelp import RandomHelp
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
import Geometry.Data import Geometry.Data
import Control.Lens import Control.Lens
--import Control.Monad --import Control.Monad
import Control.Monad.State import Control.Monad.State
import System.Random
{- | {- |
A room designed to be /passable/ with no weapons. A room designed to be /passable/ with no weapons.
Highlights an issue: when trying to place next door rooms, if the level generation fails it will try a different link. Highlights an issue: when trying to place next door rooms, if the level generation fails it will try a different link.
+1 -2
View File
@@ -23,7 +23,7 @@ import Dodge.Default.Room
--import Dodge.Item.Consumable --import Dodge.Item.Consumable
--import Dodge.Item.Equipment --import Dodge.Item.Equipment
--import Dodge.Item.Weapon --import Dodge.Item.Weapon
import Dodge.RandomHelp import RandomHelp
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.LevelGen.Switch import Dodge.LevelGen.Switch
import Dodge.Creature import Dodge.Creature
@@ -37,7 +37,6 @@ import qualified Data.IntMap.Strict as IM
--import Control.Lens --import Control.Lens
import Control.Monad import Control.Monad
import Control.Monad.State import Control.Monad.State
import System.Random
-- This will need a cleanup, but it might change a bit first -- This will need a cleanup, but it might change a bit first
{- A simple rectangular room with a light in the center. {- A simple rectangular room with a light in the center.
Creates links and pathfinding graph. -} Creates links and pathfinding graph. -}
+1 -2
View File
@@ -9,7 +9,7 @@ import Dodge.Data
--import Dodge.Default --import Dodge.Default
--import Dodge.RoomLink --import Dodge.RoomLink
import Dodge.Tree import Dodge.Tree
import Dodge.RandomHelp import RandomHelp
import Dodge.Room.Door import Dodge.Room.Door
import Dodge.Room.Corridor import Dodge.Room.Corridor
--import Dodge.Room.Room --import Dodge.Room.Room
@@ -32,7 +32,6 @@ import LensHelp
import qualified Data.Set as S import qualified Data.Set as S
--import Data.Maybe --import Data.Maybe
import Control.Monad.State import Control.Monad.State
import System.Random
rezBox :: LightSource -> Room rezBox :: LightSource -> Room
rezBox ls = roomRect 40 60 1 1 rezBox ls = roomRect 40 60 1 1
+1 -2
View File
@@ -10,13 +10,12 @@ import Dodge.Placement.Instance
import Dodge.Room.Corridor import Dodge.Room.Corridor
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
--import Dodge.Default.Wall --import Dodge.Default.Wall
import Dodge.RandomHelp import RandomHelp
import Dodge.Creature import Dodge.Creature
import Dodge.Tree import Dodge.Tree
import Control.Monad.State import Control.Monad.State
import Control.Lens import Control.Lens
import System.Random
armouredCorridor :: RandomGen g => State g Room armouredCorridor :: RandomGen g => State g Room
armouredCorridor = fmap (replacePutID 0 [PutCrit $ addArmour autoCrit]) litCorridor90 armouredCorridor = fmap (replacePutID 0 [PutCrit $ addArmour autoCrit]) litCorridor90
+1 -2
View File
@@ -10,7 +10,7 @@ import Dodge.Creature
import Dodge.Room.Pillar import Dodge.Room.Pillar
import Dodge.Room.Modify.Girder import Dodge.Room.Modify.Girder
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.RandomHelp import RandomHelp
import Dodge.Default.Wall import Dodge.Default.Wall
import Dodge.Tree import Dodge.Tree
import Dodge.Placement.Instance import Dodge.Placement.Instance
@@ -29,7 +29,6 @@ import LensHelp
import qualified Data.Set as S import qualified Data.Set as S
import Control.Monad.State import Control.Monad.State
--import Control.Monad.Loops --import Control.Monad.Loops
import System.Random
import Data.Bifunctor import Data.Bifunctor
roomC :: RandomGen g => Float -> Float -> State g Room roomC :: RandomGen g => Float -> Float -> State g Room
+1 -2
View File
@@ -5,7 +5,7 @@ import Dodge.RoomLink
import Dodge.Data import Dodge.Data
--import Dodge.Default --import Dodge.Default
--import Dodge.Layout.Tree.Either --import Dodge.Layout.Tree.Either
import Dodge.RandomHelp import RandomHelp
import Dodge.Room.Door import Dodge.Room.Door
--import Dodge.Room.Room --import Dodge.Room.Room
import Dodge.Room.Link import Dodge.Room.Link
@@ -27,7 +27,6 @@ import LensHelp
import qualified Data.Set as S import qualified Data.Set as S
import Control.Monad.State import Control.Monad.State
import System.Random
--import qualified Data.IntMap.Strict as IM --import qualified Data.IntMap.Strict as IM
horEdgeTest :: (Float -> Bool) -> ((Point2,Float) -> Bool) horEdgeTest :: (Float -> Bool) -> ((Point2,Float) -> Bool)
+1 -2
View File
@@ -27,13 +27,12 @@ import Color
import Shape import Shape
--import Lorem --import Lorem
import LensHelp import LensHelp
import Dodge.RandomHelp import RandomHelp
import qualified Data.Set as S import qualified Data.Set as S
import Data.Maybe import Data.Maybe
--import Data.Tree --import Data.Tree
import Control.Monad.State import Control.Monad.State
import System.Random
-- TODO fix case where the sensor created by sensInsideDoor blocks another door -- TODO fix case where the sensor created by sensInsideDoor blocks another door
-- for roomRectAutoLinks-- make the locked door a center door? -- for roomRectAutoLinks-- make the locked door a center door?
+1 -2
View File
@@ -11,7 +11,7 @@ import Dodge.Room.LongDoor
--import Dodge.Default --import Dodge.Default
--import Dodge.RoomLink --import Dodge.RoomLink
import Dodge.Tree import Dodge.Tree
import Dodge.RandomHelp import RandomHelp
import Dodge.Room.Door import Dodge.Room.Door
import Dodge.Room.RezBox import Dodge.Room.RezBox
import Dodge.Room.Corridor import Dodge.Room.Corridor
@@ -28,7 +28,6 @@ import LensHelp
--import Data.Maybe --import Data.Maybe
--import Data.Tree --import Data.Tree
import Control.Monad.State import Control.Monad.State
import System.Random
--import qualified Data.IntMap.Strict as IM --import qualified Data.IntMap.Strict as IM
powerFakeout :: RandomGen g => State g (SubCompTree Room) powerFakeout :: RandomGen g => State g (SubCompTree Room)
+1 -2
View File
@@ -1,7 +1,7 @@
module Dodge.Room.Tanks where module Dodge.Room.Tanks where
import Dodge.Data import Dodge.Data
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.RandomHelp import RandomHelp
import Dodge.Room.Procedural import Dodge.Room.Procedural
import Dodge.Room.Foreground import Dodge.Room.Foreground
import Dodge.Room.Modify.Girder import Dodge.Room.Modify.Girder
@@ -18,7 +18,6 @@ import LensHelp
--import Data.Maybe --import Data.Maybe
--import Data.Tree --import Data.Tree
import Control.Monad.State import Control.Monad.State
import System.Random
--import qualified Data.Set as S --import qualified Data.Set as S
randomTank :: RandomGen g => State g Placement randomTank :: RandomGen g => State g Placement
+1 -2
View File
@@ -26,7 +26,7 @@ import Geometry
--import Shape --import Shape
--import Lorem --import Lorem
import LensHelp import LensHelp
import Dodge.RandomHelp import RandomHelp
--import qualified Data.Set as S --import qualified Data.Set as S
import Data.Maybe import Data.Maybe
@@ -34,7 +34,6 @@ import qualified Data.Map.Strict as M
--import Data.Char --import Data.Char
--import Data.Tree --import Data.Tree
import Control.Monad.State import Control.Monad.State
import System.Random
--import qualified Data.Text as T --import qualified Data.Text as T
+3 -3
View File
@@ -72,13 +72,13 @@ composeTreeRand :: RandomGen g => Tree (a -> Maybe a, Tree a) -> State g (Tree a
composeTreeRand (Node (_,t) ts) = attachListR t ts composeTreeRand (Node (_,t) ts) = attachListR t ts
attachListR :: RandomGen g => Tree a -> [Tree (a -> Maybe a, Tree a)] -> State g (Tree a) attachListR :: RandomGen g => Tree a -> [Tree (a -> Maybe a, Tree a)] -> State g (Tree a)
attachListR t xs = fmap shiftChildren $ foldrM newfRand (fmap ([],) t) xs attachListR t xs = shiftChildren <$> foldrM newfRand (fmap ([],) t) xs
newfRand :: RandomGen g => Tree (a -> Maybe a,Tree a) -> Tree ([Tree a],a) newfRand :: RandomGen g => Tree (a -> Maybe a,Tree a) -> Tree ([Tree a],a)
-> State g (Tree ([Tree a],a)) -> State g (Tree ([Tree a],a))
newfRand t = updateRandNode (isJust . upf . snd) ( (root . _2 %~ g) . (root . _1 .:~ composeTree t ) ) newfRand t = updateRandNode (isJust . upf . snd) ( (root . _2 %~ g) . (root . _1 .:~ composeTree t ) )
where where
upf = (t ^?! root . _1) upf = t ^?! root . _1
g x = fromMaybe x (upf x) g x = fromMaybe x (upf x)
composeTree :: Tree (a -> Maybe a, Tree a) -> Tree a composeTree :: Tree (a -> Maybe a, Tree a) -> Tree a
@@ -90,7 +90,7 @@ attachList t xs = shiftChildren $ foldr newf (fmap ([],) t) xs
newf :: Tree (a -> Maybe a,Tree a) -> Tree ([Tree a],a) -> Tree ([Tree a],a) newf :: Tree (a -> Maybe a,Tree a) -> Tree ([Tree a],a) -> Tree ([Tree a],a)
newf t = safeUpdateSingleNode (isJust . upf . snd) ( (root . _2 %~ g) . (root . _1 .:~ composeTree t ) ) newf t = safeUpdateSingleNode (isJust . upf . snd) ( (root . _2 %~ g) . (root . _1 .:~ composeTree t ) )
where where
upf = (t ^?! root . _1) upf = t ^?! root . _1
g x = fromMaybe x (upf x) g x = fromMaybe x (upf x)
shiftChildren :: Tree ([Tree a],a) -> Tree a shiftChildren :: Tree ([Tree a],a) -> Tree a
+1 -2
View File
@@ -5,11 +5,10 @@ A /trunk/ refers to the successive first nodes in lists of children.
-} -}
module Dodge.Tree.GenerateStructure module Dodge.Tree.GenerateStructure
where where
import Dodge.RandomHelp import RandomHelp
import Data.Tree import Data.Tree
import Control.Monad.State import Control.Monad.State
import System.Random
{- Single branched tree (a trunk). -} {- Single branched tree (a trunk). -}
treePath :: Int -> Tree () treePath :: Int -> Tree ()
treePath 0 = Node () [] treePath 0 = Node () []
+1 -2
View File
@@ -14,7 +14,7 @@ import Dodge.Zone
import Dodge.Base.Collide import Dodge.Base.Collide
import Dodge.WorldEvent.SpawnParticle import Dodge.WorldEvent.SpawnParticle
--import Dodge.WorldEvent.Flash --import Dodge.WorldEvent.Flash
import Dodge.RandomHelp import RandomHelp
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.WorldEvent.Shockwave import Dodge.WorldEvent.Shockwave
import Geometry import Geometry
@@ -25,7 +25,6 @@ import LensHelp
import Control.Monad.State import Control.Monad.State
import Data.List import Data.List
--import Data.Maybe --import Data.Maybe
import System.Random
makePoisonExplosionAt makePoisonExplosionAt
:: Point2 -- ^ Position :: Point2 -- ^ Position
+1 -1
View File
@@ -8,7 +8,7 @@ import Dodge.Data
import Dodge.SoundLogic import Dodge.SoundLogic
import Sound.Data import Sound.Data
import Geometry.Data import Geometry.Data
import Dodge.RandomHelp import RandomHelp
import Control.Lens import Control.Lens
import Control.Monad.State.Lazy import Control.Monad.State.Lazy
+1 -2
View File
@@ -18,13 +18,12 @@ import Dodge.WorldEvent.Cloud
import Dodge.WorldEvent.Flash import Dodge.WorldEvent.Flash
import Dodge.WorldEvent.Shockwave import Dodge.WorldEvent.Shockwave
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.RandomHelp import RandomHelp
import Picture import Picture
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import LensHelp import LensHelp
import System.Random
import Control.Monad.State import Control.Monad.State
import Data.Tuple import Data.Tuple
aFlameParticle aFlameParticle
+1 -2
View File
@@ -22,13 +22,12 @@ module TreeHelp
, updateRandNode , updateRandNode
, safeUpdateSingleNode , safeUpdateSingleNode
) where ) where
import Dodge.RandomHelp import RandomHelp
import Data.Maybe import Data.Maybe
import Data.Tree.Lens import Data.Tree.Lens
import Data.Tree import Data.Tree
import Control.Monad.State import Control.Monad.State
import System.Random
import Control.Lens import Control.Lens
{- | Creates a linear tree. {- | Creates a linear tree.