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