Refactor, try to limit dependencies

This commit is contained in:
2022-07-28 00:59:56 +01:00
parent 8aa5c17ab9
commit 160560af5f
418 changed files with 15104 additions and 13342 deletions
+116 -85
View File
@@ -1,93 +1,125 @@
--{-# LANGUAGE TupleSections #-}
module Dodge.LockAndKey where
import Dodge.Cleat
import Dodge.Data
import Dodge.Tree
--import Dodge.LevelGen.Data
import Dodge.Room
import RandomHelp
import Dodge.Creature
import Dodge.Item.Craftable
import Dodge.Item.Weapon.BulletGun.Rod
import Dodge.Data.GenWorld
import Dodge.Item
--import LensHelp
--import Dodge.Item.Equipment
import Dodge.Room
import Dodge.Tree
import RandomHelp
bossKeyItems :: RandomGen g => [(State g (Tree Room), State g ItemBaseType)]
bossKeyItems = [(return . cleatOnward <$> bossRoom autoCrit, takeOne [HELD PISTOL])]
bossKeyItems :: RandomGen g => [ (State g (Tree Room), State g ItemBaseType) ]
bossKeyItems = [(return . cleatOnward <$> bossRoom autoCrit, takeOne [HELD PISTOL]) ]
lockRoomMultiItems :: RandomGen g => [ ( State g (MetaTree Room String) , State g [ItemBaseType] ) ]
lockRoomMultiItems =
[ (blinkAcrossChallenge, takeOne [[LEFT BLINKERUNSAFE,EQUIP $ AUTODETECTOR WALLDETECTOR]
,[LEFT BLINKERUNSAFE,HELD $ HELDDETECTOR WALLDETECTOR]
]
lockRoomMultiItems :: RandomGen g => [(State g (MetaTree Room String), State g [ItemBaseType])]
lockRoomMultiItems =
[
( blinkAcrossChallenge
, takeOne
[ [LEFT BLINKERUNSAFE, EQUIP $ AUTODETECTOR WALLDETECTOR]
, [LEFT BLINKERUNSAFE, HELD $ HELDDETECTOR WALLDETECTOR]
]
)
]
lockRoomKeyItems :: RandomGen g => [ (Int -> State g (MetaTree Room String) , State g ItemBaseType ) ]
lockRoomKeyItems =
[(lasCenSensEdge, takeOne [HELD LAUNCHER,HELD LASGUN,HELD SPARKGUN,HELD FLATSHIELD,HELD FORCEFIELDGUN] )
,(sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE,HELD SPARKGUN] )
,(sensorRoomRunPast FLAMING, takeOne [HELD FLAMESPITTER, CRAFT INCENDIARYMODULE] )
,(sensorRoomRunPast LASERING, return $ HELD LASGUN )
,(const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3))
,(const longRoomRunPast, takeOne [HELD SNIPERRIFLE,HELD FLATSHIELD])
,(const glassLessonRunPast, takeOne [HELD LASGUN])
,(const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD,HELD FORCEFIELDGUN])
,(keyCardRoomRunPast 0, return (HELD $ KEYCARD 0))
lockRoomKeyItems :: RandomGen g => [(Int -> State g (MetaTree Room String), State g ItemBaseType)]
lockRoomKeyItems =
[ (lasCenSensEdge, takeOne [HELD LAUNCHER, HELD LASGUN, HELD SPARKGUN, HELD FLATSHIELD, HELD FORCEFIELDGUN])
, (sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE, HELD SPARKGUN])
, (sensorRoomRunPast FLAMING, takeOne [HELD FLAMESPITTER, CRAFT INCENDIARYMODULE])
, (sensorRoomRunPast LASERING, return $ HELD LASGUN)
, (const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3))
, (const longRoomRunPast, takeOne [HELD SNIPERRIFLE, HELD FLATSHIELD])
, (const glassLessonRunPast, takeOne [HELD LASGUN])
, (const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD, HELD FORCEFIELDGUN])
, (keyCardRoomRunPast 0, return (HELD $ KEYCARD 0))
]
keyCardRunPastRand :: RandomGen g => [ (Int -> State g (MetaTree Room String) , State g ItemBaseType ) ]
keyCardRunPastRand = [(keyCardRoomRunPast 0, return (HELD $ KEYCARD 0)) ]
keyCardRunPastRand :: RandomGen g => [(Int -> State g (MetaTree Room String), State g ItemBaseType)]
keyCardRunPastRand = [(keyCardRoomRunPast 0, return (HELD $ KEYCARD 0))]
itemRooms :: RandomGen g => [(ItemBaseType, State g (MetaTree Room String))]
itemRooms =
[ (HELD LAUNCHER , join $ takeOne
[corridorBoss launcherCrit
, rc $ map makeTypeCraft [TUBE,TUBE,HARDWARE]
]
)
, (HELD (MINIGUNX 3) , join $ takeOne
[roomMiniIntro
, rc $ map makeTypeCraft ([MOTOR,HARDWARE] ++ replicate 6 PIPE)
] )
, (HELD LASGUN , join $ takeOne
[rc $ map makeTypeCraft [PRISM,TRANSFORMER,PIPE]
]
)
, (HELD SPARKGUN , join $ takeOne
[rc $ map makeTypeCraft [TRANSFORMER,CAN,CAN]
]
)
, (HELD FLAMESPITTER , join $ takeOne
[rc $ map makeTypeCraft [LIGHTER,PUMP,CAN]
]
)
, (HELD FLATSHIELD , join $ takeOne
[rc $ map makeTypeCraft [PLATE,PLATE]
,rc $ map makeTypeCraft [DRUM,DRUM,PLATE]
]
)
, (HELD SNIPERRIFLE , join $ takeOne
[rc [sniperRifle]
]
)
, (HELD FORCEFIELDGUN , join $ takeOne
[rc [forceFieldGun]
]
)
, (HELD $ KEYCARD 0 , join $ takeOne
[rc [keyCard 0]
]
)
, (CRAFT INCENDIARYMODULE , join $ takeOne
[rc [incendiaryModule]
]
)
, (CRAFT STATICMODULE , join $ takeOne
[rc [makeTypeCraft STATICMODULE]
]
)
itemRooms =
[
( HELD LAUNCHER
, join $
takeOne
[ corridorBoss launcherCrit
, rc $ map makeTypeCraft [TUBE, TUBE, HARDWARE]
]
)
,
( HELD (MINIGUNX 3)
, join $
takeOne
[ roomMiniIntro
, rc $ map makeTypeCraft ([MOTOR, HARDWARE] ++ replicate 6 PIPE)
]
)
,
( HELD LASGUN
, join $
takeOne
[ rc $ map makeTypeCraft [PRISM, TRANSFORMER, PIPE]
]
)
,
( HELD SPARKGUN
, join $
takeOne
[ rc $ map makeTypeCraft [TRANSFORMER, CAN, CAN]
]
)
,
( HELD FLAMESPITTER
, join $
takeOne
[ rc $ map makeTypeCraft [LIGHTER, PUMP, CAN]
]
)
,
( HELD FLATSHIELD
, join $
takeOne
[ rc $ map makeTypeCraft [PLATE, PLATE]
, rc $ map makeTypeCraft [DRUM, DRUM, PLATE]
]
)
,
( HELD SNIPERRIFLE
, join $
takeOne
[ rc [sniperRifle]
]
)
,
( HELD FORCEFIELDGUN
, join $
takeOne
[ rc [forceFieldGun]
]
)
,
( HELD $ KEYCARD 0
, join $
takeOne
[ rc [keyCard 0]
]
)
,
( CRAFT INCENDIARYMODULE
, join $
takeOne
[ rc [incendiaryModule]
]
)
,
( CRAFT STATICMODULE
, join $
takeOne
[ rc [makeTypeCraft STATICMODULE]
]
)
]
where
rc its = do
@@ -96,10 +128,10 @@ itemRooms =
someCrits :: RandomGen g => State g [Creature]
someCrits = do
nCrits <- state $ randomR (1,3)
fmap (take nCrits) . shuffle $ [spreadGunCrit,pistolCrit,autoCrit,armourChaseCrit]
++ replicate 20 chaseCrit
nCrits <- state $ randomR (1, 3)
fmap (take nCrits) . shuffle $
[spreadGunCrit, pistolCrit, autoCrit, armourChaseCrit]
++ replicate 20 chaseCrit
--addcrits :: RandomGen g => [Item] -> State g (Tree Room)
--addcrits its = do
@@ -107,9 +139,8 @@ someCrits = do
-- crits <- takeN nCrits <=< shuffle $ fmap PutCrit $ [spreadGunCrit,pistolCrit,autoCrit,armourChaseCrit]
-- return $ roomsContaining crits its
corridorBoss :: RandomGen g => Creature -> State g (MetaTree Room String)
corridorBoss cr = do
endroom <- bossRoom cr
rToOnward ("corridorBoss-"++_crName cr)
$ treeFromPost (replicate 5 corridor) endroom
rToOnward ("corridorBoss-" ++ _crName cr) $
treeFromPost (replicate 5 corridor) endroom