256 lines
9.8 KiB
Lua
256 lines
9.8 KiB
Lua
|
local tableInsert = table.insert
|
||
|
local tablepack = table.pack
|
||
|
local tableUnpack = table.unpack
|
||
|
local CSXTextManagerGetText = CS.XTextManager.GetText
|
||
|
|
||
|
local XUiInvertCardGame = XLuaUiManager.Register(XLuaUi, "UiInvertCardGame")
|
||
|
|
||
|
local XUiInvertCardGamePanel = require("XUi/XUiInvertCardGame/XUiInvertCardGamePanel")
|
||
|
local XUiInvertCardRewardPanel = require("XUi/XUiInvertCardGame/XUiInvertCardRewardPanel")
|
||
|
|
||
|
function XUiInvertCardGame:OnAwake()
|
||
|
if not XDataCenter.InvertCardGameManager.CheckHasServerData() then
|
||
|
XUiManager.TipText("InvertCardGameNotHaveSeverData")
|
||
|
self:Close()
|
||
|
end
|
||
|
|
||
|
self.GamePanel = XUiInvertCardGamePanel.New(self, self.PanelGame)
|
||
|
self.RewardPanel = XUiInvertCardRewardPanel.New(self, self.PanelReward)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnStart()
|
||
|
self.RedPointIds = {}
|
||
|
self:AutoRegisterBtn()
|
||
|
self.ItemId = XDataCenter.InvertCardGameManager.GetConsumeItemId()
|
||
|
self.AssetPanel = XUiHelper.NewPanelActivityAsset({ self.ItemId }, self.PanelActivityAsset)
|
||
|
self:InitBtnGroup()
|
||
|
self:RefreshBtnTab()
|
||
|
local defaultSelectIdx = XDataCenter.InvertCardGameManager.FindDefaultSelectTabIndex()
|
||
|
if defaultSelectIdx and defaultSelectIdx ~= 0 then
|
||
|
self.BtnGroup:SelectIndex(defaultSelectIdx)
|
||
|
end
|
||
|
self:InitSKipRedPoint()
|
||
|
XEventManager.AddEventListener(XEventId.EVENT_ITEM_COUNT_UPDATE_PREFIX..self.ItemId, self.OnCoinCountChange, self)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnEnable()
|
||
|
self:StartActivityTimer()
|
||
|
self:CheckHitFaceHelp()
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnDisable()
|
||
|
self:StopActivityTimer()
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnDestroy()
|
||
|
self:RemoveRedPoints()
|
||
|
XEventManager.RemoveEventListener(XEventId.EVENT_ITEM_COUNT_UPDATE_PREFIX..self.ItemId, self.OnCoinCountChange, self)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnGetEvents()
|
||
|
return {
|
||
|
XEventId.EVENT_INVERT_CARD_GAME_CARD_CHANGED,
|
||
|
XEventId.EVENT_INVERT_CARD_GAME_GET_REWARD,
|
||
|
}
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnNotify(evt, ...)
|
||
|
local args = tablepack(...)
|
||
|
local stageEntity = args[1]
|
||
|
if evt == XEventId.EVENT_INVERT_CARD_GAME_CARD_CHANGED then
|
||
|
self.AssetPanel:Refresh({ XDataCenter.InvertCardGameManager.GetConsumeItemId() })
|
||
|
self.GamePanel:PlayCardsChangedAnimation(args[1], args[2], args[3], args[4])
|
||
|
XRedPointManager.Check(self.SkipRedPointId)
|
||
|
elseif evt == XEventId.EVENT_INVERT_CARD_GAME_GET_REWARD then
|
||
|
self.RewardPanel:Refresh(stageEntity)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--==============================
|
||
|
---@desc 货币数量发生变化
|
||
|
---@id 物品Id
|
||
|
---@count 数量
|
||
|
--==============================
|
||
|
function XUiInvertCardGame:OnCoinCountChange(id, count)
|
||
|
self.GamePanel:RefreshMessagePanel()
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:AutoRegisterBtn()
|
||
|
self.BtnBack.CallBack = function () self:Close() end
|
||
|
self.BtnMainUi.CallBack = function () XLuaUiManager.RunMain() end
|
||
|
self.BtnStart.CallBack = function () self:OnBtnStartClick() end
|
||
|
local skipId = XDataCenter.InvertCardGameManager.GetStorySkipId()
|
||
|
if skipId and skipId ~= 0 then
|
||
|
self.BtnStory.gameObject:SetActiveEx(true)
|
||
|
self.BtnStory.CallBack = function () XFunctionManager.SkipInterface(skipId) end
|
||
|
else
|
||
|
self.BtnStory.gameObject:SetActiveEx(false)
|
||
|
end
|
||
|
self:RegisterHelpBtn()
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:RegisterHelpBtn()
|
||
|
local helpId = XDataCenter.InvertCardGameManager.GetHelpId()
|
||
|
local template = XHelpCourseConfig.GetHelpCourseTemplateById(helpId)
|
||
|
self:BindHelpBtn(self.BtnHelp, template.Function)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnBtnStartClick()
|
||
|
XDataCenter.InvertCardGameManager.SetStartStage(self.CurStage)
|
||
|
self:SetStartCoverActiveEx(false)
|
||
|
self:SetFullCoverActiveEx(true)
|
||
|
local status = self.CurStage:GetStatus()
|
||
|
if status == XInvertCardGameConfig.InvertCardGameStageStatusType.Finish then
|
||
|
return
|
||
|
end
|
||
|
self.GamePanel:PlayStartAnimation()
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:InitBtnGroup()
|
||
|
local togBtns = {}
|
||
|
for i = 1, 4 do
|
||
|
if self["BtnTog"..i] then
|
||
|
tableInsert(togBtns, self["BtnTog"..i])
|
||
|
end
|
||
|
end
|
||
|
self.BtnTabs = {}
|
||
|
local stageIds = XDataCenter.InvertCardGameManager.GetStageEntityList()
|
||
|
for i=1, #togBtns, 1 do
|
||
|
if i <= #stageIds then
|
||
|
togBtns[i].gameObject:SetActiveEx(true)
|
||
|
tableInsert(self.BtnTabs, togBtns[i])
|
||
|
else
|
||
|
togBtns[i].gameObject:SetActiveEx(false)
|
||
|
end
|
||
|
end
|
||
|
self.BtnGroup:Init(self.BtnTabs, function (index) self:OnBtnTabClick(index) end)
|
||
|
for index, togBtn in ipairs(self.BtnTabs) do
|
||
|
local redId = XRedPointManager.AddRedPointEvent(togBtn.ReddotObj, nil, nil, {XRedPointConditions.Types.CONDITION_INVERTCARDGAME_TOG}, index, true)
|
||
|
tableInsert(self.RedPointIds, redId)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:OnBtnTabClick(index)
|
||
|
if index == self.CurrentSelectIndex then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local stageList = XDataCenter.InvertCardGameManager.GetStageEntityList()
|
||
|
if XDataCenter.InvertCardGameManager.CheckStageIsOpen(index) then
|
||
|
self.CurrentSelectIndex = index
|
||
|
local curStage = XDataCenter.InvertCardGameManager.GetStageEntityList()[index]
|
||
|
if curStage then
|
||
|
self.CurStage = curStage
|
||
|
self.RewardPanel:Refresh(curStage)
|
||
|
self.GamePanel:Refresh(curStage)
|
||
|
self:RefreshStartCover(curStage)
|
||
|
self:PlayAnimation("QieHuan")
|
||
|
end
|
||
|
else
|
||
|
self.BtnGroup:SelectIndex(self.CurrentSelectIndex)
|
||
|
if stageList[index-1] then
|
||
|
XUiManager.TipError(CSXTextManagerGetText("InvertCardGameStageNotOpen", stageList[index-1]:GetName()))
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:RefreshBtnTab()
|
||
|
local stageList = XDataCenter.InvertCardGameManager.GetStageEntityList()
|
||
|
|
||
|
for index, btnTab in pairs(self.BtnTabs) do
|
||
|
if stageList[index] then
|
||
|
btnTab:SetNameByGroup(0, stageList[index]:GetName())
|
||
|
local isOpen = XDataCenter.InvertCardGameManager.CheckStageIsOpen(index)
|
||
|
btnTab:SetDisable(not isOpen)
|
||
|
local isFinish = stageList[index]:GetStatus() == XInvertCardGameConfig.InvertCardGameStageStatusType.Finish
|
||
|
btnTab:ShowTag(isFinish)
|
||
|
if self.CurrentSelectIndex and self.CurrentSelectIndex == index then
|
||
|
btnTab:SetButtonState(XUiButtonState.Select)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:RefreshRewardProcess()
|
||
|
local takeNum, count = XDataCenter.CoupletGameManager.GetRewardProcess()
|
||
|
self.TxtRewardPorcess.text = string.format("%s%s%s", takeNum, "/", count)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:CheckHitFaceHelp()
|
||
|
local hitFaceData = XSaveTool.GetData(string.format( "%s%s%s", XInvertCardGameConfig.INVERT_CARD_GAME_HELP_HIT_KEY, XPlayer.Id, XDataCenter.InvertCardGameManager.ActId))
|
||
|
if not hitFaceData or hitFaceData == XInvertCardGameConfig.HitFaceHelpState.NotHit then
|
||
|
local helpId = XDataCenter.InvertCardGameManager.GetHelpId()
|
||
|
local template = XHelpCourseConfig.GetHelpCourseTemplateById(helpId)
|
||
|
XUiManager.ShowHelpTip(template.Function)
|
||
|
XSaveTool.SaveData(string.format( "%s%s%s", XInvertCardGameConfig.INVERT_CARD_GAME_HELP_HIT_KEY, XPlayer.Id, XDataCenter.InvertCardGameManager.ActId), XInvertCardGameConfig.HitFaceHelpState.Hited)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:InitSKipRedPoint()
|
||
|
local curSkipId = XDataCenter.InvertCardGameManager.GetStorySkipId()
|
||
|
if not curSkipId or curSkipId == 0 then
|
||
|
return
|
||
|
end
|
||
|
local skipTemplate = XFunctionConfig.GetSkipList(curSkipId)
|
||
|
local redId = XRedPointManager.AddRedPointEvent(self.BtnStory.ReddotObj, nil, nil, {XRedPointConditions.Types.CONDITION_MOVIE_ASSEMBLE_RED}, skipTemplate.CustomParams[1], true)
|
||
|
self.SkipRedPointId = redId
|
||
|
tableInsert(self.RedPointIds, redId)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:RefreshStartCover(stageEntity)
|
||
|
local startState = XDataCenter.InvertCardGameManager.GetStartStage(stageEntity)
|
||
|
if not startState or startState == XInvertCardGameConfig.InvertCardGameStartStage.NotStart then
|
||
|
self:SetStartCoverActiveEx(true)
|
||
|
else
|
||
|
self:SetStartCoverActiveEx(false)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:SetStartCoverActiveEx(bool)
|
||
|
self.StartCover.gameObject:SetActiveEx(bool)
|
||
|
self.BtnStart.gameObject:SetActiveEx(bool)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:SetFullCoverActiveEx(bool)
|
||
|
self.FullCover.gameObject:SetActiveEx(bool)
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:RemoveRedPoints()
|
||
|
if self.RedPointIds and next(self.RedPointIds) then
|
||
|
for _, redId in ipairs(self.RedPointIds) do
|
||
|
XRedPointManager.RemoveRedPointEvent(redId)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:StartActivityTimer()
|
||
|
local timeId = XDataCenter.InvertCardGameManager.GetActivityTimeId()
|
||
|
local startTime, endTime = XFunctionManager.GetTimeByTimeId(timeId)
|
||
|
local nowTime = XTime.GetServerNowTimestamp()
|
||
|
self.TxtTime.text = XUiHelper.GetTime(endTime - nowTime, XUiHelper.TimeFormatType.ACTIVITY)
|
||
|
if nowTime < startTime then
|
||
|
XUiManager.TipText("InvertCardGameTimeNotOpen")
|
||
|
self:Close()
|
||
|
elseif nowTime > endTime then
|
||
|
XUiManager.TipText("InvertCardGameTimeEnd")
|
||
|
self:Close()
|
||
|
else
|
||
|
self.ActivityTimer = XScheduleManager.ScheduleForever(function()
|
||
|
local time = XTime.GetServerNowTimestamp()
|
||
|
if time > endTime then
|
||
|
XUiManager.TipError(CSXTextManagerGetText("InvertCardGameTimeEnd"))
|
||
|
self:StopActivityTimer()
|
||
|
XLuaUiManager.RunMain()
|
||
|
return
|
||
|
end
|
||
|
self.TxtTime.text = XUiHelper.GetTime(endTime - time, XUiHelper.TimeFormatType.ACTIVITY)
|
||
|
end, XScheduleManager.SECOND, 0)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiInvertCardGame:StopActivityTimer()
|
||
|
if self.ActivityTimer then
|
||
|
XScheduleManager.UnSchedule(self.ActivityTimer)
|
||
|
self.ActivityTimer = nil
|
||
|
end
|
||
|
end
|