local XunBaoMiZong = {} local CompleteMap = false function XunBaoMiZong:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = XunBaoMiZong }) return b end --初始化组件(用于子类重写) function XunBaoMiZong:InitComponent() self.content = Util.GetGameObject(self.gameObject,"Frame/Content") self.timeText = Util.GetGameObject(self.content,"Time"):GetComponent("Text") self.ImagePic = Util.GetGameObject(self.content,"ImagePic") self.ImagePic3 = Util.GetGameObject(self.content,"ImagePic3") self.mapList= {} for i = 1, self.ImagePic.transform.childCount do self.mapList[i] = self.ImagePic.transform:GetChild(i - 1).gameObject end self.tips = Util.GetGameObject(self.content,"Tips"):GetComponent("Text") self.btnHelp = Util.GetGameObject(self.gameObject,"btnHelp") self.helpPosition = self.btnHelp:GetComponent("RectTransform").localPosition self.btnReward = Util.GetGameObject(self.gameObject,"Btns/btnReward") self.btnShop = Util.GetGameObject(self.gameObject,"Btns/btnShop") self.btnGift = Util.GetGameObject(self.gameObject,"Btns/btnGift") self.btnGO = Util.GetGameObject(self.gameObject,"btnGO") self.effect = Util.GetGameObject(self.gameObject,"fx_xunbaomizong_ditujiesuo") self.effect:SetActive(false) self.zhenqibaogeBtn = Util.GetGameObject(self.gameObject,"Btns/zqbg") self.zhenqibaoge_red= Util.GetGameObject(self.gameObject,"Btns/zqbg/red") self.zqbgEffect = Util.GetGameObject(self.zhenqibaogeBtn,"Fx_Circle 1") end --绑定事件(用于子类重写) function XunBaoMiZong:BindEvent() Util.AddOnceClick(self.btnHelp,function () UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.XunBaoMiZong,self.helpPosition.x,self.helpPosition.y) end) Util.AddOnceClick(self.btnReward,function () UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.XunBaoMiZong,self.actData) end) Util.AddOnceClick(self.btnShop,function () JumpManager.GoJump(40025) end) Util.AddOnceClick(self.btnGift,function () if not self.actData then return end UIManager.OpenPanel(UIName.ContinueGiftPanel, self.actData.activityId) end) Util.AddOnceClick(self.zhenqibaogeBtn, function() JumpManager.GoJump(40050,nil,self.actData.activityId) PlayerPrefs.SetInt(PlayerManager.uid.."XunBaoMiZong_zqbg",1) CheckRedPointStatus(RedPointType.XunBaoMiZong) self.zhenqibaoge_red:SetActive(false) end) Util.AddOnceClick(self.btnGO,function () NetManager.XunBaoMiZongEnterMap(function (msg) if msg.isEnter then --判断进入地图时是否是完整地图,不是需要播放特效 self.btnGO:GetComponent("Button").interactable = false if CompleteMap then SoundManager.PlaySound("UI_Breach_01") --SwitchPanel.OpenPanel(UIName.XunBaoMiZongMapPanel,nil,self.actData) local Id = ConfigManager.GetConfigDataByKey(ConfigName.LotterySetting,"ActivityId",self.actData.activityId).Id NetManager.RecruitRequest(Id,function (msg) UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function() -- SwitchPanel.OpenPanel(nil,function () -- self:ClosePanel() -- end) self:Refresh() self.btnGO:GetComponent("Button").interactable = true end) end) else SoundManager.PlaySound("UI_Breach_01") self.effect:SetActive(true) self.ImagePic3:SetActive(true) -- Timer.New(function () -- SwitchPanel.OpenPanel(UIName.XunBaoMiZongMapPanel,nil,self.actData) -- end,0.3):Start() local Id = ConfigManager.GetConfigDataByKey(ConfigName.LotterySetting,"ActivityId",self.actData.activityId).Id NetManager.RecruitRequest(Id,function (msg) UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function() -- SwitchPanel.OpenPanel(nil,function () -- self:ClosePanel() -- end) self:Refresh() self.btnGO:GetComponent("Button").interactable = true end) end) end else PopupTipPanel.ShowTip("宝图碎片不足,无法开启寻宝!") end end) end) end --添加事件监听(用于子类重写) function XunBaoMiZong:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, self.UpdateGoldVal, self) end --移除事件监听(用于子类重写) function XunBaoMiZong:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, self.UpdateGoldVal, self) end function XunBaoMiZong:UpdateGoldVal() self:Refresh() end function XunBaoMiZong:OnSortingOrderChange(_sortingOrder) self.sortingOrder = _sortingOrder end --界面打开时调用(用于子类重写) function XunBaoMiZong:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end -- 打开,重新打开时回调 function XunBaoMiZong:OnShow(_sortingOrder) self.gameObject:SetActive(true) self.sortingOrder = _sortingOrder Util.SetParticleSortLayer(self.effect, self.sortingOrder + 1) Util.SetParticleSortLayer(self.zqbgEffect, self.sortingOrder + 1) self:Refresh() self.btnGO:GetComponent("Button").interactable = true end --刷新 function XunBaoMiZong:Refresh() local state=PlayerPrefs.GetInt(PlayerManager.uid.."XunBaoMiZong_zqbg") self.zhenqibaoge_red:SetActive(state==0) self.actData = CommonActPageManager.GetData(ActivityTypeDef.XunBaoMiZong) if self.actData.endTime - GetTimeStamp() <= 0 then self.parent:ClosePanel() end local isActive = CommonActPageManager.HasContinueGift(self.actData.activityId) self.btnGift:SetActive(isActive) CommonActPageManager.ShowIcon(self.zhenqibaogeBtn,self.actData.activityId) CompleteMap = self.actData.value == 1 CheckRedPointStatus(RedPointType.XunBaoMiZong) local configData = ConfigManager.GetConfigDataByKey(ConfigName.LotterySetting,"ActivityId",self.actData.activityId) local itemNum = configData.CostItem[1] self.clipNum = BagManager.GetTotalItemNum(itemNum[1]) self.tips.text = string.format("拥有宝图碎片:%s/%s",self.clipNum,itemNum[2]) self.ImagePic3:SetActive(self.actData.value == 1) self.btnGO:SetActive(self.clipNum >= itemNum[2]) self:SetMap() self:SetTime() end --设置拼图 function XunBaoMiZong:SetMap() for i = 1, #self.mapList do Util.SetGray(self.mapList[i],self.clipNum < i) end end --设置时间 function XunBaoMiZong:SetTime() if self.timer then self.timer:Stop() self.timer = nil end local time = self.actData.endTime - GetTimeStamp() self.timeText.text = string.format("剩余时间:%s",TimeToFelaxible(time)) self.timer = Timer.New(function () if time <= 0 then self:Refresh() end time = time - 1 self.timeText.text = string.format("剩余时间:%s",TimeToFelaxible(time)) end,1,-1) self.timer:Start() end --界面关闭时调用(用于子类重写) function XunBaoMiZong:OnClose() self.gameObject:SetActive(false) if self.timer then self.timer:Stop() self.timer = nil end end --界面销毁时调用(用于子类重写) function XunBaoMiZong:OnDestroy() if self.timer then self.timer:Stop() self.timer = nil end self.mapList= {} end return XunBaoMiZong