From a6a3841d361ae941722be1f6f633fa8ed4a6d72c Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 4 Oct 2021 13:51:20 +0100 Subject: [PATCH] Add paths to procedurally generated corner rooms --- src/Dodge/Room/Procedural.hs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/Dodge/Room/Procedural.hs b/src/Dodge/Room/Procedural.hs index e454cf06c..38c91d87c 100644 --- a/src/Dodge/Room/Procedural.hs +++ b/src/Dodge/Room/Procedural.hs @@ -75,10 +75,10 @@ combineRooms :: Room -> Room -> Room combineRooms r r' = defaultRoom { _rmPolys = _rmPolys r ++ _rmPolys r' , _rmLinks = _rmLinks r ++ _rmLinks r' - , _rmPath = map (shiftPathBy $ _rmShift r) (_rmPath r ) - ++ map (shiftPathBy $ _rmShift r') (_rmPath r') - , _rmPS = map (shiftPlacement $ _rmShift r) (_rmPS r) - ++ map (shiftPlacement $ _rmShift r') (_rmPS r') + , _rmPath = (_rmPath r ) + ++ (_rmPath r') + , _rmPS = map (shiftPlacement $ _rmShift r) (_rmPS r) + ++ map (shiftPlacement $ _rmShift r') (_rmPS r') , _rmBound = _rmBound r ++ _rmBound r' , _rmFloor = _rmFloor r ++ _rmFloor r' , _rmShift = (V2 0 0 , 0) @@ -106,7 +106,14 @@ quarterRoomFlat w = do pure $ defaultRoom { _rmPolys = [ [V2 0 0,V2 w w,V2 (-w) w] ] , _rmLinks = [(V2 0 w, 0)] - , _rmPath = [(V2 0 w,V2 0 0),(V2 0 0,V2 0 w)] + , _rmPath = concatMap doublePair + [(V2 0 w,V2 0 (w-20)) + ,(V2 0 (w-20),V2 (w-20) (w-20)) + ,(V2 0 (w-20),V2 (55-w) (w-20)) + ,(V2 (55-w) (w-20),V2 (20-w) (w-20)) + ,(V2 0 (w-20),V2 0 0) + ,(V2 (55-w) (w-20),V2 0 0) + ] , _rmPS = b , _rmBound = [[V2 0 0,V2 w w,V2 (-w) w]] } @@ -136,8 +143,17 @@ fourthCornerWall w = do [(V2 (w/2) (3*w/2), negate $ pi/4) ,(V2 (negate $ w/2) (3*w/2), pi/4) ] - , _rmPath = [(V2 0 0,V2 w 0) - ,(V2 0 0,V2 w w) + , _rmPath = concatMap doublePair + [(V2 (0.5*w) (1.5*w),V2 (0.5*w-20) (1.5*w-20)) + ,(V2 (-0.5*w) (1.5*w),V2 (-0.5*w+20) (1.5*w-20)) + ,(V2 0 (2*w-40),V2 (-0.5*w+20) (1.5*w-20)) + ,(V2 0 (2*w-40),V2 (0.5*w-20) (1.5*w-20)) + ,(V2 (w-20) (w-20),V2 (0.5*w-20) (1.5*w-20)) + ,(V2 (20-w) (w-20),V2 (-0.5*w+20) (1.5*w-20)) + --,(V2 (40-w) (w),V2 0 (w-40)) + ,(V2 (20-w) (w-20),V2 0 (w-40)) + ,(V2 0 0,V2 0 (w-40)) +-- ,(V2 (20-w) (w-20),V2 (40-w) (w)) ] , _rmPS = b , _rmBound = [map toV2 [(w,w),(0,2*w),(-w,w)]] @@ -166,7 +182,8 @@ randomFourCornerRoom :: RandomGen g => State g Room randomFourCornerRoom = do corners <- replicateM 4 . join $ takeOne [quarterRoomFlat 100, fourthCornerWall 100] nItms <- state $ randomR (1,2) - itms <- takeN nItms $ fmap PutFlIt $ [autoRadar,autoSonar,remoteLauncher,jetPack,blinkGun] ++ replicate 5 (medkit 500) + itms <- takeN nItms $ fmap PutFlIt $ [autoRadar,autoSonar,remoteLauncher,jetPack,blinkGun] + ++ replicate 5 (medkit 500) nCrits <- state $ randomR (1,3) crits <- takeN nCrits $ fmap PutCrit $ [spreadGunCrit,pistolCrit,autoCrit,armourChaseCrit] ++ replicate 20 chaseCrit