X-Git-Url: http://git.purplebirdman.com/lightcycles-love.git/blobdiff_plain/0c014b54ddd52d3ca1ed007a7c2562dfa9514c99..HEAD:/player.lua diff --git a/player.lua b/player.lua index 387b54f..0606cb8 100644 --- a/player.lua +++ b/player.lua @@ -1,14 +1,15 @@ require 'vec2' Player = {} -Player.name = 'player' +Player.name = 'none' Player.color = {255, 0, 0} Player.width = 5 Player.height = 5 -Player.acceleration = 100 +Player.acceleration = 200 Player.position = vec2:new(0, 0) Player.vector = vec2:new(0, 0) Player.path = {} +Player.path.vector = Player.position Player.vectors = { up = vec2:new(0, -1), down = vec2:new(0, 1), @@ -26,32 +27,51 @@ function Player:new(o) o = o or {} setmetatable(o, self) self.__index = self + o.path.vector = o.position o:recordPosition() return o end +function Player:__tostring() + return self.name +end + function Player:drawPath() - if #self.path >= 4 then + local points = {} + local node = self.path + while node do + table.insert(points, node.vector.x) + table.insert(points, node.vector.y) + node = node.prev + end + if #points >= 4 then love.graphics.setLineWidth(2) love.graphics.setColor(self.color) - love.graphics.line(self.path) + love.graphics.line(points) end end function Player:draw() love.graphics.setColor(self.color) - love.graphics.rectangle('fill', self.position.x, self.position.y, self.width, self.height) - - -- add current position - self:recordPosition() + love.graphics.rectangle( + 'fill', + self.position.x-self.width/2, + self.position.y-self.height/2, + self.width, + self.height + ) self:drawPath() - table.remove(self.path) - table.remove(self.path) end function Player:recordPosition() - table.insert(self.path, self.position.x + self.width/2) - table.insert(self.path, self.position.y + self.height/2) + local v = vec2:new(self.position.x, self.position.y) + self.position = v + print('Recording position for '..tostring(self)..': '..tostring(self.position)) + local node = {} + node.vector = v + node.prev = self.path + self.path.next = node + self.path = node end function Player:multiple_keys_are_pressed() @@ -77,5 +97,5 @@ function Player:update(dt) end end end - self.position = self.position + self.vector * self.acceleration * dt + self.position:add(self.vector * self.acceleration * dt) end