module Dodge.Randify ( gRandify, runStateWorld, ) where import Control.Lens import Control.Monad.State import Dodge.Data.GenWorld import System.Random gRandify :: GenWorld -> State StdGen GenWorld -> GenWorld gRandify gw mw = let (gw', g) = runState mw (_randGen $ _gwWorld gw) in gw' & gwWorld . randGen .~ g -- this can possibly be done using zoom in a clever way runStateWorld :: World -> State StdGen World -> World runStateWorld gw mw = let (gw', g) = runState mw (_randGen gw) in gw' & randGen .~ g