118 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Lua
		
	
require("Base/BasePanel")
 | 
						|
local ShopConfig = require("Modules/Shop/ShopConfig")
 | 
						|
local ShopPanel = Inherit(BasePanel)
 | 
						|
local this = ShopPanel
 | 
						|
 | 
						|
--初始化组件(用于子类重写)
 | 
						|
function ShopPanel:InitComponent()
 | 
						|
    this.btnBack = Util.GetGameObject(self.gameObject, "rightUp/btnBack")
 | 
						|
 | 
						|
    this.live = Util.GetGameObject(self.transform, "live")
 | 
						|
 | 
						|
    -- 晶魂
 | 
						|
    this.scrollRoot = Util.GetGameObject(self.transform, "jinghunRoot/scrollroot")
 | 
						|
    this.shopItem = Util.GetGameObject(this.scrollRoot, "item")
 | 
						|
 | 
						|
    -- 创建循环列表
 | 
						|
    this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.scrollRoot.transform,
 | 
						|
            this.shopItem, nil, Vector2.New(1000, 1015), 1, 3, Vector2.New(15, 0))
 | 
						|
    this.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0)
 | 
						|
    this.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
 | 
						|
    this.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
 | 
						|
    this.ScrollView.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5)
 | 
						|
    this.ScrollView.moveTween.MomentumAmount = 1
 | 
						|
    this.ScrollView.moveTween.Strength = 2
 | 
						|
 | 
						|
    -- 上部货币显示
 | 
						|
    this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform, { showType = UpViewOpenType.ShowLeft })
 | 
						|
end
 | 
						|
 | 
						|
--绑定事件(用于子类重写)
 | 
						|
function ShopPanel:BindEvent()
 | 
						|
    Util.AddClick(this.btnBack, function()
 | 
						|
        PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
 | 
						|
        this:ClosePanel()
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
--界面打开时调用(用于子类重写)
 | 
						|
function ShopPanel:OnOpen(...)
 | 
						|
    this.ShopType = SHOP_TYPE.SOUL_STONE_SHOP
 | 
						|
    SoundManager.PlayMusic(SoundConfig.BGM_Shop)
 | 
						|
 | 
						|
    this:RefreshLive()
 | 
						|
    this.InitItems()
 | 
						|
 | 
						|
    -- 货币界面
 | 
						|
    this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
 | 
						|
end
 | 
						|
 | 
						|
-- 刷新立绘显示
 | 
						|
function this:RefreshLive()
 | 
						|
    --TODO:动态加载立绘
 | 
						|
    if this.testLiveGO then
 | 
						|
        poolManager.UnLoadLive(this.testLiveGO.name, this.testLiveGO)
 | 
						|
    end
 | 
						|
    --Util.ClearChild(this.live.transform)
 | 
						|
    local liveConfig = ShopConfig[this.ShopType]
 | 
						|
    this.testLiveGO = poolManager:LoadLive(liveConfig.liveName, this.live.transform,
 | 
						|
            Vector3.one * liveConfig.liveScale, Vector3.New(liveConfig.livePos[1], liveConfig.livePos[2], 0))
 | 
						|
 | 
						|
    local SkeletonGraphic = Util.GetGameObject(this.live, liveConfig.liveName):GetComponent("SkeletonGraphic")
 | 
						|
    local idle = function() SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) end
 | 
						|
    SkeletonGraphic.AnimationState:SetAnimation(0, "come", false)
 | 
						|
    SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete + idle
 | 
						|
    poolManager:SetLiveClearCall(liveConfig.liveName, this.testLiveGO, function ()
 | 
						|
        SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete - idle
 | 
						|
    end)
 | 
						|
end
 | 
						|
-- 初始化商品
 | 
						|
function this.InitItems()
 | 
						|
    -- 晶魂
 | 
						|
    --local itemlist = ShopManager.GetShopDataByType(this.ShopType).storeItem
 | 
						|
    local itemlist = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DemonCrystal)
 | 
						|
    -- 重置列表
 | 
						|
    this.ScrollView:SetData(itemlist, function(index, shopItem)
 | 
						|
        local itemData = itemlist[index]
 | 
						|
        this:ShopItemAdapter(shopItem, itemData)
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
-- 商店物品数据匹配
 | 
						|
function this:ShopItemAdapter(shopItem, itemData)
 | 
						|
    -- 获取对象
 | 
						|
    local first = Util.GetGameObject(shopItem, "first")
 | 
						|
    local firstNum = Util.GetGameObject(shopItem, "first/Text"):GetComponent("Text")
 | 
						|
    local icon = Util.GetGameObject(shopItem, "icon"):GetComponent("Image")
 | 
						|
    local num = Util.GetGameObject(shopItem, "box/jinghunNum"):GetComponent("Text")
 | 
						|
    local price = Util.GetGameObject(shopItem, "price/Text"):GetComponent("Text")
 | 
						|
 | 
						|
    -- 计算数据
 | 
						|
    local itemInfo = ShopManager.GetRechargeItemInfo(itemData.goodsId)
 | 
						|
    icon.sprite = Util.LoadSprite(GetResourcePath(itemInfo.Resources))
 | 
						|
    num.text = itemInfo.BaseReward[1][2]
 | 
						|
    price.text = MoneyUtil.GetMoneyMark() .. MoneyUtil.GetMoney(itemInfo.Price)
 | 
						|
    -- 判断首充赠送
 | 
						|
    local curBuyCount = itemData.buyTimes
 | 
						|
    first:SetActive(curBuyCount < 1)
 | 
						|
    firstNum.text = itemInfo.FirstMultiple[1][2]
 | 
						|
 | 
						|
    -- 购买事件
 | 
						|
    Util.AddOnceClick(shopItem, function()
 | 
						|
        NetManager.RequestBuyGiftGoods(itemData.goodsId, function()
 | 
						|
            FirstRechargeManager.RefreshAccumRechargeValue(itemData.goodsId)
 | 
						|
            OperatingManager.RefreshGiftGoodsBuyTimes(GoodsTypeDef.DemonCrystal, itemData.goodsId)
 | 
						|
            this.InitItems()
 | 
						|
        end)
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
--界面关闭时调用(用于子类重写)
 | 
						|
function ShopPanel:OnClose()
 | 
						|
end
 | 
						|
--界面销毁时调用(用于子类重写)
 | 
						|
function ShopPanel:OnDestroy()
 | 
						|
    SubUIManager.Close(this.UpView)
 | 
						|
end
 | 
						|
 | 
						|
return ShopPanel |