You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.4 KiB
45 lines
1.4 KiB
local love = require "love" |
|
|
|
function Ban(x, y, angle) |
|
local BAN_SPEED = 300 -- ban hammer speed in pixel/second |
|
local EXPLODE_DURATION = 0.2 |
|
|
|
return { |
|
sprite = love.graphics.newImage("assets/ban.png"), |
|
x = x, |
|
y = y, |
|
x_vel = BAN_SPEED * math.sin(angle) / love.timer.getFPS(), |
|
y_vel = -BAN_SPEED * math.cos(angle) / love.timer.getFPS(), |
|
distance = 0, -- distance traveled |
|
exploding = 0, -- 0 not exploding, 1 exploding, 2 done exploding |
|
explode_time = 0, |
|
|
|
|
|
draw = function (self, faded) |
|
if self.exploding < 1 then |
|
love.graphics.draw(self.sprite, self.x, self.y, angle, 0.4, 0.4, self.sprite:getWidth() / 2, self.sprite:getHeight() / 2) |
|
end |
|
end, |
|
|
|
move = function (self) |
|
self.x = self.x + self.x_vel |
|
self.y = self.y + self.y_vel |
|
|
|
if self.explode_time > 0 then |
|
self.exploding = 1 |
|
end |
|
-- increase the distance traveled |
|
self.distance = self.distance + math.sqrt((self.x_vel ^ 2) + (self.y_vel ^ 2)) |
|
end, |
|
|
|
explode = function(self) |
|
self.explode_time = math.ceil(EXPLODE_DURATION * love.timer.getFPS() / 100) |
|
|
|
if self.explode_time > EXPLODE_DURATION then |
|
self.exploding = 2 |
|
end |
|
end |
|
} |
|
end |
|
|
|
return Ban |