chore: separate the weapon system
This commit is contained in:
parent
a4a1bc94a3
commit
baa59db9c2
3 changed files with 30 additions and 4 deletions
|
@ -9,7 +9,7 @@ return {
|
||||||
bounce = false,
|
bounce = false,
|
||||||
},
|
},
|
||||||
[2] = {
|
[2] = {
|
||||||
name = "basic",
|
name = "fire",
|
||||||
launch = {{0, 0, 0}},
|
launch = {{0, 0, 0}},
|
||||||
zspeed = 360,
|
zspeed = 360,
|
||||||
xspeed = 360,
|
xspeed = 360,
|
||||||
|
|
|
@ -5,7 +5,7 @@ local Player = Parent:extend()
|
||||||
local Frame = require("game.modules.gui.frame")
|
local Frame = require("game.modules.gui.frame")
|
||||||
local Statusbar = require("game.modules.gui.status")
|
local Statusbar = require("game.modules.gui.status")
|
||||||
|
|
||||||
local WeaponList = require("datas.gamedata.weapons")
|
local Weapons = require(cwd .. "player.weapons")
|
||||||
|
|
||||||
function Player:new(world, x, y, z, id)
|
function Player:new(world, x, y, z, id)
|
||||||
Player.super.new(self, world, "player", x, y, 0, 16, 16, 24, false)
|
Player.super.new(self, world, "player", x, y, 0, 16, 16, 24, false)
|
||||||
|
@ -15,6 +15,8 @@ function Player:new(world, x, y, z, id)
|
||||||
|
|
||||||
self.frame = Frame()
|
self.frame = Frame()
|
||||||
|
|
||||||
|
self.weapons = Weapons(self)
|
||||||
|
|
||||||
self.action = "normal"
|
self.action = "normal"
|
||||||
|
|
||||||
self.rings = 0
|
self.rings = 0
|
||||||
|
@ -27,7 +29,6 @@ function Player:init(id)
|
||||||
self:setSprite(self.charName, 8, 10)
|
self:setSprite(self.charName, 8, 10)
|
||||||
self:cloneSprite()
|
self:cloneSprite()
|
||||||
self.statusbar = Statusbar(self, "speed", 50)
|
self.statusbar = Statusbar(self, "speed", 50)
|
||||||
self.statusbar:setWeapon(1)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Player:updateStart(dt)
|
function Player:updateStart(dt)
|
||||||
|
@ -40,7 +41,7 @@ function Player:updateStart(dt)
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.keys["B"].isPressed then
|
if self.keys["B"].isPressed then
|
||||||
self.obj.Weapon(self.world, self.x, self.y+1, self.z+8, 1, WeaponList[1]);
|
self.weapons:shoot(self.x, self.y+1, self.z+8, 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
local WeaponManager = Object:extend()
|
||||||
|
|
||||||
|
local weaponList = require("datas.gamedata.weapons")
|
||||||
|
|
||||||
|
function WeaponManager:new(player)
|
||||||
|
self.player = player
|
||||||
|
self:switch(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
function WeaponManager:switch(newWeapon)
|
||||||
|
if (weaponList[newWeapon] ~= nil) then
|
||||||
|
self.currentWeapon = newWeapon;
|
||||||
|
self.player.statusbar:setWeapon(self.currentWeapon);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function WeaponManager:shoot(x, y, z, dir)
|
||||||
|
weaponData = weaponList[self.currentWeapon]
|
||||||
|
|
||||||
|
for i,coord in ipairs(weaponData.launch) do
|
||||||
|
self.player.obj.Weapon(self.player.world, x + coord[1], y + coord[2], z + coord[3], dir, weaponData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return WeaponManager
|
Loading…
Reference in a new issue