mirror of
https://gitlab.com/MaddoScientisto/cirnofarm.git
synced 2026-06-06 12:15:55 +00:00
Refactoring and weapons class
This commit is contained in:
parent
bd2fbb6a4d
commit
c33488fabd
4 changed files with 240 additions and 134 deletions
117
src/weapons.lua
Normal file
117
src/weapons.lua
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
--[[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
|
||||
Loading…
Add table
Add a link
Reference in a new issue