Add untracked file

This commit is contained in:
jgk
2021-04-22 17:11:35 +02:00
parent fdac382c61
commit 4c7883697f
+50
View File
@@ -0,0 +1,50 @@
{-
Specification of rooms that teleport (between levels).
-}
module Dodge.Room.Teleport
where
import Dodge.Data
import Dodge.Base
import Dodge.Room.Data
import Dodge.Room.Procedural
import Dodge.Room.Placement
import Dodge.Layout
import Dodge.LevelGen.Data
import Geometry
import Picture
import Dodge.WorldEvent.Explosion
import Control.Lens
import Control.Monad.State
import System.Random
import qualified Data.Set as S
telRoomLev :: RandomGen g => Int -> State g Room
telRoomLev i = do
w <- state $ randomR (200,300)
h <- state $ randomR (200,300)
return $ roomRectAutoLinks w h & rmPS .~
[ PS (w/2,h/2) 0 $ PutPressPlate telPP
, PS (w/2,h/2+ 30) 0 $ putLamp
]
where
telPP = PressPlate
{ _ppPict = setDepth 0.5 . color red $ polygon ppFootprint
, _ppPos = (0,0)
, _ppRot = 0
, _ppEvent = levelReset
, _ppID = 0
, _ppText = "NEW LEVEL"
}
ppFootprint = rectNSEW 20 (-20) 20 (-20)
levelReset pp w
-- | crInPolygon (you w) (ppPoly pp) = undefined -- makeExplosionAt (_ppPos pp) $ startNewGame w
| dist (_crPos $ you w) (_ppPos pp) < 20 = makeExplosionAt (_ppPos pp) $ startNewGame w
| otherwise = w
ppPoly pp = map (+.+ (_ppPos pp)) ppFootprint
startNewGame w = w & worldTriggers %~ S.insert (ResetLevel i)
-- generateFromList levx
-- $ initialWorld
-- & randGen .~ _randGen w
-- & windowX .~ _windowX w
-- & windowY .~ _windowY w