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 = Language[12578] 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") --Language[10596] 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 UIManager.OpenPanel(UIName.WishHeroRewardPopup, self.config.ShopData[4][1]) 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) RecruitManager.curWishType = self.config.ShopData[1][1] 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 local num 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) --LogError("actconfigs len=================="..#actconfigs) 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, v.MythWeight / 10000 * 100) end end self.boxNameText.text = Language[12579] .. 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() num = PrivilegeManager.GetPrivilegeRemainValue(self.singleConfig.MoneyTimes) self.upper.text = string.format(GetLanguageStrById(self.config.TitleText), PrivilegeManager.GetPrivilegeUsedTimes(self.singleConfig.MaxTimes), GetLanguageStrById(privilegeConfig[self.singleConfig.MaxTimes].Condition[1][2]) .. " " .. Language[12580] .. 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) 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 = Language[12581] .. data .. Language[12587] 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 RecruitManager.curWishType = self.config.ShopData[1][1] 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(Language[12583], tempdata - RecruitManager.drawTimes[1])) end else PopupTipPanel.ShowTip(string.format(Language[12583], 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 = Language[12588] end --self:CheckNewWishHero() end) self.tenTip:SetActive(true) if RecruitManager.isTenRecruit == 0 then self.tenTipText.text = Language[12589] else self.tenTipText.text = string.format(Language[12590], 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 = Language[10990] 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 = Language[10577] 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 = Language[10578] 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 = Language[10588] else local d = RecruitManager.GetExpendDataByCostItem(lotterySetting[type].CostItem, n, num) --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 .. Language[10584]) -- local sureFunc=function() -- JumpManager.GoJump(20009) -- end -- local args={} -- args[1]="当前点将神符数量不足,是否前往秘宝商店购买" -- args[2]="前往" -- args[3]="取消" -- args[4]=sureFunc -- UIManager.OpenPanel(UIName.GMCommonConfirmPanel,args) 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(Language[10587]) return end if itemId == 16 and PrivilegeManager.GetPrivilegeRemainValue(self.singleConfig.MaxTimes) < recrutType then PopupTipPanel.ShowTip(Language[10598]) 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[10026] .. 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[10026] .. 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