769 lines
27 KiB
Lua
769 lines
27 KiB
Lua
|
local XUiGuildMain = XLuaUiManager.Register(XLuaUi, "UiGuildMain")
|
|||
|
|
|||
|
local CSXTextManagerGetText = CS.XTextManager.GetText
|
|||
|
|
|||
|
local RequestMemberGap = 10
|
|||
|
local MAX_CHAT_WIDTH = 470
|
|||
|
local CHAT_SUB_LENGTH = 18
|
|||
|
|
|||
|
local XUiGuildViewSetHeadPortrait = require("XUi/XUiGuild/XUiChildView/XUiGuildViewSetHeadPortrait")
|
|||
|
local XUiGridGuildBoxItem = require("XUi/XUiGuild/XUiChildItem/XUiGridGuildBoxItem")
|
|||
|
local GuildBuildIntervalWhenMaxLevel = CS.XGame.Config:GetInt("GuildBuildIntervalWhenMaxLevel")
|
|||
|
local GlobalLastRequestMember = 0
|
|||
|
local GlobalRequestGap = CS.XGame.ClientConfig:GetInt("GuildGlobalRequestMember")
|
|||
|
-- 子页面枚举
|
|||
|
local PARENT_PAGE
|
|||
|
-- 子页面控件脚本字典
|
|||
|
local ChildUiPage
|
|||
|
function XUiGuildMain:OnAwake()
|
|||
|
self.GiftBoxes = {}
|
|||
|
self.LastRequestMember = 0
|
|||
|
self:InitChildView()
|
|||
|
self.ChildPage = {}
|
|||
|
self:InitChildUiPageData()
|
|||
|
self:InitModel()
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnDestroy()
|
|||
|
self:ChildPageOnDestroy()
|
|||
|
self.GuildWarEntry:OnDestroy()
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnStart(defaultIndex)
|
|||
|
self:SetGuildInfo()
|
|||
|
self:SetUiVisable()
|
|||
|
self:SetActiveGift()
|
|||
|
self:UpdateGuildNews()
|
|||
|
self:OnDeclarationChanged()
|
|||
|
self:OnInterComChanged()
|
|||
|
self:UpdateGuildMemberCount()
|
|||
|
|
|||
|
-- 获取成员,测试要求
|
|||
|
local now = XTime.GetServerNowTimestamp()
|
|||
|
-- 第一次进入的时候AsyncGuildData会派发更新
|
|||
|
if GlobalLastRequestMember == 0 then
|
|||
|
GlobalLastRequestMember = now
|
|||
|
end
|
|||
|
if now - GlobalLastRequestMember >= GlobalRequestGap then
|
|||
|
GlobalLastRequestMember = now
|
|||
|
local guildId = XDataCenter.GuildManager.GetGuildId()
|
|||
|
XDataCenter.GuildManager.GetGuildMembers(guildId)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnEnable()
|
|||
|
self.BtnTabChallenge:ShowReddot(XDataCenter.GuildBossManager.IsReward())
|
|||
|
local timeLeft = XDataCenter.GuildManager.GuildBossEndTime() - XTime.GetServerNowTimestamp()
|
|||
|
if timeLeft < 0 then
|
|||
|
timeLeft = 0
|
|||
|
end
|
|||
|
local timeStr = XUiHelper.GetTime(timeLeft, XUiHelper.TimeFormatType.MAINBATTERY)
|
|||
|
self.BtnTabChallenge:SetNameByGroup(1, CS.XTextManager.GetText("GuildBossCountDown", timeStr))
|
|||
|
self.GuildWarEntry:OnEnable()
|
|||
|
self:OpenChildPage(self.CurrentPageIndex or PARENT_PAGE.MAIN)
|
|||
|
if XDataCenter.GuildWarManager.CheckActivityIsInTime() then
|
|||
|
XDataCenter.GuildWarManager.GetActivityData(function()
|
|||
|
XDataCenter.GuildWarManager.RequestPopup()
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnGetEvents()
|
|||
|
return {
|
|||
|
XEventId.EVENT_GUILD_RECEIVE_CHAT,
|
|||
|
XEventId.EVENT_GUILD_RANKLEVEL_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_WEEKLY_RESET,
|
|||
|
XEventId.EVENT_GUILD_LEVEL_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_GIFT_CONTRIBUTE_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_CONTRIBUTE_CHANGED,
|
|||
|
XEventId.EVNET_GUILD_LEADER_NAME_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_MEMBERCOUNT_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_NAME_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_DECLARATION_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_INTERCOM_CHANGED,
|
|||
|
XEventId.EVENT_GUILD_WAR_DIFFICULTY_SELECTED,
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnNotify(evt, ...)
|
|||
|
if evt == XEventId.EVENT_GUILD_RECEIVE_CHAT then
|
|||
|
self:OnGuildChannelDispatchChat()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_RANKLEVEL_CHANGED then
|
|||
|
self:OnGuildRankLevelChanged()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_WEEKLY_RESET then
|
|||
|
self:OnGuildWeeklyReset()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_CONTRIBUTE_CHANGED or
|
|||
|
evt == XEventId.EVENT_GUILD_GIFT_CONTRIBUTE_CHANGED then
|
|||
|
self:UpdateGuildGiftContribute()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_LEVEL_CHANGED then
|
|||
|
self:UpdateInformationInfo()
|
|||
|
elseif evt == XEventId.EVNET_GUILD_LEADER_NAME_CHANGED then
|
|||
|
self:OnLeaderChanged()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_MEMBERCOUNT_CHANGED then
|
|||
|
self:UpdateGuildMemberCount()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_NAME_CHANGED then
|
|||
|
self:OnGuildNameChanged()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_DECLARATION_CHANGED then
|
|||
|
self:OnDeclarationChanged()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_INTERCOM_CHANGED then
|
|||
|
self:OnInterComChanged()
|
|||
|
elseif evt == XEventId.EVENT_GUILD_WAR_DIFFICULTY_SELECTED then
|
|||
|
self:OpenChildPage(PARENT_PAGE.MAIN)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 周重置
|
|||
|
function XUiGuildMain:OnGuildWeeklyReset()
|
|||
|
self:SetGuildInfo()
|
|||
|
self:SetActiveGift()
|
|||
|
self:UpdateGuildMemberCount()
|
|||
|
end
|
|||
|
|
|||
|
-- 玩家职位变化
|
|||
|
function XUiGuildMain:OnGuildRankLevelChanged()
|
|||
|
self:SetGuildInfo()
|
|||
|
self:UpdateGuildMemberCount()
|
|||
|
end
|
|||
|
|
|||
|
-- 公会频道消息
|
|||
|
function XUiGuildMain:OnGuildChannelDispatchChat()
|
|||
|
self:UpdateGuildNews()
|
|||
|
end
|
|||
|
|
|||
|
-- 更新礼包建设度
|
|||
|
function XUiGuildMain:UpdateGuildGiftContribute()
|
|||
|
self:SetGuildInfo()
|
|||
|
self:SetActiveGift()
|
|||
|
end
|
|||
|
|
|||
|
-- 更新主界面信息
|
|||
|
function XUiGuildMain:UpdateInformationInfo()
|
|||
|
self:SetGuildInfo()
|
|||
|
end
|
|||
|
|
|||
|
-- 更新紧急维护状态
|
|||
|
function XUiGuildMain:UpdateMaintainState()
|
|||
|
if self.tabViews[XDataCenter.GuildManager.GuildFunctional.Info] then
|
|||
|
self.tabViews[XDataCenter.GuildManager.GuildFunctional.Info]:UpdateInformationInfo()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- custom method
|
|||
|
|
|||
|
function XUiGuildMain:InitChildView()
|
|||
|
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
|
|||
|
self.BtnBack.CallBack = function() self:OnBtnBackClick() end
|
|||
|
--self.BtnMainUi.CallBack = function() self:OnBtnMainUiClick() end
|
|||
|
self:BindHelpBtn(self.BtnHelp, "GuildMainHelp")
|
|||
|
self.BtnHelp.CallBack = function() self:OnBtnHelpClick() end
|
|||
|
XRedPointManager.AddRedPointEvent(self.RedSetting, self.RefreshSettingRed, self, { XRedPointConditions.Types.CONDITION_GUILD_APPLYLIST })
|
|||
|
XRedPointManager.AddRedPointEvent(self.RedNews, self.RefreshNewsRed, self, { XRedPointConditions.Types.CONDITION_GUILD_APPLYLIST })
|
|||
|
|
|||
|
-- 设置面板 ---
|
|||
|
self.BtnAdministration.CallBack = function()
|
|||
|
self.GuildSet.gameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
self.BtnDarkCloseBg.CallBack = function()
|
|||
|
self.GuildSet.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
-- 退出公会
|
|||
|
self.BtnGuildTuchu.CallBack = function() self:OnQuickGuildClick() end
|
|||
|
-- 职位自定义名称
|
|||
|
self.BtnGuildZhiwei.CallBack = function() self:OnJobChangeClick() end
|
|||
|
-- 招募设置
|
|||
|
self.BtnGuildZhaomu.CallBack = function() self:OnRecruitClick() end
|
|||
|
-- 申请函
|
|||
|
self.BtnGuildShenqinghan.CallBack = function() self:OnApplyClick() end
|
|||
|
-- 设置
|
|||
|
self.BtnGuildShezhi.CallBack = function() self:OnSettingClick() end
|
|||
|
-- 改名
|
|||
|
self.BtnGuildSetName.CallBack = function() self:OnSetGuildName() end
|
|||
|
--举报
|
|||
|
if self.BtnGuildReport then
|
|||
|
self.BtnGuildReport.CallBack = function() self:OnBtnGuildReportClick() end
|
|||
|
end
|
|||
|
--- end ---
|
|||
|
|
|||
|
-- 公会宣言
|
|||
|
self.BtnAnnounce.CallBack = function() self:OnBtnAnnounceClick() end
|
|||
|
-- 内部通讯
|
|||
|
self.BtnInterCom.CallBack = function() self:OnBtnInterComClick() end
|
|||
|
-- 三个按钮
|
|||
|
self.BtnRanking.CallBack = function() self:OnBtnRaningClick() end
|
|||
|
self.BtnJournal.CallBack = function() self:OnBtnJournalClick() end
|
|||
|
self.BtnDeclaration.CallBack = function() self:OnBtnDeclarationClick() end
|
|||
|
|
|||
|
-- 更换头像
|
|||
|
self.GuildViewSetHeadPortrait = XUiGuildViewSetHeadPortrait.New(self.PanelSetHeadPotrait,self)
|
|||
|
self.BtnSetFace.CallBack = function() self:OnBtnSetFaceClick() end
|
|||
|
|
|||
|
-- 其他模块
|
|||
|
self.BtnTabMember.CallBack = function() self:OnBtnTabMemberClick() end
|
|||
|
self.BtnTabChallenge.CallBack = function() self:OnBtnChallengeClick() end
|
|||
|
self.BtnTabGift.CallBack = function() self:OnBtnTabGiftClick() end
|
|||
|
self.BtnChat.CallBack = function() self:OnBtnChatClick() end
|
|||
|
if self.SwitchGuildDorm then
|
|||
|
local btn = require("XUi/XUiGuildDorm/XUiGuildSwitchBtn")
|
|||
|
self.BtnSwitchGuild = btn.New(self, self.SwitchGuildDorm, false)
|
|||
|
self.SwitchGuildDorm.gameObject:SetActiveEx(not XDataCenter.GuildDormManager.GetIsHaveTempError())
|
|||
|
end
|
|||
|
--公会战入口
|
|||
|
local guildWarEntryButtonScript = require("XUi/XUiGuildWar/XUiGuildWarEntryButton")
|
|||
|
self.GuildWarEntry = guildWarEntryButtonScript.New(self.BtnGuildWarEntry,function() self:OnBtnGuildWarEntryClick() end)
|
|||
|
XRedPointManager.AddRedPointEvent(self.BtnGuildWarEntry, self.OnCheckGuildWarEntryRedPoint, self,
|
|||
|
{
|
|||
|
XRedPointConditions.Types.CONDITION_GUILDWAR_TASK,
|
|||
|
})
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:RefreshSettingRed(count)
|
|||
|
self.RedSetting.gameObject:SetActiveEx(count >= 0)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:RefreshNewsRed(count)
|
|||
|
self.RedNews.gameObject:SetActiveEx(count >= 0)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnBtnBackClick()
|
|||
|
if self.CurrentPageIndex ~= PARENT_PAGE.MAIN then
|
|||
|
self:OpenChildPage(PARENT_PAGE.MAIN)
|
|||
|
else
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnBtnMainUiClick()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnBtnHelpClick()
|
|||
|
if self.CurrentPageIndex == PARENT_PAGE.GUILDWAR then
|
|||
|
XUiManager.ShowHelpTip("GuildWarHelp")
|
|||
|
else
|
|||
|
XUiManager.ShowHelpTip("GuildMainHelp")
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 退出公会
|
|||
|
function XUiGuildMain:OnQuickGuildClick()
|
|||
|
if self:ChecKickOut() then return end
|
|||
|
|
|||
|
self.GuildSet.gameObject:SetActiveEx(false)
|
|||
|
local isLeader = XDataCenter.GuildManager.IsGuildLeader()
|
|||
|
if isLeader then
|
|||
|
local memberCount = XDataCenter.GuildManager.GetMemberCount()
|
|||
|
if memberCount > 1 then
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildQuitRemovePosition"))
|
|||
|
return
|
|||
|
else
|
|||
|
local title = CS.XTextManager.GetText("GuildDialogTitle")
|
|||
|
local content = CS.XTextManager.GetText("GuildQuitLastMember")
|
|||
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, function()
|
|||
|
end, function()
|
|||
|
XDataCenter.GuildManager.QuitGuild(function()
|
|||
|
if XLuaUiManager.IsUiShow("UiGuildMain") then
|
|||
|
XLuaUiManager.Close("UiGuildMain")
|
|||
|
end
|
|||
|
end)
|
|||
|
end)
|
|||
|
end
|
|||
|
else
|
|||
|
local title = CS.XTextManager.GetText("GuildDialogTitle")
|
|||
|
local content = CS.XTextManager.GetText("GuildQuitMemberQuit")
|
|||
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, function()
|
|||
|
end, function()
|
|||
|
XDataCenter.GuildManager.QuitGuild(function()
|
|||
|
if XLuaUiManager.IsUiShow("UiGuildMain") then
|
|||
|
XLuaUiManager.Close("UiGuildMain")
|
|||
|
end
|
|||
|
end)
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 职位
|
|||
|
function XUiGuildMain:OnJobChangeClick()
|
|||
|
if self:ChecKickOut() then return end
|
|||
|
if self:HasModifyAccess() then return end
|
|||
|
|
|||
|
XLuaUiManager.Open("UiGuildCustomName")
|
|||
|
self.GuildSet.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
-- 招募
|
|||
|
function XUiGuildMain:OnRecruitClick()
|
|||
|
if self:ChecKickOut() then return end
|
|||
|
if self:HasModifyAccess() then return end
|
|||
|
|
|||
|
local currentPageNo = XDataCenter.GuildManager.GetRecommendPageNo()
|
|||
|
XDataCenter.GuildManager.GuildRecruitRecommendRequest(currentPageNo, function()
|
|||
|
XLuaUiManager.Open("UiGuildRecruit", XGuildConfig.EnlistType.Recruit)
|
|||
|
self.GuildSet.gameObject:SetActiveEx(false)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 邀请函
|
|||
|
function XUiGuildMain:OnApplyClick()
|
|||
|
if self:ChecKickOut() then return end
|
|||
|
if self:HasModifyAccess() then return end
|
|||
|
|
|||
|
local currentPageNo = XDataCenter.GuildManager.GetRecommendPageNo()
|
|||
|
XDataCenter.GuildManager.GuildRecruitRecommendRequest(currentPageNo, function()
|
|||
|
XLuaUiManager.Open("UiGuildRecruit", XGuildConfig.EnlistType.News)
|
|||
|
self.GuildSet.gameObject:SetActiveEx(false)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 招募设置
|
|||
|
function XUiGuildMain:OnSettingClick()
|
|||
|
if self:ChecKickOut() then return end
|
|||
|
if self:HasModifyAccess() then return end
|
|||
|
|
|||
|
XLuaUiManager.Open("UiGuildChangePosition", XGuildConfig.TipsType.ApplySetting)
|
|||
|
self.GuildSet.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
-- 公会改名
|
|||
|
function XUiGuildMain:OnSetGuildName()
|
|||
|
if self:ChecKickOut() then return end
|
|||
|
if not XDataCenter.GuildManager.IsGuildLeader() then
|
|||
|
local leaderName = XDataCenter.GuildManager.GetRankNameByLevel(XGuildConfig.GuildRankLevel.Leader)
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildNotAccessSetName", leaderName))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
XLuaUiManager.Open("UiGuildChangePosition", XGuildConfig.TipsType.SetName)
|
|||
|
self.GuildSet.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
--举报公会
|
|||
|
function XUiGuildMain:OnBtnGuildReportClick()
|
|||
|
local guildId = XDataCenter.GuildManager.GetGuildId()
|
|||
|
local titleName = XDataCenter.GuildManager.GetGuildName()
|
|||
|
local guildDesclaration = XDataCenter.GuildManager.GetGuildDeclaration()
|
|||
|
local guildInsideIntroduction = XDataCenter.GuildManager.GetGuildInterCom()
|
|||
|
local data = {Id = guildId, TitleName = titleName, GuildOuterIntroduction = guildDesclaration, GuildInsideIntroduction = guildInsideIntroduction}
|
|||
|
XLuaUiManager.Open("UiReport", data, nil, nil, XReportConfigs.EnterType.Guild)
|
|||
|
end
|
|||
|
|
|||
|
-- 公会排名
|
|||
|
function XUiGuildMain:OnBtnRaningClick()
|
|||
|
XLuaUiManager.Open("UiGuildRankingListSwitch")
|
|||
|
end
|
|||
|
|
|||
|
-- 成员
|
|||
|
function XUiGuildMain:OnBtnTabMemberClick()
|
|||
|
local guildId = XDataCenter.GuildManager.GetGuildId()
|
|||
|
local now = XTime.GetServerNowTimestamp()
|
|||
|
if now - self.LastRequestMember >= RequestMemberGap then
|
|||
|
self.LastRequestMember = now
|
|||
|
XDataCenter.GuildManager.GetGuildMembers(guildId, function()
|
|||
|
XLuaUiManager.Open("UiGuildRongyu")
|
|||
|
end)
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiGuildRongyu")
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 挑战
|
|||
|
function XUiGuildMain:OnBtnChallengeClick()
|
|||
|
if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.GuildBoss) then
|
|||
|
return
|
|||
|
end
|
|||
|
XDataCenter.GuildBossManager.SetFirstEnterMark(true)
|
|||
|
XDataCenter.GuildBossManager.OpenGuildBossHall()
|
|||
|
end
|
|||
|
|
|||
|
-- 福利
|
|||
|
function XUiGuildMain:OnBtnTabGiftClick()
|
|||
|
XLuaUiManager.Open("UiGuildPanelWelfare")
|
|||
|
end
|
|||
|
|
|||
|
-- 聊天
|
|||
|
function XUiGuildMain:OnBtnChatClick()
|
|||
|
XUiHelper.OpenUiChatServeMain(false, ChatChannelType.Guild, ChatChannelType.World)
|
|||
|
end
|
|||
|
|
|||
|
--公会宿舍
|
|||
|
function XUiGuildMain:OnBtnGuildDormClick()
|
|||
|
if XLuaUiManager.IsUiLoad("UiGuildDormMain") then
|
|||
|
--由于Ui底层问题,若公会宿舍主页已经打开,需要重新恢复该页面而不是打开一个新的
|
|||
|
--这里跟设计约定若要实现此功能,只能用类似“返回”的做法(即保持上一个页面是公会宿舍主页,这里直接关闭)
|
|||
|
self:Close()
|
|||
|
else
|
|||
|
XDataCenter.GuildDormManager.EnterGuildDorm()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 日志、动态
|
|||
|
function XUiGuildMain:OnBtnJournalClick()
|
|||
|
-- 中途被踢出公会
|
|||
|
if self:ChecKickOut() then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
XLuaUiManager.Open("UiGuildLog")
|
|||
|
end
|
|||
|
|
|||
|
-- 迎新
|
|||
|
function XUiGuildMain:OnBtnDeclarationClick()
|
|||
|
if XDataCenter.GuildManager.IsGuildTourist() then
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildTourstAccess"))
|
|||
|
return
|
|||
|
end
|
|||
|
XLuaUiManager.Open("UiGuildWelcomeWord")
|
|||
|
end
|
|||
|
|
|||
|
-- 切换公会图标
|
|||
|
function XUiGuildMain:OnBtnSetFaceClick()
|
|||
|
if not XDataCenter.GuildManager.IsGuildAdminister() then
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildNotAdministor"))
|
|||
|
return
|
|||
|
end
|
|||
|
self.PanelSetHeadPotrait.gameObject:SetActiveEx(true)
|
|||
|
local curHeadPortrait = XDataCenter.GuildManager.GetGuildHeadPortrait()
|
|||
|
self.GuildViewSetHeadPortrait:OnRefresh(curHeadPortrait)
|
|||
|
end
|
|||
|
|
|||
|
-- 新图标
|
|||
|
function XUiGuildMain:RecordGuildIconId(selectHeadPortraitId)
|
|||
|
local curHeadPortrait = XDataCenter.GuildManager.GetGuildHeadPortrait()
|
|||
|
if selectHeadPortraitId ~= curHeadPortrait then
|
|||
|
XDataCenter.GuildManager.GuildChangeIconRequest(selectHeadPortraitId, function()
|
|||
|
local cfg = XGuildConfig.GetGuildHeadPortraitById(selectHeadPortraitId)
|
|||
|
if cfg then
|
|||
|
self.RImgGuildIcon:SetRawImage(cfg.Icon)
|
|||
|
end
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 新名字
|
|||
|
function XUiGuildMain:OnGuildNameChanged()
|
|||
|
self.TxtGuildName.text = XDataCenter.GuildManager.GetGuildName()
|
|||
|
end
|
|||
|
|
|||
|
-- 新宣言
|
|||
|
function XUiGuildMain:OnDeclarationChanged()
|
|||
|
self.TxtAnnounce.text = XDataCenter.GuildManager.GetGuildDeclaration()
|
|||
|
end
|
|||
|
|
|||
|
-- 新内部通讯
|
|||
|
function XUiGuildMain:OnInterComChanged()
|
|||
|
local notice = XDataCenter.GuildManager.GetGuildInterCom()
|
|||
|
if notice == nil or notice == "" then
|
|||
|
self.TxtInterCom.text = CS.XTextManager.GetText("GuildInterComDes")
|
|||
|
else
|
|||
|
self.TxtInterCom.text = notice
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 修改公会宣言
|
|||
|
function XUiGuildMain:OnBtnAnnounceClick()
|
|||
|
-- 中途被踢出公会
|
|||
|
if self:ChecKickOut() then
|
|||
|
return
|
|||
|
end
|
|||
|
-- 职位变更
|
|||
|
if self:HasModifyAccess() then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
XLuaUiManager.Open("UiGuildInformation", XGuildConfig.InformationType.Announcement)
|
|||
|
end
|
|||
|
|
|||
|
-- 修改内部通讯
|
|||
|
function XUiGuildMain:OnBtnInterComClick()
|
|||
|
-- 中途被踢出公会
|
|||
|
if self:ChecKickOut() then
|
|||
|
return
|
|||
|
end
|
|||
|
-- 职位变更
|
|||
|
if self:HasModifyAccess() then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
XLuaUiManager.Open("UiGuildInformation", XGuildConfig.InformationType.InternalCommunication)
|
|||
|
end
|
|||
|
|
|||
|
-- 公会信息
|
|||
|
function XUiGuildMain:SetGuildInfo()
|
|||
|
local guildId = XDataCenter.GuildManager.GetGuildId()
|
|||
|
local guildLevel = XDataCenter.GuildManager.GetGuildLevel()
|
|||
|
local curBuild = XDataCenter.GuildManager.GetBuild()
|
|||
|
self.RImgGuildIcon:SetRawImage(XDataCenter.GuildManager.GetGuildIconId())
|
|||
|
self.TxtGuildName.text = XDataCenter.GuildManager.GetGuildName()
|
|||
|
self.TxtLeader.text = XDataCenter.GuildManager.GetGuildLeaderName()
|
|||
|
|
|||
|
self.GuildLevelTemplate = XGuildConfig.GetGuildLevelDataBylevel(guildLevel)
|
|||
|
if XDataCenter.GuildManager.CheckAllTalentLevelMax() then
|
|||
|
local gloryLevel = XDataCenter.GuildManager.GetGloryLevel()
|
|||
|
self.TxtLvNum.text = string.format("<size=28>%d</size><color=#FFF400>(%d)</color>", guildLevel, gloryLevel)
|
|||
|
else
|
|||
|
self.TxtLvNum.text = string.format("<size=28>%d</size>", guildLevel)
|
|||
|
end
|
|||
|
if XDataCenter.GuildManager.IsGuildLevelMax(guildLevel) then
|
|||
|
-- 达到最高等级
|
|||
|
self.ImgProgress.fillAmount = curBuild * 1.0 / GuildBuildIntervalWhenMaxLevel
|
|||
|
self.TxtNum.text = string.format("<color=#008FFF>%s</color>/%s", tostring(curBuild), tostring(GuildBuildIntervalWhenMaxLevel))
|
|||
|
else
|
|||
|
-- 未到达最高等级
|
|||
|
self.TxtLvNum.text = guildLevel
|
|||
|
self.ImgProgress.fillAmount = curBuild * 1.0 / self.GuildLevelTemplate.Build
|
|||
|
self.TxtNum.text = string.format("<color=#008FFF>%s</color>/%s", tostring(curBuild), tostring(self.GuildLevelTemplate.Build))
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 隐藏非管理员图标
|
|||
|
function XUiGuildMain:SetUiVisable()
|
|||
|
if not XDataCenter.GuildManager.IsGuildAdminister() then
|
|||
|
self.BtnInterCom.gameObject:SetActiveEx(false)
|
|||
|
self.BtnAnnounce.gameObject:SetActiveEx(false)
|
|||
|
self.BtnSetFace.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnLeaderChanged()
|
|||
|
self.TxtLeader.text = XDataCenter.GuildManager.GetGuildLeaderName()
|
|||
|
end
|
|||
|
|
|||
|
-- 公会频道
|
|||
|
function XUiGuildMain:UpdateGuildNews()
|
|||
|
local chatList = XDataCenter.ChatManager.GetGuildChatList()
|
|||
|
if not chatList then return end
|
|||
|
local lastChat = chatList[1]
|
|||
|
if not lastChat then return end
|
|||
|
if not string.IsNilOrEmpty(lastChat.CustomContent) then
|
|||
|
self.TxtMessageContent.supportRichText = true
|
|||
|
else
|
|||
|
self.TxtMessageContent.supportRichText = false
|
|||
|
end
|
|||
|
|
|||
|
local nameRemark = XDataCenter.SocialManager.GetPlayerRemark(lastChat.SenderId, lastChat.NickName)
|
|||
|
local content = lastChat.Content
|
|||
|
if lastChat.MsgType == ChatMsgType.System then
|
|||
|
content = string.format("%s:%s", CS.XTextManager.GetText("GuildChannelTypeAll"), lastChat.Content)
|
|||
|
self.TxtMessageContent.text = content
|
|||
|
else
|
|||
|
content = lastChat.Content
|
|||
|
if lastChat.MsgType == ChatMsgType.Emoji then
|
|||
|
content = CS.XTextManager.GetText("GuildEmojiReplace")
|
|||
|
end
|
|||
|
self.TxtMessageContent.text = string.format("%s:%s", nameRemark, content)
|
|||
|
end
|
|||
|
|
|||
|
if XUiHelper.CalcTextWidth(self.TxtMessageContent) > MAX_CHAT_WIDTH then
|
|||
|
self.TxtMessageContent.text = string.Utf8Sub(self.TxtMessageContent.text, 1, CHAT_SUB_LENGTH) .. [[...]]
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 活跃度礼包
|
|||
|
function XUiGuildMain:SetActiveGift()
|
|||
|
local giftContribute = XDataCenter.GuildManager.GetGiftContribute()
|
|||
|
local giftGuildLevel = XDataCenter.GuildManager.GetGiftGuildLevel()
|
|||
|
|
|||
|
self.AllBoxesConfig = XGuildConfig.GetGuildGiftByGuildLevel(giftGuildLevel)
|
|||
|
if not self.AllBoxesConfig then return end
|
|||
|
self.MaxContribute = 0
|
|||
|
for _, v in pairs(self.AllBoxesConfig) do
|
|||
|
if v.GiftContribute > self.MaxContribute then
|
|||
|
self.MaxContribute = v.GiftContribute
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
for i = 1, #self.AllBoxesConfig do
|
|||
|
if not self.GiftBoxes[i] then
|
|||
|
local ui = CS.UnityEngine.Object.Instantiate(self.PanelActive)
|
|||
|
local grid = XUiGridGuildBoxItem.New(ui, self)
|
|||
|
grid.Transform:SetParent(self.PanelGift, false)
|
|||
|
self.GiftBoxes[i] = grid
|
|||
|
end
|
|||
|
self.GiftBoxes[i].GameObject:SetActiveEx(true)
|
|||
|
self.GiftBoxes[i]:RefreshGift(self.AllBoxesConfig[i], i, self.MaxContribute)
|
|||
|
end
|
|||
|
for i = #self.AllBoxesConfig + 1, #self.GiftBoxes do
|
|||
|
self.GiftBoxes[i].GameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
self.TxtDailyActive.text = giftContribute
|
|||
|
if self.MaxContribute > 0 then
|
|||
|
self.ImgDaylyActiveProgress.fillAmount = giftContribute * 1.0 / self.MaxContribute
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 公会人数
|
|||
|
function XUiGuildMain:UpdateGuildMemberCount()
|
|||
|
local curCount = XDataCenter.GuildManager.GetOnlineMemberCount()
|
|||
|
--local maxCount = XDataCenter.GuildManager.GetMemberMaxCount()
|
|||
|
self.BtnTabMember:SetNameByGroup(1, CSXTextManagerGetText("GuildMemberOnlineCount", curCount))
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:HasModifyAccess()
|
|||
|
if not XDataCenter.GuildManager.IsGuildAdminister() then
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildNotAdministor"))
|
|||
|
return true
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:ChecKickOut()
|
|||
|
if not XDataCenter.GuildManager.IsJoinGuild() then
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("GuildKickOutByAdministor"))
|
|||
|
self:Close()
|
|||
|
return true
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
--==================================
|
|||
|
--以下为加入公会战后的修改
|
|||
|
--公会战界面以子场景的形式,追加了镜头变更的操作
|
|||
|
--==================================
|
|||
|
|
|||
|
--=============
|
|||
|
--显示主界面
|
|||
|
--=============
|
|||
|
function XUiGuildMain:ShowMain()
|
|||
|
--主界面关闭镜头模糊
|
|||
|
self:SetActiveScene3DBlur(false)
|
|||
|
self:UpdateCamera(PARENT_PAGE.MAIN)
|
|||
|
self.PanelInfo.gameObject:SetActiveEx(true)
|
|||
|
self.PanelLeftBtn.gameObject:SetActiveEx(true)
|
|||
|
self.PanelRightBtn.gameObject:SetActiveEx(true)
|
|||
|
self.GuildWarEntry:OnShow()
|
|||
|
end
|
|||
|
--=============
|
|||
|
--隐藏主界面
|
|||
|
--=============
|
|||
|
function XUiGuildMain:HideMain()
|
|||
|
self.PanelInfo.gameObject:SetActiveEx(false)
|
|||
|
self.PanelLeftBtn.gameObject:SetActiveEx(false)
|
|||
|
self.PanelRightBtn.gameObject:SetActiveEx(false)
|
|||
|
self.PanelGuildWarEntry.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
--================
|
|||
|
--初始化枚举与字典
|
|||
|
--================
|
|||
|
function XUiGuildMain:InitChildUiPageData()
|
|||
|
PARENT_PAGE = {
|
|||
|
MAIN = 1, -- 主页面
|
|||
|
GUILDWAR = 2, -- 公会战页面
|
|||
|
}
|
|||
|
ChildUiPage = {
|
|||
|
[PARENT_PAGE.GUILDWAR] = require("XUi/XUiGuild/ChildPage/XUiGuildWarPage"),
|
|||
|
}
|
|||
|
end
|
|||
|
--================
|
|||
|
--打开子页面,打开新页面时会关闭旧的子页面
|
|||
|
--由于这是后来新的需求的原因,这里主页面作特殊处理
|
|||
|
--================
|
|||
|
function XUiGuildMain:OpenChildPage(pageIndex, ...)
|
|||
|
if self.CurrentPageIndex == pageIndex then
|
|||
|
if self.CurrentPageIndex ~= PARENT_PAGE.MAIN then
|
|||
|
self.ChildPage[self.CurrentPageIndex]:OnRepeatOpen()
|
|||
|
end
|
|||
|
return
|
|||
|
end
|
|||
|
if self.CurrentPageIndex then
|
|||
|
if self.CurrentPageIndex ~= PARENT_PAGE.MAIN then
|
|||
|
self.ChildPage[self.CurrentPageIndex]:HidePage()
|
|||
|
else
|
|||
|
self:HideMain()
|
|||
|
end
|
|||
|
end
|
|||
|
if self.ChildPage[pageIndex] then
|
|||
|
self.CurrentPageIndex = pageIndex
|
|||
|
if pageIndex ~= PARENT_PAGE.MAIN then
|
|||
|
self.ChildPage[self.CurrentPageIndex]:ShowPage(...)
|
|||
|
else
|
|||
|
self:ShowMain()
|
|||
|
end
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurrentPageIndex = pageIndex
|
|||
|
if pageIndex ~= PARENT_PAGE.MAIN then
|
|||
|
self.ChildPage[pageIndex] = ChildUiPage[pageIndex].New(self)
|
|||
|
self.ChildPage[pageIndex]:ShowPage(...)
|
|||
|
else
|
|||
|
self:ShowMain()
|
|||
|
end
|
|||
|
end
|
|||
|
-- 3D场景相机数量
|
|||
|
local CAMERA_NUM = 2
|
|||
|
--================
|
|||
|
--初始化角色模型和场景相机
|
|||
|
--================
|
|||
|
function XUiGuildMain:InitModel()
|
|||
|
local root = self.UiModelGo.transform
|
|||
|
local camera = root:FindTransform("NearCamera")
|
|||
|
self.Scene3DBlur = camera and camera:GetComponent("XUiScene3DBlur")
|
|||
|
self.CameraNear = {
|
|||
|
[PARENT_PAGE.MAIN] = root:FindTransform("UiMainCamera"),
|
|||
|
[PARENT_PAGE.GUILDWAR] = root:FindTransform("UiGuildWarCamera"),
|
|||
|
}
|
|||
|
end
|
|||
|
--================
|
|||
|
--刷新场景相机
|
|||
|
--================
|
|||
|
function XUiGuildMain:UpdateCamera(pageIndex)
|
|||
|
self.CurCameraIndex = pageIndex
|
|||
|
for i = 1, CAMERA_NUM do
|
|||
|
if self.CurCameraIndex ~= i then
|
|||
|
self.CameraNear[i].gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
if self.CameraNear[self.CurCameraIndex] then
|
|||
|
self.CameraNear[self.CurCameraIndex].gameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
end
|
|||
|
--================
|
|||
|
--读取面板控件
|
|||
|
--================
|
|||
|
function XUiGuildMain:LoadChildPrefab(pageIndex, assetPath)
|
|||
|
return self["Panel" .. pageIndex]:LoadPrefab(assetPath)
|
|||
|
end
|
|||
|
--================
|
|||
|
--销毁子页面
|
|||
|
--================
|
|||
|
function XUiGuildMain:ChildPageOnDestroy()
|
|||
|
for _, page in pairs(self.ChildPage) do
|
|||
|
if page.OnDestroy then page:OnDestroy() end
|
|||
|
end
|
|||
|
end
|
|||
|
--================
|
|||
|
--设置镜头模糊
|
|||
|
--================
|
|||
|
function XUiGuildMain:SetActiveScene3DBlur(value)
|
|||
|
if self.Scene3DBlur then
|
|||
|
self.Scene3DBlur.enabled = value
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGuildMain:OnCheckGuildWarEntryRedPoint(count)
|
|||
|
self.BtnGuildWarEntry:ShowReddot(count >= 0)
|
|||
|
end
|
|||
|
--================
|
|||
|
--点击公会战入口
|
|||
|
--================
|
|||
|
function XUiGuildMain:OnBtnGuildWarEntryClick()
|
|||
|
local currentRoundId = XDataCenter.GuildWarManager.GetCurrentRoundId()
|
|||
|
if currentRoundId == 1 then
|
|||
|
local now = XTime.GetServerNowTimestamp()
|
|||
|
local roundStartTime = XDataCenter.GuildWarManager.GetRoundStartTime()
|
|||
|
if now < roundStartTime then
|
|||
|
XUiManager.TipText("GuildWarNoInRound")
|
|||
|
return
|
|||
|
end
|
|||
|
end
|
|||
|
if XDataCenter.GuildWarManager.CheckIsSkipCurrentRound() then
|
|||
|
XUiManager.TipText("GuildWarIsSkip")
|
|||
|
return
|
|||
|
end
|
|||
|
local haveSelectDifficulty = XDataCenter.GuildWarManager.CheckHaveDifficultySelected()
|
|||
|
if haveSelectDifficulty then
|
|||
|
XDataCenter.GuildWarManager.GetActivityData(function ()
|
|||
|
XLuaUiManager.Open("UiGuildWarStageMain")
|
|||
|
end)
|
|||
|
else
|
|||
|
self:OpenChildPage(PARENT_PAGE.GUILDWAR)
|
|||
|
end
|
|||
|
end
|