local LootManager = Object:extend() local Pocket = require "game.loot.pocket" local EffectManager = require "game.loot.effectManager" local itemutils = require "game.utils.items" function LootManager:new(controller) self.controller = controller self.rings = 0 self.inventory = {} self.pocketIndex = {} self.effects = EffectManager() self:generatePockets() end function LootManager:getData() local data = {} data.rings = self.rings data.inventory = {} for i, pocket in ipairs(self.inventory) do data.inventory[i] = pocket:getData() end return data end function LootManager:setData(data) local data = data self.rings = data.rings for i, pocket in ipairs(self.inventory) do pocket:setData(data.inventory[i]) end end function LootManager:generatePockets() local structure = require "datas.gamedata.items" for i,pocketdata in ipairs(structure) do local pocket = Pocket(pocketdata) self.pocketIndex[pocketdata.name] = i table.insert(self.inventory, pocket) end end function LootManager:getPocketIdByName(name) return self.pocketIndex[name] end function LootManager:getPocketById(id) return self.inventory[id] end function LootManager:getPocketByName(name) return self.inventory[self.pocketIndex[name]] end function LootManager:addItem(type, item, number) local pocket = self:getPocketByName(type) if (itemutils.itemExists(type, item)) then pocket:addItem(item, number) end end function LootManager:removeItem(type, item, number) local pocket = self:getPocketByName(type) if (itemutils.itemExists(type, item)) then pocket:removeItem(item, number) end end function LootManager:getItemData(type, item) return itemutils.getItemData(type, item) end function LootManager:getItemNumber(type, item) local pocket = self:getPocketByName(type) return pocket:getItemNumber(item) end function LootManager:applyItemEffect(category, item, target) self.effects:getItemData(category, item) self.effects:applyItemEffect(target) end function LootManager:getEffectStrings(category, item) self.effects:getItemData(category, item) return self.effects:getEffectStrings(nil) end return LootManager