--[[ * @ClassName FirstRechargePanel * @Description 首充 * @Date 2019/6/3 11:45 * @Author MagicianJoker, fengliudianshao@outlook.com * @Copyright Copyright (c) 2019, MagicianJoker --]] local DayRewardItem = require("Modules/FirstRecharge/DayRewardItem") local rechargeConfig=ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig) ---@class FirstRechargePanel local FirstRechargePanel = quick_class("FirstRechargePanel", BasePanel) local rechargeId=0 local kMaxTab, kMaxDay = 2, 3 local isPay=false local TextColorDef = { [1] = Color.New(48 / 255, 31 / 255, 33 / 255, 1), [2] = Color.New(246 / 255, 235 / 255, 179 / 255, 1) } local orginLayer local activityRewardConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig) local TipConfig = { [MoneyType.RMB] = { [1] = "s_shouchong_anniuzi6_zh", [2] = "s_shouchong_anniuzi100_zh", [3] = "s_shouchong_anniuzi200_zh", [4] = "s_shouchong_anniuzi500_zh", }, [MoneyType.USD] = { [1] = "s_shouchong_$1_zh", [2] = "s_shouchong_15_zh" }, [MoneyType.RMB] = { [1] = "s_shouchong_anniuzi6_zh", [2] = "s_shouchong_anniuzi100_zh", [3] = "s_shouchong_anniuzi200_zh", [4] = "s_shouchong_anniuzi500_zh", }, } local heroImage={ [1]="UI_hz_zhonghe40", [2]="UI_hz_zhonghe40", [3]="UI_hz_zhonghe40", [4]="UI_hz_zhonghe40", } -- local _MoneyDataNum = {} function FirstRechargePanel:InitComponent() self.spLoader = SpriteLoader.New() orginLayer = 0 self.frame = Util.GetGameObject(self.transform, "frame") self.closeBtn = Util.GetGameObject(self.transform, "closeBtn") self.heroPreviewBtn = Util.GetGameObject(self.transform, "yulan/heroPreviewBtn") self.tenProBtn = Util.GetGameObject(self.transform, "frame/tenProBtn") self.btn_close = Util.GetGameObject(self.transform, "frame/btn_close") self.stageImage6 = Util.GetGameObject(self.transform, "frame/stageImage/Image1"):GetComponent("Image") self.stageImage30 = Util.GetGameObject(self.transform, "frame/stageImage/Image2"):GetComponent("Image") self.stageImage100 = Util.GetGameObject(self.transform, "frame/stageImage/Image3"):GetComponent("Image") self.stageImage200 = Util.GetGameObject(self.transform, "frame/stageImage/Image4"):GetComponent("Image") self.hero = Util.GetGameObject(self.transform, "frame/bg_live1/Image"):GetComponent("Image") self.stageImage6.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][1]) self.stageImage30.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][2]) self.stageImage100.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][3]) self.stageImage200.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][4]) self.stageImage6:SetNativeSize() self.stageImage30:SetNativeSize() self.stageImage100:SetNativeSize() self.stageImage200:SetNativeSize() --topPart -- self.itemPos = Util.GetGameObject(self.transform, "frame/itemPos") -- self.itemInfo = SubUIManager.Open(SubUIConfig.ItemView, self.itemPos.transform) -- self.nameIcon = Util.GetGameObject(self.transform, "frame/bg/topPart/nameIcon"):GetComponent("Image") -- self.rewardValue = Util.GetGameObject(self.transform, "frame/bg/topPart/tipsBg/value"):GetComponent("Text") --midPart self.tabs = {} self.selectTabs = {} self.tabTitles = {} self.tabRedPoint = {} for i = 1, kMaxTab do self.tabs[i] = Util.GetGameObject(self.transform, "frame/tabsContent/tabs_" .. i) self.selectTabs[i] = Util.GetGameObject(self.tabs[i], "selected") self.tabTitles[i] = Util.GetGameObject(self.tabs[i], "title"):GetComponent("Text") self.tabRedPoint[i] = Util.GetGameObject(self.tabs[i], "redPoint") -- self.tabs[i]:GetComponent(Text) end self.selectTabIndex = -1 self.rewardDay = Util.GetGameObject(self.transform, "frame/rewardBg/rewardDay") self.rewardGrid = Util.GetGameObject(self.transform, "frame/rewardBg/rewardBg") self.rewardGridPos = self.rewardGrid.transform.localPosition self.itemWidth = self.rewardGrid:GetComponent("HorizontalLayoutGroup").spacing self.preList={} self.dayRewardList = {} for i = 1, 4 do table.insert(self.preList,Util.GetGameObject(self.transform, "frame/tabsContent/tabs_"..i)) end --bottomPart self.reChargeBtn = Util.GetGameObject(self.transform, "frame/rechargeBtn1") self.reChargeTxt = Util.GetGameObject(self.transform, "frame/rechargeBtn1/Text"):GetComponent("Text") self.reChargeTips = Util.GetGameObject(self.transform, "frame/tips"):GetComponent("Text") self.reChargeTips.gameObject:SetActive(false) self.effect = Util.GetGameObject(self.transform, "frame/effect") self.ani = self.transform:GetComponent("Animator") -- effectAdapte(Util.GetGameObject(self.effect, "Partical/ziti mask (1)")) BindLightFlash(Util.GetGameObject(self.effect, "saoguang"), Util.GetGameObject(self.frame, "bg_piaodai/Image (3)")) BindLightFlash(Util.GetGameObject(self.effect, "saoguang (1)"), self.reChargeBtn) end function FirstRechargePanel:BindEvent() Util.AddClick(self.closeBtn, function() --self:ClosePanel() end) Util.AddClick(self.btn_close, function() self:ClosePanel() end) Util.AddClick(self.reChargeBtn, function() self:OnRechargeBtnClicked() end) for i = 1, kMaxTab do Util.AddClick(self.tabs[i], function() self:OnTabClicked(i) end) end Util.AddClick(self.heroPreviewBtn, function() local fakeId = tonumber(1008) local fdata, fseed = BattleManager.GetFakeBattleData(fakeId) local testFightData = { fightData = fdata, fightSeed = fseed, fightType = 0, maxRound = 20 } UIManager.OpenPanel(UIName.BattlePanel, testFightData, BATTLE_TYPE.Test) end) Util.AddClick(self.tenProBtn, function() local heroId = 0 for _, rewardInfo in ConfigPairs(activityRewardConfig) do if rewardInfo.ActivityId == ActivityTypeDef.FirstRecharge then--ActivityTypeDef.AccumulativeRecharge then heroId = rewardInfo.Reward[1][1] break end end UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, heroId,10) end) end function FirstRechargePanel:OnSortingOrderChange() Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer) orginLayer = self.sortingOrder --特效穿透特殊处理 -- if self.itemInfo then -- self.itemInfo:SetEffectLayer( self.sortingOrder) -- end -- for i = 1, #self.dayRewardList do -- self.dayRewardList[i]:OnSortingOrderChange(self.sortingOrder) -- end end local fun = nil function FirstRechargePanel:OnOpen(context,_fun) self.isPlayAnim = true context = context and context or {} self.selectTabIndex = context.tabIndex and context.tabIndex or 1 -- self:SetOncePart() fun = _fun local qyTime = 0 if not FirstRechargeManager.GetAnimFlag("FirstRechargeAnim") then --SoundManager.PlaySound(SoundConfig.UI_Hd_swk) --qyTime = 1.5 FirstRechargeManager.SetAnimFlag("FirstRechargeAnim") end self.frame:SetActive(false) self.effect:SetActive(false) self.ani.enabled = false self.closeBtn:GetComponent("Button").enabled = false -- self.tabs[1]:SetActive(false) Timer.New(function () self.frame:SetActive(true) self.effect:SetActive(true) self.ani.enabled = true end, qyTime):Start() Timer.New(function () --self.tabs[1]:SetActive(true) self.closeBtn:GetComponent("Button").enabled = true end, qyTime + 1):Start() end function FirstRechargePanel:OnShow() --self.reChargeTips.text = string.format("已充值 %s 元", FirstRechargeManager.GetAccumRechargeValue()) self.activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.FirstRecharge) local AccumRecharge = 0 if not self.activityInfo then self:ClosePanel() return end _MoneyDataNum = {} for _, missInfo in ipairs(self.activityInfo.mission) do if missInfo and missInfo.progress then -- 获取充值额度 AccumRecharge = missInfo.progress --LogError("missInfo.missionId=="..missInfo.missionId) -- 构建数据 local money = activityRewardConfig[missInfo.missionId].Values[1][1] --LogError("money===="..money) --local index = FirstRechargeManager.GetFirstRechargeIndexByMoney(money) local index=0 if money==10000 then index=1 else index=2 end if _MoneyDataNum[index]==nil then _MoneyDataNum[index] = {} end table.insert(_MoneyDataNum[index], missInfo) end end -- 判断数据 local minIndex=1 for index, dataList in pairs(_MoneyDataNum) do if dataList and #dataList > 0 then -- 排序 table.sort(dataList,function(a,b) return a.missionId < b.missionId end) local isAll=true for key, value in pairs(dataList) do if value.state~=1 then isAll=false end end if isAll then -- table.remove(_MoneyDataNum,index) self.preList[index]:SetActive(false) else -- 找到最小的 if not minIndex or index < minIndex then minIndex = index end end end end -- 如果想看的不存在就显示最小的 -- if not _MoneyDataNum[self.selectTabIndex] or #_MoneyDataNum[self.selectTabIndex] <= 0 then if self.selectTabIndex==1 then self.selectTabIndex = minIndex end --end self.reChargeTips.text = Language[10664]..string.format(MoneyUtil.GetMoneyUnitName(),AccumRecharge)--string.format(Language[10665], AccumRecharge) self:OnTabChanged(self.selectTabIndex) for i = 1, kMaxTab do self:SetTabRedPointStatus(i) end -- 判断页签切换是否显示 Util.GetGameObject(self.transform, "frame/tabsContent"):SetActive(table.nums(_MoneyDataNum)>1) end function FirstRechargePanel:OnTabClicked(index) if self.selectTabIndex == index then return end self:OnTabChanged(index) end function FirstRechargePanel:OnTabChanged(index) LogError("index==================="..index) self.hero.sprite=self.spLoader:LoadSprite(heroImage[index]) for i, select in ipairs(self.selectTabs) do select:SetActive(i == index) end if index==4 then self.heroPreviewBtn:SetActive(false) else self.heroPreviewBtn:SetActive(true) end local money=0 for i, title in ipairs(self.tabTitles) do title.color = i == index and TextColorDef[2] or TextColorDef[1] --local money = FirstRechargeManager.GetFirstRechargeMoneyByIndex(i) if i==1 then title.text ="超值首充" elseif i==2 then title.text ="豪华首充" end end if index==1 then money=10000 elseif index==2 then money=20000 end self.stageImage6.gameObject:SetActive(index == 5) self.stageImage30.gameObject:SetActive(index == 5) self.stageImage100.gameObject:SetActive(index == 5) self.stageImage200.gameObject:SetActive(index == 5) self:ShowContent(index) self.selectTabIndex = index local AccumRecharge = 0 self.offsetIndex = 0 --local money = FirstRechargeManager.GetFirstRechargeMoneyByIndex(index) rechargeId=money local tempData = _MoneyDataNum[index] isPay=false for _, missInfo in ipairs(tempData) do if missInfo and missInfo.progress and activityRewardConfig[missInfo.missionId].Values[1][1] == money then AccumRecharge = missInfo.progress LogError("missionInfo.state=="..missInfo.state) -- if AccumRecharge >= activityRewardConfig[missInfo.missionId].Values[1][1] then -- local day = GetTimePass(FirstRechargeManager.GetRechargeTime())--FirstRechargeManager.GetRechargeTime() -- if missInfo.state ~= 1 and activityRewardConfig[missInfo.missionId].Values[1][2] <= day then -- self.offsetIndex = _ -- break -- end -- end if missInfo.state>0 then isPay=true end end end if isPay then self.reChargeTxt.text=Language[10514] else self.reChargeTxt.text=rechargeConfig[money].Price..Language[11358] end if self.offsetIndex == 0 then self.offsetIndex = 1 end if self.isPlayAnim then self.isPlayAnim = false local vec = self.rewardGrid.transform.localPosition vec.x = self.rewardGridPos.x - #tempData * self.itemWidth self.rewardGrid.transform.localPosition = vec local x = self.rewardGridPos.x - (self.offsetIndex - 1) * self.itemWidth local vec2 = Vector3.New(x,self.rewardGridPos.y,self.rewardGridPos.z) -- --self.tween = self.rewardGrid.gameObject.transform:DOLocalMove(vec2, 0.5):OnStart(function() end):OnUpdate(function() --TODO:测试速度 -- end):OnComplete(function () -- --self.rewardGrid.transform.localPosition = vec2 -- end) else local x = self.rewardGridPos.x - (self.offsetIndex - 1) * self.itemWidth local vec2 = Vector3.New(x,self.rewardGridPos.y,self.rewardGridPos.z) --self.rewardGrid.transform.localPosition = vec2 end end function FirstRechargePanel:ShowContent(index) local tempData = {} for _, missionInfo in ipairs(_MoneyDataNum[index]) do table.insert(tempData, activityRewardConfig[missionInfo.missionId]) end -- self.rewardValue.text = tempData[1].TotalValues for i, dayRewardItem in ipairs(self.dayRewardList) do dayRewardItem.gameObject:SetActive(false) end for i = 1,math.max(#self.dayRewardList,#tempData) do if not tempData[i] then self.dayRewardList[i].gameObject:SetActive(false) else if not self.dayRewardList[i] then --local go = newObjToParent(self.rewardDay,self.rewardGrid) local go=self.rewardGrid.transform:GetChild(i-1).gameObject self.dayRewardList[i] = DayRewardItem.new(self,go) end self.dayRewardList[i].gameObject:SetActive(true) self.dayRewardList[i]:SetValue(tempData[i],self.sortingOrder) end end end -- function FirstRechargePanel:SetOncePart() -- for _, rewardInfo in ConfigPairs(activityRewardConfig) do -- if rewardInfo.ActivityId == ActivityTypeDef.FirstRecharge then -- self.itemInfo:OnOpen(false, rewardInfo.Reward[1], 1,false,false,false,self.sortingOrder) -- break -- end -- end -- end function FirstRechargePanel:OnRechargeBtnClicked() if isPay then return end PayManager.Pay(rechargeId,function() --self:OnShow() self.activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.FirstRecharge) _MoneyDataNum = {} for _, missInfo in ipairs(self.activityInfo.mission) do if missInfo and missInfo.progress then -- 获取充值额度 AccumRecharge = missInfo.progress --LogError("missInfo.missionId=="..missInfo.missionId) -- 构建数据 local money = activityRewardConfig[missInfo.missionId].Values[1][1] --LogError("money===="..money) --local index = FirstRechargeManager.GetFirstRechargeIndexByMoney(money) local index=0 if money==10000 then index=1 else index=2 end if _MoneyDataNum[index]==nil then _MoneyDataNum[index] = {} end table.insert(_MoneyDataNum[index], missInfo) end end self.reChargeTips.text = Language[10664]..string.format(MoneyUtil.GetMoneyUnitName(),AccumRecharge)--string.format(Language[10665], AccumRecharge) self:OnTabChanged(self.selectTabIndex) for i = 1, kMaxTab do self:SetTabRedPointStatus(i) end -- 判断页签切换是否显示 Util.GetGameObject(self.transform, "frame/tabsContent"):SetActive(table.nums(_MoneyDataNum)>1) end) --JumpManager.GoJump(36004) -- if not ShopManager.IsActive(SHOP_TYPE.SOUL_STONE_SHOP) then -- PopupTipPanel.ShowTip(Language[10422]) -- return -- end -- self:ClosePanel() -- if SERVER_VERSION == 1 then -- JumpManager.GoJump(36010) -- else -- if ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.XinRenShop) then -- JumpManager.GoJump(36012) -- else -- JumpManager.GoJump(36008) -- end -- end end function FirstRechargePanel:SetTabRedPointStatus(tabIndex) --LogError("tabIndex=="..tabIndex) local redPointStatus = FirstRechargeManager.GetRedPointStatus(tabIndex) self.tabRedPoint[tabIndex]:SetActive(redPointStatus) end --界面关闭时调用(用于子类重写) function FirstRechargePanel:OnClose() if fun then fun() fun = nil end self.rewardGrid.transform.localPosition = self.rewardGridPos end function FirstRechargePanel:OnDestroy() self.spLoader:Destroy() for i = 1, kMaxDay do self.dayRewardList[i]:Dispose() end self.dayRewardList = {} end return FirstRechargePanel