aboutsummaryrefslogtreecommitdiffstats
path: root/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'autoload')
-rw-r--r--autoload/space_vlaze/game.vim3
-rw-r--r--autoload/space_vlaze/leaderboard.vim43
-rw-r--r--autoload/space_vlaze/score.vim5
3 files changed, 51 insertions, 0 deletions
diff --git a/autoload/space_vlaze/game.vim b/autoload/space_vlaze/game.vim
index 4c7703b..9915a26 100644
--- a/autoload/space_vlaze/game.vim
+++ b/autoload/space_vlaze/game.vim
@@ -160,4 +160,7 @@ function! space_vlaze#game#GameOver()
let text_y += 1
let text_x = text_x_orig
endfor
+
+ call space_vlaze#game#RenderBoard()
+ call space_vlaze#leaderboard#SaveHighScore()
endfunction
diff --git a/autoload/space_vlaze/leaderboard.vim b/autoload/space_vlaze/leaderboard.vim
new file mode 100644
index 0000000..5ad25dd
--- /dev/null
+++ b/autoload/space_vlaze/leaderboard.vim
@@ -0,0 +1,43 @@
+if !exists('s:LEADERBOARD_PATH')
+ let s:LEADERBOARD_PATH = resolve(expand('<sfile>:p:h')) . '/../../leaderboard.tsv'
+endif
+
+
+if !exists('s:PLAYER_NAME_PATH')
+ let s:PLAYER_NAME_PATH = resolve(expand('<sfile>:p:h')) . '/../../player_name.txt'
+endif
+
+
+function! space_vlaze#leaderboard#MaybePromptForName()
+ if !filereadable(s:PLAYER_NAME_PATH)
+ let name = space_vlaze#menus#Prompt('Enter your name: ')
+
+ call writefile([name], s:PLAYER_NAME_PATH)
+ endif
+endfunction
+
+
+function! space_vlaze#leaderboard#SaveHighScore()
+ call space_vlaze#leaderboard#MaybePromptForName()
+
+ if filereadable(s:LEADERBOARD_PATH)
+ let scores = readfile(s:LEADERBOARD_PATH)
+ let scores = add(scores, space_vlaze#score#Score())
+ let scores = sort(scores, 'space_vlaze#leaderboard#Sort')
+ call writefile(scores, s:LEADERBOARD_PATH)
+ else
+ call writefile([space_vlaze#score#Score()], s:LEADERBOARD_PATH)
+ endif
+endfunction
+
+
+" Sorting function that orders numbers from highest to lowest.
+" For use with the |sort()| Vim function
+function! space_vlaze#leaderboard#Sort(item1, item2)
+ return a:item1 ==# a:item2 ? 0 :
+ \ a:item1 ># a:item2 ? -1 : 1
+endfunction
+
+
+function! space_vlaze#leaderboard#RenderLeaderboard()
+endfunction
diff --git a/autoload/space_vlaze/score.vim b/autoload/space_vlaze/score.vim
index 0debfaa..c1aee64 100644
--- a/autoload/space_vlaze/score.vim
+++ b/autoload/space_vlaze/score.vim
@@ -3,6 +3,11 @@ function! space_vlaze#score#Initialize()
endfunction
+function! space_vlaze#score#Score()
+ return s:score
+endfunction
+
+
" Increment score by `num`
function! space_vlaze#score#IncrementScore(num)
let s:score += a:num