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

319 lines
12 KiB
Lua
Raw Normal View History

2022-02-17 16:27:36 +08:00
require("Base/BasePanel")
local PowerRice = Inherit(BasePanel)
2022-02-18 17:02:27 +08:00
local globalActConfig = ConfigManager.GetConfig(ConfigName.GlobalActivity)
2022-02-17 16:27:36 +08:00
local this = PowerRice
local STATE = {
2023-11-15 17:19:43 +08:00
[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 = "已结束"},
2022-02-17 16:27:36 +08:00
}
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")
2022-02-21 10:40:27 +08:00
self.power = Util.GetGameObject(self.gameObject,"power"):GetComponent("Text")
2022-02-17 16:27:36 +08:00
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()
2022-02-18 14:05:59 +08:00
UIManager.OpenPanel(UIName.RankingSingleListPanel,rankKingList[34])
2022-02-17 16:27:36 +08:00
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)
--先执行上一面板关闭逻辑
2022-03-07 16:05:38 +08:00
curIndex = index
PowerRice:Refresh(curIndex,true,true)
2022-02-17 16:27:36 +08:00
end
--界面打开时调用(用于子类重写)
function PowerRice:OnOpen()
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function PowerRice:OnShow()
2022-03-07 16:05:38 +08:00
if curIndex ~= 1 then
this.TabCtrl:ChangeTab(1)
2022-02-21 10:40:27 +08:00
end
2022-02-17 16:27:36 +08:00
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
2022-03-07 16:05:38 +08:00
RankingManager.InitData(RANK_TYPE.POWER_RICE,function ()
local allRankData,myRankData = RankingManager.GetRankingInfo()
self.myRank = myRankData.rank
self.myPower = myRankData.param1
CommonActPageManager.powerRicePower = myRankData.param1
2022-02-17 16:27:36 +08:00
self.actData = CommonActPageManager.GetData(ActivityTypeDef.PowerRice)
2022-03-07 16:05:38 +08:00
if _curIndex == 1 then
PowerRice:SetRewards1(isTop,isAni)
self.text1.text = "目标战力"
self.text2.text = "奖励 领取奖励"
elseif _curIndex == 2 then
self.text1.text = "名次"
self.text2.text = "奖励 战力要求"
2022-02-18 16:27:49 +08:00
PowerRice:SetRewards2(isTop,isAni)
2022-03-07 16:05:38 +08:00
end
PowerRice:SetTime()
PowerRice:SetLive2D()
end,0)
2022-02-17 16:27:36 +08:00
end
function PowerRice:SetLive2D()
--设置立绘
if not self.Live then
2022-02-21 10:40:27 +08:00
self.Live = poolManager:LoadLive("live2d_h_puti", self.grid.transform, Vector3.one*0.9, Vector2.zero)
2022-02-17 16:27:36 +08:00
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")
2022-03-07 16:05:38 +08:00
local gapTime = globalActConfig[self.actData.activityId].GapTime*86400
2022-02-17 16:27:36 +08:00
local state = 0
if data.state == 1 then
state = 2
2022-03-07 16:05:38 +08:00
elseif data.otherData.Values[1][1] > self.myPower then
2022-02-17 16:27:36 +08:00
state = 0
2022-03-07 16:05:38 +08:00
if self.actData.endTime - GetTimeStamp() < gapTime then
state = 3
end
2022-02-17 16:27:36 +08:00
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)
2022-02-17 16:27:36 +08:00
UIManager.OpenPanel(UIName.RewardItemPopup,_drop,1,function()
PowerRice:Refresh(curIndex,false,false)
end)
end)
2022-03-07 16:05:38 +08:00
elseif state == 3 then
PopupTipPanel.ShowTip("活动已结束")
2022-02-17 16:27:36 +08:00
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")
2022-02-18 16:27:49 +08:00
local mark = Util.GetGameObject(item,"mark")
mark:SetActive(self.myRank > 0 and self.myRank >= data.MinRank and self.myRank <= data.MaxRank)
2022-02-24 18:19:39 +08:00
local powerLimit = Util.GetGameObject(item,"num"):GetComponent("Text")
powerLimit.text = ""
2022-02-17 16:27:36 +08:00
2022-02-24 18:19:39 +08:00
if data.RankLimit and data.RankLimit[2]>0 then
powerLimit.text = (data.RankLimit[2]/10000)..""
end
2022-02-17 16:27:36 +08:00
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()
2022-02-18 17:02:27 +08:00
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))
2022-02-17 16:27:36 +08:00
self.timer = Timer.New(function ()
time = time - 1
2022-02-18 17:02:27 +08:00
self.leftTime.text = string.format("%s%s",text,TimeToFelaxible(time))
2022-02-17 16:27:36 +08:00
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
2022-02-17 17:14:33 +08:00
for i = 1, #_TabData do
if _TabData[i] and _TabData[i].redPointType and TabBoxRedPoints[i] then
ClearRedPointObject(_TabData[i].redPointType,TabBoxRedPoints[i])
end
end
2022-03-07 16:05:38 +08:00
curIndex = 1
2022-02-17 16:27:36 +08:00
end
return PowerRice