216 lines
5.7 KiB
Lua
216 lines
5.7 KiB
Lua
|
||
------------------------------------------------
|
||
--作者: 王圣
|
||
--日期: 2019-12-16
|
||
--文件: ZcTaskData.lua
|
||
--模块: ZcTaskData
|
||
--描述: vip周常数据
|
||
------------------------------------------------
|
||
--引用
|
||
local ZcTaskData = {
|
||
Id = 0,
|
||
--任务图标id
|
||
IconId = 0,
|
||
--总的可以获得的货币
|
||
TolCoin = 0,
|
||
--总的任务个数
|
||
TolTaskNum = 0,
|
||
--key:tabId ---任务列表 {Id:任务Id Des : 任务目标 CurNum : 当前达成次数 TotalNum: 需要达成次数 CoinNum:奖励货币数量 IsFinish:是否完成 OpenUI:打开的界面Id }
|
||
DicTask = Dictionary:New(),
|
||
|
||
}
|
||
function ZcTaskData:New()
|
||
local _m = Utils.DeepCopy(self)
|
||
return _m
|
||
end
|
||
|
||
--解析数据
|
||
function ZcTaskData:ParseCfg(cfg)
|
||
if cfg ~= nil then
|
||
local types = Utils.SplitStr(cfg.TaskNum, '_')
|
||
self.Id = tonumber(types[1])
|
||
local key = tonumber(types[2])
|
||
--添加任务
|
||
local taskId = cfg.Id
|
||
local curNum = 0
|
||
local condition = Utils.SplitStr(cfg.Condition,'_')
|
||
local totalNum = tonumber(condition[#condition])
|
||
local coinNum = cfg.Reward
|
||
local des = cfg.Desc
|
||
local openId = cfg.FunctionId
|
||
local isFinish = false
|
||
local task = {Id = taskId ,CurNum = curNum,TotalNum = totalNum, CoinNum = coinNum, IsFinish = isFinish, Des = des, OpenUI = openId}
|
||
local taskList = nil
|
||
if self.DicTask:ContainsKey(key) then
|
||
taskList = self.DicTask[key]
|
||
taskList:Add(task)
|
||
else
|
||
taskList = List:New()
|
||
taskList:Add(task)
|
||
self.DicTask:Add(key,taskList)
|
||
end
|
||
-- local gCfg = DataConfig.DataGlobal[GlobalName.VIPWeekMoneyIcon]
|
||
-- if gCfg ~= nil then
|
||
-- self.IconId = tonumber(gCfg.Params)
|
||
-- end
|
||
self.IconId = cfg.Icon
|
||
end
|
||
end
|
||
|
||
function ZcTaskData:ParaseMsg(msg)
|
||
if msg ~= nil then
|
||
for i = 1,#msg do
|
||
self:UpdateTask(msg[i].id,msg[i].prog)
|
||
end
|
||
end
|
||
end
|
||
|
||
--获取总的货币
|
||
function ZcTaskData:GetTotalCoin()
|
||
if self.TolCoin == 0 then
|
||
self.DicTask:Foreach(function(k, v)
|
||
local list = v
|
||
for i = 1,#list do
|
||
self.TolCoin = self.TolCoin + list[i].CoinNum
|
||
end
|
||
end)
|
||
else
|
||
return self.TolCoin
|
||
end
|
||
return self.TolCoin
|
||
end
|
||
|
||
--获取剩余可以领取的货币
|
||
function ZcTaskData:GetLeftCoin()
|
||
local coin = 0
|
||
local haveCoin = 0
|
||
self.DicTask:Foreach(function(k, v)
|
||
local list = v
|
||
for i = 1,#list do
|
||
if list[i].IsFinish then
|
||
haveCoin = haveCoin + list[i].CoinNum
|
||
end
|
||
coin = coin + list[i].CoinNum
|
||
end
|
||
end)
|
||
if self.TolCoin == 0 then
|
||
self.TolCoin = coin
|
||
return coin - haveCoin
|
||
else
|
||
return self.TolCoin - haveCoin
|
||
end
|
||
end
|
||
|
||
--获取已经获得的货币
|
||
function ZcTaskData:GetRewardCoin()
|
||
local coin = 0
|
||
local haveCoin = 0
|
||
self.DicTask:Foreach(function(k, v)
|
||
local list = v
|
||
for i = 1,#list do
|
||
if list[i].IsFinish then
|
||
haveCoin = haveCoin + list[i].CoinNum
|
||
end
|
||
end
|
||
end)
|
||
return haveCoin
|
||
end
|
||
|
||
--获取总的任务个数
|
||
function ZcTaskData:GetTotalTaskNum()
|
||
if self.TolTaskNum == 0 then
|
||
self.DicTask:Foreach(function(k, v)
|
||
local list = v
|
||
for i = 1,#list do
|
||
self.TolTaskNum = self.TolTaskNum + 1
|
||
end
|
||
end)
|
||
else
|
||
return self.TolTaskNum
|
||
end
|
||
return self.TolTaskNum
|
||
end
|
||
|
||
--获取当前完成任务的个数
|
||
function ZcTaskData:GetFinishTaskNum()
|
||
local num = 0
|
||
self.DicTask:Foreach(function(k, v)
|
||
local list = v
|
||
for i = 1,#list do
|
||
if list[i].IsFinish then
|
||
num = num + 1
|
||
end
|
||
end
|
||
end)
|
||
return num
|
||
end
|
||
|
||
--获取第一个任务
|
||
function ZcTaskData:GetFirstTask()
|
||
local keys = self.DicTask:GetKeys()
|
||
if keys ~= nil and #keys >=1 then
|
||
return self.DicTask[keys[1]]
|
||
end
|
||
return nil
|
||
end
|
||
|
||
--获取任务数据
|
||
function ZcTaskData:GetTaskData(taskId)
|
||
self.DicTask:Foreach(function(k, v)
|
||
local list = v
|
||
for i = 1,#list do
|
||
if list[i].Id == taskId then
|
||
return list[i]
|
||
end
|
||
end
|
||
end)
|
||
return nil
|
||
end
|
||
|
||
--当前key对应的系列任务是否全部做完
|
||
function ZcTaskData:IsFinishAllTask(key)
|
||
if self.DicTask:ContainsKey(key) then
|
||
local list = self.DicTask[key]
|
||
if list ~= nil then
|
||
for i = 1,#list do
|
||
if not list[i].IsFinish then
|
||
return false
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return true
|
||
end
|
||
|
||
function ZcTaskData:ResetTasks()
|
||
self.DicTask:Foreach(function(k, v)
|
||
local list = v
|
||
for i = 1,#list do
|
||
list[i].IsFinish = false
|
||
list[i].CurNum = 0
|
||
end
|
||
end)
|
||
end
|
||
|
||
--更新任务
|
||
function ZcTaskData:UpdateTask(taskId, process)
|
||
local listKey = self.DicTask:GetKeys()
|
||
if listKey ~= nil then
|
||
for i = 1,#listKey do
|
||
local list = self.DicTask[listKey[i]]
|
||
for m = 1,#list do
|
||
if list[m].Id == taskId then
|
||
if list[m].CurNum ~= process and list[m].TotalNum <= process then
|
||
--GameCenter.ZhouChangSystem.CurCoinNum = GameCenter.ZhouChangSystem.CurCoinNum + list[m].CoinNum
|
||
end
|
||
list[m].CurNum = process
|
||
if process >= list[m].TotalNum then
|
||
list[m].IsFinish = true
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return ZcTaskData |