diff --git a/src/Dodge/Annotation.hs b/src/Dodge/Annotation.hs index 3e8928a96..7cb5eb745 100644 --- a/src/Dodge/Annotation.hs +++ b/src/Dodge/Annotation.hs @@ -4,7 +4,7 @@ module Dodge.Annotation ( module Dodge.Annotation.Data , module Dodge.Annotation ) where -import Dodge.RandomHelp +import RandomHelp import Dodge.Tree import Dodge.Room import Dodge.Data @@ -12,7 +12,6 @@ import Dodge.Annotation.Data --import LensHelp import Control.Monad.State -import System.Random --import Control.Lens import Data.Maybe diff --git a/src/Dodge/Beam.hs b/src/Dodge/Beam.hs index b3a8bc6be..5c5b51111 100644 --- a/src/Dodge/Beam.hs +++ b/src/Dodge/Beam.hs @@ -9,13 +9,12 @@ import Dodge.Item.Weapon.LaserPath import Geometry import LensHelp import Picture -import Dodge.RandomHelp +import RandomHelp import Dodge.Zone import Dodge.Base.Collide import Shape import Data.List (sortOn) -import System.Random import MonadHelp import Control.Monad.State import Data.Maybe diff --git a/src/Dodge/Block.hs b/src/Dodge/Block.hs index f2d27c47a..6a91e1c05 100644 --- a/src/Dodge/Block.hs +++ b/src/Dodge/Block.hs @@ -5,7 +5,7 @@ import Dodge.Zone import Dodge.WorldEvent.Sound import Dodge.Wall.Delete import Dodge.Wall.Dust -import Dodge.RandomHelp +import RandomHelp import Geometry --import Geometry.ConvexPoly diff --git a/src/Dodge/Creature/Perception.hs b/src/Dodge/Creature/Perception.hs index 4dc70d622..c7b8b3353 100644 --- a/src/Dodge/Creature/Perception.hs +++ b/src/Dodge/Creature/Perception.hs @@ -7,7 +7,7 @@ module Dodge.Creature.Perception import Dodge.Data import Dodge.Creature.Vocalization import Dodge.Base.Collide -import Dodge.RandomHelp +import RandomHelp --import Dodge.SoundLogic import Geometry.Vector --import Geometry.Data @@ -18,7 +18,6 @@ import Sound.Data import Control.Monad.State import Data.Maybe import Control.Lens -import System.Random import qualified Data.IntMap.Strict as IM import qualified Data.Map.Strict as M diff --git a/src/Dodge/Creature/PistolCrit.hs b/src/Dodge/Creature/PistolCrit.hs index ee0dd4095..cb7658fbe 100644 --- a/src/Dodge/Creature/PistolCrit.hs +++ b/src/Dodge/Creature/PistolCrit.hs @@ -16,13 +16,12 @@ import Dodge.Item.Weapon.BulletGuns import Dodge.Item.Consumable import Geometry import Picture -import Dodge.RandomHelp +import RandomHelp import Data.Maybe import qualified Data.IntMap.Strict as IM import Control.Lens import Control.Monad.State ---import System.Random pistolCrit :: Creature pistolCrit = defaultCreature diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 46423fd74..b325cfaea 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -13,7 +13,7 @@ import Dodge.Creature.Impulse.Movement --import Dodge.Creature.Test --import Dodge.Base import Dodge.SoundLogic -import Dodge.RandomHelp +import RandomHelp import Dodge.WorldEvent --import Dodge.WallCreatureCollisions import Dodge.Creature.Action @@ -36,7 +36,6 @@ import Control.Monad.State --import Control.Monad --import qualified SDL --import qualified SDL.Mixer as Mix -import System.Random --import qualified Data.Set as S --import qualified Data.Map as M --import qualified Data.Vector as V diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index b00f4a30d..0632815a8 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -26,14 +26,13 @@ import Dodge.Data --import Dodge.Room.RunPast --import MonadHelp import LensHelp -import Dodge.RandomHelp +import RandomHelp --import Color --import Dodge.Wire --import Control.Lens import Control.Monad.State --import Control.Monad.Loops -import System.Random --import Data.Sequence hiding (zipWith) --import Data.Maybe --import qualified Data.IntMap.Strict as IM diff --git a/src/Dodge/Item/Random.hs b/src/Dodge/Item/Random.hs index 16b2e64ff..84d92338b 100644 --- a/src/Dodge/Item/Random.hs +++ b/src/Dodge/Item/Random.hs @@ -1,10 +1,9 @@ module Dodge.Item.Random where import Dodge.Data -import Dodge.RandomHelp +import RandomHelp import Dodge.Item.Weapon.BulletGuns import Control.Monad.State -import System.Random randBlockBreakWeapon :: RandomGen g => State g Item randBlockBreakWeapon = takeOne [bangStick 1,bangCane] diff --git a/src/Dodge/Item/Weapon/Launcher.hs b/src/Dodge/Item/Weapon/Launcher.hs index bc649e117..854279870 100644 --- a/src/Dodge/Item/Weapon/Launcher.hs +++ b/src/Dodge/Item/Weapon/Launcher.hs @@ -19,7 +19,7 @@ import Dodge.Zone import Dodge.SoundLogic import Dodge.WorldEvent.SpawnParticle import Dodge.WorldEvent.Cloud -import Dodge.RandomHelp +import RandomHelp import Geometry import Picture import qualified IntMapHelp as IM @@ -33,7 +33,6 @@ import Data.Maybe import Control.Lens import Control.Applicative import Control.Monad.State -import System.Random launcher :: Item launcher = defaultGun diff --git a/src/Dodge/Item/Weapon/TriggerType.hs b/src/Dodge/Item/Weapon/TriggerType.hs index f77cd0ab2..7753b781e 100644 --- a/src/Dodge/Item/Weapon/TriggerType.hs +++ b/src/Dodge/Item/Weapon/TriggerType.hs @@ -63,7 +63,7 @@ import Dodge.Base.Collide import Dodge.SoundLogic import Dodge.Reloading import Dodge.WorldEvent -import Dodge.RandomHelp +import RandomHelp import Dodge.Inventory.Lock import Dodge.Creature.HandPos import Dodge.Creature.Test @@ -76,7 +76,6 @@ import Dodge.LightSource --import Data.Preload import LensHelp -import System.Random --import Control.Lens import Control.Monad.State import Data.Maybe diff --git a/src/Dodge/Layout.hs b/src/Dodge/Layout.hs index d8f539d7c..9d2b76c05 100644 --- a/src/Dodge/Layout.hs +++ b/src/Dodge/Layout.hs @@ -21,7 +21,7 @@ import Geometry --import Geometry.ConvexPoly import qualified IntMapHelp as IM import Tile -import Dodge.RandomHelp +import RandomHelp import Color import Shape --import Padding @@ -29,7 +29,6 @@ import Shape import Data.List (nubBy) import Data.Traversable import Control.Lens -import System.Random import Data.Foldable import qualified Control.Foldl as L import Data.Maybe diff --git a/src/Dodge/LevelGen/LevelStructure.hs b/src/Dodge/LevelGen/LevelStructure.hs index 86d9ffc95..c92f5dc80 100644 --- a/src/Dodge/LevelGen/LevelStructure.hs +++ b/src/Dodge/LevelGen/LevelStructure.hs @@ -7,7 +7,7 @@ module Dodge.LevelGen.LevelStructure import Dodge.LevelGen.Data --import Dodge.Tree.Compose.Data import Dodge.Data -import Dodge.RandomHelp +import RandomHelp import Color import LensHelp @@ -16,7 +16,6 @@ import qualified Data.IntMap.Strict as IM import qualified Data.Map.Strict as M --import Control.Lens import Control.Monad.State -import System.Random worldToGenWorld :: IM.IntMap Room -> World -> World worldToGenWorld rms w = w diff --git a/src/Dodge/LockAndKey.hs b/src/Dodge/LockAndKey.hs index 7de8a8b68..5ddaa2655 100644 --- a/src/Dodge/LockAndKey.hs +++ b/src/Dodge/LockAndKey.hs @@ -4,7 +4,7 @@ import Dodge.Data import Dodge.Tree --import Dodge.LevelGen.Data import Dodge.Room -import Dodge.RandomHelp +import RandomHelp import Dodge.Creature import Dodge.Item.Craftable import Dodge.Item.Weapon.BulletGun.Rod @@ -12,7 +12,6 @@ import Dodge.Item --import LensHelp --import Dodge.Item.Equipment -import System.Random import Control.Monad.State bossKeyItems :: RandomGen g => [ (State g (SubCompTree Room), State g ItemBaseType) ] diff --git a/src/Dodge/Particle/TeslaArc.hs b/src/Dodge/Particle/TeslaArc.hs index 62228f703..878c89805 100644 --- a/src/Dodge/Particle/TeslaArc.hs +++ b/src/Dodge/Particle/TeslaArc.hs @@ -9,13 +9,12 @@ import Dodge.Damage --import Dodge.Base.Collide import Dodge.Particle.Spark --import Dodge.WorldEvent.ThingsHit -import Dodge.RandomHelp +import RandomHelp import Picture import Geometry --import qualified IntMapHelp as IM import LensHelp -import System.Random import Control.Monad.State --import Data.Function (on) --import Data.List diff --git a/src/Dodge/Placement/Instance/Creature.hs b/src/Dodge/Placement/Instance/Creature.hs index ef9b773f1..3e388f91d 100644 --- a/src/Dodge/Placement/Instance/Creature.hs +++ b/src/Dodge/Placement/Instance/Creature.hs @@ -1,7 +1,7 @@ module Dodge.Placement.Instance.Creature where --import Dodge.LevelGen.Data import Dodge.Data -import Dodge.RandomHelp +import RandomHelp import Dodge.Creature.ArmourChase import Dodge.Creature.ChaseCrit diff --git a/src/Dodge/Placement/Instance/LightSource.hs b/src/Dodge/Placement/Instance/LightSource.hs index 0d5783944..9f5173d1b 100644 --- a/src/Dodge/Placement/Instance/LightSource.hs +++ b/src/Dodge/Placement/Instance/LightSource.hs @@ -8,7 +8,7 @@ import Geometry import Dodge.Creature.Inanimate import Shape.Data import Dodge.Default -import Dodge.RandomHelp +import RandomHelp import Color import Shape import ShapePicture diff --git a/src/Dodge/Prop/Gib.hs b/src/Dodge/Prop/Gib.hs index b45cc7293..f93f729a0 100644 --- a/src/Dodge/Prop/Gib.hs +++ b/src/Dodge/Prop/Gib.hs @@ -8,10 +8,9 @@ import Shape import Geometry import Color import LensHelp -import Dodge.RandomHelp +import RandomHelp --import Dodge.Base.NewID -import System.Random import Control.Monad.State import qualified Quaternion as Q import Data.List (zip4) diff --git a/src/Dodge/RandomHelp.hs b/src/Dodge/RandomHelp.hs deleted file mode 100644 index 59fb89dc1..000000000 --- a/src/Dodge/RandomHelp.hs +++ /dev/null @@ -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 diff --git a/src/Dodge/Room/Airlock.hs b/src/Dodge/Room/Airlock.hs index 68961caab..b016b09f6 100644 --- a/src/Dodge/Room/Airlock.hs +++ b/src/Dodge/Room/Airlock.hs @@ -9,12 +9,11 @@ import Dodge.Default.Wall import Dodge.Data import Dodge.LevelGen.Data import Dodge.LevelGen.Switch -import Dodge.RandomHelp +import RandomHelp import Geometry import Picture import qualified Data.IntMap.Strict as IM -import System.Random import Control.Monad.State {- | A passage with a switch that opens forward access while closing backwards access. -} airlock :: RandomGen g => State g Room diff --git a/src/Dodge/Room/Boss.hs b/src/Dodge/Room/Boss.hs index 203edf074..639289690 100644 --- a/src/Dodge/Room/Boss.hs +++ b/src/Dodge/Room/Boss.hs @@ -12,14 +12,13 @@ import Dodge.Room.Corridor import Dodge.Room.Path --import Dodge.LevelGen.Data import Dodge.Creature -import Dodge.RandomHelp +import RandomHelp import Dodge.Tree import Dodge.LevelGen.StaticWalls import Geometry import LensHelp import Control.Monad.State -import System.Random roomGlassOctogon :: Float -- ^ Size -> Room diff --git a/src/Dodge/Room/Containing.hs b/src/Dodge/Room/Containing.hs index 2f4e8ea48..ff517055d 100644 --- a/src/Dodge/Room/Containing.hs +++ b/src/Dodge/Room/Containing.hs @@ -3,7 +3,7 @@ module Dodge.Room.Containing where import Dodge.Data import Dodge.Tree import Dodge.LevelGen.Data -import Dodge.RandomHelp +import RandomHelp import Dodge.Room.Procedural import Dodge.Room.Tanks import Dodge.Room.Link @@ -12,7 +12,6 @@ import LensHelp import Geometry --import Dodge.Item.Equipment -import System.Random import Control.Monad.State import Data.List diff --git a/src/Dodge/Room/GlassLesson.hs b/src/Dodge/Room/GlassLesson.hs index a0147e5af..03f10c030 100644 --- a/src/Dodge/Room/GlassLesson.hs +++ b/src/Dodge/Room/GlassLesson.hs @@ -4,7 +4,7 @@ import Dodge.RoomLink import Dodge.Creature import Dodge.LevelGen.Data import Dodge.Data -import Dodge.RandomHelp +import RandomHelp import Dodge.Default.Wall import Dodge.Tree import Dodge.Placement.Instance @@ -19,7 +19,6 @@ import LensHelp import qualified Data.Set as S import Control.Monad.State --import Control.Monad.Loops -import System.Random glassLesson :: RandomGen g => State g (SubCompTree Room) glassLesson = do i <- takeOne [1,2,3] diff --git a/src/Dodge/Room/LasTurret.hs b/src/Dodge/Room/LasTurret.hs index c4422838b..bd3c4c01a 100644 --- a/src/Dodge/Room/LasTurret.hs +++ b/src/Dodge/Room/LasTurret.hs @@ -25,13 +25,12 @@ import Geometry import Color import Shape import LensHelp -import Dodge.RandomHelp +import RandomHelp --import Dodge.SoundLogic import qualified Data.Set as S import Data.Maybe import Control.Monad.State -import System.Random cenLasTur :: Room cenLasTur = roomNgon 8 200 & rmPmnts .~ diff --git a/src/Dodge/Room/Link.hs b/src/Dodge/Room/Link.hs index ea42fe0b6..326274d66 100644 --- a/src/Dodge/Room/Link.hs +++ b/src/Dodge/Room/Link.hs @@ -21,17 +21,15 @@ import Dodge.ShiftPoint import Dodge.Placement.Shift --import Dodge.LevelGen.Data import Dodge.Data -import Dodge.RandomHelp +import RandomHelp import Geometry import Data.Tile import Dodge.RoomLink -import System.Random import Control.Monad.State import Control.Lens import Data.List import qualified Data.Set as S ---import System.Random chooseOneInLink :: RandomGen g => Room -> State g Room chooseOneInLink r = restrictToFstInLink <$> shuffleLinks r diff --git a/src/Dodge/Room/LongDoor.hs b/src/Dodge/Room/LongDoor.hs index 0421d4cd4..62135c044 100644 --- a/src/Dodge/Room/LongDoor.hs +++ b/src/Dodge/Room/LongDoor.hs @@ -16,7 +16,7 @@ import Dodge.Room.Procedural --import Dodge.Layout.Tree.Either --import Dodge.LevelGen.Data import Dodge.LevelGen.Switch -import Dodge.RandomHelp +import RandomHelp import Dodge.Creature.Inanimate import Dodge.Creature import Dodge.LightSource @@ -26,7 +26,6 @@ import LensHelp --import Shape import qualified Data.Set as S -import System.Random import Control.Monad.State import Data.Maybe --import Data.Tree diff --git a/src/Dodge/Room/LongRoom.hs b/src/Dodge/Room/LongRoom.hs index fbace8d8e..9216c4f09 100644 --- a/src/Dodge/Room/LongRoom.hs +++ b/src/Dodge/Room/LongRoom.hs @@ -14,7 +14,7 @@ import Dodge.Room.Procedural --import Dodge.Layout.Tree.Either --import Dodge.LevelGen.Data --import Dodge.LevelGen.Switch -import Dodge.RandomHelp +import RandomHelp import Dodge.Creature.Inanimate import Dodge.Creature --import Dodge.LightSource @@ -24,7 +24,6 @@ import LensHelp import Data.Tile import qualified Data.Set as S -import System.Random import Control.Monad.State --import qualified Data.IntMap as IM diff --git a/src/Dodge/Room/Modify/Girder.hs b/src/Dodge/Room/Modify/Girder.hs index 8b191674b..0924ba6bc 100644 --- a/src/Dodge/Room/Modify/Girder.hs +++ b/src/Dodge/Room/Modify/Girder.hs @@ -7,7 +7,6 @@ module Dodge.Room.Modify.Girder --import Dodge.Data import Dodge.LevelGen.Data import Dodge.Data -import Dodge.RandomHelp --import Dodge.Room.Procedural import Dodge.Room.Foreground --import Dodge.Room.RoadBlock @@ -20,12 +19,11 @@ import Color import Shape import LensHelp import Geometry +import RandomHelp import Data.Maybe import Data.List (nub) ---import Data.Tree import Control.Monad.State -import System.Random import qualified Data.Set as S addGirderNS :: RandomGen g => (Point2 -> Point2 -> Shape) -> Color -> Room -> State g Room diff --git a/src/Dodge/Room/NoNeedWeapon.hs b/src/Dodge/Room/NoNeedWeapon.hs index 93cfb9717..b10f28026 100644 --- a/src/Dodge/Room/NoNeedWeapon.hs +++ b/src/Dodge/Room/NoNeedWeapon.hs @@ -8,14 +8,13 @@ import Dodge.Creature import Dodge.LevelGen.Data import Dodge.Room.Procedural --import Dodge.Room.Link -import Dodge.RandomHelp +import RandomHelp --import Dodge.LevelGen.Data import Geometry.Data import Control.Lens --import Control.Monad import Control.Monad.State -import System.Random {- | 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. diff --git a/src/Dodge/Room/Procedural.hs b/src/Dodge/Room/Procedural.hs index ebe143f0e..310984276 100644 --- a/src/Dodge/Room/Procedural.hs +++ b/src/Dodge/Room/Procedural.hs @@ -23,7 +23,7 @@ import Dodge.Default.Room --import Dodge.Item.Consumable --import Dodge.Item.Equipment --import Dodge.Item.Weapon -import Dodge.RandomHelp +import RandomHelp import Dodge.LevelGen.Data import Dodge.LevelGen.Switch import Dodge.Creature @@ -37,7 +37,6 @@ import qualified Data.IntMap.Strict as IM --import Control.Lens import Control.Monad import Control.Monad.State -import System.Random -- This will need a cleanup, but it might change a bit first {- A simple rectangular room with a light in the center. Creates links and pathfinding graph. -} diff --git a/src/Dodge/Room/RezBox.hs b/src/Dodge/Room/RezBox.hs index 1fce42b1c..58f440907 100644 --- a/src/Dodge/Room/RezBox.hs +++ b/src/Dodge/Room/RezBox.hs @@ -9,7 +9,7 @@ import Dodge.Data --import Dodge.Default --import Dodge.RoomLink import Dodge.Tree -import Dodge.RandomHelp +import RandomHelp import Dodge.Room.Door import Dodge.Room.Corridor --import Dodge.Room.Room @@ -32,7 +32,6 @@ import LensHelp import qualified Data.Set as S --import Data.Maybe import Control.Monad.State -import System.Random rezBox :: LightSource -> Room rezBox ls = roomRect 40 60 1 1 diff --git a/src/Dodge/Room/RoadBlock.hs b/src/Dodge/Room/RoadBlock.hs index 41bcacd1e..4a702ed0b 100644 --- a/src/Dodge/Room/RoadBlock.hs +++ b/src/Dodge/Room/RoadBlock.hs @@ -10,13 +10,12 @@ import Dodge.Placement.Instance import Dodge.Room.Corridor --import Dodge.LevelGen.Data --import Dodge.Default.Wall -import Dodge.RandomHelp +import RandomHelp import Dodge.Creature import Dodge.Tree import Control.Monad.State import Control.Lens -import System.Random armouredCorridor :: RandomGen g => State g Room armouredCorridor = fmap (replacePutID 0 [PutCrit $ addArmour autoCrit]) litCorridor90 diff --git a/src/Dodge/Room/Room.hs b/src/Dodge/Room/Room.hs index 243a92ad6..bdf703de3 100644 --- a/src/Dodge/Room/Room.hs +++ b/src/Dodge/Room/Room.hs @@ -10,7 +10,7 @@ import Dodge.Creature import Dodge.Room.Pillar import Dodge.Room.Modify.Girder import Dodge.LevelGen.Data -import Dodge.RandomHelp +import RandomHelp import Dodge.Default.Wall import Dodge.Tree import Dodge.Placement.Instance @@ -29,7 +29,6 @@ import LensHelp import qualified Data.Set as S import Control.Monad.State --import Control.Monad.Loops -import System.Random import Data.Bifunctor roomC :: RandomGen g => Float -> Float -> State g Room diff --git a/src/Dodge/Room/RunPast.hs b/src/Dodge/Room/RunPast.hs index c89638c0d..0324416d6 100644 --- a/src/Dodge/Room/RunPast.hs +++ b/src/Dodge/Room/RunPast.hs @@ -5,7 +5,7 @@ import Dodge.RoomLink import Dodge.Data --import Dodge.Default --import Dodge.Layout.Tree.Either -import Dodge.RandomHelp +import RandomHelp import Dodge.Room.Door --import Dodge.Room.Room import Dodge.Room.Link @@ -27,7 +27,6 @@ import LensHelp import qualified Data.Set as S import Control.Monad.State -import System.Random --import qualified Data.IntMap.Strict as IM horEdgeTest :: (Float -> Bool) -> ((Point2,Float) -> Bool) diff --git a/src/Dodge/Room/SensorDoor.hs b/src/Dodge/Room/SensorDoor.hs index 59003789b..98d2f8fd2 100644 --- a/src/Dodge/Room/SensorDoor.hs +++ b/src/Dodge/Room/SensorDoor.hs @@ -27,13 +27,12 @@ import Color import Shape --import Lorem import LensHelp -import Dodge.RandomHelp +import RandomHelp import qualified Data.Set as S import Data.Maybe --import Data.Tree import Control.Monad.State -import System.Random -- TODO fix case where the sensor created by sensInsideDoor blocks another door -- for roomRectAutoLinks-- make the locked door a center door? diff --git a/src/Dodge/Room/Start.hs b/src/Dodge/Room/Start.hs index 2ed00d821..f773e39d6 100644 --- a/src/Dodge/Room/Start.hs +++ b/src/Dodge/Room/Start.hs @@ -11,7 +11,7 @@ import Dodge.Room.LongDoor --import Dodge.Default --import Dodge.RoomLink import Dodge.Tree -import Dodge.RandomHelp +import RandomHelp import Dodge.Room.Door import Dodge.Room.RezBox import Dodge.Room.Corridor @@ -28,7 +28,6 @@ import LensHelp --import Data.Maybe --import Data.Tree import Control.Monad.State -import System.Random --import qualified Data.IntMap.Strict as IM powerFakeout :: RandomGen g => State g (SubCompTree Room) diff --git a/src/Dodge/Room/Tanks.hs b/src/Dodge/Room/Tanks.hs index 007bf16ee..17e821601 100644 --- a/src/Dodge/Room/Tanks.hs +++ b/src/Dodge/Room/Tanks.hs @@ -1,7 +1,7 @@ module Dodge.Room.Tanks where import Dodge.Data import Dodge.LevelGen.Data -import Dodge.RandomHelp +import RandomHelp import Dodge.Room.Procedural import Dodge.Room.Foreground import Dodge.Room.Modify.Girder @@ -18,7 +18,6 @@ import LensHelp --import Data.Maybe --import Data.Tree import Control.Monad.State -import System.Random --import qualified Data.Set as S randomTank :: RandomGen g => State g Placement diff --git a/src/Dodge/Room/Warning.hs b/src/Dodge/Room/Warning.hs index c39598417..0256008a9 100644 --- a/src/Dodge/Room/Warning.hs +++ b/src/Dodge/Room/Warning.hs @@ -26,7 +26,7 @@ import Geometry --import Shape --import Lorem import LensHelp -import Dodge.RandomHelp +import RandomHelp --import qualified Data.Set as S import Data.Maybe @@ -34,7 +34,6 @@ import qualified Data.Map.Strict as M --import Data.Char --import Data.Tree import Control.Monad.State -import System.Random --import qualified Data.Text as T diff --git a/src/Dodge/Tree/Compose.hs b/src/Dodge/Tree/Compose.hs index 7243731de..1dd162665 100644 --- a/src/Dodge/Tree/Compose.hs +++ b/src/Dodge/Tree/Compose.hs @@ -72,13 +72,13 @@ composeTreeRand :: RandomGen g => Tree (a -> Maybe a, Tree a) -> State g (Tree a composeTreeRand (Node (_,t) ts) = attachListR t ts 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) -> State g (Tree ([Tree a],a)) newfRand t = updateRandNode (isJust . upf . snd) ( (root . _2 %~ g) . (root . _1 .:~ composeTree t ) ) where - upf = (t ^?! root . _1) + upf = t ^?! root . _1 g x = fromMaybe x (upf x) 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 t = safeUpdateSingleNode (isJust . upf . snd) ( (root . _2 %~ g) . (root . _1 .:~ composeTree t ) ) where - upf = (t ^?! root . _1) + upf = t ^?! root . _1 g x = fromMaybe x (upf x) shiftChildren :: Tree ([Tree a],a) -> Tree a diff --git a/src/Dodge/Tree/GenerateStructure.hs b/src/Dodge/Tree/GenerateStructure.hs index 0e414fc80..2db2f75f2 100644 --- a/src/Dodge/Tree/GenerateStructure.hs +++ b/src/Dodge/Tree/GenerateStructure.hs @@ -5,11 +5,10 @@ A /trunk/ refers to the successive first nodes in lists of children. -} module Dodge.Tree.GenerateStructure where -import Dodge.RandomHelp +import RandomHelp import Data.Tree import Control.Monad.State -import System.Random {- Single branched tree (a trunk). -} treePath :: Int -> Tree () treePath 0 = Node () [] diff --git a/src/Dodge/WorldEvent/Explosion.hs b/src/Dodge/WorldEvent/Explosion.hs index 34d718ee9..d71017a92 100644 --- a/src/Dodge/WorldEvent/Explosion.hs +++ b/src/Dodge/WorldEvent/Explosion.hs @@ -14,7 +14,7 @@ import Dodge.Zone import Dodge.Base.Collide import Dodge.WorldEvent.SpawnParticle --import Dodge.WorldEvent.Flash -import Dodge.RandomHelp +import RandomHelp import Dodge.SoundLogic import Dodge.WorldEvent.Shockwave import Geometry @@ -25,7 +25,6 @@ import LensHelp import Control.Monad.State import Data.List --import Data.Maybe -import System.Random makePoisonExplosionAt :: Point2 -- ^ Position diff --git a/src/Dodge/WorldEvent/Sound.hs b/src/Dodge/WorldEvent/Sound.hs index 998f306c1..f70cf86d1 100644 --- a/src/Dodge/WorldEvent/Sound.hs +++ b/src/Dodge/WorldEvent/Sound.hs @@ -8,7 +8,7 @@ import Dodge.Data import Dodge.SoundLogic import Sound.Data import Geometry.Data -import Dodge.RandomHelp +import RandomHelp import Control.Lens import Control.Monad.State.Lazy diff --git a/src/Dodge/WorldEvent/SpawnParticle.hs b/src/Dodge/WorldEvent/SpawnParticle.hs index 477293ba9..db2555a39 100644 --- a/src/Dodge/WorldEvent/SpawnParticle.hs +++ b/src/Dodge/WorldEvent/SpawnParticle.hs @@ -18,13 +18,12 @@ import Dodge.WorldEvent.Cloud import Dodge.WorldEvent.Flash import Dodge.WorldEvent.Shockwave import Dodge.SoundLogic -import Dodge.RandomHelp +import RandomHelp import Picture import Geometry import qualified IntMapHelp as IM import LensHelp -import System.Random import Control.Monad.State import Data.Tuple aFlameParticle diff --git a/src/TreeHelp.hs b/src/TreeHelp.hs index 8ad31c84c..15c64f9f7 100644 --- a/src/TreeHelp.hs +++ b/src/TreeHelp.hs @@ -22,13 +22,12 @@ module TreeHelp , updateRandNode , safeUpdateSingleNode ) where -import Dodge.RandomHelp +import RandomHelp import Data.Maybe import Data.Tree.Lens import Data.Tree import Control.Monad.State -import System.Random import Control.Lens {- | Creates a linear tree.