Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ obj
bin
highscore.txt
.suo
checkpoint.txt
17 changes: 16 additions & 1 deletion GameController.fs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ open System.Drawing
open System.IO

let highScoreFile = "highscore.txt"
let checkpointFile = "checkpoint.txt"
let timeToLoad = 3000.
let bubbleSpeed = 0.02
let bubbleHeight = 1.
Expand Down Expand Up @@ -59,9 +60,20 @@ let loadHighScore () =
| _ -> 0
else 0

let loadCheckpoint () =
if File.Exists checkpointFile then
let text = File.ReadAllText checkpointFile
match System.Int32.TryParse text with
| true, v -> v
| _ -> 1
else 1

let saveHighScore score =
File.WriteAllText (highScoreFile, string score)

let saveCheckpoint level =
File.WriteAllText (checkpointFile, string level)

let advanceGame (runState : RunState) =
let elapsed = runState.elapsed
function
Expand All @@ -70,7 +82,8 @@ let advanceGame (runState : RunState) =
let highScore = loadHighScore ()
Title highScore |> Some
| Some (Title _) when runState.WasJustPressed Keys.Enter ->
Loading (elapsed, 1, maxLevel, 0) |> Some
let checkpoint = loadCheckpoint ()
Loading (elapsed, checkpoint, maxLevel, 0) |> Some
| Some (Loading (t, l, _, score)) when elapsed - t > timeToLoad ->
getLevelModel levels.[l] l score runState.elapsed |> Some
| Some (Playing worldState) when hasReset runState worldState ->
Expand All @@ -83,8 +96,10 @@ let advanceGame (runState : RunState) =
let score = worldState.knight.score
let highScore = loadHighScore ()
if score > highScore then saveHighScore score |> ignore
saveCheckpoint (1)
Some <| Victory (score, max score highScore)
| Some (Playing worldState) when hasWarpedOut runState worldState ->
saveCheckpoint (worldState.level + 1)
Loading (elapsed, worldState.level + 1, maxLevel, worldState.knight.score) |> Some
| Some (Playing worldState) ->
{ worldState with events = [] }
Expand Down