Add untracked file
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user