mirror of
https://github.com/libretro/lutro-platformer.git
synced 2025-02-17 07:18:27 +00:00
62 lines
1.2 KiB
Lua
62 lines
1.2 KiB
Lua
![]() |
require "collisions"
|
||
|
|
||
|
local fireball = {}
|
||
|
fireball.__index = fireball
|
||
|
|
||
|
function newFireball(parent)
|
||
|
local n = {}
|
||
|
n.type = "fireball"
|
||
|
n.y = parent.y + 10
|
||
|
if parent.direction == "right" then
|
||
|
n.speed = 3
|
||
|
n.direction = "right"
|
||
|
n.x = parent.x + 22 + 16
|
||
|
else
|
||
|
n.speed = -3
|
||
|
n.direction = "left"
|
||
|
n.x = parent.x - 16
|
||
|
end
|
||
|
n.width = 16
|
||
|
n.height = 16
|
||
|
|
||
|
n.animations = {
|
||
|
left = newAnimation(lutro.graphics.newImage(
|
||
|
"assets/fireball_left.png"), 16, 16, 2, 60),
|
||
|
right = newAnimation(lutro.graphics.newImage(
|
||
|
"assets/fireball_right.png"), 16, 16, 2, 60)
|
||
|
}
|
||
|
n.anim = n.animations[n.direction]
|
||
|
return setmetatable(n, fireball)
|
||
|
end
|
||
|
|
||
|
function fireball:update(dt)
|
||
|
self.anim:update(dt)
|
||
|
self.x = self.x + self.speed
|
||
|
end
|
||
|
|
||
|
function fireball:draw()
|
||
|
self.anim:draw(self.x, self.y)
|
||
|
end
|
||
|
|
||
|
function fireball:on_collide(e1, e2, dx, dy)
|
||
|
if e2.type == "ground" then
|
||
|
entities_remove(self)
|
||
|
lutro.audio.play(sfx_fireballcollide)
|
||
|
elseif e2.type == "ninja" then
|
||
|
entities_remove(self)
|
||
|
lutro.audio.play(sfx_fireballcollide)
|
||
|
|
||
|
lutro.audio.play(sfx_hit)
|
||
|
screen_shake = 15
|
||
|
e2.hit = 60
|
||
|
if dx < 0 then
|
||
|
e2.xspeed = 200
|
||
|
else
|
||
|
e2.xspeed = -200
|
||
|
end
|
||
|
e2.y = e2.y - 1
|
||
|
e2.yspeed = -1
|
||
|
hp = hp - 1
|
||
|
end
|
||
|
end
|