diff options
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/space_vlaze/game.vim | 3 | ||||
| -rw-r--r-- | autoload/space_vlaze/leaderboard.vim | 43 | ||||
| -rw-r--r-- | autoload/space_vlaze/score.vim | 5 |
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 |
