Fix new game resize bug
This commit is contained in:
Binary file not shown.
@@ -7,6 +7,7 @@ import Dodge.Initialisation
|
|||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.Config.Data
|
import Dodge.Config.Data
|
||||||
import Dodge.Config.Update
|
import Dodge.Config.Update
|
||||||
|
import Dodge.Layout
|
||||||
|
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import qualified Data.Set as S
|
import qualified Data.Set as S
|
||||||
@@ -23,17 +24,14 @@ handlePressedKeyInMenu mState scode w = case mState of
|
|||||||
PauseMenu -> case scode of
|
PauseMenu -> case scode of
|
||||||
ScancodeEscape -> Nothing
|
ScancodeEscape -> Nothing
|
||||||
ScancodeR -> return $ fromMaybe w $ _storedLevel w
|
ScancodeR -> return $ fromMaybe w $ _storedLevel w
|
||||||
ScancodeN -> Just $ putSound $ generateLevel 1
|
ScancodeN -> startNewGame
|
||||||
$ initialWorld {_randGen = _randGen w}
|
|
||||||
ScancodeO -> goToOptionMenu w
|
ScancodeO -> goToOptionMenu w
|
||||||
ScancodeC -> goToControls w
|
ScancodeC -> goToControls w
|
||||||
_ -> unpause w
|
_ -> unpause w
|
||||||
GameOverMenu -> case scode of
|
GameOverMenu -> case scode of
|
||||||
ScancodeEscape -> Nothing
|
ScancodeEscape -> Nothing
|
||||||
ScancodeR -> Just $ fromMaybe w $ _storedLevel w
|
ScancodeR -> Just $ fromMaybe w $ _storedLevel w
|
||||||
ScancodeN -> Just $ putSound $ generateLevel 1
|
ScancodeN -> startNewGame
|
||||||
$ initialWorld
|
|
||||||
{_randGen = _randGen w}
|
|
||||||
ScancodeO -> goToOptionMenu w
|
ScancodeO -> goToOptionMenu w
|
||||||
ScancodeC -> goToControls w
|
ScancodeC -> goToControls w
|
||||||
_ -> Just w
|
_ -> Just w
|
||||||
@@ -52,12 +50,16 @@ handlePressedKeyInMenu mState scode w = case mState of
|
|||||||
unpause w' = Just . resumeSound $
|
unpause w' = Just . resumeSound $
|
||||||
w' {_menuLayers = []}
|
w' {_menuLayers = []}
|
||||||
startLevel = unpause . storeLevel
|
startLevel = unpause . storeLevel
|
||||||
putSound = id -- set loadedSounds (_loadedSounds w)
|
|
||||||
dec x = max 0 (x - 0.1)
|
dec x = max 0 (x - 0.1)
|
||||||
inc x = min 1 (x + 0.1)
|
inc x = min 1 (x + 0.1)
|
||||||
goToOptionMenu w = Just $ w & menuLayers %~ (OptionMenu :)
|
goToOptionMenu w = Just $ w & menuLayers %~ (OptionMenu :)
|
||||||
goToControls w = Just $ w & menuLayers %~ (ControlList :)
|
goToControls w = Just $ w & menuLayers %~ (ControlList :)
|
||||||
sw = w & sideEffects %~ (setVol (_config w) : )
|
sw = w & sideEffects %~ (setVol (_config w) : )
|
||||||
|
startNewGame = Just $ generateFromList levx
|
||||||
|
$ initialWorld
|
||||||
|
& randGen .~ _randGen w
|
||||||
|
& windowX .~ _windowX w
|
||||||
|
& windowY .~ _windowY w
|
||||||
|
|
||||||
storeLevel :: World -> World
|
storeLevel :: World -> World
|
||||||
storeLevel w = case _storedLevel w of
|
storeLevel w = case _storedLevel w of
|
||||||
|
|||||||
@@ -454,7 +454,7 @@ ltAutoGun = defaultAutoGun
|
|||||||
, _wpReloadState = 0
|
, _wpReloadState = 0
|
||||||
, _wpFireRate = 4
|
, _wpFireRate = 4
|
||||||
, _wpFireState = 0
|
, _wpFireState = 0
|
||||||
, _wpFire = shootWithSound 0 . withRandomDir 0.3
|
, _wpFire = shootWithSound 0 . withRandomDir 0.3 . withSidePush 50
|
||||||
. withMuzFlare $ withVelWthHiteff (30,0) 2 bulletEffect'
|
. withMuzFlare $ withVelWthHiteff (30,0) 2 bulletEffect'
|
||||||
, _wpSpread = 0.5
|
, _wpSpread = 0.5
|
||||||
, _wpRange = 20
|
, _wpRange = 20
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ module Dodge.Layout.Tree.Annotate
|
|||||||
where
|
where
|
||||||
import Dodge.RandomHelp
|
import Dodge.RandomHelp
|
||||||
import Dodge.Layout.Tree.Polymorphic
|
import Dodge.Layout.Tree.Polymorphic
|
||||||
|
import Dodge.Layout.Tree.Either
|
||||||
import Dodge.Room.Procedural
|
import Dodge.Room.Procedural
|
||||||
import Dodge.Room.Link
|
import Dodge.Room.Link
|
||||||
import Dodge.Room.Data
|
import Dodge.Room.Data
|
||||||
@@ -38,7 +39,13 @@ randomPadCorridors (Node x xs) = do
|
|||||||
|
|
||||||
annoToRoomTree :: RandomGen g => [Annotation] -> State g (Tree (Either Room Room))
|
annoToRoomTree :: RandomGen g => [Annotation] -> State g (Tree (Either Room Room))
|
||||||
annoToRoomTree [Corridor] = fmap (pure . Right) $ randomiseOutLinks corridor
|
annoToRoomTree [Corridor] = fmap (pure . Right) $ randomiseOutLinks corridor
|
||||||
annoToRoomTree [FirstWeapon] = weaponRoom
|
annoToRoomTree [FirstWeapon] = do
|
||||||
|
--firstWeapon <- takeOne $ [[branchRectWith weaponRoom,blockedCorridor]] ++ replicate 5 [weaponRoom]
|
||||||
|
branchWP <- branchRectWith weaponRoom
|
||||||
|
blockedC <- blockedCorridor
|
||||||
|
firstWeapon <- takeOne $ [return $ appendEitherTree branchWP [blockedC]] ++ replicate 5 weaponRoom
|
||||||
|
--firstWeapon <- takeOne $ replicate 5 weaponRoom
|
||||||
|
firstWeapon
|
||||||
annoToRoomTree _ = do
|
annoToRoomTree _ = do
|
||||||
w <- state $ randomR (100,400)
|
w <- state $ randomR (100,400)
|
||||||
h <- state $ randomR (200,400)
|
h <- state $ randomR (200,400)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Combining and composing trees with 'Either' nodes.
|
|||||||
-}
|
-}
|
||||||
module Dodge.Layout.Tree.Either
|
module Dodge.Layout.Tree.Either
|
||||||
( expandTreeBy
|
( expandTreeBy
|
||||||
|
, appendEitherTree
|
||||||
, connectRoom
|
, connectRoom
|
||||||
, deadRoom
|
, deadRoom
|
||||||
) where
|
) where
|
||||||
@@ -20,6 +21,16 @@ expandTreeBy f (Node x xs) = appendAndRemove $ f x
|
|||||||
appendAndRemove (Node (Left y) ys) = Node y (map appendAndRemove ys)
|
appendAndRemove (Node (Left y) ys) = Node y (map appendAndRemove ys)
|
||||||
appendAndRemove (Node (Right y) _ ) = Node y (map (expandTreeBy f) xs)
|
appendAndRemove (Node (Right y) _ ) = Node y (map (expandTreeBy f) xs)
|
||||||
|
|
||||||
|
-- | Appends a second either forest at the 'Right' elements of a first either
|
||||||
|
-- tree.
|
||||||
|
-- Makes such 'Right' elements into 'Left's.
|
||||||
|
appendEitherTree
|
||||||
|
:: Tree (Either a a) -- ^ The first tree
|
||||||
|
-> [Tree (Either a a)] -- ^ The forest to append
|
||||||
|
-> Tree (Either a a)
|
||||||
|
appendEitherTree (Node (Left x) ts) ts' = Node (Left x) $ map (flip appendEitherTree ts') ts
|
||||||
|
appendEitherTree (Node (Right x) ts) ts' = Node (Left x) ts'
|
||||||
|
|
||||||
removeEither (Left y) = y
|
removeEither (Left y) = y
|
||||||
removeEither (Right y) = y
|
removeEither (Right y) = y
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -392,6 +392,7 @@ blockedCorridor = do
|
|||||||
n <- state $ randomR (0,3)
|
n <- state $ randomR (0,3)
|
||||||
let plmnts = [PS (20,40) r $ PutBlock [5,5,5] (150/256, 75/256, 0, 250/256)
|
let plmnts = [PS (20,40) r $ PutBlock [5,5,5] (150/256, 75/256, 0, 250/256)
|
||||||
$ reverse $ rectNSWE 10 (-10) (-10) 10
|
$ reverse $ rectNSWE 10 (-10) (-10) 10
|
||||||
|
,PS (20,15) 0 $ putLamp
|
||||||
]
|
]
|
||||||
sequence $ treePost (replicate n $ fmap Left $ randomiseOutLinks corridor)
|
sequence $ treePost (replicate n $ fmap Left $ randomiseOutLinks corridor)
|
||||||
$ fmap Right $ return $ set rmPS plmnts corridor
|
$ fmap Right $ return $ set rmPS plmnts corridor
|
||||||
@@ -430,7 +431,9 @@ deadEndRoom = Room
|
|||||||
where lnks = [((0,30) ,0)
|
where lnks = [((0,30) ,0)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
{-
|
||||||
|
A random Either tree with a weapon and melee monster challenge.
|
||||||
|
-}
|
||||||
weaponRoom :: RandomGen g => State g (Tree (Either Room Room))
|
weaponRoom :: RandomGen g => State g (Tree (Either Room Room))
|
||||||
weaponRoom = do
|
weaponRoom = do
|
||||||
x <- takeOne [ weaponEmptyRoom
|
x <- takeOne [ weaponEmptyRoom
|
||||||
|
|||||||
Reference in New Issue
Block a user