forked from endernon/PGRData
301 lines
No EOL
12 KiB
Lua
301 lines
No EOL
12 KiB
Lua
local XUiPanelAd = require("XUi/XUiMain/XUiChildView/XUiPanelAd")
|
||
local XUiMainPanelBase = require("XUi/XUiMain/XUiMainPanelBase")
|
||
local XUiMainLeftBottom = XClass(XUiMainPanelBase, "XUiMainLeftBottom")
|
||
local CSXTextManagerGetText = CS.XTextManager.GetText
|
||
local MAX_CHAT_WIDTH = 395
|
||
|
||
local MailMaxCount = CS.XGame.Config:GetInt("MailCountLimit")
|
||
local MailWillFullCount = CS.XGame.ClientConfig:GetInt("MailWillFullCount") --邮箱将满
|
||
|
||
--主界面会频繁打开,采用常量缓存
|
||
local RedPointConditionGroup = {
|
||
--指导
|
||
Mentor = {
|
||
XRedPointConditions.Types.CONDITION_MENTOR_APPLY_RED,
|
||
XRedPointConditions.Types.CONDITION_MENTOR_REWARD_RED,
|
||
XRedPointConditions.Types.CONDITION_MENTOR_TASK_RED,
|
||
},
|
||
--福利
|
||
Welfare = {
|
||
XRedPointConditions.Types.CONDITION_PURCHASE_GET_RERARGE,
|
||
XRedPointConditions.Types.CONDITION_PURCHASE_GET_CARD,
|
||
XRedPointConditions.Types.CONDITION_NEWYEARDIVINING_NOTGET,
|
||
XRedPointConditions.Types.CONDITION_ACTIVITY_NEW_ACTIVITIES,
|
||
XRedPointConditions.Types.CONDITION_ACTIVITY_SCLASS_GOT,
|
||
},
|
||
--首次充值
|
||
FirstRecharge = {
|
||
XRedPointConditions.Types.CONDITION_PURCHASE_GET_RERARGE
|
||
},
|
||
--公告
|
||
Notice = {
|
||
XRedPointConditions.Types.CONDITION_MAIN_NOTICE
|
||
},
|
||
--邮件
|
||
Mail = {
|
||
XRedPointConditions.Types.CONDITION_MAIN_MAIL
|
||
},
|
||
}
|
||
|
||
-- local CHAT_SUB_LENGTH = 18
|
||
function XUiMainLeftBottom:OnStart(rootUi)
|
||
-- self.Transform = rootUi.PanelLeftBottom.gameObject.transform
|
||
-- XTool.InitUiObject(self)
|
||
--ClickEvent
|
||
self.BtnNotice.CallBack = function() self:OnBtnNotice() end
|
||
self.BtnMentor.CallBack = function() self:OnBtnMentor() end
|
||
self.BtnWelfare.CallBack = function() self:OnBtnWelfare() end
|
||
self.BtnChat.CallBack = function() self:OnBtnChat() end
|
||
self.BtnMail.CallBack = function() self:OnBtnMail() end
|
||
self.BtnWelfare:ShowTag(false) -- 海外修改
|
||
--RedPoint
|
||
|
||
XRedPointManager.AddRedPointEvent(self.BtnMentor.ReddotObj, self.OnCheckMentorNews, self, RedPointConditionGroup.Mentor)
|
||
self.RedPoinWelfareId = XRedPointManager.AddRedPointEvent(self.BtnWelfare.ReddotObj, self.OnCheckWalfarelNews, self, RedPointConditionGroup.Welfare)
|
||
self.RedPoinFirstRechargeId = XRedPointManager.AddRedPointEvent(self.BtnWelfare.TagObj, self.OnCheckFirstRecharge, self, RedPointConditionGroup.FirstRecharge)
|
||
self.BtnNoticeRedId = XRedPointManager.AddRedPointEvent(self.BtnNotice.ReddotObj, self.OnCheckNoticeNews, self, RedPointConditionGroup.Notice)
|
||
XRedPointManager.AddRedPointEvent(self.BtnMail, self.OnCheckMailNews, self, RedPointConditionGroup.Mail)
|
||
self:InitChatMsg()
|
||
|
||
--Filter
|
||
self:CheckFilterFunctions()
|
||
end
|
||
|
||
function XUiMainLeftBottom:OnEnable()
|
||
XEventManager.AddEventListener(XEventId.EVENT_CHAT_RECEIVE_WORLD_MSG, self.RefreshChatMsg, self)
|
||
XEventManager.AddEventListener(XEventId.EVENT_GUILD_RECEIVE_CHAT, self.RefreshChatMsg, self)
|
||
XEventManager.AddEventListener(XEventId.EVENT_CHAT_RECEIVE_MENTOR_MSG, self.RefreshChatMsg, self)
|
||
XEventManager.AddEventListener(XEventId.EVENT_CARD_REFRESH_WELFARE_BTN, self.OnRefreshWalfareId, self)
|
||
XEventManager.AddEventListener(XEventId.EVENT_CARD_REFRESH_WELFARE_BTN, self.OnRefreshFirstRechargeId, self)
|
||
XEventManager.AddEventListener(XEventId.EVENT_CHAT_EMOJI_REFRESH_RED, self.RefreshEmojiRed, self)
|
||
self:UpdatePanelAd()
|
||
self:OnRefreshNoticeId()
|
||
self:OnRefreshWalfareId()
|
||
self:OnRefreshFirstRechargeId()
|
||
self:OnCheckMailWillFull()
|
||
self:RefreshEmojiRed()
|
||
|
||
--self.BtnWelfare:SetDisable(not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.Welfare))
|
||
|
||
-- 每次进入主界面,满足条件后可以获取邀请码信息,用来刷新活动公告按钮的红点状态
|
||
XDataCenter.RegressionManager.HandleGetInvitationCodeInfoRequest()
|
||
self:RefreshChatMsg(XDataCenter.ChatManager.GetLatestChatData())
|
||
|
||
XDataCenter.MentorSystemManager.ShowMentorShipComplete()--进入主界面时检测有无新师徒关系建立
|
||
end
|
||
|
||
function XUiMainLeftBottom:OnDisable()
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_CHAT_RECEIVE_WORLD_MSG, self.RefreshChatMsg, self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_GUILD_RECEIVE_CHAT, self.RefreshChatMsg, self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_CHAT_RECEIVE_MENTOR_MSG, self.RefreshChatMsg, self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_CARD_REFRESH_WELFARE_BTN, self.OnRefreshWalfareId, self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_CARD_REFRESH_WELFARE_BTN, self.OnRefreshFirstRechargeId, self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_CHAT_EMOJI_REFRESH_RED, self.RefreshEmojiRed, self)
|
||
end
|
||
|
||
function XUiMainLeftBottom:OnDestroy()
|
||
if self.PanelAdObj then
|
||
self.PanelAdObj:OnDestroy()
|
||
end
|
||
end
|
||
|
||
function XUiMainLeftBottom:OnNotify(evt)
|
||
if evt == XEventId.EVENT_NOTICE_PIC_CHANGE then
|
||
self:UpdatePanelAd()
|
||
elseif evt == XAgencyEventId.EVENT_MAIL_COUNT_CHANGE then
|
||
self:OnCheckMailWillFull()
|
||
end
|
||
end
|
||
|
||
function XUiMainLeftBottom:CheckFilterFunctions()
|
||
self.PanelAd.gameObject:SetActiveEx(not XUiManager.IsHideFunc)
|
||
self.BtnNotice.gameObject:SetActiveEx(not XUiManager.IsHideFunc)
|
||
self.BtnMentor.gameObject:SetActiveEx(not XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.MentorSystem) and not XUiManager.IsHideFunc)
|
||
self.BtnWelfare.gameObject:SetActiveEx(not XUiManager.IsHideFunc)
|
||
self.BtnChat.gameObject:SetActiveEx(not XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.SocialChat) and not XUiManager.IsHideFunc)
|
||
self.BtnMail.gameObject:SetActiveEx(not XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.Mail))
|
||
end
|
||
|
||
--公告入口
|
||
function XUiMainLeftBottom:OnBtnNotice()
|
||
--XLuaUiManager.OpenWithCallback("UiActivityBase", function()
|
||
-- if XLuaUiManager.IsUiLoad("UiDialog") or XLuaUiManager.IsUiLoad("UiBuyAsset") or XLuaUiManager.IsUiLoad("UiSystemDialog") or XLuaUiManager.IsUiLoad("UiUsePackage") then
|
||
-- XLuaUiManager.Close("UiActivityBase")
|
||
-- end
|
||
--end)
|
||
XUiHelper.RecordBuriedSpotTypeLevelOne(XGlobalVar.BtnBuriedSpotTypeLevelOne.BtnUiMainBtnNotice)
|
||
local noticeType = XDataCenter.NoticeManager.GameNoticeType.Game
|
||
if XDataCenter.NoticeManager.CheckInGameNoticeRedPoint(XDataCenter.NoticeManager.GameNoticeType.Activity) then
|
||
noticeType = XDataCenter.NoticeManager.GameNoticeType.Activity
|
||
end
|
||
XDataCenter.NoticeManager.OpenGameNotice(noticeType)
|
||
end
|
||
|
||
--福利入口
|
||
function XUiMainLeftBottom:OnBtnWelfare()
|
||
--if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.Welfare) then
|
||
-- return
|
||
--end
|
||
XUiHelper.RecordBuriedSpotTypeLevelOne(XGlobalVar.BtnBuriedSpotTypeLevelOne.BtnUiMainBtnWelfare)
|
||
--XLuaUiManager.Open("UiSign")
|
||
self:OnRefreshWalfareId()
|
||
XLuaUiManager.Open("UiWelfare")
|
||
end
|
||
|
||
--师徒入口
|
||
function XUiMainLeftBottom:OnBtnMentor()
|
||
if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.MentorSystem) then
|
||
return
|
||
end
|
||
XUiHelper.RecordBuriedSpotTypeLevelOne(XGlobalVar.BtnBuriedSpotTypeLevelOne.BtnUiMainBtnMentor)
|
||
XLuaUiManager.Open("UiMentorMain")
|
||
end
|
||
|
||
--聊天入口
|
||
function XUiMainLeftBottom:OnBtnChat()
|
||
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.SocialChat) then
|
||
self.BtnWelfare:ShowTag(false)
|
||
local dict = {}
|
||
dict["ui_first_button"] = XGlobalVar.BtnBuriedSpotTypeLevelOne.BtnUiMainBtnChat
|
||
dict["role_level"] = XPlayer.GetLevel()
|
||
CS.XRecord.Record(dict, "200004", "UiOpen")
|
||
XUiHelper.OpenUiChatServeMain(true, ChatChannelType.World)
|
||
end
|
||
end
|
||
|
||
--邮件入口
|
||
function XUiMainLeftBottom:OnBtnMail()
|
||
XUiHelper.RecordBuriedSpotTypeLevelOne(XGlobalVar.BtnBuriedSpotTypeLevelOne.BtnUiMainBtnMail)
|
||
XLuaUiManager.Open("UiMail")
|
||
end
|
||
|
||
-- 设置福利按钮特效可见性
|
||
function XUiMainLeftBottom:SetBtnWelfareTagActive(active)
|
||
self.BtnWelfare:ShowTag(active)
|
||
end
|
||
|
||
--更新聊天
|
||
function XUiMainLeftBottom:RefreshChatMsg(chatDataLua)
|
||
if not chatDataLua then return end
|
||
if not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.SocialChat) then
|
||
return
|
||
end
|
||
|
||
if chatDataLua.ChannelType == ChatChannelType.World then
|
||
self.TxtMessageType.text = CSXTextManagerGetText("ChatWorldMsg")
|
||
elseif chatDataLua.ChannelType == ChatChannelType.Private then
|
||
self.TxtMessageType.text = CSXTextManagerGetText("ChatPrivateMsg")
|
||
elseif chatDataLua.ChannelType == ChatChannelType.System then
|
||
self.TxtMessageType.text = CSXTextManagerGetText("ChatSystemMsg")
|
||
elseif chatDataLua.ChannelType == ChatChannelType.Guild then
|
||
self.TxtMessageType.text = CSXTextManagerGetText("ChatGuildMsg")
|
||
elseif chatDataLua.ChannelType == ChatChannelType.Mentor then
|
||
self.TxtMessageType.text = CSXTextManagerGetText("ChatMentorMsg")
|
||
end
|
||
|
||
local name = XDataCenter.SocialManager.GetPlayerRemark(chatDataLua.SenderId, chatDataLua.NickName)
|
||
if chatDataLua.MsgType == ChatMsgType.Emoji then
|
||
self.TxtMessageContent.text = string.format("%s:%s", name, CSXTextManagerGetText("EmojiText"))
|
||
elseif chatDataLua.MsgType == ChatMsgType.System and chatDataLua.ChannelType == ChatChannelType.Guild then
|
||
local content = string.format("%s:%s", CSXTextManagerGetText("GuildChannelTypeAll"), chatDataLua.Content)
|
||
self.TxtMessageContent.text = content
|
||
else
|
||
self.TxtMessageContent.text = string.format("%s:%s", name, chatDataLua.Content)
|
||
end
|
||
self.TxtMessageLabel.gameObject:SetActiveEx(XUiHelper.CalcTextWidth(self.TxtMessageContent) > MAX_CHAT_WIDTH)
|
||
end
|
||
|
||
function XUiMainLeftBottom:InitChatMsg()
|
||
self.TxtMessageType.text = ""
|
||
self.TxtMessageContent.text = ""
|
||
end
|
||
|
||
-- 更新新获得的表情包红点
|
||
function XUiMainLeftBottom:RefreshEmojiRed()
|
||
local isRed = XDataCenter.ChatManager.CheckIsNewEmoji()
|
||
self.BtnChat:ShowReddot(isRed)
|
||
end
|
||
|
||
--更新福利红点
|
||
function XUiMainLeftBottom:OnRefreshWalfareId()
|
||
if self.RedPoinWelfareId then
|
||
XRedPointManager.Check(self.RedPoinWelfareId)
|
||
end
|
||
end
|
||
|
||
function XUiMainLeftBottom:OnRefreshNoticeId()
|
||
if self.BtnNoticeRedId then
|
||
XRedPointManager.Check(self.BtnNoticeRedId)
|
||
end
|
||
end
|
||
|
||
--更新首充特效
|
||
function XUiMainLeftBottom:OnRefreshFirstRechargeId()
|
||
if XLoginManager.IsFirstOpenMainUi() then
|
||
return
|
||
end
|
||
|
||
if self.RedPoinFirstRechargeId then
|
||
XRedPointManager.Check(self.RedPoinFirstRechargeId)
|
||
end
|
||
end
|
||
|
||
--更新滚动广告
|
||
function XUiMainLeftBottom:UpdatePanelAd()
|
||
if XUiManager.IsHideFunc then return end
|
||
if self.PanelAdObj then
|
||
self.PanelAdObj:UpdateAdList()
|
||
else
|
||
self.PanelAdObj = XUiPanelAd.New(self, self.PanelAd)
|
||
end
|
||
end
|
||
|
||
--师徒红点
|
||
function XUiMainLeftBottom:OnCheckMentorNews(count)
|
||
self.BtnMentor:ShowReddot(count >= 0 and XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.MentorSystem))
|
||
end
|
||
|
||
--福利红点
|
||
function XUiMainLeftBottom:OnCheckWalfarelNews(count)
|
||
self.BtnWelfare:ShowReddot(count >= 0)
|
||
end
|
||
|
||
--首充特效
|
||
function XUiMainLeftBottom:OnCheckFirstRecharge(count) -- 海外修改
|
||
local showTag = count >= 0
|
||
if showTag then
|
||
CS.XScheduleManager.ScheduleOnce(function()
|
||
self.BtnWelfare:ShowTag(showTag)
|
||
end, 1)
|
||
else
|
||
self.BtnWelfare:ShowTag(showTag)
|
||
end
|
||
if XLuaUiManager.IsUiShow("UiChatServeMain") then --防止聊天时点击头像跳转指挥官界面再返回出现特效覆盖在聊天界面上问题
|
||
self.BtnWelfare:ShowTag(false)
|
||
end
|
||
end
|
||
|
||
--公告红点
|
||
function XUiMainLeftBottom:OnCheckNoticeNews(count)
|
||
self.BtnNotice:ShowReddot(count >= 0)
|
||
end
|
||
|
||
--邮件红点
|
||
function XUiMainLeftBottom:OnCheckMailNews(count)
|
||
self.BtnMail:ShowReddot(count >= 0)
|
||
end
|
||
|
||
--邮件将满
|
||
function XUiMainLeftBottom:OnCheckMailWillFull()
|
||
---@type XMailAgency
|
||
local mailAgency = XMVCA:GetAgency(ModuleId.XMail)
|
||
local count = mailAgency:GetMailListCount()
|
||
self.BtnMail:ShowTag(count >= MailWillFullCount)
|
||
if count >= MailMaxCount then
|
||
self.TxtMailWillFull.text = CSXTextManagerGetText("MailIsFull")
|
||
else
|
||
self.TxtMailWillFull.text = CSXTextManagerGetText("MailWillFull")
|
||
end
|
||
end
|
||
|
||
return XUiMainLeftBottom |