333 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			333 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Lua
		
	
--[[
 | 
						|
 * @ClassName TreasureOfSomebodyRewardPageV2
 | 
						|
 * @Description 戒灵秘宝奖励Part
 | 
						|
 * @Date 2019/9/21 13:39
 | 
						|
 * @Author MagicianJoker, fengliudianshao@outlook.com
 | 
						|
 * @Copyright  Copyright (c) 2019, MagicianJoker
 | 
						|
--]]
 | 
						|
---@class TreasureOfSomebodyRewardPageV2
 | 
						|
local TreasureOfSomebodyRewardPageV2 = quick_class("TreasureOfSomebodyRewardPageV2")
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:ctor(mainPanel, gameObject)
 | 
						|
    self.mainPanel = mainPanel
 | 
						|
    self.gameObject = gameObject
 | 
						|
 | 
						|
    self.treasureListContent = Util.GetGameObject(self.gameObject, "treasureList")
 | 
						|
    self.treasurePro = Util.GetGameObject(self.gameObject, "itemPro")
 | 
						|
    self.treasurePro:SetActive(false)
 | 
						|
 | 
						|
    ---- 创建循环列表
 | 
						|
    local v2 = self.treasureListContent:GetComponent("RectTransform").rect
 | 
						|
    self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.treasureListContent.transform,
 | 
						|
            self.treasurePro, nil, Vector2.New(-v2.x * 2, -v2.y * 2), 1, 1, Vector2.New(0, 25))
 | 
						|
    self.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0)
 | 
						|
    self.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
 | 
						|
    self.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
 | 
						|
    self.ScrollView.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5)
 | 
						|
    self.ScrollView.moveTween.MomentumAmount = 1
 | 
						|
    self.ScrollView.moveTween.Strength = 1
 | 
						|
 | 
						|
    self.treasureFinalReward = {
 | 
						|
        level = Util.GetGameObject(self.gameObject, "finalReward/level"):GetComponent("Text"),
 | 
						|
        GiftItemList = {}
 | 
						|
    }
 | 
						|
    for i = 1, 4 do
 | 
						|
        self.treasureFinalReward.GiftItemList[i] = SubUIManager.Open(SubUIConfig.ItemView,
 | 
						|
                Util.GetGameObject(self.gameObject, "finalReward/itemPos_" .. i).transform)
 | 
						|
    end
 | 
						|
 | 
						|
    self.finalBtnDeal = Util.GetGameObject(self.gameObject, "finalReward/btnDeal")
 | 
						|
    Util.AddClick(self.finalBtnDeal, function()
 | 
						|
        self:OnOneKeyDealBtnClicked()
 | 
						|
    end)
 | 
						|
    self.finalFinishFlag = Util.GetGameObject(self.gameObject, "finalReward/finished")
 | 
						|
 | 
						|
    --Util.AddClick(Util.GetGameObject(self.gameObject, "gainScoreBtn"), function()
 | 
						|
    --    self.mainPanel:OnPageChanged(1)
 | 
						|
    --end)
 | 
						|
 | 
						|
    --戒灵秘宝 查看宝藏界面购买点击
 | 
						|
    self.unlockBtn = Util.GetGameObject(self.gameObject, "unlockBtn")
 | 
						|
    self.unlockBtn:GetComponent("Button").onClick:AddListener(function()
 | 
						|
        if TreasureOfSomebodyManagerV2.hadBuyTreasure then
 | 
						|
            PopupTipPanel.ShowTip(Language[11992])
 | 
						|
            return
 | 
						|
        end
 | 
						|
        UIManager.OpenPanel(UIName.UnlockExtraRewardPanel,5001, {
 | 
						|
            callBack = function()
 | 
						|
                self:RefreshTreasureBuy()
 | 
						|
            end
 | 
						|
        })
 | 
						|
    end)
 | 
						|
 | 
						|
    self.unlockCost = Util.GetGameObject(self.unlockBtn, "unlockCost")
 | 
						|
    -- self.unlockCostIcon = Util.GetGameObject(self.unlockCost, "icon"):GetComponent("Image")
 | 
						|
    self.unlockCostValue = Util.GetGameObject(self.unlockCost, "value"):GetComponent("Text")
 | 
						|
 | 
						|
    self.unlock = Util.GetGameObject(self.unlockBtn, "unlock")
 | 
						|
 | 
						|
    self:InitUnlockCost()
 | 
						|
 | 
						|
    self.rewardItemList = {}
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:OnShow()
 | 
						|
    Game.GlobalEvent:AddEvent(GameEvent.TreasureOfSomeBody.OpenTreasureAward, self.OnOpenTreasure, self)
 | 
						|
    self.gameObject:SetActive(true)
 | 
						|
    self:RefreshPageStatus()
 | 
						|
    self:SetScrollViewIndexShow()
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:OnHide()
 | 
						|
    Game.GlobalEvent:RemoveEvent(GameEvent.TreasureOfSomeBody.OpenTreasureAward, self.OnOpenTreasure, self)
 | 
						|
    if self.index then
 | 
						|
        self.ScrollView:SetIndex(1)
 | 
						|
    end
 | 
						|
    self.gameObject:SetActive(false)
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:OnDestroy()
 | 
						|
    self.ScrollView = nil
 | 
						|
    self.index = nil
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:RefreshPageStatus()
 | 
						|
    local treasureConfigs = TreasureOfSomebodyManagerV2.rewardConfigInfoList
 | 
						|
    self.ScrollView:SetData(treasureConfigs, function(index, rewardItem)
 | 
						|
        self:SetBottomRewardInfo(index, treasureConfigs)
 | 
						|
        local itemData = treasureConfigs[index]
 | 
						|
        self:SetScoreItemAdapter(rewardItem, itemData)
 | 
						|
    end)
 | 
						|
    self:SetFinalStatus()
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:SetScrollViewIndexShow()
 | 
						|
    local desireIndex
 | 
						|
    local treasureConfigs = TreasureOfSomebodyManagerV2.rewardConfigInfoList
 | 
						|
    for _, itemInfo in pairs(treasureConfigs) do
 | 
						|
        local activityIdInfo = ActivityGiftManager.GetActivityInfo(itemInfo.ActivityId, itemInfo.Level)
 | 
						|
        if TreasureOfSomebodyManagerV2.hadBuyTreasure then
 | 
						|
            if activityIdInfo.state == 0 or activityIdInfo.state == 1 then
 | 
						|
                if TreasureOfSomebodyManagerV2.currentLv >= itemInfo.Level then
 | 
						|
                    desireIndex = itemInfo.Level
 | 
						|
                    break
 | 
						|
                end
 | 
						|
            end
 | 
						|
        else
 | 
						|
            if activityIdInfo.state == 0 then
 | 
						|
                if TreasureOfSomebodyManagerV2.currentLv >= itemInfo.Level then
 | 
						|
                    desireIndex = itemInfo.Level
 | 
						|
                    break
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if desireIndex then
 | 
						|
        self.ScrollView:SetIndex(desireIndex)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:SetBottomRewardInfo(index, configsInfo)
 | 
						|
    local dataIndex
 | 
						|
    if not self.index then
 | 
						|
        self.index = index
 | 
						|
    else
 | 
						|
        if index < self.index  then
 | 
						|
            dataIndex = index + 8
 | 
						|
        else
 | 
						|
            dataIndex = index
 | 
						|
        end
 | 
						|
        self.index = index
 | 
						|
    end
 | 
						|
    if not dataIndex then
 | 
						|
        return
 | 
						|
    end
 | 
						|
    local maxLv = TreasureOfSomebodyManagerV2.treasureMaxLv
 | 
						|
    dataIndex = (math.floor((dataIndex - 1) / 10) + 1) * 10
 | 
						|
    dataIndex = dataIndex < maxLv and dataIndex or maxLv
 | 
						|
    local bottomRewardInfo = configsInfo[dataIndex]
 | 
						|
    self.treasureFinalReward.level.text = bottomRewardInfo.Level .. Language[10072]
 | 
						|
    self:HideFinalGiftRewards()
 | 
						|
    self:RefreshFinalGiftItem(bottomRewardInfo)
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:HideFinalGiftRewards()
 | 
						|
    table.walk(self.treasureFinalReward.GiftItemList, function(giftItem)
 | 
						|
        if giftItem.gameObject.activeSelf then
 | 
						|
            giftItem.gameObject:SetActive(false)
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end
 | 
						|
function TreasureOfSomebodyRewardPageV2:RefreshFinalGiftItem(configInfo)
 | 
						|
    for i, v in ipairs(configInfo.Reward) do
 | 
						|
        local giftItem = self.treasureFinalReward.GiftItemList[i]
 | 
						|
        giftItem:OnOpen(false, v, 0.75)
 | 
						|
        giftItem.gameObject:SetActive(true)
 | 
						|
    end
 | 
						|
    for i, v in ipairs(configInfo.TreasureReward) do
 | 
						|
        local giftItem = self.treasureFinalReward.GiftItemList[i + 2]
 | 
						|
        giftItem:OnOpen(false, v, 0.75)
 | 
						|
        giftItem.gameObject:SetActive(true)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:OnDealBtnClicked()
 | 
						|
    if TreasureOfSomebodyManagerV2.hadBuyTreasure then
 | 
						|
        PopupTipPanel.ShowTip(Language[11996])
 | 
						|
        return
 | 
						|
    end
 | 
						|
    local gameSettingConfig = ConfigManager.GetConfigData(ConfigName.GameSetting, 1)
 | 
						|
    local ownValue = BagManager.GetItemCountById(gameSettingConfig.TreasurePrice[1])
 | 
						|
    if ownValue < gameSettingConfig.TreasurePrice[2] then
 | 
						|
        if not ShopManager.IsActive(SHOP_TYPE.SOUL_STONE_SHOP) then
 | 
						|
            PopupTipPanel.ShowTip(Language[10438])
 | 
						|
            return
 | 
						|
        end
 | 
						|
        UIManager.OpenPanel(UIName.MainRechargePanel, 1)
 | 
						|
    else
 | 
						|
        NetManager.BuyTreasureOfSomeBody()
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:SetScoreItemAdapter(rewardItem, itemInfo)
 | 
						|
    Util.GetGameObject(rewardItem, "level"):GetComponent("Text").text = itemInfo.Level .. Language[10072]
 | 
						|
    local activityIdInfo = ActivityGiftManager.GetActivityInfo(itemInfo.ActivityId, itemInfo.Level)
 | 
						|
    Util.GetGameObject(rewardItem, "finished"):SetActive(activityIdInfo.state == -1)
 | 
						|
    local btnDeal = Util.GetGameObject(rewardItem, "btnDeal")
 | 
						|
    btnDeal:SetActive(activityIdInfo.state ~= -1)
 | 
						|
    if btnDeal.activeSelf then
 | 
						|
        local hadBuyState = TreasureOfSomebodyManagerV2.hadBuyTreasure and -1 or 1
 | 
						|
        local ReceivedReward = function()
 | 
						|
            NetManager.GetActivityRewardRequest(itemInfo.Level, itemInfo.ActivityId, function(drop)
 | 
						|
                UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1)
 | 
						|
                ActivityGiftManager.SetActivityInfo(itemInfo.ActivityId, itemInfo.Level, hadBuyState)
 | 
						|
                self:SetScoreItemAdapter(rewardItem, itemInfo)
 | 
						|
                self.mainPanel:SetRewardRedPoint()
 | 
						|
                RedpotManager.CheckRedPointStatus(RedPointType.TreasureOfSl)
 | 
						|
                self:SetFinalStatus()
 | 
						|
            end)
 | 
						|
        end
 | 
						|
        if activityIdInfo.state == 0 then
 | 
						|
            Util.GetGameObject(btnDeal, "Text"):GetComponent("Text").text = Language[10022]
 | 
						|
            local status = TreasureOfSomebodyManagerV2.currentLv >= itemInfo.Level
 | 
						|
            btnDeal:GetComponent("Button").enabled = status
 | 
						|
            Util.SetGray(btnDeal, not status)
 | 
						|
            if status then
 | 
						|
                Util.AddOnceClick(btnDeal, function()
 | 
						|
                    ReceivedReward()
 | 
						|
                end)
 | 
						|
            end
 | 
						|
        elseif activityIdInfo.state == 1 then
 | 
						|
            Util.GetGameObject(btnDeal, "Text"):GetComponent("Text").text = Language[10752]
 | 
						|
            btnDeal:GetComponent("Button").enabled = true
 | 
						|
            Util.SetGray(btnDeal, false)
 | 
						|
            Util.AddOnceClick(btnDeal, function()
 | 
						|
                if TreasureOfSomebodyManagerV2.hadBuyTreasure then
 | 
						|
                    ReceivedReward()
 | 
						|
                else
 | 
						|
                    UIManager.OpenPanel(UIName.UnlockExtraRewardPanel, {
 | 
						|
                        callBack = function()
 | 
						|
                            self:RefreshTreasureBuy()
 | 
						|
                        end
 | 
						|
                    })
 | 
						|
                end
 | 
						|
            end)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if self.rewardItemList[rewardItem] then
 | 
						|
        --已经创建过的奖励
 | 
						|
        self:HideAllGiftItem(rewardItem)
 | 
						|
    else
 | 
						|
        --没有创建过的奖励
 | 
						|
        self.rewardItemList[rewardItem] = {
 | 
						|
            rewardList = {}
 | 
						|
        }
 | 
						|
        for i = 1, 4 do
 | 
						|
            local giftItem = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(rewardItem, "itemPos_" .. i).transform)
 | 
						|
            giftItem.gameObject:SetActive(false)
 | 
						|
            giftItem.transform:SetAsFirstSibling()
 | 
						|
            self.rewardItemList[rewardItem].rewardList[i] = giftItem
 | 
						|
        end
 | 
						|
    end
 | 
						|
    self:RefreshGiftItem(rewardItem, itemInfo)
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:RefreshGiftItem(rewardItem, configInfo)
 | 
						|
    for i, v in ipairs(configInfo.Reward) do
 | 
						|
        local giftItem = self.rewardItemList[rewardItem].rewardList[i]
 | 
						|
        giftItem:OnOpen(false, v, 0.75)
 | 
						|
        giftItem.gameObject:SetActive(true)
 | 
						|
    end
 | 
						|
    for i, v in ipairs(configInfo.TreasureReward) do
 | 
						|
        local giftItem = self.rewardItemList[rewardItem].rewardList[i + 2]
 | 
						|
        giftItem:OnOpen(false, v, 0.75)
 | 
						|
        giftItem.gameObject:SetActive(true)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:HideAllGiftItem(rewardItem)
 | 
						|
    table.walk(self.rewardItemList[rewardItem].rewardList, function(giftItem)
 | 
						|
        if giftItem.gameObject.activeSelf then
 | 
						|
            giftItem.gameObject:SetActive(false)
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
--初始化解锁按钮
 | 
						|
function TreasureOfSomebodyRewardPageV2:InitUnlockCost()
 | 
						|
    self.unlockCost:SetActive(not TreasureOfSomebodyManagerV2.hadBuyTreasure)
 | 
						|
    self.unlock:SetActive(TreasureOfSomebodyManagerV2.hadBuyTreasure)
 | 
						|
    if not TreasureOfSomebodyManagerV2.hadBuyTreasure then
 | 
						|
        local gameSettingConfig = ConfigManager.GetConfigData(ConfigName.GameSetting, 1)
 | 
						|
        -- self.unlockCostIcon.sprite = SetIcon(gameSettingConfig.TreasurePrice[1])
 | 
						|
        self.unlockCostValue.text = gameSettingConfig.TreasurePrice[2]..Language[10538]
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:OnOpenTreasure()
 | 
						|
    TreasureOfSomebodyManagerV2.SetTreasureBuyStatus(1)
 | 
						|
    self.unlockCost:SetActive(false)
 | 
						|
    RedpotManager.CheckRedPointStatus(RedPointType.TreasureOfSl)
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:SetFinalStatus()
 | 
						|
    local allStatus = TreasureOfSomebodyManagerV2.GetFinalReceivedStatus()
 | 
						|
    self.finalFinishFlag:SetActive(allStatus == -1)
 | 
						|
    self.finalBtnDeal:SetActive(allStatus ~= -1)
 | 
						|
    if self.finalBtnDeal.activeSelf then
 | 
						|
        self.finalBtnDeal:GetComponent("Button").enabled = allStatus == 1
 | 
						|
        Util.SetGray(self.finalBtnDeal, allStatus ~= 1)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:OnOneKeyDealBtnClicked()
 | 
						|
    local status = TreasureOfSomebodyManagerV2.GetFinalReceivedStatus()
 | 
						|
    if status == 0 then
 | 
						|
        PopupTipPanel.ShowTip(Language[11997])
 | 
						|
        return
 | 
						|
    end
 | 
						|
    local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.TreasureOfSomeBody)
 | 
						|
    NetManager.GetActivityRewardRequest(-1, activityId, function(drop)
 | 
						|
        UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1)
 | 
						|
        self:RefreshRewardList()
 | 
						|
        self.mainPanel:SetRewardRedPoint()
 | 
						|
        RedpotManager.CheckRedPointStatus(RedPointType.TreasureOfSl)
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:RefreshRewardList()
 | 
						|
    local currentLevel = TreasureOfSomebodyManagerV2.currentLv
 | 
						|
    local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.TreasureOfSomeBody)
 | 
						|
    local state = TreasureOfSomebodyManagerV2.hadBuyTreasure and -1 or 1
 | 
						|
    for i = 1, currentLevel do
 | 
						|
        ActivityGiftManager.SetActivityInfo(activityId, i, state)
 | 
						|
    end
 | 
						|
    self:RefreshPageStatus()
 | 
						|
end
 | 
						|
 | 
						|
function TreasureOfSomebodyRewardPageV2:RefreshTreasureBuy()
 | 
						|
    self:InitUnlockCost()
 | 
						|
    self:RefreshPageStatus()
 | 
						|
end
 | 
						|
 | 
						|
return TreasureOfSomebodyRewardPageV2 |