PGRData/Script/matrix/xui/xuipiccomposition/XUiPicChatRank.lua

254 lines
No EOL
8.9 KiB
Lua

local XUiPicChatRank = XLuaUiManager.Register(XLuaUi, "UiPicChatRank")
local RankRewardMax = 3
local DialogueMax = 4
local CSTextManagerGetText = CS.XTextManager.GetText
local CSXGameConfig = CS.XGame.Config
function XUiPicChatRank:OnDestroy()
end
function XUiPicChatRank:OnStart()
self:InitData()
end
function XUiPicChatRank:OnEnable()
end
function XUiPicChatRank:InitData()
local picCompositionCfg = XMarketingActivityConfigs.GetPicCompositionActivityInfoConfigs()
self.CurActivityId = XDataCenter.MarketingActivityManager.GetNowActivityId()
local picComposition = picCompositionCfg[self.CurActivityId]
self.LikeItem = self.CurActivityId and picComposition and
picComposition.PraiseItemId or nil
self.RankNum = self.CurActivityId and picComposition and
picComposition.RankNum or nil
self.RankDataAllList = {}
self.AssetActivityPanel = XUiPanelActivityAsset.New(self.PanelSpecialTool, true)
self.RankDataAllList = XDataCenter.MarketingActivityManager.GetRankCompositionDataList()
self.PanelNoRank.gameObject:SetActiveEx(#self.RankDataAllList == 0)
self.TopTxet.text = CSTextManagerGetText("PicCompositionRankTop",self.RankNum)
self:InitRankReward()
self:InitPhone()
self:UpdatePhone()
self:SetButtonCallBack()
self:InitDynamicTable()
self:SetupDynamicTable()
end
function XUiPicChatRank:InitRankReward()
local RankRewardInfos = XDataCenter.MarketingActivityManager.GetPicCompositionRankRewardInfoList()
self.RankObj = {
self.Rank1,
self.Rank2,
self.Rank3
}
self.IsHaveReward = #RankRewardInfos > 0
self.PanelRankReward.gameObject:SetActiveEx(self.IsHaveReward)
self.Phone.gameObject:SetActiveEx(not self.IsHaveReward)
if self.IsHaveReward then
self:PlayAnimation("AnimEnable1")
else
self:PlayAnimation("AnimEnable2")
end
self.RankReward ={}
for i = 1, RankRewardMax do
if not RankRewardInfos[i] then
self.RankObj[i].gameObject:SetActiveEx(false)
break
end
self.RankReward[i] = {}
self.RankReward[i].RewardPanelList = {}
self.RankReward[i].Transform = self.RankObj[i].transform
self.RankReward[i].GameObject = self.RankObj[i].gameObject
XTool.InitUiObject(self.RankReward[i])
local minRank = RankRewardInfos[i].MinRank or 0
local maxRank = RankRewardInfos[i].MaxRank or 0
self.RankReward[i].Text.text = CSTextManagerGetText("PicCompositionRankReward",minRank,maxRank)
local rewards = XRewardManager.GetRewardList(RankRewardInfos[i].RewardId)
for _,reward in pairs(rewards or {}) do
local panel
if #self.RankReward[i].RewardPanelList == 0 then
panel = XUiGridCommon.New(self, self.RankReward[i].GridDrawActivity)
else
local ui = CS.UnityEngine.Object.Instantiate(self.RankReward[i].GridDrawActivity)
ui.transform:SetParent(self.RankReward[i].Reward, false)
panel = XUiGridCommon.New(self, ui)
end
table.insert(self.RankReward[i].RewardPanelList, panel)
panel:Refresh(reward)
end
end
local serverId = CS.XHeroBdcAgent.ServerId
if serverId == XMarketingActivityConfigs.SeverId.SparkServer then
self.TxtIos.text = CSTextManagerGetText("PicCompositionServerRankName",CSXGameConfig:GetString("SparkServer"))
elseif serverId == XMarketingActivityConfigs.SeverId.BeaconServer then
self.TxtIos.text = CSTextManagerGetText("PicCompositionServerRankName",CSXGameConfig:GetString("BeaconServer"))
else
self.TxtIos.text = CSTextManagerGetText("PicCompositionServerRankName",CSXGameConfig:GetString("TestServer"))
end
end
function XUiPicChatRank:InitPhone()
self.NormalPhone = {}
self.NormalDialogueList = {}
self.NormalPhone.Transform = self.PanelNormalPhone.transform
self.NormalPhone.GameObject = self.PanelNormalPhone.gameObject
XTool.InitUiObject(self.NormalPhone)
self.NormalPhone.BtnPhoneClose.CallBack = function()
self:OnBtnPhoneCloseClick()
end
self.NormalPhone.BtnPhoneClose.gameObject:SetActiveEx(self.IsHaveReward)
self.NormalPhone.GameObject:SetActiveEx(true)
self.NormalPhone.DialogueObj = {
self.NormalPhone.Dialogue1,
self.NormalPhone.Dialogue2,
self.NormalPhone.Dialogue3,
self.NormalPhone.Dialogue4
}
for index = 1,DialogueMax do
self.NormalDialogueList[index] = XUiGridNormalDialogue.New(self.NormalPhone.DialogueObj[index],self)
end
end
function XUiPicChatRank:UpdatePhone()
if not self.PlayerRankData then
local UpLoadTimeType = XDataCenter.MarketingActivityManager.CheckIsCanUpLoad()
self:SetOtherDialogueStateShow(false)
if UpLoadTimeType == XMarketingActivityConfigs.TimeType.Before then
local bTime,eTime = XDataCenter.MarketingActivityManager.GetUpLoadTime(false)
self.NormalPhone.TipsText.text = CSTextManagerGetText("PicCompositionUpLoadTimeText")
self.NormalPhone.TimeText.text = string.format("%s--%s",bTime,eTime)
self.NormalPhone.TimeText.gameObject:SetActiveEx(true)
else
self.NormalPhone.TipsText.text = CSTextManagerGetText("NotHaveOtherComposition")
self.NormalPhone.TimeText.gameObject:SetActiveEx(false)
end
else
local hot = self.PlayerRankData.Hot or 0
local name = self.PlayerRankData.UserName
local id = self.PlayerRankData.Id
local IsLike = XDataCenter.MarketingActivityManager.IsDoPicCompositionLike(id)
local dialogueDataList = self.PlayerRankData.Dialogue
local btnStatus = IsLike and CS.UiButtonState.Select or CS.UiButtonState.Normal
self.NormalPhone.OtherHotNum.text = XMarketingActivityConfigs.GetCountUnitChange(hot)
self.NormalPhone.PlayerName.text = CSTextManagerGetText("PicCompositionPlayerName",name)
self.NormalPhone.Tips.gameObject:SetActiveEx(false)
for index = 1,DialogueMax do
self.NormalDialogueList[index]:Update(dialogueDataList[index])
end
self:SetOtherDialogueStateShow(true)
self.NormalPhone.BtnLike:SetButtonState(btnStatus)
end
local item = XDataCenter.ItemManager.GetItem(self.LikeItem)
if item then
self.AssetActivityPanel:Refresh({self.LikeItem})
else
self.AssetActivityPanel:Refresh(nil)
end
end
function XUiPicChatRank:SetOtherDialogueStateShow(IsShow)
self.NormalPhone.Tips.gameObject:SetActiveEx(not IsShow)
self.NormalPhone.PanelChatView.gameObject:SetActiveEx(IsShow)
self.NormalPhone.PanelOther.gameObject:SetActiveEx(IsShow)
end
function XUiPicChatRank:SetButtonCallBack()
self.BtnBack.CallBack = function()
self:OnBtnBackClick()
end
self.BtnMainUi.CallBack = function()
self:OnBtnMainUiClick()
end
self.NormalPhone.BtnLike.CallBack = function()
self:OnBtnLikeClick()
end
end
function XUiPicChatRank:InitDynamicTable()
self.DynamicTable = XDynamicTableNormal.New(self.ChatRankList)
self.DynamicTable:SetProxy(XUiGridRank)
self.DynamicTable:SetDelegate(self)
end
function XUiPicChatRank:SetupDynamicTable()
self.PageDatas = self.RankDataAllList
self.DynamicTable:SetDataSource(self.PageDatas)
self.DynamicTable:ReloadDataSync(1)
end
function XUiPicChatRank:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:UpdateGrid(self.PageDatas[index],index,self,true)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:UpdateGrid(self.PageDatas[index],index,self,false)
-- elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
end
end
function XUiPicChatRank:OnBtnBackClick()
self:Close()
end
function XUiPicChatRank:OnBtnPhoneCloseClick()
self.PanelRankReward.gameObject:SetActiveEx(true)
self.Phone.gameObject:SetActiveEx(false)
self:PlayAnimation("RankRewardQieHuan")
end
function XUiPicChatRank:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
function XUiPicChatRank:OnBtnLikeClick()
local id = self.PlayerRankData.Id
if XDataCenter.MarketingActivityManager.IsDoPicCompositionLike(id) then
XUiManager.TipText("PicCompositionLikeHint")
return
end
if self.PlayerRankData.UserId == XPlayer.Id then
XUiManager.TipText("PicCompositionLikeSelf")
return
end
local itemCount = XDataCenter.ItemManager.GetCount(self.LikeItem)
if not XDataCenter.MarketingActivityManager.CheckItemEnough(itemCount) then
XUiManager.TipText("PicCompositionNotEnough")
return
end
XDataCenter.MarketingActivityManager.GivePraise(id, function ()
self.PlayerRankData.Hot =
self.PlayerRankData.Hot + 1
self:UpdatePhone()
end)
end
function XUiPicChatRank:ErrorExit()
XUiManager.TipText("PicCompositionNetError")
XLuaUiManager.RunMain()
end