优化红点检测机制为分帧刷新,优化人物升级红点检测

dev_chengFeng
gaoxin 2020-08-01 13:15:27 +08:00
parent 054c04c465
commit 0a19c1dd82
4 changed files with 81 additions and 10 deletions

View File

@ -20,13 +20,27 @@ function Game.InitManagers()
Log("===============>初始化管理器")
Framework.Initialize()
local managers = require("Common/Managers")
local manager
this.managerList = {}
for i, v in ipairs(managers) do
manager = require("Modules/"..v)
manager.Initialize()
this.managerList[i] = require("Modules/"..v)
if this.managerList[i].Initialize then
this.managerList[i].Initialize()
end
end
--
UpdateBeat:Add(this.LateUpdate, this)
end
function Game.LateUpdate()
for i, v in ipairs(this.managerList) do
if v.LateUpdate then
v.LateUpdate()
end
end
end
--应用程序暂停/恢复
function Game.OnApplicationPause(pauseStatus)
Log("Game.OnApplicationPause:"..tostring(pauseStatus))

View File

@ -63,6 +63,28 @@ function this.Initialize()
-- 监听功能开启,结束事件
Game.GlobalEvent:AddEvent(GameEvent.FunctionCtrl.OnFunctionOpen, this.RefreshRedpotByFunctionOpenType)
Game.GlobalEvent:AddEvent(GameEvent.FunctionCtrl.OnFunctionClose, this.RefreshRedpotByFunctionOpenType)
this.isDirty = false
this.refreshList = {}
this.LateUpdateTime = Time.realtimeSinceStartup
end
-- 红点事件分帧刷新
function this.LateUpdate()
if this.isDirty and Time.realtimeSinceStartup - this.LateUpdateTime > 0.1 then
if this.refreshList[1] then
local rpType = table.remove(this.refreshList, 1)
-- 判断是否需要刷新红点显示
if RPData:CheckRedPoint(rpType) then
this.RefreshRedObjectStatus(rpType)
end
end
-- 没有红点要刷新
if not this.refreshList[1] then
this.isDirty = false
end
end
end
-- 根据功能
@ -451,10 +473,28 @@ end
--- 检测红点状态
function this.CheckRedPointStatus(rpType)
-- 判断是否需要刷新红点显示
if RPData:CheckRedPoint(rpType) then
this.RefreshRedObjectStatus(rpType)
function _CheckRepeat(rpType)
end
if this.isDirty then
if not table.indexof(this.refreshList, rpType) then
table.insert(this.refreshList, rpType)
end
else
--
this.isDirty = true
this.LateUpdateTime = Time.realtimeSinceStartup
--
if not table.indexof(this.refreshList, rpType) then
table.insert(this.refreshList, rpType)
end
end
-- -- 判断是否需要刷新红点显示
-- if RPData:CheckRedPoint(rpType) then
-- this.RefreshRedObjectStatus(rpType)
-- end
end
--- 检测所有红点状态

View File

@ -17,6 +17,8 @@ end
function this.Initialize()
end
function this.LateUpdate()
end
function this.SetRoleName(name)
this.roleName = name

View File

@ -16,6 +16,7 @@ function this.Initialize()
for _, v in pairs(TaskTypeDef) do
TypeTaskData[v] = {}
end
this.LateUpdateTime = Time.realtimeSinceStartup
end
--missionId =1;
@ -65,7 +66,7 @@ function this.SetTypeTaskList(type, data)
table.insert(TypeTaskData[type], t)
LogRed(Language[11982]..data[i].type..Language[11983]..data[i].missionId..Language[11984]..data[i].state)
end
this.ChangeVipRedPointState()
this.SetDirty()
end
local achievementConfig = ConfigManager.GetConfig(ConfigName.AchievementConfig)
@ -132,7 +133,7 @@ function this.SetTypeTaskState(type, Id, state, progress, takeTimes,heroId)
taskInfo.heroId = heroId
end
end
this.ChangeVipRedPointState()
this.SetDirty()
Game.GlobalEvent:DispatchEvent(GameEvent.MissionDaily.OnMissionDailyChanged)
end
@ -184,7 +185,7 @@ function this.SetTypeTaskInfo(type, Id, state, progress, takeTimes,heroId)
elseif type == TaskTypeDef.DayTask or type == TaskTypeDef.Achievement then--推送时检测 是否达成 飘弹窗提示
this.SetAllShowTipMission(type, Id, state)
end
this.ChangeVipRedPointState()
this.SetDirty()
end
--刷新本地的任务数据
@ -195,7 +196,7 @@ function this.RefreshTypeTaskInfo(taskInfoList)
this.SetTypeTaskInfo(taskInfo.type, taskInfo.missionId, taskInfo.state, taskInfo.progress, taskInfo.takeTimes,taskInfo.heroId)
end
Game.GlobalEvent:DispatchEvent(GameEvent.MissionDaily.OnMissionDailyChanged)
this.ChangeVipRedPointState()
this.SetDirty()
end
-- 返回已经完成的成就数量和总数量
@ -215,6 +216,20 @@ function this.GetAchiveNum(mapId)
return doneNum, totalNum
end
function this.SetDirty()
this.isRedDirty = true
this.LateUpdateTime = Time.realtimeSinceStartup
end
-- 生命周期函数
-- override
function this.LateUpdate()
if this.isRedDirty and Time.realtimeSinceStartup - this.LateUpdateTime > 1 then
this.ChangeVipRedPointState()
this.isRedDirty = false
end
end
-- 检测红点状态
function this.ChangeVipRedPointState()
CheckRedPointStatus(RedPointType.VipPrivilege)