ro-webgl/Assets/Lua/Logic/ChipData.lua
2021-12-21 09:40:39 +08:00

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