Can now move the circles
This commit is contained in:
parent
8f7b5fff0a
commit
4208f706fd
@ -18,17 +18,79 @@ function gen:new(game,x,y,color,grid)
|
|||||||
local spriteindex = 1
|
local spriteindex = 1
|
||||||
if self.selected then spriteindex = 2 end
|
if self.selected then spriteindex = 2 end
|
||||||
lg.draw(self.sprites[spriteindex],self.rect[1]-self.game.camerax-self.spriteoffx,self.rect[2]-self.game.cameray-self.spriteoffy)
|
lg.draw(self.sprites[spriteindex],self.rect[1]-self.game.camerax-self.spriteoffx,self.rect[2]-self.game.cameray-self.spriteoffy)
|
||||||
|
if self.selected then
|
||||||
|
local i
|
||||||
|
for i=1,#self.moves do
|
||||||
|
lg.draw(self.shadowsprite,self.moves[i][1]-self.game.camerax-self.spriteoffx,self.moves[i][2]-self.game.cameray-self.spriteoffy)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Circle:MouseCallback(x,y,presses)
|
function Circle:MouseCallback(x,y,presses)
|
||||||
if self.rect:collidepoint(x,y) then
|
if self.rect:collidepoint(x,y) then
|
||||||
local c = self.game:findName(self.color)
|
local c = self.game:findName("Circle")
|
||||||
local i
|
local i
|
||||||
for i=1,#c do
|
for i=1,#c do
|
||||||
if c[i]~=self then c[i].selected = false end
|
if c[i]~=self then c[i].selected = false end
|
||||||
end
|
end
|
||||||
self.selected = not self.selected
|
self.selected = not self.selected
|
||||||
|
self.depth = 1
|
||||||
|
if self.selected then
|
||||||
|
self.moves = self:findAvailableMoves()
|
||||||
|
self.depth = 2
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
if self.selected then
|
||||||
|
local i
|
||||||
|
for i=1,#self.moves do
|
||||||
|
rect = self.game.rect:new(self.moves[i][1],self.moves[i][2],self.cellsize,self.cellsize)
|
||||||
|
if rect:collidepoint(x,y) then
|
||||||
|
self.rect:move_ip(self.moves[i][1],self.moves[i][2])
|
||||||
|
self.selected = false
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Circle:findAvailableMoves()
|
||||||
|
local moves = {}
|
||||||
|
local movx
|
||||||
|
local movy
|
||||||
|
local offx
|
||||||
|
local offy
|
||||||
|
obj = self.game:findName("Circle")
|
||||||
|
|
||||||
|
function ValidMove(x,y)
|
||||||
|
local i
|
||||||
|
x = self.rect.x+x+self.cellsize/2
|
||||||
|
y = self.rect.y+y+self.cellsize/2
|
||||||
|
local result = self.grid.rect:collidepoint(x,y)
|
||||||
|
for i=1,#obj do
|
||||||
|
if obj[i].rect:collidepoint(x,y) then
|
||||||
|
result = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
for movx=-1,1 do
|
||||||
|
for movy=-1,1 do
|
||||||
|
if not (movx==0 and movy==0) then
|
||||||
|
offx = movx*self.cellsize
|
||||||
|
offy = movy*self.cellsize
|
||||||
|
while ValidMove(offx+movx*self.cellsize,offy+movy*self.cellsize) do
|
||||||
|
offx = offx + movx*self.cellsize
|
||||||
|
offy = offy + movy*self.cellsize
|
||||||
|
end
|
||||||
|
if ValidMove(offx,offy) then
|
||||||
|
table.insert(moves,{offx+self.rect.x,offy+self.rect.y})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return moves
|
||||||
end
|
end
|
||||||
|
|
||||||
return Circle
|
return Circle
|
||||||
|
Loading…
Reference in New Issue
Block a user