summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid McMackins II <contact@mcmackins.org>2017-08-01 06:29:07 -0500
committerDavid McMackins II <contact@mcmackins.org>2017-08-01 06:29:07 -0500
commit8a7f2c7449f2309931ba91c35a2ea3c324101396 (patch)
treeea514ee4462321e0b997a0997ad42b397750e5db
parentdf0e7abb5ce332cec7eea386a087a7b8120b8a34 (diff)
Pre-allocate piece list
-rw-r--r--serverthread.lua19
1 files changed, 15 insertions, 4 deletions
diff --git a/serverthread.lua b/serverthread.lua
index 3b8d381..50a5d92 100644
--- a/serverthread.lua
+++ b/serverthread.lua
@@ -53,19 +53,30 @@ function Server:_cleanup()
self._srv:close()
end
+function Server:_addpiece(new)
+ for i,piece in ipairs(self._pieces) do
+ if not piece then
+ self._pieces[i] = new
+ return
+ end
+ end
+end
+
function Server:_initrow(start, y)
local board_dim = BOARD_SIZE / boardsqsize()
for i=0,3 do
local x = start + i * 2
- table.insert(self._pieces, Piece(x, y, 1))
- table.insert(self._pieces, Piece(board_dim - (x - 1),
- board_dim - (y - 1),
- 2))
+ self:_addpiece(Piece(x, y, 1))
+ self:_addpiece(Piece(board_dim - (x - 1), board_dim - (y - 1), 2))
end
end
function Server:_resetgame()
self._pieces = {}
+ for _ = 1,32 do
+ table.insert(self._pieces, nil)
+ end
+
self:_initrow(2, 1)
self:_initrow(1, 2)
self:_initrow(2, 3)