Fade animations

This commit is contained in:
Erkki Seppälä 2014-10-19 03:47:08 +03:00
parent 5b825d03d3
commit abaf614d44
2 changed files with 25 additions and 16 deletions

View file

@ -1,37 +1,45 @@
Class = require 'hump.class'
require 'entities/entity'
Animation = Class{
__includes = Entity,
AnimationFrames = Class {
frames = {},
curFrame = 0,
init = function(self, x, y, level, basename, numFrames, fps)
Entity.init(self, x, y, level)
init = function(self, basename, numFrames, fps)
for frame = 0, numFrames - 1 do
self.frames[frame] = love.graphics.newImage(string.format(basename, frame))
end
self.fps = fps
self.angle = 0
self.x = x
self.y = y
self.numFrames = numFrames
self.width = self.frames[0]:getWidth();
self.height = self.frames[0]:getHeight();
self.quad = love.graphics.newQuad(0, 0, self.width, self.height, self.width, self.height)
end
}
Animation = Class{
__includes = Entity,
curFrame = 0,
init = function(self, x, y, level, frames)
Entity.init(self, x, y, level)
self.frames = frames
self.angle = 0
self.x = x
self.y = y
end;
draw = function(self)
local img = self.frames[math.floor(self.curFrame)]
local img = self.frames.frames[math.floor(self.curFrame)]
if img then
love.graphics.draw(img, self.quad, self.x, self.y, self.angle, 1, 1, self.width / 2, self.width / 2)
love.graphics.setColor(255, 255, 255, 255 * (1.0 - self.curFrame / self.frames.numFrames))
love.graphics.draw(img, self.frames.quad, self.x, self.y, self.angle, 1, 1, self.frames.width / 2, self.frames.width / 2)
end
end;
update = function(self, dt)
self.curFrame = self.curFrame + dt * self.fps
self.curFrame = self.curFrame + dt * self.frames.fps
end;
}

View file

@ -31,6 +31,8 @@ local max_motorPower = ENGINE_MAX
local plane_area = 10.0
local head_area = 1.0
local explosionFrames = AnimationFrames("resources/graphics/explosion-%04d.png", 36, 15)
Plane = Class{
__includes = PhysicsEntity,
@ -93,8 +95,7 @@ Plane = Class{
die = function(self)
self.health = 0
Animation(self.body:getX(), self.body:getY(), self.level,
"resources/graphics/explosion-%04d.png", 36, 15)
Animation(self.body:getX(), self.body:getY(), self.level, explosionFrames)
self:getOwner():setPlane(nil)
self:delete()
end;