diff options
| -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 | 
