]> Untitled Git - lightcycles-love.git/blobdiff - player.lua
Increased player speed
[lightcycles-love.git] / player.lua
index 387b54f303c8bdd7f1a79afb9934ffbd0fa63d6f..0606cb8fa28253dff359af11d7c803f9d25c83f8 100644 (file)
@@ -1,14 +1,15 @@
 require 'vec2'
 
 Player = {}
 require 'vec2'
 
 Player = {}
-Player.name = 'player'
+Player.name = 'none'
 Player.color = {255, 0, 0}
 Player.width = 5
 Player.height = 5
 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.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),
 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 = o or {}
     setmetatable(o, self)
     self.__index = self
+    o.path.vector = o.position
     o:recordPosition()
     return o
 end
 
     o:recordPosition()
     return o
 end
 
+function Player:__tostring()
+    return self.name
+end
+
 function Player:drawPath()
 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.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)
     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()
     self:drawPath()
-    table.remove(self.path)
-    table.remove(self.path)
 end
 
 function Player:recordPosition()
 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()
 end
 
 function Player:multiple_keys_are_pressed()
@@ -77,5 +97,5 @@ function Player:update(dt)
             end
         end
     end
             end
         end
     end
-    self.position = self.position + self.vector * self.acceleration * dt
+    self.position:add(self.vector * self.acceleration * dt)
 end
 end