--[[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 } 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 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 local b = bullet:new(new_x, new_y, normalized_dir_x * 2, 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