local ShengYiTianJiang = {} local sortingOrder = 0 local globalActive = ConfigManager.GetConfig(ConfigName.GlobalActivity) local properTypeConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) function ShengYiTianJiang:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = ShengYiTianJiang }) return b end --初始化组件(用于子类重写) function ShengYiTianJiang:InitComponent() self.spLoader = SpriteLoader.New() self.time = Util.GetGameObject(self.gameObject, "time/times"):GetComponent("Text") self.buyBtn = Util.GetGameObject(self.gameObject, "layout/buyBtn") self.reviewBtn = Util.GetGameObject(self.gameObject, "layout/reviewBtn") self.scrollItem = Util.GetGameObject(self.gameObject, "scroller/grid") self.proPertyText = Util.GetGameObject(self.gameObject, "layout/proPertyText"):GetComponent("Text") self.buytimes = Util.GetGameObject(self.gameObject, "layout/buytimes"):GetComponent("Text") self.liveRoot = Util.GetGameObject(self.gameObject, "bg/liveRoot") self.skinName = Util.GetGameObject(self.gameObject, "title/name"):GetComponent("Text") self.effect = Util.GetGameObject(self.gameObject, "bg/UI_Effect_ShenYiTianJiang") end --绑定事件(用于子类重写) function ShengYiTianJiang:BindEvent() Util.AddOnceClick(self.buyBtn,function() if self.rechargeData.buyTimes >= self.rechargeData.dynamicBuyTimes then return end --直购商品 PayManager.Pay(self.rechargeConfigId, function(id) self:RechargeSuccessFunc(id) end) end) Util.AddOnceClick(self.reviewBtn,function() local fdata, fseed = BattleManager.GetFakeBattleData(self.fakeId) local testFightData = { fightData = fdata, fightSeed = fseed, fightType = 0, maxRound = 20 } UIManager.OpenPanel(UIName.BattlePanel, testFightData, BATTLE_TYPE.Test) end) end function ShengYiTianJiang:RechargeSuccessFunc(id) FirstRechargeManager.RefreshAccumRechargeValue(id) self:OnShowData() end --添加事件监听(用于子类重写) function ShengYiTianJiang:AddListener() end --移除事件监听(用于子类重写) function ShengYiTianJiang:RemoveListener() end --界面打开时调用(用于子类重写) function ShengYiTianJiang:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end function ShengYiTianJiang:OnSortingOrderChange(sortingOrder) Util.SetParticleSortLayer(self.effect, sortingOrder + 1) end -- 打开,重新打开时回调 function ShengYiTianJiang:OnShow(_sortingOrder) self.gameObject:SetActive(true) sortingOrder = _sortingOrder Util.SetParticleSortLayer(self.effect, sortingOrder + 1) self.actId = self.actConfig.ActId self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType if self.actConfig.IfBack == 1 then if self.actConfig.ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType) if id and id > 0 then self.actId = id local config = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType,"ActId",id) if config then self.actConfig = config end end end end self:OnShowData() self:SetTime() end function ShengYiTianJiang:OnShowData() self.rechargeConfigId = globalActive[self.actId].CanBuyRechargeId[1] self.allData = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,self.rechargeConfigId) if not self.itemsGrid then self.itemsGrid = {} end for k,v in ipairs(self.itemsGrid) do v.gameObject:SetActive(false) end for k,v in ipairs(self.allData.RewardShow) do if not self.itemsGrid[k] then self.itemsGrid[k] = SubUIManager.Open(SubUIConfig.ItemView,self.scrollItem.transform) end self.itemsGrid[k].gameObject:SetActive(true) self.itemsGrid[k]:OnOpen(false, {v[1],v[2]}, 1,false,false,false,sortingOrder) end local strs = string.split(globalActive[self.actId].ExpertDec,'#') local skinId = tonumber(strs[1]) self.fakeId = tonumber(strs[2]) local skinConfig = ConfigManager.GetConfigDataByKey(ConfigName.HeroSkin,"Type",skinId) if self.LiveObj then poolManager:UnLoadLive(self.LiveObj.name,self.LiveObj) self.LiveObj = nil end self.proPertyText.text = "属性加成:" if not skinConfig then else LogGreen(skinConfig.Live.." name:"..GetResourcePath(skinConfig.Live)) self.LiveObj = poolManager:LoadLive(GetResourcePath(skinConfig.Live),self.liveRoot.transform, Vector3.one * skinConfig.Scale, Vector3.New(skinConfig.Position[1], skinConfig.Position[2], 0)) self.skinName.text = ConfigManager.GetConfigData(ConfigName.HeroConfig,skinConfig.HeroId).ReadingName local heroSkinSingleProVal = {} for _,v in ipairs(skinConfig.MonomerProperty) do if not heroSkinSingleProVal[v[1]] then heroSkinSingleProVal[v[1]] = 0 end heroSkinSingleProVal[v[1]] = heroSkinSingleProVal[v[1]] + v[2] end for k,v in pairs(heroSkinSingleProVal) do self.proPertyText.text = self.proPertyText.text..properTypeConfig[k].Info.."+"..GetPropertyFormatStr(properTypeConfig[k].Style,v) end end self.rechargeData = OperatingManager.GetGiftGoodsInfo(GoodsTypeDef.DirectPurchaseGift, self.rechargeConfigId) if self.rechargeData then local nums = self.rechargeData.dynamicBuyTimes - self.rechargeData.buyTimes self.buytimes.text = "剩余次数:"..(nums < 0 and 0 or nums) else LogGreen("找不到数据了:"..self.rechargeConfigId) end end function ShengYiTianJiang:SetTime() if self.timer then self.timer:Stop() self.timer = nil end local endTime = ActivityGiftManager.GetTaskEndTime(self.actType) local timeDown = endTime - GetTimeStamp() self.time.text = "剩余时间:"..TimeToDHMS(timeDown) self.timer = Timer.New(function() timeDown = timeDown - 1 if timeDown < 1 then self.timer:Stop() self.timer = nil self.time.text = "剩余时间:"..TimeToDHMS(0) end self.time.text = "剩余时间:"..TimeToDHMS(timeDown) end, 1, -1, true) self.timer:Start() end --界面关闭时调用(用于子类重写) function ShengYiTianJiang:OnClose() self.gameObject:SetActive(false) if self.timer then self.timer:Stop() self.timer = nil end end --界面销毁时调用(用于子类重写) function ShengYiTianJiang:OnDestroy() self.spLoader:Destroy() if self.timer then self.timer:Stop() self.timer = nil end for k,v in ipairs(self.itemsGrid) do SubUIManager.Close(v) end self.itemsGrid = {} if self.LiveObj then poolManager:UnLoadLive(self.LiveObj.name,self.LiveObj) self.LiveObj = nil end end return ShengYiTianJiang