sk-client/Assets/ManagedResources/~Lua/Modules/Expert/Expert.lua

323 lines
13 KiB
Lua
Raw Permalink Normal View History

2024-07-03 18:38:10 +08:00
local Expert = quick_class("Expert")
local this = Expert
local expertRewardGrid = {}--七种达人 + 周卡 限时兑换
local expertRewardItemsGrid = {}
local expertRewardTabs = {}
local activeIndext = 0
function Expert:ctor(mainPanel, gameObject)
self.mainPanel = mainPanel
self.gameObject = gameObject
self:InitComponent(gameObject)
self:BindEvent()
end
local bannerList = {
[13] = "X1_jingyinghuodong_banner_01",--慷慨解囊
[10] = "X1_jingyinghuodong_banner_02",--快速作战
[19] = "X1_jingyinghuodong_banner_03",--巡逻
[20] = "X1_jingyinghuodong_banner_04",--轮盘
[27] = "X1_jingyinghuodong_banner_05",--异端之战
[21] = "X1_jingyinghuodong_banner_06",--精锐小队
[7] = "X1_jingyinghuodong_banner_07",--每日累充
-- [] = "X1_jingyinghuodong_banner_08",--累充 --(不在此活动集合 ContinuityRecharge)
-- [] = "X1_jingyinghuodong_banner_09",--折扣
-- [23] = "X1_jingyinghuodong_banner_10",--升级 --(不在此活动集合 UpLvRewardGrid)
}
--初始化组件(用于子类重写)
function Expert:InitComponent(gameObject)
this.rewardBtn = Util.GetGameObject(gameObject, "rewardBtn")
this.sortBtn = Util.GetGameObject(gameObject, "sortBtn")
this.timeGo = Util.GetGameObject(gameObject, "time")
this.time = Util.GetGameObject(gameObject, "time/Text"):GetComponent("Text")
this.banner = Util.GetGameObject(gameObject, "banner"):GetComponent("Image")
this.desc = Util.GetGameObject(gameObject, "banner/Text"):GetComponent("Text")
this.expertRewardGridGo = Util.GetGameObject(gameObject, "rect/rect/grid")
for i = 1, 10 do
expertRewardGrid[i] = Util.GetGameObject(this.expertRewardGridGo, "rewardPre" .. i)
local curexpertRewardItemsGri = {}
for j = 1, 4 do
curexpertRewardItemsGri[j] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(expertRewardGrid[i], "content").transform)
end
expertRewardItemsGrid[i] = curexpertRewardItemsGri
end
this.content = Util.GetGameObject(gameObject, "rect"):GetComponent("RectTransform")
this.firstReward = Util.GetGameObject(gameObject, "firstReward")
this.grid = Util.GetGameObject(gameObject, "firstReward/gird")
end
--绑定事件(用于子类重写)
function Expert:BindEvent()
Util.AddClick(this.rewardBtn, function()
local activityId = ActivityGiftManager.IsActivityTypeOpen(NumExChange[activeIndext])
UIManager.OpenPanel(UIName.ExpertRewardSortPanel,activityId,2, NumExChange[activeIndext])
end)
Util.AddClick(this.sortBtn, function()
local t = NumExChange[activeIndext]
local _name = NumExChangeRankName[activeIndext]
local rank = {bgImage = "", name = _name ,Id = 42, rankType = RANK_TYPE.GOLD_EXPER, activiteId = t, isRankingMainPanelShow = false, nameImage = ""}
UIManager.OpenPanel(UIName.RankingSingleListPanel,rank)
end)
end
--添加事件监听(用于子类重写)
function Expert:AddListener()
end
--移除事件监听(用于子类重写)
function Expert:RemoveListener()
end
local sortingOrder = 0
--界面打开时调用(用于子类重写)
function Expert:OnOpen()
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function Expert:OnShow(index,_sortingOrder)
sortingOrder = _sortingOrder
this:OnShowData(index)
end
function Expert:OnSortingOrderChange(cursortingOrder)
for i, v in pairs(expertRewardItemsGrid) do
for j = 1, #v do
v[j]:SetEffectLayer(cursortingOrder)
end
end
end
function Expert:OnShowData(index)
activeIndext = index
self.rewardBtn:SetActive(false)
self.sortBtn:SetActive(false)
this.content.offsetMax = Vector2.New(0,-500)
this.firstReward:SetActive(false)
local globalActive = ConfigManager.GetConfigData(ConfigName.GlobalActivity, ActivityGiftManager.GetOpenExpertIdByActivityType(NumExChange[activeIndext]))
if globalActive and globalActive.OpenRanking == 1 then
this.rewardBtn:SetActive(true)
this.sortBtn:SetActive(true)
--排行第一可获得的奖励
this.firstReward:SetActive(true)
this.content.offsetMax = Vector2.New(0,-720)
local rewardConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ActivityRankingReward, "ActivityId", ActivityGiftManager.GetOpenExpertIdByActivityType(NumExChange[activeIndext]), "MinRank", 1)
Util.ClearChild(this.grid.transform)
for i = 1, #rewardConfig.RankingReward do
local go = SubUIManager.Open(SubUIConfig.ItemView, this.grid.transform)
go:OnOpen(false, {rewardConfig.RankingReward[i][1], rewardConfig.RankingReward[i][2]}, 0.65)
end
end
expertRewardTabs = ActivityGiftManager.GetActivityTypeInfo(NumExChange[activeIndext])
this.banner.sprite = Util.LoadSprite(GetPictureFont(bannerList[activeIndext]))
this.desc.text = GetLanguageStrById(globalActive.ExpertDec)
for i = 1, math.max(#expertRewardTabs.mission, #expertRewardGrid) do
local go = expertRewardGrid[i]
if not go then
go = newObject(expertRewardGrid[1])
go.transform:SetParent(this.expertRewardGridGo.transform)
go.transform.localScale = Vector3.one
go.transform.localPosition = Vector3.zero
expertRewardGrid[i] = go
end
go.gameObject:SetActive(false)
end
--时间倒计时
if NumExChange[activeIndext] == ActivityTypeDef.AccumulativeRechargeExper then--今日累计充值特殊判断
CardActivityManager.TimeDown(this.time, CalculateSecondsNowTo_N_OClock(24))
else
CardActivityManager.TimeDown(this.time, expertRewardTabs.endTime - GetTimeStamp())
end
this:WarPowerRewardTabsChangState()
this:WarPowerRewardTabsSort(expertRewardTabs.mission)
for i = 1, #expertRewardTabs.mission do
this:ActivityRewardSingleShow(i, expertRewardTabs.mission[i])
end
end
function Expert:WarPowerRewardTabsChangState()
for i = 1, #expertRewardTabs.mission do
local conFigData = ConfigManager.GetConfigData(ConfigName.ActivityRewardConfig,expertRewardTabs.mission[i].missionId)
local value = 0
--限时累计活动特殊数值读取处理
if NumExChange[activeIndext] == ActivityTypeDef.AccumulativeRechargeExper then
value = conFigData.Values[1][2]
else
value = conFigData.Values[2][1]
end
if expertRewardTabs.mission[i].state == 0 then
if NumExChange[activeIndext] == ActivityTypeDef.UpStarExper
or NumExChange[activeIndext] == ActivityTypeDef.Talisman
or NumExChange[activeIndext] == ActivityTypeDef.SoulPrint
or NumExChange[activeIndext] == ActivityTypeDef.EquipExper
or NumExChange[activeIndext] == ActivityTypeDef.FindTreasureExper
then--进阶因为每个都不一样 特殊判断
if expertRewardTabs.mission[i].progress < value then
expertRewardTabs.mission[i].state = 10
else
expertRewardTabs.mission[i].state = 0
end
else
--AccumulativeRechargeExper 后端*1000了 特殊处理为充值积分则需要除100
local value_a = 0
if NumExChange[activeIndext] == ActivityTypeDef.AccumulativeRechargeExper then
value_a = math.floor(expertRewardTabs.value / 100)
else
value_a = expertRewardTabs.value
end
if value_a < value then
expertRewardTabs.mission[i].state = 10
else
expertRewardTabs.mission[i].state = 0
end
end
elseif expertRewardTabs.mission[i].state == 1 then
expertRewardTabs.mission[i].state = 20
end
end
end
function Expert:WarPowerRewardTabsSort(missions)
table.sort(missions,function(a,b)
if a.state < b.state then
return a.state < b.state
elseif a.state == b.state then
return a.missionId < b.missionId
end
end)
end
--活动奖励2
function Expert:ActivityRewardSingleShow(index, data)
local item = expertRewardGrid[index]
item:SetActive(true)
local sConFigData = ConfigManager.GetConfigData(ConfigName.ActivityRewardConfig, data.missionId)
for i = 1, math.max(#sConFigData.Reward, #expertRewardItemsGrid[index]) do
local go = expertRewardItemsGrid[index][i]
if not go then
go = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(go, "content").transform)
expertRewardItemsGrid[index][i] = go
end
go.gameObject:SetActive(false)
end
for i = 1, #sConFigData.Reward do
expertRewardItemsGrid[index][i].gameObject:SetActive(true)
expertRewardItemsGrid[index][i]:OnOpen(false, sConFigData.Reward[i], 0.55, false, false, false, sortingOrder)
end
Util.GetGameObject(item, "title/Text"):GetComponent("Text").text = GetLanguageStrById(sConFigData.ContentsShow)
local slider = Util.GetGameObject(item, "title/slider/Image"):GetComponent("Image")
local progress = Util.GetGameObject(item, "progress")
local btn = Util.GetGameObject(item, "btn")
local redpoint = Util.GetGameObject(item, "btn/redPoint")
local finished = Util.GetGameObject(item, "finished")
btn:SetActive(data.state ~= 20)
redpoint:SetActive(data.state == 0)
progress:SetActive(data.state == 10)
finished:SetActive(data.state == 20)
if data.state == 0 then
Util.GetGameObject(btn, "Text"):GetComponent("Text").text = GetLanguageStrById(10022)
btn:GetComponent("Image").color = UIColorNew.YELLOW
Util.AddOnceClick(btn, function()
NetManager.GetActivityRewardRequest(data.missionId, expertRewardTabs.activityId, function(drop)
local str = ""
if activeIndext == 10 then
str = "activity_train"
elseif activeIndext == 19 then
str = "activity_explore"
elseif activeIndext == 20 then
str = "activity_roulette"
elseif activeIndext == 27 then
str = "activity_heresy"
elseif activeIndext == 21 then
str = "activity_team"
elseif activeIndext == 13 then
str = "activity_sponsor"
elseif activeIndext == 7 then
str = "activity_dailypay"
end
ThinkingAnalyticsManager.Track(str, {
activity_train_id = data.missionId
})
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
this:OnShowData(activeIndext)
end)
end)
end)
elseif data.state == 10 then
Util.GetGameObject(btn, "Text"):GetComponent("Text").text = GetLanguageStrById(10023)
btn:GetComponent("Image").color = UIColorNew.ORANGE
Util.AddOnceClick(btn, function()
local id = sConFigData.Jump[1]
if id == 27001 then
if ShopManager.SetMainRechargeJump() then
id = 36006
else
id = 36008
end
end
JumpManager.GoJump(id)
end)
end
--设置进度
local value = 0
--限时累计活动特殊数值读取处理
if NumExChange[activeIndext] == ActivityTypeDef.AccumulativeRechargeExper then
value = sConFigData.Values[1][2]
else
value = sConFigData.Values[2][1]
end
if NumExChange[activeIndext] == ActivityTypeDef.UpStarExper
or NumExChange[activeIndext] == ActivityTypeDef.Talisman
or NumExChange[activeIndext] == ActivityTypeDef.SoulPrint
or NumExChange[activeIndext] == ActivityTypeDef.EquipExper
or NumExChange[activeIndext] == ActivityTypeDef.FindTreasureExper
then
progress:GetComponent("Text").text = data.progress .. "/" .. value
slider.fillAmount = data.progress/value
else
local _progress = 0
if NumExChange[activeIndext] == ActivityTypeDef.AccumulativeRechargeExper then
if GetChannelConfig().RechargeNum_Mode == 1 then
_progress = math.floor(expertRewardTabs.value / 1000)
progress:GetComponent("Text").text = _progress .. "/" .. (value / 10)
slider.fillAmount = _progress/ (value / 10)
else
_progress = math.floor(expertRewardTabs.value / 100)
progress:GetComponent("Text").text = _progress .. "/" .. value
slider.fillAmount = _progress/value
end
else
_progress = expertRewardTabs.value
progress:GetComponent("Text").text = _progress .. "/" .. value
slider.fillAmount = _progress/value
end
--progress:GetComponent("Text").text = _progress .. "/" .. value
--slider.fillAmount = _progress/value
end
end
--界面关闭时调用(用于子类重写)
function Expert:OnClose()
CardActivityManager.StopTimeDown()
end
--界面销毁时调用(用于子类重写)
function Expert:OnDestroy()
sortingOrder = 0
end
return Expert