New bullet instantiation method

This commit is contained in:
Marco Giacomelli 2024-04-24 17:06:19 +02:00
commit cc921f9ade
4 changed files with 121 additions and 84 deletions

View file

@ -22,27 +22,61 @@ bullet = {
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
-- 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.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
-- self.check_collision(self)
-- end,
-- check_collision=function(self)
-- -- If Collide with wall destroy self and create particle
end
-- end
}
bullet.__index = bullet
function bullet:new(x, y, dx, dy)
local o = setmetatable({}, bullet)
o.x = x
o.y = y
o.dx = dx
o.dy = dy
--o.life = 100
--o.spriteIndex = 80
--o.destroy_sprite_index = 66
--o.damage = 1
return o
end
function bullet:check_collision()
--
end
function bullet:update()
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()
end
function bullet:draw()
spr(self.spriteIndex,self.x,self.y)
end
function M.create_bullet(new_x, new_y, dir_x, dir_y)
-- Calculate the length of the direction vector
@ -52,45 +86,40 @@ function M.create_bullet(new_x, new_y, dir_x, dir_y)
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
local b = bullet:new(new_x, new_y, normalized_dir_x * 2, normalized_dir_y * 2)
--add(bullets, b)
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
-- 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.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
-- self.check_collision(self)
-- end,
-- check_collision=function(self)
-- -- If Collide with wall destroy self and create particle
end
})
-- end
-- })
end