104 lines
3.1 KiB
Lua
104 lines
3.1 KiB
Lua
local ChipData = class("ChipData", require("DataBase"))
|
|
|
|
function ChipData:ctor()
|
|
self.data = {}
|
|
end
|
|
|
|
function ChipData:InitChipData(data)
|
|
local chips = {}
|
|
local cfgMgr = ManagerContainer.CfgMgr
|
|
if data and data.chip_list then
|
|
for i = 1, #data.chip_list do
|
|
local chipData = data.chip_list[i]
|
|
if chipData then
|
|
local chip = self:ProtocalDataToChipData(chipData)
|
|
local itemCfgData = cfgMgr:GetItemById(chip.cfgId)
|
|
if not itemCfgData then
|
|
LogError("[Wboy] .. ".. chip.cfgId .. "道具ID不存在")
|
|
else
|
|
chips[chip.cfgId] = chip
|
|
end
|
|
end
|
|
end
|
|
end
|
|
self.data.chips = chips
|
|
end
|
|
|
|
function ChipData:GetChipById(id)
|
|
return self.data.chips[id]
|
|
end
|
|
|
|
function ChipData:GetChipCountById(id)
|
|
local data = self.data.chips[id]
|
|
if data then
|
|
return data.num
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function ChipData:GetAllChipDatas()
|
|
return self.data.chips
|
|
end
|
|
|
|
function ChipData:RegisterNetEvents()
|
|
ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CHIP_CHANGE_NTF, function(data)
|
|
local chips = self.data.chips
|
|
local addChipMap = {}
|
|
local cfgMgr = ManagerContainer.CfgMgr
|
|
for _,chipData in ipairs(data.chip_list) do
|
|
local cfgId = chipData.config_id
|
|
local itemCfgData = cfgMgr:GetItemById(cfgId)
|
|
if not itemCfgData then
|
|
LogError("[Wboy] .. ".. cfgId .. "道具ID不存在")
|
|
else
|
|
local num = chipData.num
|
|
if num <= 0 then
|
|
-- 删除碎片
|
|
chips[cfgId] = nil
|
|
else
|
|
local chip = chips[cfgId]
|
|
local lastNum = chip and chip.num or 0
|
|
local newChip = self:ProtocalDataToChipData(chipData)
|
|
chips[cfgId] = newChip
|
|
local addNum = newChip.num - lastNum
|
|
-- 当前增加的碎片
|
|
if addNum > 0 then
|
|
if addChipMap[cfgId] then
|
|
addChipMap[cfgId] = addChipMap[cfgId] + addNum
|
|
else
|
|
addChipMap[cfgId] = addNum
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_EQUIP_AND_ITEM_ADD, addChipMap)
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CHIP_CHANGE)
|
|
end)
|
|
end
|
|
|
|
function ChipData:Clear()
|
|
self.data = {}
|
|
end
|
|
|
|
function ChipData:Destroy()
|
|
if self.Clear then
|
|
self:Clear()
|
|
end
|
|
|
|
self:UnRegisterNetEvents()
|
|
end
|
|
|
|
function ChipData:UnRegisterNetEvents()
|
|
|
|
end
|
|
|
|
function ChipData:ProtocalDataToChipData(protocalData)
|
|
local chipData = {}
|
|
chipData.cfgId = protocalData.config_id
|
|
chipData.num = protocalData.num
|
|
chipData.timeStamp = protocalData.time_stamp
|
|
return chipData
|
|
end
|
|
|
|
return ChipData |