ro-webgl/Assets/Lua/UI/UIMain/UIMainView.lua

1478 lines
55 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local UIMainView = require("UIMain/UIMainView_Generate")
local MainTopView = require("UIMain/MainTopView")
local MainBottomView = require("UIMain/MainBottomView")
-- local GotAnimCtr = require("UIPOPGot/UIPOPGotAnimsCtr")
local DOTween = DG.Tweening.DOTween
local LoopType = DG.Tweening.LoopType
local curTopResType = Enum.ItemType.Diamond
local _curMainButtonType = Enum.MainViewPageType.Adventure
local mainTopView
local mainBottomView
--- 慧勇需求 经验条最小不能小于这个值哪怕为真实值为0
local BarMinValue = 0.02
local AddEffectBarSpeed = 0.5
local bossBattleStatus = false
--region 生命周期
function UIMainView:OnAwake(data)
self.controller = require("UIMain/UIMainCtr"):new()
self.controller:Init(self)
self.controller:SetData(data)
end
function UIMainView:FillContent(data, uiBase)
self.uiBase = uiBase
local gameObject = self.uiBase:GetRoot()
if gameObject ~= nil then
self.gameObject = gameObject
self.transform = gameObject.transform
end
self:InitGenerate(self.transform, data)
self:Init()
self:DailySignTrigger()
self.btnGM:SetActive(false)
end
function UIMainView:RemoveEventListener()
-- LogError("remove event "..self.uiData.name)
ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.RED_POINT_MGR_NOTICE, self, self.OnRedPointMgrNotice)
end
function UIMainView:AddUIEventListener()
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
self.uiBase:AddButtonEventListener(self.btnBack.button, function()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UILiveRoom)
end)
self.uiBase:AddButtonEventListener(self.btnGold.button, function()
if self.mainPageId then
-- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGM)
if curTopResType == Enum.ItemType.Diamond then
local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShop, {Enum.RuneShopType.Gifts, Enum.RuneShopSubType.Gold}, curUIId)
end
end
end)
self.uiBase:AddButtonEventListener(self.town.icon.button, self, self.ChangePage, Enum.MainViewPageType.Town)
self.uiBase:AddButtonEventListener(self.adventure.icon.button, self, self.ChangePage, Enum.MainViewPageType.Adventure)
self.uiBase:AddButtonEventListener(self.shop.icon.button, self, self.ChangePage, Enum.MainViewPageType.Pet)
self.uiBase:AddButtonEventListener(self.role.icon.button, self, self.ChangePage, Enum.MainViewPageType.Role)
self.uiBase:AddButtonEventListener(self.bag.icon.button, self, self.ChangePage, Enum.MainViewPageType.Bag)
self.uiBase:AddButtonEventListener(self.xiuLian.icon.button, self, self.ChangePage, Enum.MainViewPageType.XiuLian)
self.uiBase:AddButtonEventListener(self.rank.icon.button, self, self.ChangePage, Enum.MainViewPageType.Rank)
self.uiBase:AddButtonEventListener(self.btnBase.button,self,self.OnClickBaseBtn)
self.uiBase:AddButtonEventListener(self.btnJob.button,self,self.OnClickJobBtn)
self.uiBase:AddButtonEventListener(self.headItem.head.button,self,self.OnClickHead)
self.uiBase:AddButtonEventListener(self.topView.topRoot.btnNotifyActivity.button,self,self.OpenNoticeAndActivity)
self.uiBase:AddButtonEventListener(self.topView.topRoot.btnTask.button,self,self.OpenTask)
self.uiBase:AddButtonEventListener(self.seasonInfo.button, self, self.OnSeasonClick)
self.uiBase:AddButtonEventListener(self.coinZ.icon.button, self,self.OnClickCoinZ)
self.uiBase:AddButtonEventListener(self.gold.icon.button, self,self.OnClickGoldIcon)
self.uiBase:AddButtonUniqueEventListener(self.vipBtn.button, self, self.OnClickVipBtn)
self.uiBase:AddButtonUniqueEventListener(self.fruitBtn.icon.button, self, self.OnFruitBtn)
self.uiBase:AddButtonUniqueEventListener(self.challengeBossBtn.icon.button, self, self.OnChallengeBossBtn)
self.uiBase:AddButtonUniqueEventListener(self.liaoYiLiaoBtn.icon.button, self, self.OnLiaoYiLiaoBtn)
self.uiBase:AddButtonUniqueEventListener(self.replyMessageBtn.icon.button, self, self.OnReplyMessageBtn)
self.uiBase:AddButtonUniqueEventListener(self.climbTowerBtn.icon.button, self, self.OnClimbTowerBtn)
self.uiBase:AddButtonUniqueEventListener(self.feiGeBtn.icon.button, self, self.OnFeiGeBtn)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnClub.button, self, self.OnClickRuneShopBtn)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnFirstRecharge.button, self, self.OnClickFirstRechargeBtn)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnLimitedGift.button, self, self.OnClickLimitGiftBtn)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnQuestionnaire.button, self, self.OnQuestionClick)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityTower.button, self, self.OnTowerClick)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityDojo.button, self, self.OnArenaClick)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityMap.button, self, self.OnMapClick)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityPet.button, self, self.OnPetClick)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnAirshipRewards.button, self, self.OnRewardsClick)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivitySkill.button, self, self.OnSkillClick)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnGuildWar.button, self, self.OnClickGuildWarBtn)
self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnCombineService.button, self, self.OnClickCombineServerBtn)
self.uiBase:AddButtonUniqueEventListener(self.topBtnsNew.btnDailySign.button, self, function()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISignDaily)
end)
self.uiBase:AddButtonUniqueEventListener(self.sendDanmuBtn.button, self, function()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDanmuInput, "UIMain")
end)
--
--self.chatView.uIEventTriggerListener.onClick = function()
-- self:OnChatClick()
--end
-- NEWUI
self.uiBase:AddButtonEventListener(self.homeCloseBtn.button, function()
if self.curr_newui_L1_uiData then
local uiData = self.curr_newui_L1_uiData
ManagerContainer.LuaUIMgr:ClosePage(uiData.id, true)
self.curr_newui_L1_uiData = nil
self.homeCloseBtn:SetActive(false)
self.homeReturnBtn:SetActive(false)
_curMainButtonType = Enum.MainViewPageType.Adventure
end
end)
self.uiBase:AddButtonEventListener(self.homeReturnBtn.button, function()
if self.curr_newui_L2_uiData then
local uiData = self.curr_newui_L2_uiData
ManagerContainer.LuaUIMgr:ClosePage(uiData.id, true)
self.curr_newui_L2_uiData = nil
self.homeCloseBtn:SetActive(false)
self.homeReturnBtn:SetActive(false)
if uiData.type >= Enum.UIType.Total and uiData.type <= Enum.UIType.Normal then
else
self.homeReturnBtn:SetActive(true)
end
end
end)
end
function UIMainView:AddEventListener()
-- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REFRESH_COIN_AND_DIAMOND, function()
-- self:RefreshCoins()
-- self:RefreshLv()
-- end)
-- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REFRESH_ROLE_LV, function()
-- self:RefreshLv()
-- end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ROLE_EXP_CHANGED, self, self.ShowAddRoleExpEffect)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.JOB_EXP_CHANGED, self, self.ShowAddJobExpEffect)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COIN_CHANGED, self, self.ShowAddCoinEffect)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DIAMOND_CHANGED, self, self.ShowAddDiamondEffect)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ROLE_LV_CHANGED, self, self.OnRefreshRoleLv)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.JOB_LV_CHANGED, self, self.OnRefreshJobLv)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_VIEW_SET_ATTR_BTN, self, self.CloseBtnBase)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_VIEW_UP_SKILL_BTN, self, self.CloseBtnJob)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_HANG_TIME, self, self.RefreshRestTime)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.NICK_NAME_CREATED, self, self.RefreshUserNickName)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.USER_HEADPROTRAIT_CHANGED, self, self.RefreshHead)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_CHANGE_BUTTONS_STATE,self,self.SetActiveButtonsState)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_UI_ROLE_REDPOINT_NOTICE, self, self.RoleRedPointNotice)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RED_POINT_NOTICE, self, self.RoleRedPointNotice)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UI_FORCE_GUIDE_OVER, self, self.LoggedinForceGuideOver)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UIMAINVIEW_CHANGE_NOTICE, function(pageType, data)
self:ChangePageMsg(pageType, data)
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DISPLAY_MAIN_TOP, function(state, order)
if mainTopView then
mainTopView:Change(state, order)
end
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DISPLAY_MAIN_BOTTOM, function(state, order)
if mainBottomView then
mainBottomView:Change(state, order)
end
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.LIMIT_RECHARGE_OPEN_NTF, function(state, order)
if mainTopView then
mainTopView:OpenLimitRecharge()
end
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REFRESH_COIN_AND_JOBEXP, function()
self:RefreshDiamond()
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_CRUISE_CHANGED, function()
if curTopResType ~= Enum.ItemType.SkillExp then return end
self:RefreshDiamond()
end)
-- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GOT_ITEM_ANIM_END_NOTIFY, function(type)
-- LogError("got anim end "..type)
-- local GotAnimCtr = require("UIPOPGot/UIPOPGotAnimsCtr")
-- local result = GotAnimCtr:IsInSameTypeAnim(type)
-- LogError(result)
-- end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GOT_ITEM_ANIM_END_NOTIFY, function(type, num)
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UI_MAIN_TOP_RES_TYPE, function(resType)
--if Enum.TopResMap[id] == nil then
-- id = Enum.UIPageName.UIMain
--end
--if id == Enum.UIPageName.UIRoleMain1 then
-- if not param then
-- id = Enum.UIPageName.UIRoleMain1
-- else
-- id = Enum.UIPageName.UIMain
-- end
--end
curTopResType = resType
self:RefreshDiamond()
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FIGHTPOWER_REFRESH, function()
self:RefreshFightPower()
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BTN_BASE_DISPLAY, function(result)
if result and bossBattleStatus then return end
self:DisplayBtnBase(result)
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BTN_JOB_DISPLAY, function(result)
if result and bossBattleStatus then return end
self:DisplayBtnJob(result)
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BOSS_BATTLE_STATUS, function(result)
bossBattleStatus = result
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DISPLAY_MAIN_TOP,not result)
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.STAGEGOAL_DISPLAY,not result)
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BTN_BASE_DISPLAY,not result)
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BTN_JOB_DISPLAY,not result)
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DISPLAY_MAIN_BOTTOM, not result)
--if result then
-- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DISPLAY_MAIN_BOTTOM, result)
--end
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_OPEN_NTF, function(competitionId, _isRefresh)
self:RefreshSeasonInfo()
if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UISeason) and not _isRefresh then
local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISeason, competitionId, curUIId)
end
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GM_SCROLL_NOTICE, self, self.InsertGMNotice)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ROLE_JOB_CHANGE_SUCCESS, self, self.RefreshJobIcon)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Used_New_HeadFrame, self, self.ChangeHeadFrame)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_NOTICE_CLOSE_NTF, self, self.RefreshSeasonNoticeState)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_RANK_CHANGED_NTF, self, self.OnSeasonRankChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_FirstRecharge_Change, self, self.RefreshFirstRechargeBtn)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, self, self.RefreshRankActivityEnter)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_MINUTE_UPDATE, self, self.RefreshSeasonInfo)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.QUESTION_REWARD_SUCCESS, self, self.RefreshQuestionRewardBtn)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.AIRSHIP_ACTIVITY_DISPLAY_NTF, self, self.RefreshAirShipActivityEnter)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_WAR_OPEN_STATE_CHANGED, self, self.RefreshGuildWarBtn)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COMBINE_SERVER_TIME_CHANGED, self, self.OnCombineServerTimeChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COMBINE_SERVER_CONTENT_CHANGED, self, self.OnCombineServerContentChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VIP_LV_CHANGED, self, self.OnVipLvChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_RECORD_STORY, self, self.OnRecordStory)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_LEVEL_CHANGED, self, self.OnLevelChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_CURR_STORY_TASK_NTF, self, self.OnCurrStoryTaskNtf)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_RECORD_STORY_FINISH, self, self.OnRecordStoryFinish)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_UI_RETURN_HOME, self, self.OnUIReturnHome)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ITEM_CHANGE, self, self.OnRedPointMgrNotice)
-- NEWUI
--[[
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_NEWUI_OPEN, function(uiData)
--LogError("[UIMainView] EID_NEWUI_OPEN UI Type "..uiData.type)
self.homeCloseBtn:SetActive(false)
self.homeReturnBtn:SetActive(false)
if uiData.type >= Enum.UIType.Total and uiData.type <= Enum.UIType.Normal then
self.curr_newui_L1_uiData = uiData
self.homeCloseBtn:SetActive(true)
else
self.curr_newui_L2_uiData = uiData
self.homeReturnBtn:SetActive(true)
end
end)
]]
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_NEWUI_CLOSE, function(uiData)
_curMainButtonType = Enum.MainViewPageType.Adventure
--self:ChangePageMsg(Enum.MainViewPageType.Adventure)
end)
ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.RED_POINT_MGR_NOTICE, self, self.OnRedPointMgrNotice)
ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_DANMU_INPUT_NTF, self, self.OnDanmuInputNtf)
end
function UIMainView:OnDanmuInputNtf(uiName, danmuStr)
LogError("uiName="..uiName..",danmuStr="..danmuStr)
if uiName == "UIMain" then
self.danmuPlayerComp:PlayMySelf(danmuStr)
end
end
function UIMainView:OnRedPointMgrNotice(rpType, result, param)
self:RefreshSystemPad()
end
-- TODO: 快速到达UI
function UIMainView:RefreshFastOpenUI()
local fastOpenUIData = {}
local heroEquipDressStatus = ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatus()
-- local heroEquipDressStatus = ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusById(logicData.id)
-- local oneKeyUpRP = ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipForgeRPStatus()
-- local oneKeyUpRP = ManagerContainer.RedPointMgr.HeroRPCtr:GetpartnerEquipForgeRPStatusById(logicData.id)
-- oneKeyRP == Enum.RedPointEnum.EquipDressRP
if heroEquipDressStatus == Enum.RedPointEnum.EquipDressRP then
table.insert({})
end
if oneKeyUpRP == Enum.RedPointEnum.EquipForgeRP then
end
end
function UIMainView:OnHide()
end
function UIMainView:OnShow()
end
function UIMainView:OnClose()
DOTween.Kill(self.gold.transform)
end
function UIMainView:OnDispose()
if mainTopView then
mainTopView:Dispose()
mainTopView = nil
end
if mainBottomView then
mainBottomView:Dispose()
mainBottomView = nil
end
if self.delayTimer then
self.delayTimer:Stop()
end
self.delayTimer = nil
if self.dataDelayTimer then
self.dataDelayTimer:Stop()
end
self.dataDelayTimer = nil
self.canSignPlay = false
end
function UIMainView:Init()
curTopResType = self.uiData.top_res_id
ManagerContainer.DataMgr.TaskDataNew:SetMainButton(Enum.MainViewPageType.Adventure);
if mainTopView == nil then
mainTopView = MainTopView.new()
mainTopView:Init(self.topView, self.topView.canvas, self.topView.topRoot.animator, self.uiBase.SortingOrder)
end
if mainBottomView == nil then
mainBottomView = MainBottomView.new()
mainBottomView:Init(self.bottomView, self.bottomView.canvas, self.bottomView.mainRoot.animator, self.uiBase.SortingOrder)
end
--ManagerContainer.ResMgr:InitCommonMats()
--ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPrivateChatBtn)
self:Refresh()
self:RedPointRefresh()
if mainTopView then
mainTopView:RefreshTopBtns(true)
end
self:RefreshFirstRechargeBtn()
self:RefreshGuildWarBtn()
self:RefreshSystemPad()
self:CheckPlayStoryAndForceGuide(true)
--统一刷新数据
self:RefreshData()
AW.async(function()
--local go = AW.await(ManagerContainer.ResMgr:LuaGetGoFromPoolAsync(Constants.UICommonPath, "LockbtnItem"))
--LogError("Test: "..go.name)
end)
self:InitDanmu()
end
function UIMainView:InitDanmu()
local danmuPlayerGo = self.danmu.transform:Find("MyDanmuPlayer")
self.danmuPlayerComp = danmuPlayerGo:GetComponent("MyDanmuPlayer")
local defaultDanmuList = {"<sprite=400><sprite=400><sprite=400>"}
local danmuChannel = "_uimain_"
self.danmuPlayerComp:ResetPlayer()
local function PlayDanmu(danmuList, time)
self.danmuPlayerComp:Play(
danmuList, time,
function()
--LogError("Danmu Play Ntf")
end,
function()
--LogError("Danmu Play Finished")
FrameTimer.New(function() PlayDanmu(danmuList, time) end, 1):Start()
end
)
end
local function MyGetDanmu()
ManagerContainer.DataMgr.DanmuData:GetDanmu(danmuChannel, 0, 200, function(newDanmuList)
PlayDanmu(newDanmuList, 10)
end)
end
MyGetDanmu()
end
--endregion 生命周期
function UIMainView:OnRecordStory(storyId)
end
-- 关卡变更时调用
function UIMainView:OnLevelChanged()
self:RefreshSystemPad()
end
function UIMainView:OnRecordStoryFinish()
self:RefreshSystemPad()
end
function UIMainView:OnUIReturnHome(result)
if result then
self:CheckPlayStoryAndForceGuide(false)
end
self:RefreshSystemPad()
end
function UIMainView:RefreshSystemPad()
local mapLevel = ManagerContainer.LuaBattleMgr:GetCurLevelUniqueId()
local mapLevelData = ManagerContainer.CfgMgr:GetLevelDataById(mapLevel)
local storyId = mapLevelData["DlgId"]
local forceGuideGroup = mapLevelData["ForceGuideGroup"]
if forceGuideGroup > 0 and ManagerContainer.ForceGuideMgr:CheckRecord(tonumber(forceGuideGroup)) then
self.figherTap:SetActive(false)
elseif mapLevel < 30001 then
self.figherTap:SetActive(true)
end
local storyCfgData = ManagerContainer.CfgMgr:GetStoryDataById(storyId)
if storyCfgData and storyCfgData.Type==1 and ManagerContainer.DataMgr.StoryData:IsStoryPlay(storyId) == false then
--self.systemPad.momoTip:SetActive(true)
local storyNpcId = storyCfgData["StoryNpcId"]
if storyCfgData then
local storyNpcCfg = ManagerContainer.CfgMgr:GetStoryNpcCfgByChatNpcId(tonumber(storyNpcId))
self.systemPad.momoTip.tip.text.text = string.format("女神【%s】发来新消息快去撩她吧", I18N.T(storyNpcCfg.NameKey))
end
else
self.systemPad.momoTip:SetActive(false)
end
for i=1, 4 do
self.systemPad.fastOpenUI["role"..i]:SetActive(false)
end
local teams = ManagerContainer.DataMgr.UserData:GetTeamData(true)
for i=1, #teams do
local roleData = teams[i]
self.systemPad.fastOpenUI["role"..i]:SetActive(true)
local headPos, headBgColor = CommonUtil.GetRoleHeadInfo(roleData.uid)
self.systemPad.fastOpenUI["role"..i].headBG.image.color = headBgColor
self.systemPad.fastOpenUI["role"..i].head.rectTransform.anchoredPosition = headPos
CommonUtil.LoadIcon(self, "HeroDraw/Role_"..roleData.uid, function(sprite)
self.systemPad.fastOpenUI["role"..i].head.image.sprite = sprite
end)
self.uiBase:AddButtonUniqueEventListener(self.systemPad.fastOpenUI["role"..i].button, self, function()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRoleInfo, i)
end)
local rpState = Enum.RedPointEnum.None
if roleData.uid == 1 then
rpState = ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroRPStatus()
else
rpState = ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerRPStatus(roleData.uid)
end
if rpState ~= Enum.RedPointEnum.None then
local redPointParent = self.systemPad.fastOpenUI["role"..i].redPoint.transform
redPointParent.gameObject:SetActive(true)
if redPointParent then
if redPointParent.childCount == 0 then
self:CreateNormalRedPoint(redPointParent)
end
end
else
self.systemPad.fastOpenUI["role"..i].redPoint:SetActive(false)
end
end
end
function UIMainView:CreateNormalRedPoint(parent)
AW.async(function()
local UIRedPointRP = "UIRedPointRP"
local redPoint = AW.await(ManagerContainer.ResMgr:LuaGetGoFromPoolAsync(Constants.UICommonPath, UIRedPointRP))
if redPoint then
redPoint.transform:SetParent(parent)
redPoint.transform.localPosition = Vector3.zero
redPoint.transform.localRotation = Quaternion.identity
redPoint.transform.localScale = Vector3.one
redPoint:SetActive(true)
end
end)
end
function UIMainView:CheckPlayStoryAndForceGuide(checkRecord)
local delayTimer = FrameTimer.New(function()
-- 检测是否开启强制引导
local mapLevel = ManagerContainer.LuaBattleMgr:GetCurLevelUniqueId()
local mapLevelData = ManagerContainer.CfgMgr:GetLevelDataById(mapLevel)
local dlgId = mapLevelData["DlgId"]
local forceGuideGroup = mapLevelData["ForceGuideGroup"]
local storyId = dlgId
LogError("[CheckPlayStoryAndForceGuide] mapLevel="..storyId.." storyId="..storyId.." forceGuideGroup="..forceGuideGroup)
-- 1. 先检测当前关卡是否有剧情,有剧情就先播放剧情
local storyCfg = ManagerContainer.CfgMgr:GetStoryDataById(storyId)
if storyCfg and storyCfg.Type == 0 then
if checkRecord then
local record = ManagerContainer.DataMgr.StoryData:IsStoryPlay(storyCfg.StoryId)
if record == false then
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayStory, storyCfg)
return
end
else
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayStory, storyCfg)
return
end
end
-- if storyId > 0 then
-- if ManagerContainer.DataMgr.StoryData:IsStoryPlay(storyId) == false then
-- ManagerContainer.UIStoryMgr:StartStoryByStoryId(tonumber(storyId), true)
-- return
-- end
-- end
-- 2. 如果没有剧情或者剧情已经播放完了,就检测是否要强制引导
if forceGuideGroup > 0 then
checkRecord = true
if checkRecord then
ManagerContainer.ForceGuideMgr:AddForceGuideNeedCheck(tonumber(forceGuideGroup))
else
ManagerContainer.ForceGuideMgr:AddForceGuideDontCheck(tonumber(forceGuideGroup))
end
end
end, 10)
delayTimer:Start()
end
function UIMainView:RefreshLockInfo()
local isPlayKillSmallMonsterStoryId = self.controller:IsPlayKillSmallMonsterStoryId()
self.challengeBossBtn.transform:Find("Icon").gameObject:SetActive(isPlayKillSmallMonsterStoryId)
self.challengeBossBtn.transform:Find("Icon_lock").gameObject:SetActive(not isPlayKillSmallMonsterStoryId)
end
function UIMainView:DailySignTrigger()
--[[
local _canSignPlay = ManagerContainer.DataMgr.SignData:CanTodaySign()
if _canSignPlay then
--local isUnLock = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(55);
--if isUnLock then
-- ManagerContainer.LuaUIMgr:OpenInputMask(10000)
--end
self.canSignPlay = true
self.delayTimer = FrameTimer.New(function()
self.loggedinNeedForceGuide = ManagerContainer.ForceGuideMgr:LoggedinCheckForceGuide()
if not self.loggedinNeedForceGuide and not ManagerContainer.StoryMgr:IsStorying() and not ManagerContainer.StoryMgr:HasPreStoryChapter() then
self:LoggedinForceGuideOver()
end
local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(10)
self:RefreshSeasonNoticeState(unlockState)
end, 1)
self.delayTimer:Start()
else
self.loggedinNeedForceGuide = ManagerContainer.ForceGuideMgr:LoggedinCheckForceGuide()
if not self.loggedinNeedForceGuide and not ManagerContainer.StoryMgr:IsStorying() and not ManagerContainer.StoryMgr:HasPreStoryChapter() then
self:LoggedinForceGuideOver()
end
end
]]
end
function UIMainView:RefreshSeasonNoticeState(state)
--self.seasonNotice:SetActive(state)
end
function UIMainView:RefreshData()
self.dataDelayTimer = FrameTimer.New(function()
--赛季最新数据查询
ManagerContainer.DataMgr.CompetitionData:SetRefreshSeasonState(true)
ManagerContainer.DataMgr.CompetitionData:QueryCurCompetitionReq(true)
ManagerContainer.DataMgr.RankActivitiesMgr:CheckRancActivityOpenTime()
ManagerContainer.DataMgr.RuneShopDataMgr:CheckAirShipActivityOpenTime()
--刷新契约红点
ManagerContainer.RedPointMgr.PetRPCtr:RefreshTotalQiyueRPState()
end, 1)
self.dataDelayTimer:Start()
end
function UIMainView:OnSeasonRankChanged(type)
self.seasonUp:SetActive(type == 1)
self.seasonDown:SetActive(type == 2)
end
function UIMainView:RedPointRefresh()
--宠物红点刷新
ManagerContainer.DataMgr.PetDataMgr:RefreshAllPetRPState()
end
function UIMainView:Refresh()
if ManagerContainer.FSMMgr:IsBattleState() then
self.mainPageId = Enum.UIPageName.UIBattle
self.mainBtn.animator:Play("AdventureActived");
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattle)
elseif ManagerContainer.FSMMgr:IsDojoState() then
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojo2D)
end
self.btnBase:SetActive(ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false))
self.btnJob:SetActive(ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false))
self:RefreshUserNickName()
--[[
self:RefreshUserHeadProtrait()
self:RefreshJobIcon()
]]--
self:RefreshHead();
self:RefreshFightPower()
self:RefreshLv()
self:RefreshRoleExp()
self:RefreshJobLv()
self:RefreshJobExp()
self:RefreshCoins()
self:RefreshDiamond()
self:RefreshVipView()
self:RefreshSeasonInfo()
self:RoleRedPointNotice()
self:InsertGMNotice()
self:StartLimitTimeItem()
end
function UIMainView:StartLimitTimeItem()
ManagerContainer.DataMgr.BagData:StartLimitTimeItemDelete()
end
function UIMainView:RefreshSeasonInfo()
local seasonData = ManagerContainer.DataMgr.CompetitionData:GetCurCompetitionData()
if seasonData == nil then return end
local stage,nextStageTime = ManagerContainer.DataMgr.CompetitionData:GetCurStageAndNextTime()
local curCompetitionId = ManagerContainer.DataMgr.CompetitionData:GetCurCompetitionId()
local competitionCfgDatas = ManagerContainer.CfgMgr:GetCompetitionDatasByType(curCompetitionId)
if not competitionCfgDatas or #competitionCfgDatas == 0 then
return
end
self.SeasonName.text.text = I18N.T(competitionCfgDatas[1].CompetitionName)
if stage == 1 then
self.remainDay.text.text = I18N.T("DscSeasonResult13")
self.remainDay1.text.text = I18N.T("DscSeasonResult13")
elseif stage == 2 then
local endTime = nextStageTime
if endTime == 0 then
self.remainDay.text.text = I18N.T("DscSeasonResult6")
self.remainDay1.text.text = I18N.T("DscSeasonResult6")
else
local remainS = ManagerContainer.LuaTimerMgr:GetRemainSecondsWithUInt64(endTime, false)
if remainS > 0 then
if remainS <= 60 then
self.remainDay.text.text = I18N.T("LessOneMinu")
self.remainDay1.text.text = I18N.T("LessOneMinu")
else
local time = DateTimeUtil.convertSeconds2TimeStr1(remainS, true, false)
self.remainDay.text.text = time
self.remainDay1.text.text = time
end
else
self.remainDay.text.text = I18N.T("DscSeasonResult6")
self.remainDay1.text.text = I18N.T("DscSeasonResult6")
end
end
elseif stage == 3 then
self.remainDay.text.text = I18N.T("DscSeasonResult6")
self.remainDay1.text.text = I18N.T("DscSeasonResult6")
end
end
function UIMainView:RefreshUserNickName()
LogError("###"..ManagerContainer.DataMgr.UserData:GetOriUserNickname())
self.textName.text.text = ManagerContainer.DataMgr.UserData:GetUserNickname()
end
function UIMainView:InsertGMNotice()
local notice = ManagerContainer.DataMgr.GMNoticeData:GetCurNotice()
if mainTopView and notice then
mainTopView:InsertGMNotice(notice)
end
end
function UIMainView:ChangeHeadFrame(headFrameIcon)
CommonUtil.LoadIcon(self, headFrameIcon, function (sprite)
self.headItem.frame.image.sprite = sprite
end)
end
function UIMainView:RefreshHead()
local curRoleLv = ManagerContainer.DataMgr.UserData:GetRoleLv()
local jobCfgId = ManagerContainer.DataMgr.UserData:GetJobCfgId()
local jobCfgData = ManagerContainer.CfgMgr:GetJobDataById(jobCfgId)
local headId = ManagerContainer.DataMgr.UserData:GetHeadPortraitId()
local headIconPath = "PlayerHeads/player_head_"..headId
--local headIcon = ManagerContainer.DataMgr.UserData:GetUserHeadIcon()
local _fakerData = {Level = curRoleLv, ProfessionIcon = jobCfgData.JobIcon, HeadIcon = headIconPath, IsHero = true};
local _headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId()
LogError("--SetPlayerHeadAndFrame--")
CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, _fakerData,false, _headFrameId, self, self.OnClickHead);
self.lvText.text.text = "Lv."..curRoleLv
-- TODO: New UI
-- if not jobCfgData or jobCfgData.JobStage >= 3 then
-- self.expBarJob:SetActive(false)
-- else
-- self.expBarJob:SetActive(true)
-- end
end
function UIMainView:RefreshJobIcon()
local jobCfgId = ManagerContainer.DataMgr.UserData:GetJobCfgId()
local jobCfgData = ManagerContainer.CfgMgr:GetJobDataById(jobCfgId)
CommonUtil.LoadIcon(self, jobCfgData.JobIcon, function (sprite)
self.headItem.jobIcon.image.sprite = sprite
end, self, 'jobIconIdx')
end
function UIMainView:RefreshFightPower()
self.fightpower.text.text = ManagerContainer.DataMgr.UserData:GetTotalFightPower()
end
function UIMainView:RoleRedPointNotice()
--local RPStatus = ManagerContainer.RedPointMgr.HeroRPCtr:GetUIMainRPStatus()
--RedPointItemCtr:SetData(self, self.redPointItem, RPStatus, Enum.HeroRPSource.Main)
end
function UIMainView:RefreshLv()
local curRoleLv = ManagerContainer.DataMgr.UserData:GetRoleLv()
self.expBarBase.textLv.text.text = CommonUtil.StringConcat("Lv.", curRoleLv)
self.curRoleLv = curRoleLv
self.headItem.levelText.text.text = tostring(curRoleLv);
end
function UIMainView:RefreshRoleExp()
local roleExp = ManagerContainer.DataMgr.UserData:GetRoleExp()
local curBaseMaxExp = ManagerContainer.DataMgr.UserData:GetHeroCurBaseMaxExp()
self.expBarBase.textTotal.text.text = CommonUtil.StringConcat(CommonUtil.FormatNumber(roleExp), "/", CommonUtil.FormatNumber(curBaseMaxExp))
local barPercent = curBaseMaxExp == 0 and 0 or roleExp/curBaseMaxExp
self.expBarBase.slider.slider.value = Mathf.Max(BarMinValue, barPercent)
self.lvProgress.image.fillAmount = Mathf.Max(BarMinValue, barPercent)
self.curRoleExp = roleExp
self.expBarBase.slider.effect:SetActive(false)
--self:RefreshRestTime()
end
function UIMainView:RefreshRestTime(awardTotalTime)
self.controller:SetAwardTotalTime(awardTotalTime)
local roleExp = ManagerContainer.DataMgr.UserData:GetRoleExp()
local curBaseMaxExp = ManagerContainer.DataMgr.UserData:GetHeroCurBaseMaxExp()
local lerp = curBaseMaxExp - roleExp
if lerp > 0 then
local curLevelExp = ManagerContainer.LuaBattleMgr:CurLevelExp() or 100
local seconds = Mathf.Ceil(lerp * 60 / curLevelExp - self.controller:GetAwardTotalTime())
self.restTime.text.uILocalizeScript:SetContent('RestTime')
self.restTime.textTime.text.text = DateTimeUtil.convertSeconds2TimeStr(seconds, false)
elseif lerp == 0 then
self.restTime.text.uILocalizeScript:SetContent('RestTimeMax')
self.restTime.textTime.text.text = '--'
end
end
function UIMainView:RefreshJobLv()
local curJobLv = ManagerContainer.DataMgr.UserData:GetJobLv()
self.expBarJob.textLv.text.text = CommonUtil.StringConcat("Lv.", curJobLv)
self.curJobLv = curJobLv
end
function UIMainView:RefreshJobExp()
local curMaxJobExp = ManagerContainer.DataMgr.UserData:GetHeroCurJobMaxExp()
local jobExp = ManagerContainer.DataMgr.UserData:GetJobExp()
self.expBarJob.textTotal.text.text = CommonUtil.StringConcat(CommonUtil.FormatNumber(jobExp), "/", CommonUtil.FormatNumber(curMaxJobExp))
local barPercent = curMaxJobExp == 0 and 0 or jobExp/curMaxJobExp
self.expBarJob.slider.slider.value = Mathf.Max(BarMinValue, barPercent)
self.curJobExp = jobExp
self.expBarJob.slider.effect:SetActive(false)
end
function UIMainView:RefreshCoins()
local coin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
self.coinZ.text.text.text = CommonUtil.FormatNumber(coin)
self.curCoin = coin
end
function UIMainView:RefreshDiamond()
local count = CommonUtil.GetOwnResCountByItemId(curTopResType) --ManagerContainer.DataMgr.UserData:GetCurrency(curTopResType)
self.gold.text.text.text = CommonUtil.FormatNumber(count)
local itemCfgData = ManagerContainer.CfgMgr:GetItemById(curTopResType)
CommonUtil.LoadIcon(self, itemCfgData.MiniIcon, function (sprite)
self.gold.icon.image.sprite = sprite
end)
--只显示金币的跳转按钮
if curTopResType == Enum.ItemType.Diamond then
self.btnGold:SetActive(Constant.OpenPay)
else
self.btnGold:SetActive(false)
end
if curTopResType == Enum.ItemType.Diamond then
self.curDiamond = count
end
end
function UIMainView:RefreshVipView()
self.vipBtn.image.sprite = nil
self.vipBtn.image.enabled = false
local curVipLv = ManagerContainer.DataMgr.UserData:GetVipLv()
local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(curVipLv)
if not vipCfg then
return
end
CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
if sprite then
self.vipBtn.image.sprite = sprite
self.vipBtn.image.enabled = true
end
end)
end
function UIMainView:DisplayBtnBase(result)
if result then
if ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false) ~= result then
return
end
end
self.btnBase:SetActive(result)
end
function UIMainView:DisplayBtnJob(result)
if result then
if ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false) ~= result then
return
end
end
self.btnJob:SetActive(result)
end
function UIMainView:OnRefreshRoleLv()
-- 在属性界面打开的情况下,不再显示这个按钮
if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIRoleNaturePoint) then
return
end
ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, true)
self.btnBase:SetActive(true)
end
function UIMainView:CloseBtnBase()
self.btnBase:SetActive(false)
ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false)
end
function UIMainView:OnRefreshJobLv()
-- 在技能树界面打开的情况下,不再显示这个按钮
if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UISkillSettings) then
return
end
ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, true)
self.btnJob:SetActive(true)
end
function UIMainView:OnVipLvChanged()
self:RefreshVipView()
end
function UIMainView:CloseBtnJob()
self.btnJob:SetActive(false)
ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false)
end
function UIMainView:OnClickCombineServerBtn()
ManagerContainer.DataMgr.CombineServerDataMgr:SendCombineServerInfoReq()
end
function UIMainView:OnClickGuildWarBtn()
local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGuildWarMatchMap, nil, curUIId)
end
function UIMainView:OnClickFirstRechargeBtn()
--ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIActivityFirstRecharge)
end
function UIMainView:OnClickLimitGiftBtn()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIActivityLimitedGift)
end
function UIMainView:OnQuestionClick()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIQuestionnaire)
end
function UIMainView:OnTowerClick()
ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.ClimbingTower, true)
end
function UIMainView:OnArenaClick()
ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Dojo, true)
end
function UIMainView:OnMapClick()
ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.MapProgress, true)
end
function UIMainView:OnPetClick()
ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Pet, true)
end
function UIMainView:OnSkillClick()
ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Skill, true)
end
function UIMainView:OnRewardsClick()
if ManagerContainer.DataMgr.RuneShopDataMgr:GetAirShipIsOpen() then
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShop, {Enum.RuneShopType.Rewards,nil,nil,true})
else
self:RefreshAirShipRewardsBtn(false)
end
end
-- {
-- isFinish = false,
-- txt = "关卡1-1: 击败BOSS【蓝疯兔】",
-- type = 1
-- }
function UIMainView:OnCurrStoryTaskNtf(data)
LogError("[OnCurrStoryTaskNtf] data: "..Inspect(data))
self.challengeBossBtn:SetActive(false)
self.liaoYiLiaoBtn:SetActive(false)
self.replyMessageBtn:SetActive(false)
self.climbTowerBtn:SetActive(false)
if data.type == 1 then
self.challengeBossBtn:SetActive(true)
-- TODO:
local mapLevel = ManagerContainer.LuaBattleMgr:GetCurLevelUniqueId()
self.challengeBossBtn.text_slogan.text.text = string.format("挑战关卡: %d", mapLevel)
elseif data.type == 2 then
self.climbTowerBtn:SetActive(true)
elseif data.type == 3 then
self.liaoYiLiaoBtn:SetActive(true)
elseif data.type == 4 then
self.replyMessageBtn:SetActive(true)
end
end
function UIMainView:OnFruitBtn()
ManagerContainer.LuaGameMgr:EnterBattle(false)
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UILiveRoom)
end
function UIMainView:OnChallengeBossBtn()
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_START_CHALLENGE_BOSS,nil)
end
function UIMainView:OnLiaoYiLiaoBtn()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChat, {openMode="chat", openTab=2})
end
function UIMainView:OnReplyMessageBtn()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChat, {openMode="chat", openTab=1})
end
function UIMainView:OnClimbTowerBtn()
ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.ClimbingTower, true)
end
function UIMainView:OnFeiGeBtn()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChat, {openMode="chat"})
end
function UIMainView:OnClickRuneShopBtn()
local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShop, nil, curUIId)
end
function UIMainView:OnClickCoinZ()
-- ManagerContainer.LuaUIMgr:ShowMinTips("ZenyTips")
end
function UIMainView:OnClickGoldIcon()
-- ManagerContainer.LuaUIMgr:ShowMinTips("GoldTips")
end
function UIMainView:OnClickVipBtn()
local vipLv = ManagerContainer.DataMgr.UserData:GetVipLv()
if vipLv > 0 then
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIVipTips)
end
end
function UIMainView:OnChatClick()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChat, {openMode="chat"})
end
function UIMainView:OnSeasonClick(button, params)
ManagerContainer.DataMgr.CompetitionData:QueryCurCompetitionReq()
end
function UIMainView:OnClickHead()
--ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRoleMessage, {_targetTag = 0}) --打开头像交互界面,显示自己的信息
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISetting, { _targetTag = 0 })
end
function UIMainView:OnClickBaseBtn()
self.btnBase:SetActive(false)
ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false)
ManagerContainer.UIJumpMgr:CreateJumpTaskById(5)
end
function UIMainView:OnClickJobBtn()
self.btnJob:SetActive(false)
ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false)
ManagerContainer.UIJumpMgr:CreateJumpTaskById(6)
end
function UIMainView:OpenTask()
ManagerContainer.DataMgr.TaskDataNew:OpenTaskPanel();
end
function UIMainView:OpenNoticeAndActivity()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINotifyActivityTips)
end
function UIMainView:ChangePage(button, params)
local data = params.Length > 1 and params[1] or nil
self:ChangePageMsg(params[0], data)
end
function UIMainView:ChangePageMsg(pageType, data)
-- TODO: 屏蔽Tab
--[[
if _curMainButtonType == pageType then return end
self.systemPad:SetActive(false)
]]
local UIBattleCtr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIBattle)
if UIBattleCtr then
local newForce = UIBattleCtr:GetNewForceId()
if newForce then
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CLOSE_NEW_FUNC_PAGE)
return
end
end
ManagerContainer.DataMgr.TaskDataNew:SetMainButton(pageType);
if _curMainButtonType == Enum.MainViewPageType.Role or _curMainButtonType == Enum.MainViewPageType.Pet or _curMainButtonType == Enum.MainViewPageType.Town then
ManagerContainer.LuaBattleMgr:SetTeamData(true,false)
end
_curMainButtonType = pageType;
self:RefreshSeasonNoticeState(false)
if pageType == Enum.MainViewPageType.Town then
self.upgradeRoot:SetActive(false)
--local bta = self.town.icon.buttonTriggerAnimation
--bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
--ManagerContainer.LuaGameMgr:EnterMainCity();
--ManagerContainer.LuaUIMgr:HideAllPagesExceptId(Enum.UIPageName.UIMainCity1)
self.mainPageId = Enum.UIPageName.UIMainMenu
--LogError("Open UIMainCity1")
--ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMainCity1)
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMainMenu)
--打开主城需要处理额外
ManagerContainer.RedPointMgr.PetRPCtr:RefreshRelationRPState()
elseif pageType == Enum.MainViewPageType.Adventure then
self.systemPad:SetActive(true)
curTopResType = self.uiData.top_res_id
self:RefreshDiamond()
self.upgradeRoot:SetActive(false)
self.mainPageId = Enum.UIPageName.UIBattle
ManagerContainer.LuaGameMgr:EnterBattle(false);
if ManagerContainer.FSMMgr:IsBattleState() then
local bta = self.adventure.icon.buttonTriggerAnimation
bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
end
elseif pageType == Enum.MainViewPageType.Pet then
-- self.mainPageId = Enum.UIPageName.UIPetRoot
-- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPetRoot)
-- local bta = self.shop.icon.buttonTriggerAnimation
-- bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
self.mainPageId = Enum.UIPageName.UITower
--ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBag)
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UITower)
elseif pageType == Enum.MainViewPageType.Role then
self.upgradeRoot:SetActive(false)
self.mainPageId = Enum.UIPageName.UITeam
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UITeam, data)
local bta = self.role.icon.buttonTriggerAnimation
bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
elseif pageType == Enum.MainViewPageType.Bag then
self.upgradeRoot:SetActive(false)
self.mainPageId = Enum.UIPageName.UIBag
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBag, data)
local bta = self.bag.icon.buttonTriggerAnimation
bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
elseif pageType == Enum.MainViewPageType.Feixin then
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChat, {openMode="chat"})
elseif pageType == Enum.MainViewPageType.Fruit then
ManagerContainer.LuaGameMgr:EnterBattle(false);
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UILiveRoom, data)
elseif pageType == Enum.MainViewPageType.XiuLian then
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGoddess, nil, self.uiData.id)
elseif pageType == Enum.MainViewPageType.Rank then
--ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRank)
ManagerContainer.DataMgr.ArenaData:SendArenaDataReq(Enum.UIPageName.UIPvP)
end
end
function UIMainView:GetGotAnimEndPosByType(type)
if type == Enum.ItemType.Item
or type == Enum.ItemType.Equip
or type == Enum.ItemType.Card
or type == Enum.ItemType.ParterChip
or type == Enum.ItemType.FashionPaper
or type == Enum.ItemType.ParterExp
or type == Enum.ItemType.SkillBook
or type == Enum.ItemType.Gift
or type == Enum.ItemType.Income then
--背包
return self.bag.transform.position
elseif type == Enum.ItemType.Coin then
--银币
return self.coinZ.icon.transform.position
elseif type == Enum.ItemType.Diamond then
--钻石
return self.gold.icon.transform.position
elseif type == Enum.ItemType.RoleBaseExp then
--基础经验
return self.expBarBase.slider.effect.transform.position
elseif type == Enum.ItemType.RoleJobExp then
--职业经验
return self.expBarJob.slider.effect.transform.position
end
return Vector3.zero
end
function UIMainView:GeAnchoredPosition3DByType(type)
local pos = self:GetGotAnimEndPosByType(type)
return CommonUtil.ConvertUIPos2ScreenPos(pos)
end
function UIMainView:GetTaskBtnPosition()
return self.topView.topRoot.btnTask.transform.position
end
-- function UIMainView:ShowAddEffect(type, num)
-- if type == Enum.ItemType.Coin then
-- self:ShowAddCoinEffect(num)
-- elseif type == Enum.ItemType.RoleBaseExp then
-- self:ShowAddRoleExpEffect(num)
-- elseif type == Enum.ItemType.RoleJobExp then
-- self:ShowAddJobExpEffect(num)
-- end
-- end
function UIMainView:ShowAddCoinEffect()
DOTween.Kill(self.coinZ.transform)
-- local newCoin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
self.coinZ.transform.localScale = Vector3.one
self.coinZ.transform:DOScale(Vector3.one * 1.1, 0.2):SetLoops(2, LoopType.Yoyo):OnComplete(function()
self:RefreshCoins()
end)
end
function UIMainView:ShowAddDiamondEffect()
DOTween.Kill(self.gold.transform)
-- local newCoin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
self.gold.transform.localScale = Vector3.one
self.gold.transform:DOScale(Vector3.one * 1.1, 0.2):SetLoops(2, LoopType.Yoyo):OnComplete(function()
self:RefreshDiamond()
end)
end
function UIMainView:ShowAddRoleExpEffect()
self.expBarBase.slider.effect:SetActive(true)
local newRoleLv = ManagerContainer.DataMgr.UserData:GetRoleLv()
local newRoleExp = ManagerContainer.DataMgr.UserData:GetRoleExp()
-- 计算是否升级
local curRoleLv = self.curRoleLv
local baseExpData = ManagerContainer.CfgMgr:GetRoleExpData(curRoleLv)
if not baseExpData then
self:RefreshLv()
self:RefreshRoleExp()
return
end
local curRoleExp = newRoleExp
local curMaxExp = baseExpData.Name
while (curRoleExp >= curMaxExp) do
baseExpData = ManagerContainer.CfgMgr:GetRoleExpData(curRoleLv + 1)
if not baseExpData then
curRoleExp = curMaxExp
break
end
curRoleExp = curRoleExp - curMaxExp
curMaxExp = baseExpData.Name
curRoleLv = curRoleLv + 1
end
local targetPercent = Mathf.Max(BarMinValue, curRoleExp / curMaxExp)
local curPercent = self.expBarBase.slider.slider.value
DOTween.Kill(self.expBarBase.slider.slider)
if targetPercent >= curPercent and self.curRoleLv == curRoleLv and curRoleLv == newRoleLv then
self.expBarBase.slider.slider:DOValue(targetPercent, AddEffectBarSpeed):OnComplete(function()
self:RefreshLv()
self:RefreshRoleExp()
end)
else
local lerpPercent = 1 - curPercent
local allPercent = (lerpPercent + targetPercent)
local tweener1 = self.expBarBase.slider.slider:DOValue(1, lerpPercent * AddEffectBarSpeed / allPercent)
local tweener2 = self.expBarBase.slider.slider:DOValue(targetPercent, targetPercent * AddEffectBarSpeed / allPercent)
local seq = DOTween.Sequence()
seq:Append(tweener1)
seq:AppendCallback(function()
self.expBarBase.slider.slider.value = BarMinValue
self.expBarBase.textLv.text.text = CommonUtil.StringConcat("Lv.", curRoleLv)
end)
seq:Append(tweener2)
seq:AppendCallback(function()
self:RefreshLv()
self:RefreshRoleExp()
end)
end
end
function UIMainView:ShowAddJobExpEffect()
self.expBarJob.slider.effect:SetActive(true)
local newJobLv = ManagerContainer.DataMgr.UserData:GetJobLv()
local newJobExp = ManagerContainer.DataMgr.UserData:GetJobExp()
-- 计算是否升级
local curJobLv = self.curJobLv
local jobStage = ManagerContainer.DataMgr.UserData:GetJobStage()
local curMaxExp = ManagerContainer.CfgMgr:GetCurMaxJobExpByLvAndStep(curJobLv, jobStage)
if not curMaxExp or curMaxExp == 0 then
self:RefreshJobLv()
self:RefreshJobExp()
return
end
local curJobExp = newJobExp
while (curJobExp >= curMaxExp) do
local nextJobExp = ManagerContainer.CfgMgr:GetCurMaxJobExpByLvAndStep(curJobLv + 1, jobStage)
if not nextJobExp or nextJobExp == 0 then
curJobExp = curMaxExp
break
end
curJobExp = curJobExp - curMaxExp
curMaxExp = nextJobExp
curJobLv = curJobLv + 1
end
local targetPercent = Mathf.Max(BarMinValue, curJobExp / curMaxExp)
local curPercent = self.expBarJob.slider.slider.value
DOTween.Kill(self.expBarJob.slider.slider)
if targetPercent >= curPercent and self.curJobLv == curJobLv and curJobLv == newJobLv then
self.expBarJob.slider.slider:DOValue(targetPercent, AddEffectBarSpeed):OnComplete(function()
self:RefreshJobLv()
self:RefreshJobExp()
end)
else
local lerpPercent = 1 - curPercent
local allPercent = (lerpPercent + targetPercent)
local tweener1 = self.expBarJob.slider.slider:DOValue(1, lerpPercent * AddEffectBarSpeed / allPercent)
local tweener2 = self.expBarJob.slider.slider:DOValue(targetPercent, targetPercent * AddEffectBarSpeed / allPercent)
local seq = DOTween.Sequence()
seq:Append(tweener1)
seq:AppendCallback(function()
self.expBarJob.slider.slider.value = BarMinValue
self.expBarJob.textLv.text.text = CommonUtil.StringConcat("Lv.", curJobLv)
end)
seq:Append(tweener2)
seq:AppendCallback(function()
self:RefreshJobLv()
self:RefreshJobExp()
end)
end
end
function UIMainView:LoggedinForceGuideOver(ignore)
if ManagerContainer.StoryMgr:IsStorying() then
return
end
if ManagerContainer.StoryMgr:HasPreStoryChapter() then
return
end
if not ignore and self.canSignPlay then
self.canSignPlay = false
ManagerContainer.DataMgr.SignData:QuerySignUpInfoReq(true)
elseif ignore then
local _canSignPlay = ManagerContainer.DataMgr.SignData:CanTodaySign()
--LogHRWarning("_canSignPlay "..tostring(_canSignPlay))
if _canSignPlay then
self.canSignPlay = false
ManagerContainer.DataMgr.SignData:QuerySignUpInfoReq(true)
end
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.LIMIT_RECHARGE_OPEN_UI_NTF)
end
self:OpenFirstRechargeView()
self:RefreshSystemPad()
end
function UIMainView:OpenFirstRechargeView()
local activityData = ManagerContainer.DataMgr.ActsDataMgr:GetFirstRechargeItem()
if not activityData then
return
end
if not activityData:IsNeedOpen() then
return
end
self:OnClickFirstRechargeBtn()
end
--这几个按钮在主城和战斗迅游界面会打开,其他界面是要关闭的(起码目前是这样)
function UIMainView:SetActiveButtonsState(state)
if mainTopView then
mainTopView:RefreshTopBtns(state)
end
self:RefreshFirstRechargeBtn(state)
self:RefreshGuildWarBtn(state)
end
function UIMainView:RefreshRankActivityEnter(type, state)
if mainTopView then
mainTopView:RefreshRankActivityEnter(type, state)
end
end
function UIMainView:RefreshAirShipActivityEnter(state)
if mainTopView then
mainTopView:RefreshAirShipActivityEnter(state)
end
end
function UIMainView:RefreshFirstRechargeBtn(state)
if state == false then
self.topView.topRoot.btnFirstRecharge:SetActive(false)
return
end
-- 首充全部领完,则不再显示该按钮
local activityData = ManagerContainer.DataMgr.ActsDataMgr:GetFirstRechargeItem()
if not activityData then
self.topView.topRoot.btnFirstRecharge:SetActive(false)
return
end
if activityData:IsAllRewardGotAndHas() then
self.topView.topRoot.btnFirstRecharge:SetActive(false)
return
end
local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(57)
if not unlockState then
return
end
self.topView.topRoot.btnFirstRecharge:SetActive(true)
end
function UIMainView:RefreshQuestionRewardBtn()
local rewardState = ManagerContainer.DataMgr.UserData:GetQuestionRewardState()
self.topView.topRoot.btnQuestionnaire:SetActive(not rewardState)
end
function UIMainView:RefreshAirShipRewardsBtn(state)
if not Constant.OpenPay then
state = false
end
self.topView.topRoot.btnAirshipRewards:SetActive(state)
end
function UIMainView:RefreshGuildWarBtn(state)
if state == false then
self.topView.topRoot.btnGuildWar:SetActive(false)
return
end
local _unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(66)
if not _unlockState then
self.topView.topRoot.btnGuildWar:SetActive(false)
return
end
local isOpen = ManagerContainer.DataMgr.GuildWarDataMgr:GetOpenState()
if isOpen then
self.topView.topRoot.btnGuildWar:SetActive(true)
return
end
self.topView.topRoot.btnGuildWar:SetActive(false)
end
function UIMainView:OnCombineServerTimeChanged()
mainTopView:ChangeRefreshCombineServerBtn()
end
function UIMainView:OnCombineServerContentChanged(content)
if not content or content == '' then
return
end
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINotifyTipsSimple, {'BtnCombineService', content})
end
return UIMainView