local XinJiangLaiXi = {} local globalActive = ConfigManager.GetConfig(ConfigName.GlobalActivity) function XinJiangLaiXi:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = XinJiangLaiXi }) return b end function XinJiangLaiXi:InitComponent() self.spLoader = SpriteLoader.New() self.time = Util.GetGameObject(self.gameObject, "time/times"):GetComponent("Text") self.money = Util.GetGameObject(self.gameObject, "money/times"):GetComponent("Text") self.fightBtn = Util.GetGameObject(self.gameObject, "layout/fightBtn") self.storeBtn = Util.GetGameObject(self.gameObject, "btnGroups/storeBtn") self.zhenqibaogeBtn = Util.GetGameObject(self.gameObject,"btnGroups/zqbg") self.zhenqibaogeBtn:SetActive(false) self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn") self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition self.scrollItem = Util.GetGameObject(self.gameObject, "layout/scroller/grid") self.liveRoot = Util.GetGameObject(self.gameObject, "bg/liveRoot") self.tip1 = Util.GetGameObject(self.gameObject, "layout/Text1"):GetComponent("Text") self.tip2 = Util.GetGameObject(self.gameObject, "layout/Text2"):GetComponent("Text") self.addBtn = Util.GetGameObject(self.gameObject, "layout/addBtn") self.allData={} self.itemsGrid = {}--item重复利用 end --绑定事件(用于子类重写) function XinJiangLaiXi:BindEvent() Util.AddOnceClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.XinJiangLaiXi,self.helpPosition.x,self.helpPosition.y) end) Util.AddOnceClick(self.addBtn, function() --购买特权 if self.allData.buyTime > 0 then local costId, finalNum, oriCostNum = ShopManager.calculateBuyCost(SHOP_TYPE.FUNCTION_SHOP,10036, 1) local itemName = ConfigManager.GetConfigData(ConfigName.ItemConfig,costId).Name MsgPanel.ShowTwo(string.format( Language[10516],finalNum,GetLanguageStrById(itemName)), nil, function() --买东西 ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP,10036,1,function() PopupTipPanel.ShowTip(Language[10517]) PrivilegeManager.RefreshPrivilegeUsedTimes(2013, 1)--更新特权 self:Refresh() end) end) else PopupTipPanel.ShowTip(Language[10518]) end end) Util.AddOnceClick(self.fightBtn,function() --开始战斗 if self.allData.fightTime > 0 then -- TODO: 没有战斗结果校验 NetManager.NewGeneralAttackRequest(self.allData.activityId,2012,function(msg) PrivilegeManager.RefreshPrivilegeUsedTimes(2012, 1)--更新特权 local fightData = BattleManager.GetBattleServerData(msg,0) UIManager.OpenPanel(UIName.BattlePanel, fightData, BATTLE_TYPE.XINJIANG,function () UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1) end) end) else --购买特权 if self.allData.buyTime > 0 then local costId, finalNum, oriCostNum = ShopManager.calculateBuyCost(SHOP_TYPE.FUNCTION_SHOP,10036, 1) local itemName = ConfigManager.GetConfigData(ConfigName.ItemConfig,costId).Name MsgPanel.ShowTwo(string.format( Language[10516],finalNum,itemName), nil, function() --买东西 ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP,10036,1,function() PopupTipPanel.ShowTip(Language[10517]) PrivilegeManager.RefreshPrivilegeUsedTimes(2013, 1)--更新特权 self:Refresh() end) end) else PopupTipPanel.ShowTip(Language[10519]) end end end) Util.AddOnceClick(self.storeBtn,function() JumpManager.GoJump(40019) end) end --添加事件监听(用于子类重写) function XinJiangLaiXi:AddListener() Game.GlobalEvent:AddEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.Refresh,self) end --移除事件监听(用于子类重写) function XinJiangLaiXi:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.Refresh,self) end --界面打开时调用(用于子类重写) function XinJiangLaiXi:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end function XinJiangLaiXi:OnSortingOrderChange() end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function XinJiangLaiXi:OnShow(_sortingOrder) self.sortingOrder = _sortingOrder self.gameObject:SetActive(true) 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 actConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"ActId",globalActive[id].ShowArt,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType) if not actConfig then actConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"ActId",id,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType) end if actConfig then self.actConfig = actConfig end end end end self:Refresh() end function XinJiangLaiXi:Refresh() CheckRedPointStatus(RedPointType.XinJiangLaiXi) self.allData = DynamicActivityManager.XinJiangBuildData() self:OnShowData() self:SetTime() end function XinJiangLaiXi:OnShowData() -- self.shop:SetActive(false) if not self.itemsGrid then self.itemsGrid = {} end for k,v in ipairs(self.itemsGrid) do v.gameObject:SetActive(false) end for i = 1,#self.allData.reward do if not self.itemsGrid[i] then self.itemsGrid[i] = SubUIManager.Open(SubUIConfig.ItemView,self.scrollItem.transform) end self.itemsGrid[i].gameObject:SetActive(true) self.itemsGrid[i]:OnOpen(false, self.allData.reward[i], 1,false,false,false,self.sortingOrder) end if self.LiveObj then poolManager:UnLoadLive(self.LiveObj.name,self.LiveObj) self.LiveObj = nil end local configData = ConfigManager.GetConfigData(ConfigName.NewHeroConfig,self.allData.activityId) local HeroId = configData.HeroId local imgName = GetResourcePath(ConfigManager.GetConfigData(ConfigName.HeroConfig,HeroId).Live) self.LiveObj = poolManager:LoadLive(imgName,self.liveRoot.transform, Vector3.one*configData.Size[1], Vector2.New(configData.Size[2],configData.Size[3])) self.tip1.text = Language[10520]..""..self.allData.fightTime.."" self.tip2.text = Language[10521]..""..self.allData.buyTime.."" self.money.text = self.allData.money end function XinJiangLaiXi:SetTime() if self.timer then self.timer:Stop() self.timer = nil end local timeDown = self.allData.endTime - GetTimeStamp() self.time.text = Language[10470]..TimeToFelaxible(timeDown) self.timer = Timer.New(function() timeDown = timeDown - 1 if timeDown < 1 then self.timer:Stop() self.timer = nil self.parent:ClosePanel() return end self.time.text = Language[10470]..TimeToFelaxible(timeDown) end, 1, -1, true) self.timer:Start() end function XinJiangLaiXi:OnClose() if self.timer then self.timer:Stop() self.timer = nil end if self.shopView then self.shopView = SubUIManager.Close(self.shopView) self.shopView = nil end self.gameObject:SetActive(false) end --界面销毁时调用(用于子类重写) function XinJiangLaiXi:OnDestroy() self.spLoader:Destroy() if self.timer then self.timer:Stop() self.timer = nil end if self.LiveObj then poolManager:UnLoadLive(self.LiveObj.name,self.LiveObj) self.LiveObj = nil end self.itemsGrid = {} end return XinJiangLaiXi