miduo_client/Assets/ManagedResources/~Lua/Modules/PowerRice/PowerRicePanel.lua

319 lines
12 KiB
Lua

require("Base/BasePanel")
local PowerRice = Inherit(BasePanel)
local globalActConfig = ConfigManager.GetConfig(ConfigName.GlobalActivity)
local this = PowerRice
local STATE = {
[0] = {Img = "Btn_hz_cheng_01",text = Language[10556]},
[1] = {Img = "Btn_hz_cheng_01",text = Language[11948]},
[2] = {Img = "Btn_hz_lan_01",text = Language[10101]},
[3] = {Img = "Btn_hz_lan_01",text = "已结束"},
}
local TabBoxRedPoints = {}
local TabBox = require("Modules/Common/TabBox")
local _TabData={ [1] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = "战力目标",redPointType = RedPointType.PowerRiceGool},
[2] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = "战力排名"},
}
local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
select = Color.New(243 / 255, 235 / 255, 202 / 255, 1)}
local curIndex = 1
--初始化组件(用于子类重写)
function PowerRice:InitComponent()
this.spLoader = SpriteLoader.New()
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform)
self.btnBack = Util.GetGameObject(self.gameObject,"BackBtn")
self.tabBox = Util.GetGameObject(self.gameObject, "TabBox")
self.leftTime = Util.GetGameObject(self.gameObject,"bg/timeBg/LeftTime"):GetComponent("Text")
self.text1 = Util.GetGameObject(self.gameObject,"bg/tiao/Text1"):GetComponent("Text")
self.text2 = Util.GetGameObject(self.gameObject,"bg/tiao/Text4"):GetComponent("Text")
self.power = Util.GetGameObject(self.gameObject,"power"):GetComponent("Text")
self.grid = Util.GetGameObject(self.gameObject,"bg/ren")
self.Scroll = Util.GetGameObject(self.gameObject,"Scroll")
self.itemPre = Util.GetGameObject(self.gameObject,"itemPre")
self.itemPre2 = Util.GetGameObject(self.gameObject,"itemPre2")
self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
self.helpPosition = self.helpBtn:GetComponent("RectTransform").localPosition
self.rankBtn = Util.GetGameObject(self.gameObject, "rankBtn")
local rootHight = self.Scroll.transform.rect.height
local width = self.Scroll.transform.rect.width
self.ScrollList = {}
self.ScrollList[1] = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.Scroll.transform,
self.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 0))
self.ScrollList[1].moveTween.MomentumAmount = 1
self.ScrollList[1].moveTween.Strength = 2
self.ScrollList[1].elastic = false
self.ScrollList[2] = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.Scroll.transform,
self.itemPre2, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 0))
self.ScrollList[2].moveTween.MomentumAmount = 1
self.ScrollList[2].moveTween.Strength = 2
self.ScrollList[2].elastic = false
self.itemList = {}
end
--绑定事件(用于子类重写)
function PowerRice:BindEvent()
Util.AddClick(self.btnBack, function()
self:ClosePanel()
end)
Util.AddClick(self.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.PowerRice, self.helpPosition.x,self.helpPosition.y)
end)
Util.AddClick(self.rankBtn, function()
UIManager.OpenPanel(UIName.RankingSingleListPanel,rankKingList[34])
end)
TabBoxRedPoints = {}
self.TabCtrl = TabBox.New()
self.TabCtrl:SetTabAdapter(this.TabAdapter)
self.TabCtrl:SetChangeTabCallBack(this.SwitchView)
self.TabCtrl:Init(self.tabBox, _TabData)
for i = 1, #_TabData do
TabBoxRedPoints[i] = Util.GetGameObject(self.tabBox, "box/tab"..i.."/Redpot")
if _TabData[i] and _TabData[i].redPointType and TabBoxRedPoints[i] then
BindRedPointObject(_TabData[i].redPointType,TabBoxRedPoints[i])
end
end
end
--添加事件监听(用于子类重写)
function PowerRice:AddListener()
end
--移除事件监听(用于子类重写)
function PowerRice:RemoveListener()
end
-- tab节点显示自定义
function this.TabAdapter(tab, index, status)
local tabLab = Util.GetGameObject(tab, "Text")
Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabData[index][status])
tabLab:GetComponent("Text").text = _TabData[index].name
tabLab:GetComponent("Text").color = _TabFontColor[status]
end
--切换视图
function this.SwitchView(index)
--先执行上一面板关闭逻辑
curIndex = index
PowerRice:Refresh(curIndex,true,true)
end
--界面打开时调用(用于子类重写)
function PowerRice:OnOpen()
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function PowerRice:OnShow()
if curIndex ~= 1 then
this.TabCtrl:ChangeTab(1)
end
end
function PowerRice:Refresh(_curIndex,isTop,isAni)
self.power.text = PlayerManager.maxForce
for index, value in ipairs(self.ScrollList) do
value.gameObject:SetActive(index == _curIndex)
end
RankingManager.InitData(RANK_TYPE.POWER_RICE,function ()
local allRankData,myRankData = RankingManager.GetRankingInfo()
self.myRank = myRankData.rank
self.myPower = myRankData.param1
CommonActPageManager.powerRicePower = myRankData.param1
self.actData = CommonActPageManager.GetData(ActivityTypeDef.PowerRice)
if _curIndex == 1 then
PowerRice:SetRewards1(isTop,isAni)
self.text1.text = "目标战力"
self.text2.text = "奖励 领取奖励"
elseif _curIndex == 2 then
self.text1.text = "名次"
self.text2.text = "奖励 战力要求"
PowerRice:SetRewards2(isTop,isAni)
end
PowerRice:SetTime()
PowerRice:SetLive2D()
end,0)
end
function PowerRice:SetLive2D()
--设置立绘
if not self.Live then
self.Live = poolManager:LoadLive("live2d_h_puti", self.grid.transform, Vector3.one*0.9, Vector2.zero)
self.Live:GetComponent("SkeletonGraphic").AnimationState:SetAnimation(0, "idle", true)
end
end
--================战力目标====================
function PowerRice:SetRewards1(isTop,isAni)
self.ScrollList[1]:SetData(self.actData.rewards, function (index, go)
PowerRice:SingleDataShow(go, self.actData.rewards[index],index)
end,not isTop,not isAni)
end
function PowerRice:SingleDataShow(item,data,index)
local powerNum = Util.GetGameObject(item,"num"):GetComponent("Text")
local reward = Util.GetGameObject(item,"reward")
local getBtn = Util.GetGameObject(item,"getBtn")
local btnImage = Util.GetGameObject(item,"getBtn"):GetComponent("Image")
local btnText = Util.GetGameObject(item,"getBtn/Text"):GetComponent("Text")
local gapTime = globalActConfig[self.actData.activityId].GapTime*86400
local state = 0
if data.state == 1 then
state = 2
elseif data.otherData.Values[1][1] > self.myPower then
state = 0
if self.actData.endTime - GetTimeStamp() < gapTime then
state = 3
end
else
state = 1
end
powerNum.text = (data.otherData.Values[1][1]/10000)..""
btnImage.sprite = this.spLoader:LoadSprite(STATE[state].Img)
btnText.text = STATE[state].text
if not self.itemList[item] then
self.itemList[item] = {}
end
for i = 1, #data.otherData.Reward do
if not self.itemList[item][i] then
self.itemList[item][i] = SubUIManager.Open(SubUIConfig.ItemView,reward.transform)
end
self.itemList[item][i]:OnOpen(false, data.otherData.Reward[i], 0.8,false,false,false,self.sortingOrder)
end
Util.AddOnceClick(getBtn,function ()
if state == 0 then
-- PopupTipPanel.ShowTip("请前往山河社稷图获取更多星星!")
JumpManager.GoJump(22001)
elseif state == 1 then
NetManager.GetActivityRewardRequest(data.missionId,self.actData.activityId,function (_drop)
CheckRedPointStatus(RedPointType.PowerRiceGool)
UIManager.OpenPanel(UIName.RewardItemPopup,_drop,1,function()
PowerRice:Refresh(curIndex,false,false)
end)
end)
elseif state == 3 then
PopupTipPanel.ShowTip("活动已结束")
end
end)
getBtn:GetComponent("Button").interactable = state ~= 2
end
--=======================战力排名===========================
function PowerRice:SetRewards2(isTop,isAni)
local data = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRankingReward,"ActivityId",self.actData.activityId)
this.ScrollList[2]:SetData(data, function (index, go)
PowerRice:SingleDataShow2(go, data[index],index)
end,not isTop,not isAni)
end
function PowerRice:SingleDataShow2(item,data,index)
local sortNumTabs = {}
for i = 1, 4 do
sortNumTabs[i] = Util.GetGameObject(item, "SortNum/SortNum ("..i..")")
sortNumTabs[i]:SetActive(false)
end
local reward = Util.GetGameObject(item,"reward")
local sort4Text = Util.GetGameObject(sortNumTabs[4],"TitleText"):GetComponent("Text")
local mark = Util.GetGameObject(item,"mark")
mark:SetActive(self.myRank > 0 and self.myRank >= data.MinRank and self.myRank <= data.MaxRank)
local powerLimit = Util.GetGameObject(item,"num"):GetComponent("Text")
powerLimit.text = ""
if data.RankLimit and data.RankLimit[2]>0 then
powerLimit.text = (data.RankLimit[2]/10000)..""
end
if data.MinRank == data.MaxRank then
if data.MaxRank < 4 then
sortNumTabs[data.MinRank]:SetActive(true)
else
sortNumTabs[4]:SetActive(true)
sort4Text.text = data.MaxRank
end
else
sortNumTabs[4]:SetActive(true)
if data.MaxRank < 0 then
sort4Text.text = data.MinRank .."+"
else
sort4Text.text = data.MinRank .."-".. data.MaxRank
end
end
if not self.itemList[item] then
self.itemList[item] = {}
end
for i = 1, #data.RankingReward do
if not self.itemList[item][i] then
self.itemList[item][i] = SubUIManager.Open(SubUIConfig.ItemView,reward.transform)
end
self.itemList[item][i]:OnOpen(false, data.RankingReward[i], 0.8,false,false,false,self.sortingOrder)
end
end
--设置时间
function PowerRice:SetTime()
--设置时间
if self.timer then
self.timer:Stop()
self.timer = nil
end
local time =self.actData.endTime - GetTimeStamp()
local gapTime = globalActConfig[self.actData.activityId].GapTime*86400
local text = Language[10512]
if time > gapTime then
time = time - gapTime
else
text = "活动关闭时间:"
end
self.leftTime.text = string.format("%s%s",text,TimeToFelaxible(time))
self.timer = Timer.New(function ()
time = time - 1
self.leftTime.text = string.format("%s%s",text,TimeToFelaxible(time))
if time <= 0 then
self:ClosePanel()
end
end,1,-1,true)
self.timer:Start()
end
--界面关闭时调用(用于子类重写)
function PowerRice:OnClose()
if self.timer then
self.timer:Stop()
self.timer = nil
end
end
--界面销毁时调用(用于子类重写)
function PowerRice:OnDestroy()
if self.timer then
self.timer:Stop()
self.timer = nil
end
self.ScrollList = {}
self.itemList = {}
this.spLoader:Destroy()
self.Live = nil
for i = 1, #_TabData do
if _TabData[i] and _TabData[i].redPointType and TabBoxRedPoints[i] then
ClearRedPointObject(_TabData[i].redPointType,TabBoxRedPoints[i])
end
end
curIndex = 1
end
return PowerRice