aboutsummaryrefslogtreecommitdiffstats
path: root/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'autoload')
-rw-r--r--autoload/space_vlaze/enemy.vim52
-rw-r--r--autoload/space_vlaze/game.vim18
2 files changed, 70 insertions, 0 deletions
diff --git a/autoload/space_vlaze/enemy.vim b/autoload/space_vlaze/enemy.vim
new file mode 100644
index 0000000..377c803
--- /dev/null
+++ b/autoload/space_vlaze/enemy.vim
@@ -0,0 +1,52 @@
+function! space_vlaze#enemy#EnemyCharacter()
+ return '♤'
+endfunction
+
+
+if !exists('s:MAX_ENEMIES_ON_BOARD')
+ let s:MAX_ENEMIES_ON_BOARD = 50
+endif
+
+if !exists('s:MIN_ENEMIES_ON_BOARD')
+ let s:MIN_ENEMIES_ON_BOARD = 50
+endif
+
+
+function! space_vlaze#enemy#AddEnemiesToBoard()
+ let ticks = space_vlaze#game#Ticks()
+
+ " At a 50ms refresh rate 100 ticks == 5 seconds
+ if ticks % 100 ==# 1
+ let new_enemy_count = ticks / 20
+
+ if new_enemy_count <# s:MIN_ENEMIES_ON_BOARD
+ let new_enemy_count = s:MIN_ENEMIES_ON_BOARD
+ endif
+
+ if new_enemy_count ># s:MAX_ENEMIES_ON_BOARD
+ let new_enemy_count = s:MAX_ENEMIES_ON_BOARD
+ endif
+
+ let i = 0
+ while i < new_enemy_count
+ call space_vlaze#enemy#DropEnemyAtRandomCoordinates()
+
+ let i += 1
+ endwhile
+ endif
+endfunction
+
+
+function! space_vlaze#enemy#DropEnemyAtRandomCoordinates()
+ let player_y = space_vlaze#player#PlayerY()
+ let player_x = space_vlaze#player#PlayerX()
+ let y = player_y
+ let x = player_x
+
+ while player_y ==# y && player_x ==# x
+ let y = space_vlaze#random#Random(space_vlaze#game#BoardHeight() - 1)
+ let x = space_vlaze#random#Random(space_vlaze#game#BoardWidth() - 1)
+ endwhile
+
+ call space_vlaze#game#SetBoardCell(y, x, space_vlaze#enemy#EnemyCharacter())
+endfunction
diff --git a/autoload/space_vlaze/game.vim b/autoload/space_vlaze/game.vim
index a1e00b3..29ba52b 100644
--- a/autoload/space_vlaze/game.vim
+++ b/autoload/space_vlaze/game.vim
@@ -2,6 +2,7 @@ function! space_vlaze#game#Init()
let s:loop = 1
let s:score = 0
let s:start_time = localtime()
+ let s:ticks = 1
call space_vlaze#game#SetupWindow()
call space_vlaze#colors#Initialize()
call space_vlaze#game#InitializeBoard()
@@ -10,7 +11,9 @@ function! space_vlaze#game#Init()
while s:loop ==# 1
sleep 50ms
call space_vlaze#mappings#Listen()
+ call space_vlaze#enemy#AddEnemiesToBoard()
call space_vlaze#game#RenderBoard()
+ let s:ticks += 1
endwhile
endfunction
@@ -94,6 +97,21 @@ function! space_vlaze#game#IsWithinBoard(y, x)
endfunction
+function! space_vlaze#game#BoardHeight()
+ return s:BOARD_HEIGHT
+endfunction
+
+
+function! space_vlaze#game#BoardWidth()
+ return s:BOARD_WIDTH
+endfunction
+
+
+function! space_vlaze#game#Ticks()
+ return s:ticks
+endfunction
+
+
function! space_vlaze#game#Quit()
let s:loop = -1
endfunction