From 18101c4f43a1dccc3465aa019245a52a8eebd7cf Mon Sep 17 00:00:00 2001 From: "theo@manjaro" Date: Wed, 9 Mar 2022 17:20:25 +0100 Subject: [PATCH] Animation for position hints --- objects/circle.lua | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/objects/circle.lua b/objects/circle.lua index 5ef2405..b43b27b 100644 --- a/objects/circle.lua +++ b/objects/circle.lua @@ -9,16 +9,22 @@ function gen:new(game,x,y,color,grid) Circle.grid = grid Circle.color = color Circle.shadowsprite = game:newImage("circles/shadow.png") + Circle.shadowpos = {} + Circle.moves = {} Circle.sprites = {game:newImage("circles/regular/"..color..".png"),game:newImage("circles/selected/"..color..".png")} Circle:register("Circle") - Circle:register(color) - Circle.selected = false + Circle:register(color) Circle.selected = false Circle.highlight = false Circle.highlightTimer = game:Timer(0.08) function Circle:step(dt) self.drawx = self.drawx + (self.rect.x-self.drawx)/10 self.drawy = self.drawy + (self.rect.y-self.drawy)/10 + local i = 1 + for i=1,#self.moves do + self.shadowpos[i][1]= self.shadowpos[i][1] + (self.moves[i][1]-self.shadowpos[i][1])/10 + self.shadowpos[i][2]= self.shadowpos[i][2] + (self.moves[i][2]-self.shadowpos[i][2])/10 + end if self.highlight then self.highlightTimer:tick(dt) @@ -41,13 +47,14 @@ function gen:new(game,x,y,color,grid) function Circle:draw() local spriteindex = 1 if self.selected or self.highlight and self.highlightTimer.loops%2==0 then spriteindex = 2 end - lg.draw(self.sprites[spriteindex],self.drawx-self.game.camerax-self.spriteoffx,self.drawy-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) + --lg.draw(self.shadowsprite,self.moves[i][1]-self.game.camerax-self.spriteoffx,self.moves[i][2]-self.game.cameray-self.spriteoffy) + lg.draw(self.shadowsprite,self.shadowpos[i][1]-self.game.camerax-self.spriteoffx,self.shadowpos[i][2]-self.game.cameray-self.spriteoffy) end end + lg.draw(self.sprites[spriteindex],self.drawx-self.game.camerax-self.spriteoffx,self.drawy-self.game.cameray-self.spriteoffy) end function Circle:MouseCallback(x,y,presses) @@ -58,11 +65,20 @@ function gen:new(game,x,y,color,grid) for i=1,#c do if c[i]~=self then c[i].selected = false end end + local pastselected = self.selected self.selected = not self.selected self.depth = 1 if self.selected then - self.moves = self:findAvailableMoves() - self.depth = 2 + if not pastselected then + self.moves = self:findAvailableMoves() + self.shadowpos = {} + local i = 1 + self.shadowpos = {} + for i=1,#self.moves do + table.insert(self.shadowpos,{self.rect.x,self.rect.y}) + end + self.depth = 2 + end end else objs = self.game:findName(self:getTurn())