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.
469 lines
13 KiB
C#
469 lines
13 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Cute;
|
|
using UnityEngine;
|
|
using Wizard;
|
|
using Wizard.ErrorDialog;
|
|
|
|
public class SpecialCrystalDialog : MonoBehaviour
|
|
{
|
|
private const int TIME_LIMIT_ERROR_CODE = 4305;
|
|
|
|
private const float FLICK_MARGIN = 70f;
|
|
|
|
private List<string> _assetList = new List<string>();
|
|
|
|
[SerializeField]
|
|
private UITexture _tipsTexture;
|
|
|
|
[SerializeField]
|
|
private GameObject _jpnOnlyRoot;
|
|
|
|
[SerializeField]
|
|
private UIDragScrollView _dragScrollView;
|
|
|
|
[SerializeField]
|
|
private UIButton _fundSettlementButton;
|
|
|
|
[SerializeField]
|
|
private UIButton _legalButton;
|
|
|
|
[SerializeField]
|
|
private UILabel _priceLabel;
|
|
|
|
[SerializeField]
|
|
private UILabel _timeLimitLabel;
|
|
|
|
[SerializeField]
|
|
private UILabel _purchaseCountLabel;
|
|
|
|
[SerializeField]
|
|
private GameObject _buyFinishDialogPrefab;
|
|
|
|
[SerializeField]
|
|
private GameObject _rootObject;
|
|
|
|
[SerializeField]
|
|
private UIButton _arrowLeftButton;
|
|
|
|
[SerializeField]
|
|
private UIButton _arrowRightButton;
|
|
|
|
[SerializeField]
|
|
private GameObject _dragObject;
|
|
|
|
private string _defaultOpen = string.Empty;
|
|
|
|
private bool _isDragging;
|
|
|
|
private int _selectIndex;
|
|
|
|
private DialogBase _dialog;
|
|
|
|
private bool _finishGetProduct;
|
|
|
|
private static string _defaultOpenPageStatus = string.Empty;
|
|
|
|
private static GameObject _originalPrefab;
|
|
|
|
private static string _productName;
|
|
|
|
private static Action _saveOnCancel;
|
|
|
|
private static Action _saveOnFinish;
|
|
|
|
private static string saveScrollToProductId;
|
|
|
|
private static List<SpecialCrystalInfo> _specialCrystalInfo = null;
|
|
|
|
private static GameObject _finishDialogPrefab;
|
|
|
|
public static void Create(GameObject prefab, string scrollToProductId, Action onCancel, Action onFinish)
|
|
{
|
|
_originalPrefab = prefab;
|
|
_saveOnCancel = onCancel;
|
|
_saveOnFinish = onFinish;
|
|
saveScrollToProductId = scrollToProductId;
|
|
SystemText systemText = Wizard.Data.SystemText;
|
|
GameObject gameObject = UnityEngine.Object.Instantiate(prefab);
|
|
SpecialCrystalDialog specialDialog = gameObject.GetComponent<SpecialCrystalDialog>();
|
|
specialDialog._defaultOpen = _defaultOpenPageStatus;
|
|
_defaultOpenPageStatus = string.Empty;
|
|
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
|
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
|
|
dialogBase.SetSize(DialogBase.Size.M);
|
|
dialogBase.SetButtonText(systemText.Get("Dia_BuyCrystal_004_Button"), systemText.Get("MyPage_0054"));
|
|
dialogBase.onPushButton1 = delegate
|
|
{
|
|
specialDialog.OnClickBuyButton();
|
|
};
|
|
dialogBase.onPushButton2 = delegate
|
|
{
|
|
BuyCrystal.InstantiateCrystalDialog(scrollToProductId, onlyInputBirthday: false, onCancel, onFinish);
|
|
};
|
|
dialogBase.onCloseWithoutSelect = delegate
|
|
{
|
|
PaymentPC.GetInstance().finalize();
|
|
};
|
|
dialogBase.ClickSe_Btn2 = Se.TYPE.SYS_BTN_DECIDE;
|
|
dialogBase.SetDisp(inDisp: false);
|
|
dialogBase.gameObject.SetActive(value: false);
|
|
specialDialog._dialog = dialogBase;
|
|
specialDialog._rootObject.SetActive(value: false);
|
|
}
|
|
|
|
public static void SetDefaultOpenPage(string openPageStatus)
|
|
{
|
|
_defaultOpenPageStatus = openPageStatus;
|
|
}
|
|
|
|
private string CorrectPriceText(string price)
|
|
{
|
|
return Wizard.Data.SystemText.Get("Shop_0083") + "$" + price;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
UIManager.GetInstance().StartCoroutine(Initialize());
|
|
}
|
|
|
|
private IEnumerator Initialize()
|
|
{
|
|
_finishDialogPrefab = _buyFinishDialogPrefab;
|
|
UIManager.GetInstance().createInSceneCenterLoading();
|
|
bool oldBackKeyEnable = GameMgr.GetIns().GetInputMgr().isBackKeyEnable;
|
|
GameMgr.GetIns().GetInputMgr().isBackKeyEnable = false;
|
|
foreach (SpecialCrystalInfo item in Wizard.Data.Load.data._userCrystalCount.SpecialCrystalInfo)
|
|
{
|
|
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(item.DialogBGImageFileName, ResourcesManager.AssetLoadPathType.SpecialCrystal);
|
|
_assetList.Add(assetTypePath);
|
|
}
|
|
yield return StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroup(_assetList, null));
|
|
_ = Wizard.Data.SystemText;
|
|
PaymentPC paymentImpl = PaymentPC.GetInstance();
|
|
paymentImpl.initialize();
|
|
paymentImpl.ProductListSucceeded += OnSuccessGetProductList;
|
|
paymentImpl.ProductListFailed += OnFailedGetProductList;
|
|
while (!_finishGetProduct)
|
|
{
|
|
yield return null;
|
|
}
|
|
_specialCrystalInfo = new List<SpecialCrystalInfo>();
|
|
foreach (SpecialCrystalInfo item2 in Wizard.Data.Load.data._userCrystalCount.SpecialCrystalInfo)
|
|
{
|
|
if (paymentImpl.FormatProductPriceList.ContainsKey(item2.ProductId) && item2.RemainTime.Second > 0)
|
|
{
|
|
_specialCrystalInfo.Add(item2);
|
|
}
|
|
}
|
|
UIManager.GetInstance().closeInSceneCenterLoading();
|
|
_dialog.gameObject.SetActive(value: true);
|
|
_dialog.SetDisp(inDisp: true);
|
|
_dialog.SetObj(base.gameObject);
|
|
_rootObject.SetActive(value: true);
|
|
GameMgr.GetIns().GetInputMgr().isBackKeyEnable = oldBackKeyEnable;
|
|
if (!string.IsNullOrEmpty(_defaultOpen) && !_specialCrystalInfo.Exists((SpecialCrystalInfo info) => info.Status == _defaultOpen))
|
|
{
|
|
CloseDialogOnErrorFinish();
|
|
Dialog.Create(4305);
|
|
yield break;
|
|
}
|
|
if (_specialCrystalInfo.Count == 0)
|
|
{
|
|
CloseDialogOnErrorFinish();
|
|
BuyCrystal.InstantiateCrystalDialog(null, onlyInputBirthday: false, _saveOnCancel, _saveOnFinish);
|
|
yield break;
|
|
}
|
|
UpdateRemainTimeLabel();
|
|
UIEventListener.Get(_arrowLeftButton.gameObject).onClick = delegate
|
|
{
|
|
OnClickButtonLeft();
|
|
};
|
|
UIEventListener.Get(_arrowRightButton.gameObject).onClick = delegate
|
|
{
|
|
OnClickButtonRight();
|
|
};
|
|
if (_specialCrystalInfo.Count <= 1)
|
|
{
|
|
_arrowLeftButton.gameObject.SetActive(value: false);
|
|
_arrowRightButton.gameObject.SetActive(value: false);
|
|
}
|
|
_jpnOnlyRoot.gameObject.SetActive(value: false);
|
|
_dragScrollView.enabled = false;
|
|
InitializeDragEvent();
|
|
int page = 0;
|
|
for (int num = 0; num < _specialCrystalInfo.Count; num++)
|
|
{
|
|
if (_specialCrystalInfo[num].Status == _defaultOpen)
|
|
{
|
|
page = num;
|
|
break;
|
|
}
|
|
}
|
|
ChangeSelectSpecialCrystal(page);
|
|
}
|
|
|
|
private void CloseDialogOnErrorFinish()
|
|
{
|
|
base.gameObject.SetActive(value: false);
|
|
_dialog.SetDisp(inDisp: false);
|
|
_dialog.Close();
|
|
_specialCrystalInfo = null;
|
|
}
|
|
|
|
private void InitializeDragEvent()
|
|
{
|
|
if (_specialCrystalInfo.Count <= 1)
|
|
{
|
|
return;
|
|
}
|
|
UIEventListener.Get(_dragObject).onDragStart = delegate
|
|
{
|
|
_isDragging = true;
|
|
};
|
|
UIEventListener.Get(_dragObject).onDragEnd = delegate
|
|
{
|
|
_isDragging = false;
|
|
};
|
|
UIEventListener.Get(_dragObject).onDrag = delegate(GameObject obj, Vector2 delta)
|
|
{
|
|
if (delta.x >= 70f)
|
|
{
|
|
if (_isDragging)
|
|
{
|
|
OnClickButtonLeft();
|
|
_isDragging = false;
|
|
}
|
|
}
|
|
else if (delta.x <= -70f && _isDragging)
|
|
{
|
|
OnClickButtonRight();
|
|
_isDragging = false;
|
|
}
|
|
};
|
|
UIEventListener.Get(_dragObject).onScroll = delegate(GameObject obj, float delta)
|
|
{
|
|
if (delta > 0f)
|
|
{
|
|
if (_isDragging)
|
|
{
|
|
OnClickButtonLeft();
|
|
_isDragging = false;
|
|
}
|
|
}
|
|
else if (_isDragging)
|
|
{
|
|
OnClickButtonRight();
|
|
_isDragging = false;
|
|
}
|
|
};
|
|
}
|
|
|
|
private void UpdateRemainTimeLabel()
|
|
{
|
|
if (_specialCrystalInfo != null && _selectIndex <= _specialCrystalInfo.Count)
|
|
{
|
|
SpecialCrystalInfo specialCrystalInfo = _specialCrystalInfo[_selectIndex];
|
|
_timeLimitLabel.text = specialCrystalInfo.RemainTime.GetShowText();
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
UpdateRemainTimeLabel();
|
|
}
|
|
|
|
private void OnSuccessGetProductList()
|
|
{
|
|
_finishGetProduct = true;
|
|
ClearPaymentHandler();
|
|
}
|
|
|
|
private void OnFailedGetProductList()
|
|
{
|
|
_finishGetProduct = true;
|
|
ClearPaymentHandler();
|
|
BuyCrystal.PaymentListErrorDialog();
|
|
_dialog.Close();
|
|
}
|
|
|
|
private void ClearPaymentHandler()
|
|
{
|
|
PaymentPC instance = PaymentPC.GetInstance();
|
|
instance.ProductListSucceeded -= OnSuccessGetProductList;
|
|
instance.ProductListFailed -= OnFailedGetProductList;
|
|
}
|
|
|
|
private void OnClickFundSettingButton()
|
|
{
|
|
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
|
UIManager.GetInstance().WebViewHelper.OpenWebView(WebViewHelper.WebViewType.FUND_SETTLEMENT);
|
|
}
|
|
|
|
private void OnClickLegalButton()
|
|
{
|
|
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
|
UIManager.GetInstance().WebViewHelper.OpenWebView(WebViewHelper.WebViewType.LEGALTEXT);
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
Toolbox.ResourcesManager.RemoveAssetGroup(_assetList);
|
|
_assetList.Clear();
|
|
}
|
|
|
|
private void OnClickBuyButton()
|
|
{
|
|
if (PlayerStaticData.IsLootBoxRegulation(PlayerStaticData.LootBoxType.SPECIAL_CRYSTAL))
|
|
{
|
|
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
|
LootBoxDialogUtility.CreateLootBoxRegulationDialog(PlayerStaticData.LootBoxType.SPECIAL_CRYSTAL);
|
|
}
|
|
else if (CreateItemList.IsBirthdayNotInput())
|
|
{
|
|
ShowBirthdayInputDialog();
|
|
}
|
|
else
|
|
{
|
|
ShowPayment(_selectIndex);
|
|
}
|
|
}
|
|
|
|
private void ShowBirthdayInputDialog()
|
|
{
|
|
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
|
Action onFinish = delegate
|
|
{
|
|
OnDecideBirthday(_selectIndex);
|
|
};
|
|
bool onlyInputBirthday = true;
|
|
BuyCrystal.CreateBuyCrystal(isPlaySe: false, null, onlyInputBirthday, OnCancelBirthdayDialog, onFinish, isSpecialCrystal: true);
|
|
}
|
|
|
|
private static void OnCancelBirthdayDialog()
|
|
{
|
|
Create(_originalPrefab, saveScrollToProductId, _saveOnCancel, _saveOnFinish);
|
|
}
|
|
|
|
private static void OnDecideBirthday(int index)
|
|
{
|
|
ShowPayment(index);
|
|
}
|
|
|
|
private static void ShowPayment(int index)
|
|
{
|
|
SpecialCrystalInfo info = _specialCrystalInfo[index];
|
|
Action value = delegate
|
|
{
|
|
OnCunsumePurchageSuccess(info);
|
|
};
|
|
if (!PaymentPC.GetInstance().ProductPriceList.ContainsKey(info.ProductId))
|
|
{
|
|
Dialog.Create(4305);
|
|
return;
|
|
}
|
|
PaymentPC.GetInstance().purchaceStart(info.ProductId);
|
|
PaymentPC.GetInstance().ConsumePurchaseSucceeded += value;
|
|
}
|
|
|
|
private static void OnCunsumePurchageSuccess(SpecialCrystalInfo info)
|
|
{
|
|
OnFinishPayment(info);
|
|
}
|
|
|
|
private static void OnPurchageFinishSuccess(SpecialCrystalInfo info)
|
|
{
|
|
OnFinishPayment(info);
|
|
}
|
|
|
|
private static void OnFinishPayment(SpecialCrystalInfo info)
|
|
{
|
|
UIManager.GetInstance().StartCoroutine(OnFinishPaymentCoroutine(info));
|
|
}
|
|
|
|
private static IEnumerator OnFinishPaymentCoroutine(SpecialCrystalInfo info)
|
|
{
|
|
UIManager.GetInstance().OpenNotTouch();
|
|
SpecialCrystalTaskInfo task = new SpecialCrystalTaskInfo();
|
|
bool taskSuccess = false;
|
|
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
|
|
{
|
|
taskSuccess = true;
|
|
}));
|
|
while (!taskSuccess)
|
|
{
|
|
yield return null;
|
|
}
|
|
UIManager.GetInstance().offNotTouch();
|
|
ShowBuyFinishDialog(info);
|
|
}
|
|
|
|
private static void ShowBuyFinishDialog(SpecialCrystalInfo info)
|
|
{
|
|
Action value = delegate
|
|
{
|
|
OnPurchageFinishSuccess(info);
|
|
};
|
|
PaymentImpl.GetInstance().ConsumePurchaseSucceeded -= value;
|
|
if (!PaymentImpl.GetInstance().IsRefundedReceipt)
|
|
{
|
|
SpecialCrystalBuyFinishDialog.Create(_finishDialogPrefab, info, _productName);
|
|
}
|
|
}
|
|
|
|
private void OnClickButtonLeft()
|
|
{
|
|
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_SLIDE_BTN);
|
|
_selectIndex--;
|
|
if (_selectIndex < 0)
|
|
{
|
|
_selectIndex = _specialCrystalInfo.Count - 1;
|
|
}
|
|
ChangeSelectSpecialCrystal(_selectIndex);
|
|
}
|
|
|
|
private void OnClickButtonRight()
|
|
{
|
|
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_SLIDE_BTN);
|
|
_selectIndex++;
|
|
if (_selectIndex >= _specialCrystalInfo.Count)
|
|
{
|
|
_selectIndex = 0;
|
|
}
|
|
ChangeSelectSpecialCrystal(_selectIndex);
|
|
}
|
|
|
|
private void ChangeSelectSpecialCrystal(int page)
|
|
{
|
|
_selectIndex = page;
|
|
PaymentPC instance = PaymentPC.GetInstance();
|
|
SpecialCrystalInfo specialCrystalInfo = _specialCrystalInfo[_selectIndex];
|
|
Dictionary<string, string> formatProductPriceList = instance.FormatProductPriceList;
|
|
_dialog.SetTitleLabel(specialCrystalInfo.DialogTitle);
|
|
if (formatProductPriceList != null)
|
|
{
|
|
bool flag = false;
|
|
foreach (KeyValuePair<string, string> item in formatProductPriceList)
|
|
{
|
|
if (item.Key == specialCrystalInfo.ProductId)
|
|
{
|
|
_priceLabel.text = CorrectPriceText(item.Value);
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!flag)
|
|
{
|
|
_priceLabel.text = string.Empty;
|
|
}
|
|
else
|
|
{
|
|
_productName = instance.ProductNameList[specialCrystalInfo.ProductId];
|
|
}
|
|
_purchaseCountLabel.text = Wizard.Data.SystemText.Get("MyPage_0060", specialCrystalInfo.AvailablePurchaseCount.ToString());
|
|
}
|
|
_tipsTexture.mainTexture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(specialCrystalInfo.DialogBGImageFileName, ResourcesManager.AssetLoadPathType.SpecialCrystal, isfetch: true)) as Texture;
|
|
}
|
|
}
|