more efficient bullet spawning

This commit is contained in:
2025-06-28 22:59:51 -07:00
parent 14849101dd
commit 507f06fb8c

View File

@ -618,14 +618,6 @@ end
-->8
-- bullet and gun behaviors
function player_blt_cat()
return pbullets
end
function enemy_blt_cat()
return ebullets
end
-- x, y: position
-- dx, dy: movement (linear)
-- f: frames remaining; nil for no limit
@ -638,9 +630,9 @@ end
-- details, check impl
-- damage -- damage to do to
-- a ship that gets hit
-- category -- function that
-- returns which bullet list
-- to spawn onto
-- category -- string naming
-- which bullet list to spawn
-- onto, from _ENV
-- hitship -- event handler,
-- takes ship as argument.
-- default: die, return true.
@ -785,7 +777,7 @@ end
function bullet_base:spawn_at(x, y)
self.x = x - self.x_off
self.y = y - self.y_off
add(self.category(), self)
add(_ENV[self.category], self)
end
function gun_base:shoot(x, y)
@ -855,7 +847,7 @@ zap_p = mknew(bullet_base.new{
hitship = const_fxn(true),
category = player_blt_cat,
category = "pbullets",
})
zap_gun_p = mknew(gun_base.new{
@ -914,7 +906,7 @@ blast = mknew(bullet_base.new{
end)
end
end,
category=player_blt_cat
category="pbullets"
})
blast_gun = mknew(gun_base.new{
@ -953,14 +945,14 @@ protron_e = mknew(bullet_base.new{
y_off = 4,
damage = 1,
category = enemy_blt_cat,
category = "ebullets",
})
protron_p = mknew(protron_e.new{
sprite=23,
dym = -1,
y_off = 0,
category=player_blt_cat,
category="pbullets",
})
protron_gun_e = mknew(gun_base.new{
@ -1007,13 +999,13 @@ vulcan_e = mknew(bullet_base.new{
y_off = 0,
damage = 0.5,
category=enemy_blt_cat
category="ebullets"
})
vulcan_p = mknew(vulcan_e.new{
sprite=22,
y_off = 4,
category=player_blt_cat
category="pbullets"
})
vulcan_gun_e = mknew(gun_base.new{
@ -1656,7 +1648,7 @@ xp_gem = mknew(bullet_base.new{
dy = 0.75,
width=1, -- not used for spr but
height=1,-- bullet_base uses it
category = enemy_blt_cat,
category = "ebullets",
damage = 0,
hurt = {
x_off = -2,