219 lines
No EOL
8.3 KiB
Lua
219 lines
No EOL
8.3 KiB
Lua
local XUiPanelMedal = XLuaUiManager.Register(XLuaUi, "UiPanelMedal")
|
|
local Dropdown = CS.UnityEngine.UI.Dropdown
|
|
local None = -1
|
|
function XUiPanelMedal:OnStart(viewlType)
|
|
self.MedalView = XUiPanelMedalListView.New(self.PanelMedalScroll,XMedalConfigs.ViewType.Medal,self)
|
|
self.CollectionView = XUiPanelMedalListView.New(self.PanelCollectionScroll,XMedalConfigs.ViewType.Collection,self)
|
|
self.NameplateView = XUiPanelMedalListView.New(self.PanelNameplateScroll,XMedalConfigs.ViewType.Nameplate,self)
|
|
|
|
self:InitDropdown()
|
|
self:InitButtonGroup(viewlType)
|
|
self:OnCheckBtnIsNotShow()
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_MEDAL_NOTIFY, self.ShowPanelMdeal, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_SCORETITLE_CHANGE, self.ShowPanelMdeal, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_MEDAL_REDPOINT_CHANGE, self.CheckRedPoint, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_MEDAL_USE, self.ShowPanelMdeal, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_NAMEPLATE_CHANGE, self.CheckRedPoint, self)
|
|
end
|
|
|
|
|
|
function XUiPanelMedal:OnEnable()
|
|
if self.NeedPlayMedalListEnable then
|
|
self:PlayAnimation("MedalListEnable")
|
|
end
|
|
self.NeedPlayMedalListEnable = true
|
|
self:SetTypeTagShowRed()
|
|
self:ShowPanelMdeal()
|
|
end
|
|
|
|
function XUiPanelMedal:OnDisable()
|
|
self:ClearAllRedPoint()
|
|
if self.NameplateIsSel then
|
|
XDataCenter.MedalManager.SetNameplateRedPointDic()
|
|
end
|
|
end
|
|
|
|
function XUiPanelMedal:SetTypeTagShowRed()
|
|
self.BtnXunzhang:ShowReddot(XDataCenter.MedalManager.CheckHaveNewMedalByType(XMedalConfigs.ViewType.Medal))
|
|
self.BtnShoucangpin:ShowReddot(XDataCenter.MedalManager.CheckHaveNewMedalByType(XMedalConfigs.ViewType.Collection))--这里要改成类型检查
|
|
self.BtnNameplate:ShowReddot(XDataCenter.MedalManager.CkeckHaveNewNameplate())
|
|
end
|
|
|
|
function XUiPanelMedal:OnDestroy()
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_MEDAL_NOTIFY, self.ShowPanelMdeal, self)
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_SCORETITLE_CHANGE, self.ShowPanelMdeal, self)
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_MEDAL_REDPOINT_CHANGE, self.CheckRedPoint, self)
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_MEDAL_USE, self.ShowPanelMdeal, self)
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_NAMEPLATE_CHANGE, self.CheckRedPoint, self)
|
|
end
|
|
|
|
function XUiPanelMedal:OnCheckBtnIsNotShow()
|
|
if XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.Medal) then
|
|
self.BtnXunzhang.gameObject:SetActive(false)
|
|
end
|
|
if XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.Medal) then
|
|
self.BtnShoucangpin.gameObject:SetActive(false)
|
|
end
|
|
if XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.Medal) then
|
|
self.BtnNameplate.gameObject:SetActive(false)
|
|
end
|
|
end
|
|
|
|
function XUiPanelMedal:InitDropdown()
|
|
local screenTagList = XMedalConfigs.GetScoreScreenTagConfigs()
|
|
|
|
self.BtnSort:ClearOptions()
|
|
self.BtnSort.captionText.text = CS.XTextManager.GetText("ScreenAll")
|
|
|
|
local firstOp = Dropdown.OptionData()
|
|
firstOp.text = CS.XTextManager.GetText("ScreenAll")
|
|
self.BtnSort.options:Add(firstOp)
|
|
|
|
for _,v in pairs(screenTagList) do
|
|
local op = Dropdown.OptionData()
|
|
op.text = v.Name or ""
|
|
self.BtnSort.options:Add(op)
|
|
end
|
|
self.CurScreenType = 0
|
|
self.BtnSort.value = 0
|
|
|
|
self.BtnSort.onValueChanged:AddListener(function()
|
|
self.CurScreenType = self.BtnSort.value
|
|
self.CollectionView:Refresh(self.BtnSort.value)
|
|
end)
|
|
end
|
|
|
|
function XUiPanelMedal:InitButtonGroup(viewType)
|
|
self.BtnXunzhang:SetDisable(not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.Medal))
|
|
self.BtnShoucangpin:SetDisable(not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.Collection))
|
|
self.BtnNameplate:SetDisable(not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.Nameplate))
|
|
|
|
self.TypeBtn = {self.BtnXunzhang,self.BtnShoucangpin, self.BtnNameplate}
|
|
self.CurType = None
|
|
self.BtnGroup:Init(self.TypeBtn, function(index) self:SelectType(index) end)
|
|
if viewType ~= None then
|
|
self.BtnGroup:SelectIndex(viewType)
|
|
end
|
|
end
|
|
|
|
function XUiPanelMedal:SelectType(index)
|
|
local IsOpen = false
|
|
if index == XMedalConfigs.ViewType.Medal then
|
|
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.Medal) then
|
|
IsOpen = true
|
|
if not XDataCenter.MedalManager.CheckMedalStoryIsPlayed() then
|
|
XDataCenter.MovieManager.PlayMovie(XDataCenter.MedalManager.MedalStroyId)
|
|
XDataCenter.MedalManager.MarkMedalStory()
|
|
end
|
|
self:PlayAnimation("MedalListEnable")
|
|
end
|
|
elseif index == XMedalConfigs.ViewType.Collection then
|
|
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.Collection) then
|
|
IsOpen = true
|
|
self:PlayAnimation("CollectionScrollQieHuan",function ()
|
|
XDataCenter.MedalManager.CheckQualityUpCollection()
|
|
end)
|
|
end
|
|
elseif index == XMedalConfigs.ViewType.Nameplate then
|
|
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.Nameplate) then
|
|
IsOpen = true
|
|
self:PlayAnimation("NameplateScrollEnable",function ()
|
|
|
|
end)
|
|
end
|
|
self.NameplateIsSel = true
|
|
end
|
|
if IsOpen then
|
|
self:ClearAllRedPoint(index)
|
|
self.CurType = index
|
|
else
|
|
if self.CurType ~= None then
|
|
local exType = self.CurType
|
|
self.CurType = None
|
|
self.BtnGroup:SelectIndex(exType)
|
|
end
|
|
end
|
|
self.PanelNone.gameObject:SetActiveEx(self.CurType == None)
|
|
self.EmptyText.text = CS.XTextManager.GetText("NotOpenCollection")
|
|
|
|
if self.NameplateIsSel and self.CurType ~= XMedalConfigs.ViewType.Nameplate then
|
|
XDataCenter.MedalManager.SetNameplateRedPointDic()
|
|
end
|
|
|
|
self:ShowPanelMdeal()
|
|
end
|
|
|
|
function XUiPanelMedal:ClearAllRedPoint(index)
|
|
local medaldatas = XDataCenter.MedalManager.GetMedals()
|
|
local ScoreTitledatas = XDataCenter.MedalManager.GetScoreTitle()
|
|
if index then
|
|
if self.CurType ~= index then
|
|
if self.CurType == XMedalConfigs.ViewType.Medal then
|
|
self:DoClearRedPoint(medaldatas)
|
|
elseif self.CurType == XMedalConfigs.ViewType.Collection then
|
|
self:DoClearRedPoint(ScoreTitledatas)
|
|
end
|
|
end
|
|
else
|
|
self:DoClearRedPoint(medaldatas)
|
|
self:DoClearRedPoint(ScoreTitledatas)
|
|
end
|
|
end
|
|
|
|
function XUiPanelMedal:DoClearRedPoint(datas)
|
|
for _,data in pairs(datas) do
|
|
if not data.IsLock then
|
|
XDataCenter.MedalManager.SetMedalForOld(data.Id,data.Type)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiPanelMedal:SetMedalCount()
|
|
if self.CurType ~= XMedalConfigs.ViewType.Medal then
|
|
self.PanelAchvReach.gameObject:SetActiveEx(false)
|
|
return
|
|
end
|
|
|
|
local maxCount = 0
|
|
local nowCount = 0
|
|
local medalsList = XDataCenter.MedalManager.GetMedals()
|
|
for _, medal in pairs(medalsList or {}) do
|
|
maxCount = maxCount + 1
|
|
if not medal.IsLock then
|
|
nowCount = nowCount + 1
|
|
end
|
|
end
|
|
self.PanelAchvReach.gameObject:SetActiveEx(true)
|
|
self.TxtAchvGetCount.text = string.format("%d%s%d", nowCount, "/", maxCount)
|
|
end
|
|
|
|
function XUiPanelMedal:RefreshMedalListView()
|
|
self.MedalView.GameObject:SetActiveEx(false)
|
|
self.CollectionView.GameObject:SetActiveEx(false)
|
|
self.NameplateView.GameObject:SetActiveEx(false)
|
|
|
|
if self.CurType == XMedalConfigs.ViewType.Medal then
|
|
self.BtnSort.gameObject:SetActiveEx(false)
|
|
self.MedalView.GameObject:SetActiveEx(true)
|
|
self.MedalView:Refresh()
|
|
elseif self.CurType == XMedalConfigs.ViewType.Collection then
|
|
self.BtnSort.gameObject:SetActiveEx(true)
|
|
self.CollectionView.GameObject:SetActiveEx(true)
|
|
self.CollectionView:Refresh(self.CurScreenType)
|
|
elseif self.CurType == XMedalConfigs.ViewType.Nameplate then
|
|
self.BtnSort.gameObject:SetActiveEx(false)
|
|
self.NameplateView.GameObject:SetActiveEx(true)
|
|
self.NameplateView:Refresh()
|
|
end
|
|
end
|
|
|
|
function XUiPanelMedal:ShowPanelMdeal()
|
|
self:RefreshMedalListView()
|
|
self:SetMedalCount()
|
|
end
|
|
|
|
function XUiPanelMedal:CheckRedPoint()
|
|
self:RefreshMedalListView()
|
|
self:SetTypeTagShowRed()
|
|
end |