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

323 lines
13 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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