Allow specifying seed on startup
Allow specifying the seed for the game's global RNG on startup, and print the seed when the game exits. This'll allow us to more reliably reproduce bugs - yay!
This commit is contained in:
parent
d2b81df6b8
commit
f1197be186
4 changed files with 68 additions and 25 deletions
|
|
@ -6,6 +6,7 @@ module Xanthous.Game.Lenses
|
|||
, characterPosition
|
||||
, updateCharacterVision
|
||||
, getInitialState
|
||||
, initialStateFromSeed
|
||||
|
||||
-- * Collisions
|
||||
, Collision(..)
|
||||
|
|
@ -16,6 +17,7 @@ import Xanthous.Prelude
|
|||
--------------------------------------------------------------------------------
|
||||
import System.Random
|
||||
import Control.Monad.State
|
||||
import Control.Monad.Random (getRandom)
|
||||
--------------------------------------------------------------------------------
|
||||
import Xanthous.Game.State
|
||||
import Xanthous.Data
|
||||
|
|
@ -28,9 +30,12 @@ import Xanthous.Entities.Creature (Creature)
|
|||
--------------------------------------------------------------------------------
|
||||
|
||||
getInitialState :: IO GameState
|
||||
getInitialState = do
|
||||
_randomGen <- getStdGen
|
||||
let char = mkCharacter
|
||||
getInitialState = initialStateFromSeed <$> getRandom
|
||||
|
||||
initialStateFromSeed :: Int -> GameState
|
||||
initialStateFromSeed seed =
|
||||
let _randomGen = mkStdGen seed
|
||||
char = mkCharacter
|
||||
(_characterEntityID, _entities)
|
||||
= EntityMap.insertAtReturningID
|
||||
(Position 0 0)
|
||||
|
|
@ -42,7 +47,7 @@ getInitialState = do
|
|||
_debugState = DebugState
|
||||
{ _allRevealed = False
|
||||
}
|
||||
pure GameState {..}
|
||||
in GameState {..}
|
||||
|
||||
|
||||
positionedCharacter :: Lens' GameState (Positioned Character)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue