miduo_client/Assets/ManagedResources/~Lua/Modules/Recruit/RecruitPanelNew.lua

466 lines
22 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.

RecruitPanelNew = {}
function RecruitPanelNew:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = RecruitPanelNew })
return b
end
local gameSetting = ConfigManager.GetConfig(ConfigName.GameSetting)
local AllActSetConfig = ConfigManager.GetConfig(ConfigName.GlobalSystemConfig)
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
local artResourcesConfig =ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local lotterySetting=ConfigManager.GetConfig(ConfigName.LotterySetting)
local privilegeConfig=ConfigManager.GetConfig(ConfigName.PrivilegeTypeConfig)
local specialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig)
local wishConfig=ConfigManager.GetConfig(ConfigName.WishConfig)
local getId=0
function RecruitPanelNew:InitComponent()
self.spLoader = SpriteLoader.New()
self.panel = Util.GetGameObject(self.gameObject,"Panel")
self.bg1 = Util.GetGameObject(self.gameObject,"Bg/Bg1"):GetComponent("Image")
self.bg2 = Util.GetGameObject(self.gameObject,"Bg/Bg2"):GetComponent("Image")
self.bg3 = Util.GetGameObject(self.gameObject,"Bg/Bg3"):GetComponent("Image")
self.title=Util.GetGameObject(self.panel,"title"):GetComponent("Image")
self.root=Util.GetGameObject(self.panel,"root")
self.rewardBox = Util.GetGameObject(self.panel, "btngroup/rewardBox")
self.boxIcon = Util.GetGameObject(self.rewardBox, "boxIcon")
self.slider = Util.GetGameObject(self.rewardBox,"Bg/Slider"):GetComponent("Image")
self.sliderText = Util.GetGameObject(self.rewardBox, "progress/Text"):GetComponent("Text")
self.boxNameText = Util.GetGameObject(self.rewardBox, "di/Text"):GetComponent("Text")
self.boxNameText.text="等级宝箱"
self.boxBtn=Util.GetGameObject(self.rewardBox,"Btn")
self.UI_effect_RecruitPanel_box_normal = Util.GetGameObject(self.rewardBox,"UI_effect_RecruitPanel_box_normal")
effectAdapte(Util.GetGameObject(self.UI_effect_RecruitPanel_box_normal, "quan01"))
self.UI_effect_RecruitPanel_box_open = Util.GetGameObject(self.rewardBox,"UI_effect_RecruitPanel_box_open")
effectAdapte(Util.GetGameObject(self.UI_effect_RecruitPanel_box_open, "quan01"))
effectAdapte(Util.GetGameObject(self.UI_effect_RecruitPanel_box_open, "quan02"))
self.UI_effect_RecruitPanel_particle = Util.GetGameObject(self.gameObject,"UI_effect_RecruitPanel_particle")
self.previewBtn = Util.GetGameObject(self.panel, "PreviewBtn")
self.helpBtn = Util.GetGameObject(self.panel, "helpBtn")
self.helpPosition = self.helpBtn:GetComponent("RectTransform").localPosition
self.wish = Util.GetGameObject(self.panel,"wishBtn")
self.wishNoOpen = Util.GetGameObject(self.wish,"noOpen")
self.wishBtn = Util.GetGameObject(self.wishNoOpen,"Img")
self.wishTextImg = Util.GetGameObject(self.wishNoOpen,"ImgText")
self.wishText = Util.GetGameObject(self.wishTextImg,"Text"):GetComponent("Text")
self.wishTipIma = Util.GetGameObject(self.wishNoOpen,"tip"):GetComponent("Text")
self.wishOpen = Util.GetGameObject(self.wish,"upHeroGrid")
self.wishPre = Util.GetGameObject(self.wish,"upHeroPre")
-- self.tip = Util.GetGameObject(self.panel, "tip/text"):GetComponent("Text")
self.tenTip = Util.GetGameObject(self.panel, "TenTip")
self.tenTipText = Util.GetGameObject(self.tenTip, "scroll/Text"):GetComponent("Text")
self.upper = Util.GetGameObject(self.panel,"Upper/Num"):GetComponent("Text")--"今日召唤上限:"
if not self.upHeroPreList then
self.upHeroPreList = {}
end
for i = 1,3 do
self.upHeroPreList[i] = {}
self.upHeroPreList[i].go = Util.GetGameObject(self.wishOpen,"upHeroPre"..i)
self.upHeroPreList[i].pos = Util.GetGameObject(self.upHeroPreList[i].go,"di")
self.upHeroPreList[i].itempos = Util.GetGameObject(self.upHeroPreList[i].go,"itempos")
self.upHeroPreList[i].item = SubUIManager.Open(SubUIConfig.ItemView,self.upHeroPreList[i].itempos.transform)
self.upHeroPreList[i].item.gameObject:SetActive(false)
self.upHeroPreList[i].item.transform:SetSiblingIndex(0)
self.upHeroPreList[i].choosed = Util.GetGameObject(self.upHeroPreList[i].go,"state")
--心愿神将现在只显示一个
if i>1 then
self.upHeroPreList[i].go:SetActive(false)
else
self.upHeroPreList[i].go:SetActive(true)
end
end
self.btns = {}
for i = 1,2 do
self.btns[i] = {}
self.btns[i].btn = Util.GetGameObject(self.gameObject,"btngroup/btn"..i)
self.btns[i].layoutDi = Util.GetGameObject(self.btns[i].btn.gameObject,"layout/di"):GetComponent("Image")
self.btns[i].red = Util.GetGameObject(self.btns[i].btn.gameObject,"redPoint")
self.btns[i].info = Util.GetGameObject(self.btns[i].btn.gameObject,"layout/Text"):GetComponent("Text")
self.btns[i].icon = Util.GetGameObject(self.btns[i].btn.gameObject,"layout/icon"):GetComponent("Image")
self.btns[i].num = Util.GetGameObject(self.btns[i].btn.gameObject,"layout/num"):GetComponent("Text")
self.btns[i].time = Util.GetGameObject(self.btns[i].btn.gameObject,"time"):GetComponent("Text")
end
end
function RecruitPanelNew:BindEvent()
--帮助按钮
Util.AddClick(self.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup,self.config.HelpId,self.helpPosition.x,self.helpPosition.y)
end)
--宝箱按钮
Util.AddClick(self.boxBtn,function()
--UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.RecruitBox)
--self.UI_effect_RecruitPanel_box_normal:SetActive(true)
if RecruitManager.isCanOpenBox then
LogError("getid=========="..getId)
ActivityGiftManager.GetActivityRewardRequest(11701,getId)
else
UIManager.OpenPanel(UIName.WishHeroRewardPopup,self.config.ShopData[4][1])
end
end)
--奖池预览按钮
Util.AddClick(self.previewBtn, function()
UIManager.OpenPanel(UIName.HeroPreviewNewPanel,true,true,self.config.ShopData[1][1])
end)
-- --心愿抽卡界面
-- Util.AddClick(self.wish, function()
-- local data = tonumber(specialConfig[119].Value)
-- if RecruitManager.drawTimes[1] then
-- if RecruitManager.drawTimes[1] >= data then
-- UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.WishDraw)
-- else
-- PopupTipPanel.ShowTip(string.format("%s次神将召唤后开启心愿抽卡",data - RecruitManager.drawTimes[1]))
-- end
-- else
-- PopupTipPanel.ShowTip(string.format("%s次神将召唤后开启心愿抽卡",data))
-- end
-- end)
end
function RecruitPanelNew:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Recruit.OnRecruitRefreshData, self.UpdataPanel,self)
end
function RecruitPanelNew:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Recruit.OnRecruitRefreshData, self.UpdataPanel,self)
end
function RecruitPanelNew:OnSortingOrderChange(sortingOrder)
self.sortingOrder = sortingOrder
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_box_normal, self.sortingOrder + 1)
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_box_open, self.sortingOrder + 1)
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1)
end
--界面打开时调用(用于子类重写)
function RecruitPanelNew:OnOpen(_Config,_index, parent)
self.config = _Config
self.parent = parent
self.gameObject.name = "RecruitPanelNew"..self.config.Id
end
function RecruitPanelNew:OnShow(sortingOrder)
self.sortingOrder = sortingOrder
self:OnSortingOrderChange(sortingOrder)
self.gameObject:SetActive(true)
self.singleConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.LotterySetting,"LotteryType",self.config.ShopData[1][1],"PerCount",1)
self.tenConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.LotterySetting,"LotteryType",self.config.ShopData[1][1],"PerCount",10)
self.XianZhaoConfig = ConfigManager.GetConfigDataByKey(ConfigName.LotterySetting,"LotteryType",TableRecruitType.xianyuan)
self:UpdataPanel()
SoundManager.PlayMusic(SoundConfig.BGM_Recruit)
if self.liveNode then
poolManager:UnLoadLive(self.liveNode.name, self.liveNode)
end
if self.config.ShopData[2][1] == 1 then
local heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig,self.config.ShopData[2][2])
local name = GetResourcePath(heroConfig.Live)
self.liveNode = poolManager:LoadLive(name, self.root.transform, Vector3.one *heroConfig.Scale, Vector3.New(heroConfig.Position[1], heroConfig.Position[2], 0))
self.liveNode.name = name
SetHEeroLiveToward(self.liveNode,heroConfig.Toward)
local SkeletonGraphic = self.liveNode:GetComponent("SkeletonGraphic")
SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true)
end
end
local progresss=0
local wishLv=0
function RecruitPanelNew:UpdataPanel()
self.bg1.sprite = self.spLoader:LoadSprite(self.config.Icon[3])
self.bg2.sprite = self.spLoader:LoadSprite(self.config.Icon[4])
self.bg3.sprite = self.spLoader:LoadSprite(self.config.Icon[8])
self.title.sprite = self.spLoader:LoadSprite(self.config.Icon[5])
--宝箱活动数据
local actconfigs=ActivityGiftManager.GetActivityInfoByType(11701)
for i = 1,#actconfigs.mission do
progresss=actconfigs.mission[i].progress
end
LogError("progress==============="..progresss)
for i, v in ConfigPairs(wishConfig) do
if RecruitManager.drawTimes[1] and RecruitManager.drawTimes[1]>= v.DrawCardNumber and v.LotteryType==1 then
wishLv=v.Level
RecruitManager.SetWishPro(v.Weight/10000*100)
end
end
self.boxNameText.text="宝箱等级:"..wishLv
self.title:SetNativeSize()
for i = 1,2 do
self.btns[i].layoutDi.sprite = self.spLoader:LoadSprite(self.config.Icon[6])
end
self.parent.mask2.sprite = self.spLoader:LoadSprite(self.config.Icon[7])
self.parent.mask1.sprite = self.spLoader:LoadSprite(self.config.Icon[7])
-- self.tip.text = self.config.TitleText
self:UpdataWishPanel()
self:UpdataBoxReward()
local num=PrivilegeManager.GetPrivilegeRemainValue(self.singleConfig.MoneyTimes)
self.upper.text=string.format(self.config.TitleText,PrivilegeManager.GetPrivilegeUsedTimes(self.singleConfig.MaxTimes),privilegeConfig[self.singleConfig.MaxTimes].Condition[1][2].." 剩余妖晶召唤次数:"..num) --特权上限
self:UpdatePanelData()
self:TimeCountDown()
end
function RecruitPanelNew:UpdataWishPanel()
if self.config.ShopData[1][1] ~= TableRecruitType.Shenjiang then
self.wish.gameObject:SetActive(false)
self.tenTip.gameObject:SetActive(false)
return
end
--如果没有达到150抽按钮置灰
local data = tonumber(specialConfig[119].Value)
RecruitManager.curWishType=self.config.ShopData[1][1]
NetManager.ChoiceWishHeroRequest(self.config.ShopData[1][1],function ()
if RecruitManager.drawTimes[1] then
LogError(" RecruitManager.drawTimes[1]===".. RecruitManager.drawTimes[1])
if wishLv < data then
self.wishNoOpen.gameObject:SetActive(true)
self.wishOpen.gameObject:SetActive(false)
Util.SetGray(self.wishBtn,true)
self.wishText.text = string.format("%s/%s",wishLv,data)
self.wishTipIma.text = "宝箱等级"..data.."级后开启心愿功能,\n将有更高概率获得心愿神将~"
else
self.wishNoOpen.gameObject:SetActive(false)
self.wishOpen.gameObject:SetActive(true)
for i = 1,1 do
local data = RecruitManager.WishCardData[i]
local id = data.heroTid
if id > 0 then
self.upHeroPreList[i].item.gameObject:SetActive(true)
self.upHeroPreList[i].item:OnOpen(false, {id,0},1, false, false, false, self.sortingOrder)
self.upHeroPreList[i].item.frame.sprite = self.spLoader:LoadSprite(GetBgByHeroNatural(ConfigManager.GetConfigData(ConfigName.HeroConfig,id).Natural))
self.upHeroPreList[i].choosed:SetActive(data.status == 1)
else
self.upHeroPreList[i].item.gameObject:SetActive(false)
self.upHeroPreList[i].choosed.gameObject:SetActive(false)
end
Util.AddOnceClick(self.upHeroPreList[i].pos,function()
local tempdata = tonumber(specialConfig[119].Value)
if RecruitManager.drawTimes[1] then
if RecruitManager.drawTimes[1] >= tempdata then
if id > 0 then
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.WishDraw,ConfigManager.GetConfigData(ConfigName.HeroConfig,id).PropertyName)
else
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.WishDraw)
end
else
PopupTipPanel.ShowTip(string.format("%s次神将召唤后开启心愿抽卡",tempdata - RecruitManager.drawTimes[1]))
end
else
PopupTipPanel.ShowTip(string.format("%s次神将召唤后开启心愿抽卡",tempdata))
end
end)
end
end
else
self.wishNoOpen.gameObject:SetActive(true)
self.wishOpen.gameObject:SetActive(false)
Util.SetGray(self.wishBtn,true)
self.wishText.text = string.format("%s/%s",0,data)
self.wishTipIma.text = "开启心愿功能,将有更高概率获得心愿神将~"
end
self:CheckNewWishHero()
end)
self.tenTip:SetActive(true)
if RecruitManager.isTenRecruit == 0 then
self.tenTipText.text = "<color=#FFB83B><size=30>每次十连</size><color=#FEDA90><size=30>必得</size></color></color><color=#FFB83B><size=30>五星</size></color><color=#FEDA90><size=30>神将</size></color>"
else
self.tenTipText.text = string.format("剩余<color=#31ff00>%s次</color>必得五星神将",RecruitManager.GetRecruit3MustCount())
end
end
function RecruitPanelNew:UpdataBoxReward()
--local num = BagManager.GetItemCountById(self.XianZhaoConfig.CostItem[1][1])
LogError("更新宝箱显示s")
local actconfigs=ActivityGiftManager.GetActivityInfoByType(11701)
RecruitManager.isCanOpenBox=false
for i = 1,#actconfigs.mission do
local config=ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.WishConfig,"Level",actconfigs.mission[i].missionId,"LotteryType",1)
-- if config then
-- LogError("actconfigs.mission[i].state=="..actconfigs.mission[i].state.." RecruitManager.drawTimes[1]=="..RecruitManager.drawTimes[1].." config.DrawCardNumber== "..config.DrawCardNumber)
-- end
if config and actconfigs.mission[i].state==0 and RecruitManager.drawTimes[1] and RecruitManager.drawTimes[1]>=config.DrawCardNumber then
RecruitManager.isCanOpenBox=true
getId=actconfigs.mission[i].missionId
break
end
end
self.boxIcon:GetComponent("Animator").enabled = RecruitManager.isCanOpenBox
local wishData=ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.WishConfig,"Level",wishLv+1,"LotteryType",1)
if wishData then
--self.XianZhaoConfig.CostItem[1][2]
-- = RecruitManager.drawTimes[1]>= wishData.DrawCardNumber
self.sliderText.text = string.format("%s/%s", RecruitManager.drawTimes[1] or 0,wishData.DrawCardNumber )
if RecruitManager.drawTimes[1] then
self.slider.fillAmount = RecruitManager.drawTimes[1]/wishData.DrawCardNumber
else
self.slider.fillAmount = 0 /wishData.DrawCardNumber
end
else
--self.boxIcon:GetComponent("Animator").enabled = false
self.slider.fillAmount = 1
self.sliderText.text ="宝箱已达最大等级"
end
--self.sliderText.text = string.format("%s/%s", num, self.XianZhaoConfig.CostItem[1][2])
-- self.UI_effect_RecruitPanel_box_normal:SetActive(not RecruitManager.isCanOpenBox)
-- self.UI_effect_RecruitPanel_box_open:SetActive(RecruitManager.isCanOpenBox)
end
function RecruitPanelNew:OnClose()
self.gameObject:SetActive(false)
if self.timer then
self.timer:Stop()
self.timer = nil
end
end
function RecruitPanelNew:OnDestroy()
self.spLoader:Destroy()
if self.timer then
self.timer:Stop()
self.timer = nil
end
for i = 1,3 do
if self.upHeroPreList[i] then
SubUIManager.Close(self.upHeroPreList[i].item)
end
end
self.upHeroPreList = {}
if self.liveNode then
poolManager:UnLoadLive(self.liveNode.name, self.liveNode)
self.liveNode = nil
end
end
--刷新剩余次数
function RecruitPanelNew:UpdatePanelData()
local freeTime = 0
if self.singleConfig.FreeTimes and self.singleConfig.FreeTimes > 0 then
freeTime = PrivilegeManager.GetPrivilegeRemainValue(self.singleConfig.FreeTimes)
RecruitManager.freeUseTimeList[self.singleConfig.FreeTimes] = freeTime
end
--按钮赋值
for n, m in ipairs(self.btns) do
--存在免费次数 并且 免费>=1 并且是1按钮
local isFree = freeTime >= 1 and n == 1
m.icon.gameObject:SetActive(not isFree)
m.num.gameObject:SetActive(not isFree)
local itemId=0
local itemNum=0
local type = 0
if n == 1 then
type = self.singleConfig.Id
m.info.text = "1次"
m.time.gameObject:SetActive(true)
m.red.gameObject:SetActive(RecruitManager.GetRecruitBtnRedpoint1(PreConfigure[RevertPreConfigure[self.config.ShopData[3][1]]]))
else
m.time.gameObject:SetActive(false)
type = self.tenConfig.Id
m.info.text = "10次"
m.red.gameObject:SetActive(RecruitManager.GetRecruitBtnRedpoint1(PreConfigure[RevertPreConfigure[self.config.ShopData[3][2]]]))
end
if self.config.ShopData[1][1] == TableRecruitType.Youqing then
m.time.gameObject:SetActive(false)
end
local d = {}
if (isFree) then
m.time.gameObject:SetActive(false)
m.info.text="免费召唤"
else
local d = RecruitManager.GetExpendData(type)
itemId=d[1]
itemNum=d[2]
m.icon.sprite=self.spLoader:LoadSprite(artResourcesConfig[itemConfig[itemId].ResourceID].Name)
m.num.text= PrintWanNum2(itemNum)
end
Util.AddOnceClick(m.btn,function()
if not isFree then
if BagManager.GetItemCountById(itemId)<itemNum then
PopupTipPanel.ShowTip(itemConfig[itemId].Name.."数量不足!")
return
end
end
local state = PlayerPrefs.GetInt(PlayerManager.uid.."GeneralPopup_RecruitConfirm"..self.config.ShopData[3][2])
LogGreen("self.config.ShopData[3][2]:"..self.config.ShopData[3][2].." state:"..state)
local recrutId = n == 1 and self.singleConfig.Id or self.tenConfig.Id
local recrutNum = n == 1 and 1 or 10
if state==0 and itemId == 16 and not isFree then
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.RecruitConfirm,recrutId,function()
self:Recruit(recrutNum,recrutId,n,itemId)
end)
else
self:Recruit(recrutNum,recrutId,n,itemId)
end
end)
end
end
function RecruitPanelNew:Recruit(recrutType,recrutId,bType,itemId)
if PrivilegeManager.GetPrivilegeUsedTimes(self.singleConfig.MaxTimes)+recrutType>privilegeConfig[self.singleConfig.MaxTimes].Condition[1][2] then
PopupTipPanel.ShowTip("无法超出每日召唤次数上限!")
return
end
if itemId==16 and PrivilegeManager.GetPrivilegeRemainValue(self.singleConfig.MaxTimes)<recrutType then
PopupTipPanel.ShowTip("无法超出每日妖晶召唤次数上限!")
return
end
RecruitManager.RecruitRequest(recrutId, function(msg)
PrivilegeManager.RefreshPrivilegeUsedTimes(self.singleConfig.MaxTimes,recrutType)--记录抽卡次数
if itemId==16 then
PrivilegeManager.RefreshPrivilegeUsedTimes(self.singleConfig.MoneyTimes,recrutType)
end
if bType == 1 then
UIManager.OpenPanel(UIName.SingleRecruitPanel, msg.drop.Hero[1],recrutId,bType,{self.config.ShopData[3][1],self.config.ShopData[3][2]})
else
RecruitManager.isTenRecruit = 1
UIManager.OpenPanel(UIName.SingleRecruitPanel, msg.drop.Hero,recrutId,bType,{self.config.ShopData[3][1],self.config.ShopData[3][2]})
end
CheckRedPointStatus(self.config.RpType)
end,self.singleConfig.FreeTimes)
end
function RecruitPanelNew:TimeCountDown()
if self.timer then
self.timer:Stop()
self.timer = nil
end
local timeDown=CalculateSecondsNowTo_N_OClock(0)
self.btns[1].time.text = Language[10023]..TimeToHMS(timeDown)
self.timer = Timer.New(function()
if timeDown < 1 then
self.timer:Stop()
self.timer = nil
return
end
timeDown = timeDown - 1
self.btns[1].time.text = Language[10023]..TimeToHMS(timeDown)
end, 1, -1, true)
self.timer:Start()
end
--检查是否有新开放的心愿英雄
function RecruitPanelNew:CheckNewWishHero()
if #RecruitManager.newWishList > 0 and #RecruitManager.newWishList<10 then
if not GuideManager.IsFunctionGuideExist() and not GuideManager.IsInMainGuide() then
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.NewAddWishHero)
end
end
end
return RecruitPanelNew