Cleaver lua refactor
This commit is contained in:
parent
f55b1823f0
commit
e52e10c0c8
5 changed files with 100 additions and 67 deletions
79
cleaver.lua
Normal file
79
cleaver.lua
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
-- cleaver.lua
|
||||
Cleaver = {}
|
||||
Cleaver.__index = Cleaver
|
||||
|
||||
function Cleaver:new()
|
||||
local instance = setmetatable({}, Cleaver)
|
||||
instance.images = {}
|
||||
instance.state = "idle"
|
||||
instance.timer = 0
|
||||
instance.scorePending = false
|
||||
instance.score = 0
|
||||
return instance
|
||||
end
|
||||
|
||||
function Cleaver:loadImages()
|
||||
self.images.idle = love.graphics.newImage("assets/images/cleaver/cleaver-idle.png")
|
||||
self.images.windup = love.graphics.newImage("assets/images/cleaver/cleaver-windup.png")
|
||||
self.images.charged = love.graphics.newImage("assets/images/cleaver/cleaver-charged.png")
|
||||
self.images.chop = love.graphics.newImage("assets/images/cleaver/cleaver-chop.png")
|
||||
self.currentImage = self.images.idle
|
||||
end
|
||||
|
||||
function Cleaver:update(dt)
|
||||
if self.state == "windup" then
|
||||
self.timer = self.timer + dt
|
||||
if self.timer >= 0.2 then
|
||||
self.state = "charged"
|
||||
self.currentImage = self.images.charged
|
||||
end
|
||||
elseif self.state == "charged" then
|
||||
-- Stay in charged state until mouse is released
|
||||
elseif self.state == "chop" then
|
||||
self.timer = self.timer + dt
|
||||
if self.timer >= 0.1 then
|
||||
self.state = "idle"
|
||||
self.currentImage = self.images.idle
|
||||
self.timer = 0
|
||||
if self.scorePending then
|
||||
self.score = self.score + 1
|
||||
self.scorePending = false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Cleaver:draw()
|
||||
local x, y = love.mouse.getPosition()
|
||||
love.graphics.draw(self.currentImage, x - self.currentImage:getWidth() / 2, y - self.currentImage:getHeight() / 2)
|
||||
end
|
||||
|
||||
function Cleaver:mousepressed(button)
|
||||
if button == 1 then -- Left mouse button
|
||||
self.state = "windup"
|
||||
self.currentImage = self.images.windup
|
||||
self.timer = 0
|
||||
self.scorePending = false
|
||||
end
|
||||
end
|
||||
|
||||
function Cleaver:mousereleased(button)
|
||||
if button == 1 then -- Left mouse button
|
||||
if self.state == "charged" then
|
||||
self.state = "chop"
|
||||
self.currentImage = self.images.chop
|
||||
self.timer = 0
|
||||
self.scorePending = true
|
||||
elseif self.state == "windup" then
|
||||
self.state = "idle"
|
||||
self.currentImage = self.images.idle
|
||||
self.timer = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Cleaver:getScore()
|
||||
return self.score
|
||||
end
|
||||
|
||||
return Cleaver
|
||||
Loading…
Add table
Add a link
Reference in a new issue