8 scene.width = love.graphics.getWidth()
9 scene.height = love.graphics.getHeight()
12 scene.grid.bgcolor = {0.2, 0.2, 0.5}
13 scene.grid.linecolor = {0.3, 0.3, 0.6}
18 table.insert(scene.players, require('players/1'))
19 table.insert(scene.players, require('players/2'))
23 function scene:drawGrid()
24 love.graphics.setBackgroundColor(self.grid.bgcolor)
25 love.graphics.setColor(self.grid.linecolor)
27 for x=0,self.width,self.grid.delta do
28 love.graphics.line(x, 0, x, self.height)
30 for y=0,self.height,self.grid.delta do
31 love.graphics.line(0, y, self.width, y)
35 function scene:drawPlayers()
36 for _,player in pairs(self.players) do
47 function scene:updatePlayers(dt)
48 for _,player in pairs(self.players) do
53 function doesLineIntersectPlayerPaths(path, x1, y1, x2, y2)
57 function scene:handleCollisions()
58 -- calculate the last line for each player from current position
59 -- check if line intersects any other path line
60 -- if so, raise collision event for player
61 for _,player in pairs(self.players) do
62 local x1 = player.path[#player.path-1]
63 local y1 = player.path[#player.path]
64 local x2 = player.position.x
65 local y2 = player.position.y
67 -- check intersection against each existing path
68 for _,player2 in pairs(self.players) do
69 if doesLineIntersectPlayerPaths(player2.path, x1, y1, x2, y2) then
70 love.event.push('collision', player)
76 function scene:update(dt)
77 self:updatePlayers(dt)
78 self:handleCollisions()
83 for _,player in pairs(self.players) do
84 print(tostring(player)..' generated '.. #player.path / 2 .. ' path points')