198 lines
8.1 KiB
Lua
198 lines
8.1 KiB
Lua
|
local XUiPanelAchieve = XLuaUiManager.Register(XLuaUi, "UiPanelAchieve")
|
|||
|
|
|||
|
function XUiPanelAchieve:OnAwake()
|
|||
|
self:InitAutoScript()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnStart(parent, selectIdx)
|
|||
|
self.Base = parent
|
|||
|
self.AchieveType = selectIdx or XDataCenter.TaskManager.AchvType.Fight
|
|||
|
self:SetTogFightActive(self.AchieveType == XDataCenter.TaskManager.AchvType.Fight)
|
|||
|
self:SetTogCollectActive(self.AchieveType == XDataCenter.TaskManager.AchvType.Collect)
|
|||
|
self:SetTogSocialActive(self.AchieveType == XDataCenter.TaskManager.AchvType.Social)
|
|||
|
self:SetTogOtherActive(self.AchieveType == XDataCenter.TaskManager.AchvType.Other)
|
|||
|
|
|||
|
self.AchieveTasks = {}
|
|||
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelAchvList)
|
|||
|
self.DynamicTable:SetProxy(XDynamicGridTask)
|
|||
|
self.DynamicTable:SetDelegate(self)
|
|||
|
self:AddRedPointEvent()
|
|||
|
self:InitAchvPanel()
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_TASK_SYNC, self.OnTaskChangeSync, self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:AddRedPointEvent()
|
|||
|
XRedPointManager.AddRedPointEvent(self.ImgRedFight,self.OnCheckTabRedPoint,self,{XRedPointConditions.Types.CONDITION_PLAYER_ACHIEVE_TYPE},XDataCenter.TaskManager.AchvType.Fight)
|
|||
|
XRedPointManager.AddRedPointEvent(self.ImgRedCollect,self.OnCheckTabRedPoint,self,{XRedPointConditions.Types.CONDITION_PLAYER_ACHIEVE_TYPE},XDataCenter.TaskManager.AchvType.Collect)
|
|||
|
XRedPointManager.AddRedPointEvent(self.ImgRedSocial,self.OnCheckTabRedPoint,self,{XRedPointConditions.Types.CONDITION_PLAYER_ACHIEVE_TYPE},XDataCenter.TaskManager.AchvType.Social)
|
|||
|
XRedPointManager.AddRedPointEvent(self.ImgRedOther,self.OnCheckTabRedPoint,self,{XRedPointConditions.Types.CONDITION_PLAYER_ACHIEVE_TYPE},XDataCenter.TaskManager.AchvType.Other)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnCheckTabRedPoint(show,achievetype)
|
|||
|
if XDataCenter.TaskManager.AchvType.Fight == achievetype then
|
|||
|
self.ImgRedFight.gameObject:SetActive(show >= 0)
|
|||
|
elseif XDataCenter.TaskManager.AchvType.Collect == achievetype then
|
|||
|
self.ImgRedCollect.gameObject:SetActive(show >= 0)
|
|||
|
elseif XDataCenter.TaskManager.AchvType.Social == achievetype then
|
|||
|
self.ImgRedSocial.gameObject:SetActive(show >= 0)
|
|||
|
elseif XDataCenter.TaskManager.AchvType.Other == achievetype then
|
|||
|
self.ImgRedOther.gameObject:SetActive(show >= 0)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnShow()
|
|||
|
self:SetupTaskList(false)
|
|||
|
end
|
|||
|
|
|||
|
-- auto
|
|||
|
-- Automatic generation of code, forbid to edit
|
|||
|
function XUiPanelAchieve:InitAutoScript()
|
|||
|
self:AutoInitUi()
|
|||
|
self:AutoAddListener()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:AutoInitUi()
|
|||
|
self.TogFight = self.Transform:Find("GroupTop/TogFight"):GetComponent("Toggle")
|
|||
|
self.ImgAchvUnactive = self.Transform:Find("GroupTop/TogFight/ImgAchvUnactive"):GetComponent("Image")
|
|||
|
self.ImgAchvActive = self.Transform:Find("GroupTop/TogFight/ImgAchvActive"):GetComponent("Image")
|
|||
|
self.ImgRedFight = self.Transform:Find("GroupTop/TogFight/ImgRedFight"):GetComponent("Image")
|
|||
|
self.TogCollect = self.Transform:Find("GroupTop/TogCollect"):GetComponent("Toggle")
|
|||
|
self.ImgCollvUnActive = self.Transform:Find("GroupTop/TogCollect/ImgCollvUnActive"):GetComponent("Image")
|
|||
|
self.ImgCollvActive = self.Transform:Find("GroupTop/TogCollect/ImgCollvActive"):GetComponent("Image")
|
|||
|
self.ImgRedCollect = self.Transform:Find("GroupTop/TogCollect/ImgRedCollect"):GetComponent("Image")
|
|||
|
self.TogSocial = self.Transform:Find("GroupTop/TogSocial"):GetComponent("Toggle")
|
|||
|
self.ImgSocUnactive = self.Transform:Find("GroupTop/TogSocial/ImgSocUnactive"):GetComponent("Image")
|
|||
|
self.ImgSocActive = self.Transform:Find("GroupTop/TogSocial/ImgSocActive"):GetComponent("Image")
|
|||
|
self.ImgRedSocial = self.Transform:Find("GroupTop/TogSocial/ImgRedSocial"):GetComponent("Image")
|
|||
|
self.TogOther = self.Transform:Find("GroupTop/TogOther"):GetComponent("Toggle")
|
|||
|
self.ImgOthUnactive = self.Transform:Find("GroupTop/TogOther/ImgOthUnactive"):GetComponent("Image")
|
|||
|
self.ImgOthActive = self.Transform:Find("GroupTop/TogOther/ImgOthActive"):GetComponent("Image")
|
|||
|
self.ImgRedOther = self.Transform:Find("GroupTop/TogOther/ImgRedOther"):GetComponent("Image")
|
|||
|
self.PanelAchvList = self.Transform:Find("PanelAchvList")
|
|||
|
self.PanelAchvContainer = self.Transform:Find("PanelAchvList/Viewport/PanelAchvContainer")
|
|||
|
self.PanelAchvReach = self.Transform:Find("PanelAchvReach")
|
|||
|
self.TxtAchvGetCount = self.Transform:Find("PanelAchvReach/TxtAchvGetCount"):GetComponent("Text")
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:RegisterClickEvent(uiNode, func)
|
|||
|
if func == nil then
|
|||
|
XLog.Error("XUiPanelAchieve:RegisterClickEvent函数参数错误:参数func不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if type(func) ~= "function" then
|
|||
|
XLog.Error("XUiPanelAchieve:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
|||
|
end
|
|||
|
|
|||
|
local listener = function(...)
|
|||
|
func(self, ...)
|
|||
|
end
|
|||
|
|
|||
|
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:AutoAddListener()
|
|||
|
self:RegisterClickEvent(self.TogFight, self.OnTogFightClick)
|
|||
|
self:RegisterClickEvent(self.TogCollect, self.OnTogCollectClick)
|
|||
|
self:RegisterClickEvent(self.TogSocial, self.OnTogSocialClick)
|
|||
|
self:RegisterClickEvent(self.TogOther, self.OnTogOtherClick)
|
|||
|
end
|
|||
|
-- auto
|
|||
|
|
|||
|
function XUiPanelAchieve:OnTogFightClick()
|
|||
|
self:SetTogOtherActive(false)
|
|||
|
self:SetTogCollectActive(false)
|
|||
|
self:SetTogSocialActive(false)
|
|||
|
self:SetTogFightActive(true)
|
|||
|
|
|||
|
self.AchieveType = XDataCenter.TaskManager.AchvType.Fight
|
|||
|
self:SetupTaskList(true)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnTogCollectClick()
|
|||
|
self:SetTogOtherActive(false)
|
|||
|
self:SetTogCollectActive(true)
|
|||
|
self:SetTogSocialActive(false)
|
|||
|
self:SetTogFightActive(false)
|
|||
|
|
|||
|
self.AchieveType = XDataCenter.TaskManager.AchvType.Collect
|
|||
|
self:SetupTaskList(true)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnTogSocialClick()
|
|||
|
self:SetTogOtherActive(false)
|
|||
|
self:SetTogCollectActive(false)
|
|||
|
self:SetTogSocialActive(true)
|
|||
|
self:SetTogFightActive(false)
|
|||
|
self.AchieveType = XDataCenter.TaskManager.AchvType.Social
|
|||
|
self:SetupTaskList(true)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnTogOtherClick()
|
|||
|
self:SetTogOtherActive(true)
|
|||
|
self:SetTogCollectActive(false)
|
|||
|
self:SetTogSocialActive(false)
|
|||
|
self:SetTogFightActive(false)
|
|||
|
|
|||
|
self.AchieveType = XDataCenter.TaskManager.AchvType.Other
|
|||
|
self:SetupTaskList(true)
|
|||
|
end
|
|||
|
|
|||
|
--动态列表事件
|
|||
|
function XUiPanelAchieve:OnDynamicTableEvent(event,index,grid)
|
|||
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|||
|
local data = self.AchieveTasks[index]
|
|||
|
grid.RootUi = self.Base
|
|||
|
grid:ResetData(data)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:SetTogFightActive(flag)
|
|||
|
self.ImgAchvActive.gameObject:SetActive(flag)
|
|||
|
self.ImgAchvUnactive.gameObject:SetActive(not flag)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:SetupTaskList()
|
|||
|
local achieveTask,achieveCount, total = XDataCenter.TaskManager.GetAchievedTasksByType(self.AchieveType)
|
|||
|
self.TxtAchvGetCount.text = tostring(achieveCount) .. "/" .. tostring(total)
|
|||
|
self.AchieveTasks = achieveTask
|
|||
|
|
|||
|
self.DynamicTable:SetDataSource(self.AchieveTasks)
|
|||
|
self.DynamicTable:ReloadDataSync(1)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:SetTogCollectActive(flag)
|
|||
|
self.ImgCollvActive.gameObject:SetActive(flag)
|
|||
|
self.ImgCollvUnActive.gameObject:SetActive(not flag)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:SetTogSocialActive(flag)
|
|||
|
self.ImgSocActive.gameObject:SetActive(flag)
|
|||
|
self.ImgSocUnactive.gameObject:SetActive(not flag)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:SetTogOtherActive(flag)
|
|||
|
self.ImgOthActive.gameObject:SetActive(flag)
|
|||
|
self.ImgOthUnactive.gameObject:SetActive(not flag)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:InitAchvPanel()
|
|||
|
self.PanelAchvContainer.gameObject:SetActive(true)
|
|||
|
self:SetupTaskList(true)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:ShowPanelPlayer()
|
|||
|
self.PanelPlayerObj:SetActive(true)
|
|||
|
self.PanelPlayerInst:UpdatePlayerInfo()
|
|||
|
self.PanelPlayerExpInst:UpdatePlayerLevelInfo()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnTaskChangeSync()
|
|||
|
self:SetupTaskList(false)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAchieve:OnDestroy()
|
|||
|
XEventManager.RemoveEventListener(XEventId.EVENT_TASK_SYNC, self.OnTaskChangeSync, self)
|
|||
|
end
|
|||
|
|
|||
|
return XUiPanelAchieve
|