cirnofarm/src/weapons.lua

117 lines
1.9 KiB
Lua
Raw Normal View History

2024-04-24 11:11:16 +02:00
--[[pod_format="raw",created="2024-04-24 07:17:14",modified="2024-04-24 08:16:10",revision=9]]
M = {}
local weapons = {}
local bullets = {}
weapon = {
name = "Ice Blaster",
rate_of_fire = 0.2,
shoot=function(self)
end
}
bullet = {
x=0,
y=0,
dx=0,
dy=0,
spriteIndex=80,
destroy_sprite_index=66,
life=100,
damage=1,
draw=function(self)
--pset(self.x,self.y,8)
spr(self.spriteIndex,self.x,self.y)
end,
update=function(self)
self.x+=self.dx
self.y+=self.dy
self.life-=1
if self.life<0 then
del(bullets,self)
-- TODO: Create particle
end
self.check_collision(self)
end,
check_collision=function(self)
-- If Collide with wall destroy self and create particle
end
}
function M.create_bullet(new_x, new_y, dir_x, dir_y)
-- Calculate the length of the direction vector
local length = sqrt(dir_x^2 + dir_y^2)
-- Normalize the direction vector
local normalized_dir_x = dir_x / length
local normalized_dir_y = dir_y / length
b = bullet
b.life = 100
b.x = new_x
b.y = new_y
b.dx = normalized_dir_x * 2
b.dy = normalized_dir_y * 2
--add(bullets, b)
add(bullets, {
x=new_x,
y=new_y,
dx=normalized_dir_x * 2,
dy=normalized_dir_y * 2,
spriteIndex=80,
destroy_sprite_index=66,
life=100,
damage=1,
draw=function(self)
--pset(self.x,self.y,8)
spr(self.spriteIndex,self.x,self.y)
end,
update=function(self)
self.x+=self.dx
self.y+=self.dy
self.life-=1
if self.life<0 then
del(bullets,self)
-- TODO: Create particle
end
self.check_collision(self)
end,
check_collision=function(self)
-- If Collide with wall destroy self and create particle
end
})
end
function M.init()
end
function M.draw()
for b in all(bullets) do
b:draw()
end
end
function M.update()
for b in all(bullets) do
b:update()
end
end
function M.debug_draw()
print(string.format("Bullets: %d", count(bullets)), 0,32,1)
end
return M