Files
Main/Assets/GameAssets/Resources/Lua/Logic/HomeTaskSystem/HomeTaskSystem.lua
2025-01-25 04:38:09 +08:00

256 lines
7.2 KiB
Lua

------------------------------------------------
--作者: 王圣
--日期: 2021-06-17
--文件: HomeTaskSystem.lua
--模块: HomeTaskSystem
--描述: 家园任务
------------------------------------------------
--引用
local L_TaskData = require "Logic.HomeTaskSystem.HomeTaskData"
local L_GetSortValue = nil
local L_TaskSortFunc = nil
local L_SortBase = 1000000000
local HomeTaskSystem = {
--聚灵等级
JuLingLv = 0,
--装饰当前值
ZHValue = 0,
--装饰最大值
ZHMaxValue = 0,
--每日奖励经验
RewardExp = 0,
--是否领取过每日经验
IsRewardExp = 0,
--任务字典
DicTask = Dictionary:New(),
}
--初始化
function HomeTaskSystem:Initialize()
end
function HomeTaskSystem:UnInitialize()
end
function HomeTaskSystem:CanRewardExp()
local _ret = not self.IsRewardExp
local _activeLogic = GameCenter.MapLogicSystem.ActiveLogic
if _activeLogic ~= nil and _activeLogic.TupInfo ~= nil then
_ret = _activeLogic.TupInfo.tupReward
end
return _ret
end
function HomeTaskSystem:GetTaskListByType(type)
local _ret = nil
if self.DicTask ~= nil then
if type == 0 then
local _taskList = List:New()
local _keys = self.DicTask:GetKeys()
if _keys ~= nil then
for i = 1, #_keys do
local _key = _keys[i]
local _list = self.DicTask[_key]
if _list ~= nil then
for m = 1, #_list do
local _task = _list[m]
_taskList:Add(_task)
end
end
end
end
_ret = _taskList
else
_ret = self.DicTask[type]
end
end
if _ret ~= nil then
_ret:Sort(L_TaskSortFunc)
end
return _ret
end
function HomeTaskSystem:GetTask(id)
local _ret = nil
local _keys = self.DicTask:GetKeys()
if _keys ~= nil then
for i = 1, #_keys do
local _key = _keys[i]
local _list = self.DicTask[_key]
if _list ~= nil then
for m = 1, #_list do
local _task = _list[m]
if _task.Id == id then
_ret = _task
break
end
end
end
end
end
return _ret
end
function HomeTaskSystem:GetRedPointArray()
local _result = {}
local _container = self.DicTask
if _container == nil then
return _result
end
_container:Foreach(function(k, v)
local _list = v
local _listCount = #_list
for i = 1, _listCount do
local _task = _list[i]
local _taskId = _task.Id
local _type = _task.Type
if _result[_type] == nil then
if _task.State == 1 then
_result[_type] = true
_result[HomeTaskType.Default] = true
end
end
end
end)
return _result
end
function HomeTaskSystem:CheckRedPoint()
local _isHave = self:CanRewardExp()
if not _isHave then
local _redPointArray = self:GetRedPointArray()
_isHave = _redPointArray[HomeTaskType.Default]
if not _isHave then
_isHave = _redPointArray[HomeTaskType.BaiFang]
if not _isHave then
_isHave = _redPointArray[HomeTaskType.SongLi]
if not _isHave then
_isHave = _redPointArray[HomeTaskType.GouMai]
if not _isHave then
_isHave = _redPointArray[HomeTaskType.RenQi]
if not _isHave then
_isHave = _redPointArray[HomeTaskType.ZhuangShiDu]
end
end
end
end
end
end
if _isHave == nil then
_isHave = false
end
GameCenter.MainFunctionSystem:SetAlertFlag(FunctionStartIdCode.HomeTask, _isHave)
end
L_TaskSortFunc = function(left, right)
return L_GetSortValue(left) < L_GetSortValue(right)
end
L_GetSortValue = function(taskData)
local _sort = 0
local _subsort = 0
if taskData == nil then
return _sort
end
local _taskId = taskData.Id
if taskData.State == 1 then
_sort = 0
_subsort = math.floor(L_SortBase / 10)
elseif taskData.State == 2 then
_sort = L_SortBase*2
_subsort = 0
else
_sort = L_SortBase
_subsort = 0
end
_sort = _sort + _subsort + taskData.Sort
return _sort
end
----------------------------------------msg----------------------------------------
--请求领取聚宝盆奖励
function HomeTaskSystem:ReqGetTupReward()
GameCenter.Network.Send("MSG_Home.ReqGetTupReward")
end
function HomeTaskSystem:ReqTaskList()
GameCenter.Network.Send("MSG_Home.ReqTaskList")
end
--请求领取任务奖励
function HomeTaskSystem:ReqTaskReward(taskId)
GameCenter.Network.Send("MSG_Home.ReqTaskReward", {id = taskId})
end
--返回任务列表
function HomeTaskSystem:ResHomeTaskList(msg)
if msg == nil then
return
end
self.DicTask:Clear()
if msg.tasks ~= nil then
for i = 1, #msg.tasks do
local _info = msg.tasks[i]
local _cfg = DataConfig.DataSocialHouseTask[_info.id]
local _type = _cfg.Type
local _taskList = self.DicTask[_type]
if _taskList == nil then
_taskList = List:New()
local _task = L_TaskData:New()
_task:ParaseMsg(_info, _cfg)
_taskList:Add(_task)
self.DicTask:Add(_type, _taskList)
else
local _task = L_TaskData:New()
_task:ParaseMsg(_info, _cfg)
_taskList:Add(_task)
end
end
end
self:CheckRedPoint()
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HOMETASKCHANG)
end
--返回任务更新
function HomeTaskSystem:ResTaskUpdate(msg)
if msg == nil then
return
end
if msg.tasks ~= nil then
for i = 1, #msg.tasks do
local _info = msg.tasks[i]
local _cfg = DataConfig.DataSocialHouseTask[_info.id]
local _type = _cfg.Type
local _taskList = self.DicTask[_type]
if _taskList == nil then
_taskList = List:New()
local _task = L_TaskData:New()
_task:ParaseMsg(_info, _cfg)
_taskList:Add(_task)
self.DicTask:Add(_type, _taskList)
else
local _isFind = false
for i = #_taskList, 1, -1 do
local _task = _taskList[i]
if _task.Id == _info.id then
_task:Updata(_info, _cfg)
_isFind = true
break
end
end
if not _isFind then
local _task = L_TaskData:New()
_task:ParaseMsg(_info, _cfg)
_taskList:Add(_task)
end
end
end
end
self:CheckRedPoint()
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HOMETASKCHANG)
end
return HomeTaskSystem