26 lines
600 B
Haskell
26 lines
600 B
Haskell
module Dodge.Save
|
|
( storeLevel
|
|
, loadStoredLevel
|
|
, doQuicksave
|
|
)
|
|
where
|
|
import Dodge.Data
|
|
|
|
import Data.Maybe
|
|
import Control.Lens
|
|
import qualified Data.Set as S
|
|
|
|
storeLevel :: World -> World
|
|
storeLevel w = case _storedLevel w of
|
|
Nothing -> w & storedLevel ?~ clearKeys w
|
|
_ -> w
|
|
|
|
loadStoredLevel :: World -> World
|
|
loadStoredLevel w = fromMaybe w $ _storedLevel w <&> quicksaveLevel .~ _quicksaveLevel w
|
|
|
|
doQuicksave :: World -> World
|
|
doQuicksave w = w & quicksaveLevel ?~ clearKeys w
|
|
|
|
clearKeys :: World -> World
|
|
clearKeys = (keys .~ S.empty) . (mouseButtons .~ S.empty)
|