ro-table/Asstes/Resources/Script/Purchase/AppStorePurchase.txt
2025-06-04 05:02:57 +08:00

99 lines
2.9 KiB
Plaintext

autoImport('FuncZenyShop')
AppStorePurchase = class('AppStorePurchase')
function AppStorePurchase.Ins()
if AppStorePurchase.ins == nil then
AppStorePurchase.ins = AppStorePurchase.new()
end
return AppStorePurchase.ins
end
function AppStorePurchase:AddListener()
self.listenerAdded = false
EventManager.Me():AddEventListener(LoadSceneEvent.FinishLoadScene, self.OnReceiveFinishLoadScene, self)
end
function AppStorePurchase:OnReceiveFinishLoadScene()
if not self.listenerAdded then
self.listenerAdded = true
if not BackwardCompatibilityUtil.CompatibilityMode_V19 then
self:SetCallbackAppStorePurchase()
end
end
end
function AppStorePurchase:SetCallbackAppStorePurchase()
FunctionXDSDK.Ins:SetCallbackAppStorePurchase(function (x)
self:ShowProduct(x)
FunctionXDSDK.Ins:ClearPurchaseFromAppStore()
end)
end
function AppStorePurchase:OpenZenyShopAndPurchase(product_id)
local panel = self:GetPanelConfigFromProductID(product_id)
FuncZenyShop.Instance():OpenUI(panel)
if panel == PanelConfig.ZenyShopMonthlyVIP then
self:ShowCardByProductID(product_id)
end
if not FuncZenyShop.Instance():TryPurchaseProduct(product_id) then
EventManager.Me():AddEventListener(ZenyShopEvent.CanPurchase, self.OnReceiveCanPurchase, self)
self.purchaseProductID = product_id
end
end
function AppStorePurchase:ShowProduct(product_id)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.AppStorePurchase, viewdata = product_id})
end
function AppStorePurchase:OnReceiveCanPurchase(product_id)
if product_id == self.purchaseProductID then
FuncZenyShop.Instance():TryPurchaseProduct(product_id)
self.purchaseProductID = nil
end
end
function AppStorePurchase:GetPanelConfigFromProductID(product_id)
for k, v in pairs(Table_Deposit) do
if v.ProductID == product_id then
if v.Type == 1 then
return PanelConfig.ZenyShop
elseif v.Type == 2 or v.Type == 5 then
return PanelConfig.ZenyShopMonthlyVIP
elseif v.Type == 3 or v.Type == 4 then
return PanelConfig.ZenyShopGachaCoin
end
end
end
return nil
end
function AppStorePurchase:ShowCardByProductID(product_id)
local showCardIndex = nil
local monthlyVIPController = FuncZenyShop.Instance():GetMonthlyVIPController()
if monthlyVIPController.monthlyVIPShopItemConf == product_id then
showCardIndex = 0
else
local epVIPCards = monthlyVIPController.epVIPCards
for i = 1, #epVIPCards do
local epVIPCard = epVIPCards[i]
local productConfID = epVIPCard.id2
if(productConfID == nil or productConfID == 0)then
productConfID = epVIPCard.id1
end
local productID = Table_Deposit[productConfID].ProductID
if productID == product_id then
showCardIndex = i
break
end
end
end
monthlyVIPController.showCardIndex = showCardIndex
monthlyVIPController:ShowCard(monthlyVIPController.showCardIndex)
end
function AppStorePurchase:ClearCallbackAppStorePurchase()
FunctionXDSDK.Ins:SetCallbackAppStorePurchase(nil)
end
-- test