local Gem = quick_class("Gem", BasePanel) local itemData = ConfigManager.GetConfig(ConfigName.ItemConfig) local gemConfig = ConfigManager.GetConfig(ConfigName.GemConfig) local PropertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local artResourcesConfig= ConfigManager.GetConfig(ConfigName.ArtResourcesConfig) local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig) local gemLottery=ConfigManager.GetConfig(ConfigName.GemLotteryConfig) local typeName = { [1] = "攻击",[2] = "生命",[3] = "护甲",[4] = "魔抗",[5] = "攻击",[6] = "生命",[7] = "护甲",[8] = "魔抗", } local imgName = { [1] = "m_mingge_gongji",[2] = "m_mingge_shengming",[3] = "m_mingge_zengshang",[4] = "m_mingge_shanghai", [5] = "m_mingge_renjie",[6] = "m_mingge_pochan",[7] = "m_mingge_yaoling",[8] = "m_mingge_daoxuan", } --抽卡类型 local drawType={ [1] = { 162,163}, [2] = { 164,165} } local TabBox = require("Modules/Common/TabBox") local _TabData={ --[1] = { default = "UI_hz_gonghui_31", select = "UI_hz_gonghui_31", name="修行", type=0,funcId=136 }, [1] = { default = "UI_hz_gonghui_32", select = "UI_hz_gonghui_32", name="命格", type=1, funcId=144 }, [2] = { default = "UI_hz_gonghui_33", select = "UI_hz_gonghui_33", name="高级命格", type=2,funcId=145}, } local TabAdapter=nil local SwitchView=nil local curType=1 local activityId=0 local progresss=0 local wishLv=0 local oldWarPower=0 local redList={} local drawLimit=nil function Gem:InitComponent() self.spLoader = SpriteLoader.New() if not self.playerInfoView then self.playerInfoView = SubUIManager.Open(SubUIConfig.PlayerInfoView, self.transform) end --self.BtView = SubUIManager.Open(SubUIConfig.BtView, self.transform) self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform) --MidPart self.mid = Util.GetGameObject(self.gameObject, "Mid") self.img = Util.GetGameObject(self.mid, "Man"):GetComponent("Image") self.ManCanvas = Util.GetGameObject(self.mid, "Man"):GetComponent("Canvas") self.fx_ui_xiuxingshengxin_cangzhu = Util.GetGameObject(self.gameObject, "Bg/fx_ui_xiuxingshengxin_cangzhu") --Gems self.gems = Util.GetGameObject(self.gameObject, "Gems") self.stones = Util.GetGameObject(self.gameObject, "Stones") self.gemName = Util.GetGameObject(self.gameObject, "Stones/Name/Text"):GetComponent("Text") self.itemList = {} self.propertyList = {} self.lightList = {} 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].layoutDi.sprite=self.spLoader:LoadSprite("z_zhaohuan_xiaohaodi_1") 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 --页签 self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn") self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition self.additionBtn = Util.GetGameObject(self.gameObject, "additionBtn") self.curType = 1 local specialConfig = ConfigManager.GetConfigData(ConfigName.SpecialConfig,169).Value LogError("value=================================="..specialConfig) drawLimit = string.split(specialConfig,"#") --页签 self.tab = Util.GetGameObject(self.gameObject, "TabBox") TabAdapter=function(tab, index, status) local tabLab = Util.GetGameObject(tab, "Text") Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = self.spLoader:LoadSprite(_TabData[index][status]) local selectObj=Util.GetGameObject(tab,"select") tabLab:GetComponent("Text").text = _TabData[index].name local red=Util.GetGameObject(tab,"Redpot") if index==2 then red:SetActive(GemNewManager.CheckGemRed()) elseif index==3 then red:SetActive(GemNewManager.CheckSuperGemRed()) end selectObj:SetActive(status=="select") redList[index]=red end --切换视图 SwitchView=function(_index) local isOpen=CheckFunctionOpen(_TabData[_index].funcId) local tip=GetFunctionOpenTip(_TabData[_index].funcId) if not isOpen then PopupTipPanel.ShowTip(tip) return end self:UpdatePanelData(_TabData[_index].type) end self.TabCtrl = TabBox.New() self.TabCtrl:SetTabAdapter(TabAdapter) self.TabCtrl:SetChangeTabCallBack(SwitchView) --命石位置 self.gemPosList={} for i=1,8 do self.gemPosList[i]={} self.gemPosList[i].go=Util.GetGameObject(self.gameObject, "Gems/".."item (" ..i..")" ) self.gemPosList[i].red=Util.GetGameObject(self.gemPosList[i].go, "RedPoint") self.gemPosList[i].red:SetActive(false) Util.GetGameObject(self.gemPosList[i].go, "frame/Image"):SetActive(false) self.gemPosList[i].frame=Util.GetGameObject(self.gemPosList[i].go, "frame"):GetComponent("Image") self.gemPosList[i].icon=Util.GetGameObject(self.gemPosList[i].go, "frame/icon"):GetComponent("Image") self.gemPosList[i].btn=Util.GetGameObject(self.gemPosList[i].go, "frame/icon") end --宝箱 self.btn_box=Util.GetGameObject(self.gameObject, "btngroup/rewardBox/Btn") self.boxLv=Util.GetGameObject(self.gameObject, "btngroup/rewardBox/di/Text"):GetComponent("Text") self.boxIcon=Util.GetGameObject(self.gameObject, "btngroup/rewardBox/boxIcon"):GetComponent("Image") self.boxProgress=Util.GetGameObject(self.gameObject, "btngroup/rewardBox/progress/Text"):GetComponent("Text") self.proPreList={} for i=1,8 do self.propertyList[i]=Util.GetGameObject(self.gameObject, "pro/name ("..i..")"):GetComponent("Text") end self.btn_close=Util.GetGameObject(self.gameObject,"btn_close") self.infoTxt=Util.GetGameObject(self.gameObject,"lotteryInfo"):GetComponent("Text") end function Gem:BindEvent() --帮助按钮 Util.AddClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.Gem, self.helpPosition.x,self.helpPosition.y) end) Util.AddClick(self.btn_box, function() UIManager.OpenPanel(UIName.GemRewardInfoPanel,curType,wishLv,progresss,activityId) end) Util.AddClick(self.btn_close, function() UIManager.OpenPanel(UIName.PracticePanel) self:ClosePanel() end) Util.AddClick(self.additionBtn, function() local tempData = GemManager.GetSortAttri() if #tempData > 0 then UIManager.OpenPanel(UIName.GeneralInfoPopup, GENERALINFO_TYPE.Gem) else PopupTipPanel.ShowTip("尚无命格属性加成!") end end) BindRedPointObject(RedPointType.Practice,self.practice_tab) BindRedPointObject(RedPointType.Gem,self.gem_tab) end function Gem:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Gem.RefreshPanel, self.Refresh,self) end function Gem:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Gem.RefreshPanel, self.Refresh,self) end --刷新剩余次数 function Gem:UpdatePanelData(_type) curType=_type --宝箱显示 if _type==1 then activityId=12301 self.boxIcon.sprite=self.spLoader:LoadSprite("UI_hz_zhonghe03_45") else activityId=12401 self.boxIcon.sprite=self.spLoader:LoadSprite("UI_hz_zhonghe03_45") end local isCan=false local actconfigs=ActivityGiftManager.GetActivityInfoByType(activityId) if actconfigs then for i = 1,#actconfigs.mission do progresss=actconfigs.mission[i].progress --LogError("curtype==============="..curType) local config=ConfigManager.GetConfigData(ConfigName.GemLotteryConfig,actconfigs.mission[i].missionId) --ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GemLotteryConfig,"Library",curType,"Level",actconfigs.mission[i].missionId) if actconfigs.mission[i].state==0 and progresss>=config.LibraryNumber then --LogError("-------------------------------------------------") isCan=true break end end end local nextNum=0 --LogError("progress==============="..progresss) if isCan==false then -- self.boxIcon.gameObject:GetComponent("Animator").Play("Entry") end self.boxIcon.gameObject:GetComponent("Animator").enabled = isCan local curBoxConfig=ConfigManager.TryGetAllConfigsDataByKey(ConfigName.GemLotteryConfig,"Library",_type) if curBoxConfig then for i=1,#curBoxConfig do if curBoxConfig[i].Library==_type and progresss>= curBoxConfig[i].LibraryNumber then wishLv=curBoxConfig[i].Level else nextNum=curBoxConfig[i].LibraryNumber break end end -- for i, v in ConfigPairs(curBoxConfig) do -- if v.Library==_type and progresss>= v.LibraryNumber then -- wishLv=v.Level -- else -- nextNum=v.LibraryNumber -- break -- end -- end end if _type==1 then self.boxLv.text="命格等级:"..wishLv else self.boxLv.text="高级命格等级:"..wishLv end LogError("_type==============================".._type) self.infoTxt.text="今日抽取上限:"..GemNewManager.gemLottery[_type].."/"..drawLimit[_type] LogError("nextnum==="..nextNum.." progersss=="..progresss) if nextNum==0 and progresss~=0 then self.boxProgress.text="宝箱已达最大等级" else self.boxProgress.text=progresss.."/"..nextNum end --设置命石属性 local proList=GemNewManager.GetProListByType(_type) for i =1,8 do if i<=#proList then self.propertyList[i].gameObject:SetActive(true) else self.propertyList[i].gameObject:SetActive(false) end end local index=0 for k, v in pairs(proList) do local str="" index=index+1 self.propertyList[index].gameObject:SetActive(true) if PropertyConfig[k].Style==1 then str=string.format( "%s+%s",PropertyConfig[k].Info,v) elseif PropertyConfig[k].Style==2 then str=string.format( "%s+%s%s",PropertyConfig[k].Info,v/100,"%") end self.propertyList[index].text=str end --命石显示 local list=GemNewManager.GetGemListByType(_type) for i=1,#self.gemPosList do local index=i if _type==2 then index=i+8 end if list[index] then self.gemPosList[i].icon.gameObject:SetActive(true) self.gemPosList[i].frame.sprite=self.spLoader:LoadSprite(list[index].frame) self.gemPosList[i].icon.sprite=self.spLoader:LoadSprite(list[index].icon) Util.AddClick(self.gemPosList[i].btn, function() UIManager.OpenPanel(UIName.RewardGemSingleShowPopup,list[index],3) end) else self.gemPosList[i].frame.sprite=self.spLoader:LoadSprite("r_characterbg_gray") self.gemPosList[i].icon.gameObject:SetActive(false) end end if _type==1 then redList[_type+1]:SetActive(GemNewManager.CheckGemRed()) elseif _type==2 then redList[_type+1]:SetActive(GemNewManager.CheckSuperGemRed()) end --按钮赋值 for n, m in ipairs(self.btns) do --存在免费次数 并且 免费>=1 并且是1按钮 local isFree= false m.icon.gameObject:SetActive(not isFree) m.num.gameObject:SetActive(not isFree) local itemId=0 local itemNum=0 if n == 1 then --type = self.singleConfig.Id m.info.text = "1次" m.time.gameObject:SetActive(true) m.red.gameObject:SetActive(false) else m.time.gameObject:SetActive(false) m.info.text = "10次" m.red.gameObject:SetActive(false) end --if self.config.ShopData[1][1] == TableRecruitType.Youqing then m.time.gameObject:SetActive(false) --end local d = {} local costId = drawType[_type][n] local str= ConfigManager.GetConfigData(ConfigName.SpecialConfig,costId).Value str=StringToTable(str) d = RecruitManager.GetExpendDataByCostItem(str,n,100) 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) 0 then name = GetSpriteNameByItemId(gemData[i][j]) level.text = gemConfig[gemData[i][j]].Level end --红点和命石icon local redPointData = GemManager.GetGemsFromBagByType(i) if name ~= nil then--装备了命石 icon.gameObject:SetActive(true) icon.sprite = self.spLoader:LoadSprite(name) local numInBag = BagManager.GetTotalItemNum(gemData[i][j]) for key, value in pairs(redPointData) do--有更高级的命石红点显示 if value.id > gemData[i][j] then redPoint:SetActive(true) break end if numInBag + 1 > gemConfig[gemData[i][j]].UpgradeNum and gemConfig[gemData[i][j]].NextGem > 0 then redPoint:SetActive(true) break end end else icon.gameObject:SetActive(false) for key, value in pairs(redPointData) do--有多余命石,红点显示 if value.num > 0 then redPoint:SetActive(true) break end end end end Util.AddOnceClick(itemGo,function () self.curType = i self:SetStones(gemData[i],i) end) end end --设置下部宝石数据 function Gem:SetStones(_data,index) local data = _data local redPointData = GemManager.GetGemsFromBagByType(index) self.gemName.text = typeName[index].."命格" for i = 1, #self.lightList do self.lightList[i]:SetActive(self.curType == i) end for i = 1, 3 do local stoneGo = Util.GetGameObject(self.stones,"Stone ("..i..")") local item = Util.GetGameObject(stoneGo,"Item") local mask = Util.GetGameObject(stoneGo,"Mask") local property = Util.GetGameObject(stoneGo,"Property") local textPre = Util.GetGameObject(property,"Text") local name = Util.GetGameObject(stoneGo,"Name"):GetComponent("Text") local redPoint = Util.GetGameObject(stoneGo,"RedPoint") textPre:GetComponent("Text").text = "" textPre:SetActive(false) property:SetActive(false) item:SetActive(false) redPoint:SetActive(false) name.text = "" if data and data[i] and data[i] > 0 then if not self.itemList[i] then local view = SubUIManager.Open(SubUIConfig.ItemView,item.transform) self.itemList[i] = view end self.itemList[i]:OnOpen(false, {data[i],0}, 1.1, false,false,false,self.sortingOrder + 1) self.itemList[i].gameObject:SetActive(true) item:SetActive(true) name.text = gemConfig[data[i]].Name self:SetProperty(gemConfig[data[i]],data,property,textPre) local numInBag = BagManager.GetTotalItemNum(data[i]) --红点 for key, value in pairs(redPointData) do--有更高级的命石红点显示 if value.id > data[i] then redPoint:SetActive(true) break end if numInBag + 1 >= gemConfig[data[i]].UpgradeNum and gemConfig[data[i]].NextGem > 0 then redPoint:SetActive(true) break end end else for key, value in pairs(redPointData) do--有多余命石,红点显示 if value.num > 0 then redPoint:SetActive(true) break end end end Util.AddOnceClick(mask,function () if data and data[i] and data[i] > 0 then UIManager.OpenPanel(UIName.RewardGemSingleShowPopup,data[i],2,nil,index,i) else UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.SelectGem,index,i) end end) end end function Gem:SetProperty(configData,data,parent,text) if not configData then return end if not self.propertyList[parent] then self.propertyList[parent] = {} end for k = 1, #self.propertyList[parent] do self.propertyList[parent][k]:SetActive(false) end for j = 1, #configData.Property do local data = configData.Property[j] local item = self.propertyList[parent][j] parent:SetActive(true) if not item then item = newObjToParent(text,parent.transform) self.propertyList[parent][j] = item end item:SetActive(true) local str="" if PropertyConfig[data[1]].Style==1 then str=string.format( "全体英雄%s+%s",PropertyConfig[data[1]].Info,data[2]) elseif PropertyConfig[data[1]].Style==2 then str=string.format( "全体英雄%s+%s",PropertyConfig[data[1]].Info,data[2]/100).."%" end item:GetComponent("Text").text = str -- string.format( "%s+%s",PropertyConfig[data[1]].Info,data[2]/100).."%" end end function Gem:OnClose() self.lightList = {} end function Gem:OnDestroy() self.spLoader:Destroy() SubUIManager.Close(self.UpView) --SubUIManager.Close(self.BtView) ClearRedPointObject(RedPointType.Practice,self.practice_tab) ClearRedPointObject(RedPointType.Gem,self.gem_tab) self.UpView = nil --self.BtView = nil if self.playerInfoView then SubUIManager.Close(self.playerInfoView) self.playerInfoView = nil end redList={} self.itemList = {} self.propertyList = {} self.lightList = {} end return Gem