--[[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