-- Weapon Weapon = {} Weapon.__index = Weapon function Weapon:new(asset, attackSkillName, chargeSkillName) self = setmetatable({}, Weapon) self.config = asset.config or {} self.name = self.config.name self.drop = asset.drop local size = (self.config.size) or Config.WEAPON_SPRITE_SIZE self.sprite = Sprite:new( asset.image, { size = size, fps = self.config.fps or 15, animations = self.config.animations or { default = { 1 } } } ) self.sprite:setAnimation("default") self.attackSkill = attackSkillName self.chargeSkill = chargeSkillName return self end function Weapon:generate(asset) return Weapon:new( asset, Utils.pickRandomKeyFromWeightedTable(asset.config.attackSkillPool), Utils.pickRandomKeyFromWeightedTable(asset.config.chargeSkillPool) ) end return Weapon