Files
SVSimServer/SVSim.BattleEngine/Engine/PaymentPC.cs
gamer147 824309ec44 feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the
AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed
the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
2026-06-05 20:30:59 -04:00

290 lines
8.2 KiB
C#

using System;
using System.Collections.Generic;
using Cute;
using Steamworks;
using UnityEngine;
using Wizard;
public class PaymentPC : PaymentBase
{
public List<string> ProductIdList;
public List<string> IdList;
public Dictionary<string, string> ProductPriceList;
public Dictionary<string, string> FormatProductPriceList;
public Dictionary<string, string> ProductNameList;
public Dictionary<string, string> ProductTextList;
public Dictionary<string, string> ProductPurchaseLimitList;
public Dictionary<string, string> ProductPurchaseNumberList;
public Dictionary<string, string> ProductCsvIdList;
public Dictionary<string, string> ProductImageNameList;
public Dictionary<string, bool> ProductIsSpecialShop;
public Dictionary<string, int> ProductCurrentPurchaseCount;
public Dictionary<string, int> ProductPurchaseLimitCount;
public Dictionary<string, string> ProductEndTime;
public string selectedStoreProductId;
private static PaymentPC instance;
private bool isCountTime;
private float timer;
protected Callback<MicroTxnAuthorizationResponse_t> m_MicroTxnAuthorizationResponse;
public PaymentUI paymentUI { get; private set; }
public event Action ProductListSucceeded;
public event Action ProductListFailed;
public event Action<string> FinishFailureEvent;
public event Action<NetworkTask.ResultCode> purchaseFinishSuccessEvent;
public event Action<NetworkTask.ResultCode> purchaseFinishHttpErrorEvent;
public event Action<int> purchaseFinishResultCodeErrorEvent;
public event Action purchaseRetryResultEvent;
public event Action ConsumePurchaseSucceeded;
private void Awake()
{
if (paymentUI == null)
{
paymentUI = new PaymentUI();
}
m_MicroTxnAuthorizationResponse = Callback<MicroTxnAuthorizationResponse_t>.Create(OnMicroTxnAuthorizationResponse);
}
private void OnMicroTxnAuthorizationResponse(MicroTxnAuthorizationResponse_t pCallback)
{
if (!Convert.ToBoolean(pCallback.m_bAuthorized))
{
return;
}
PaymentPCFinishTask paymentPCFinishTask = new PaymentPCFinishTask();
paymentPCFinishTask.SetParameter(selectedStoreProductId, pCallback.m_unAppID.ToString(), pCallback.m_ulOrderID.ToString());
StartCoroutine(Toolbox.NetworkManager.Connect(paymentPCFinishTask, delegate
{
string value = "";
ProductNameList.TryGetValue(selectedStoreProductId, out value);
if (!ProductIsSpecialShop[selectedStoreProductId])
{
paymentUI.PurchaseFinished(value);
}
if (this.ConsumePurchaseSucceeded != null)
{
this.ConsumePurchaseSucceeded();
}
}, paymentUI.PurchaseFailedPC));
}
private void Update()
{
if (isCountTime)
{
checkTimeOut();
}
SteamAPI.RunCallbacks();
}
public static PaymentPC GetInstance()
{
if (instance == null)
{
GameObject obj = new GameObject("PaymentPC");
UnityEngine.Object.DontDestroyOnLoad(obj);
instance = obj.AddComponent<PaymentPC>();
}
return instance;
}
private void OnItemListFailure(NetworkTask.ResultCode code)
{
Debug.LogError("OnItemListFailure" + code);
Debug.LogError("プロダクトIDリストリクエストが失敗しました。やり直してください。");
}
private void OnItemListResultCodeError(int code)
{
Debug.LogError("OnItemListResultCodeError" + code);
if (this.ProductListFailed != null)
{
this.ProductListFailed();
}
}
private void OnFinishResultCodeError(int resultCode)
{
Debug.LogError("OnFinishResultCodeError" + resultCode);
Debug.LogError("チェック不正です。");
if (this.purchaseFinishResultCodeErrorEvent != null)
{
this.purchaseFinishResultCodeErrorEvent(resultCode);
}
}
public override void purchaceStart(string ProductId, bool isFromAlert = false)
{
if (!isFromAlert)
{
IsAlertAgree = false;
}
bool isAlertOn = PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.PURCHASE_ALERT);
PaymentPCStartTask task = new PaymentPCStartTask();
task.SetParameter(ProductId, IsAlertAgree, isAlertOn);
task.SkipAllCuteResultCodeCheckErrorPopup();
StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
PurchasePC(ProductId, task);
}, delegate
{
}, delegate(int code)
{
if (code == 329)
{
if (isAlertOn)
{
SystemText systemText = Data.SystemText;
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetSize(DialogBase.Size.S);
dialogBase.SetTitleLabel(systemText.Get("ErrorHeader_0329"));
dialogBase.SetText(systemText.Get("Error_0329"));
dialogBase.SetButtonText(systemText.Get("Shop_0082"));
dialogBase.SetFadeButtonEnabled(flag: false);
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
dialogBase.SetPanelDepth(6000);
dialogBase.SetPanelSortingOrder(2);
dialogBase.SetButtonDelegate(new EventDelegate(delegate
{
CallPaymentStartFromAlert(ProductId);
}));
}
else
{
CallPaymentStartFromAlert(ProductId);
}
}
else
{
Toolbox.NetworkManager.NetworkUI.OpenCloseOnlyErrorPopUp(code);
}
}));
selectedStoreProductId = ProductId;
}
private void PurchasePC(string ProductId, PaymentPCStartTask task)
{
RefundWarningDialog.Start(task.NeedRefundWarningType, delegate
{
SteamMicroTxnInitTask steamMicroTxnInitTask = new SteamMicroTxnInitTask();
steamMicroTxnInitTask.SetParameter(ProductId);
StartCoroutine(Toolbox.NetworkManager.Connect(steamMicroTxnInitTask));
});
}
public void purchaceFinish(string ProductId)
{
PaymentPCFinishTask paymentPCFinishTask = new PaymentPCFinishTask();
paymentPCFinishTask.SetParameter(ProductId);
paymentPCFinishTask.SkipCuteTimeOutPopup();
StartCoroutine(Toolbox.NetworkManager.Connect(paymentPCFinishTask, delegate
{
string value = "";
ProductNameList.TryGetValue(ProductId, out value);
if (!ProductIsSpecialShop[ProductId])
{
paymentUI.PurchaseFinished(value);
}
if (this.ConsumePurchaseSucceeded != null)
{
this.ConsumePurchaseSucceeded();
}
}, paymentUI.PurchaseFailedPC));
}
public void initialize()
{
this.ProductListSucceeded = null;
this.ProductListFailed = null;
this.FinishFailureEvent = null;
this.purchaseFinishSuccessEvent = null;
this.purchaseFinishHttpErrorEvent = null;
this.purchaseFinishResultCodeErrorEvent = null;
this.purchaseRetryResultEvent = null;
this.ConsumePurchaseSucceeded = null;
ProductIdList = new List<string>();
IdList = new List<string>();
ProductNameList = new Dictionary<string, string>();
ProductPriceList = new Dictionary<string, string>();
FormatProductPriceList = new Dictionary<string, string>();
ProductTextList = new Dictionary<string, string>();
ProductPurchaseLimitList = new Dictionary<string, string>();
ProductPurchaseNumberList = new Dictionary<string, string>();
ProductCsvIdList = new Dictionary<string, string>();
ProductImageNameList = new Dictionary<string, string>();
ProductIsSpecialShop = new Dictionary<string, bool>();
ProductCurrentPurchaseCount = new Dictionary<string, int>();
ProductPurchaseLimitCount = new Dictionary<string, int>();
ProductEndTime = new Dictionary<string, string>();
PaymentPCItemListTask task = new PaymentPCItemListTask();
StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
if (this.ProductListSucceeded != null)
{
this.ProductListSucceeded();
}
}, OnItemListFailure, OnItemListResultCodeError));
}
public void finalize()
{
this.ProductListSucceeded = null;
this.ProductListFailed = null;
this.FinishFailureEvent = null;
this.purchaseFinishSuccessEvent = null;
this.purchaseFinishHttpErrorEvent = null;
this.purchaseFinishResultCodeErrorEvent = null;
this.purchaseRetryResultEvent = null;
this.ConsumePurchaseSucceeded = null;
Payment.finalize();
}
public void StartTimeCount()
{
isCountTime = true;
}
public void StopTimeCount()
{
isCountTime = false;
}
private void checkTimeOut()
{
timer += Time.deltaTime;
if (timer >= 30f)
{
timer = 0f;
paymentUI.StopLoading();
paymentUI.PurchaseTimeOut();
}
}
}