feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)
Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
This commit is contained in:
279
SVSim.BattleEngine/Engine/Wizard/ItemPurchase.cs
Normal file
279
SVSim.BattleEngine/Engine/Wizard/ItemPurchase.cs
Normal file
@@ -0,0 +1,279 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard.Scripts.Network.Data.TaskData.ItemPurchase;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class ItemPurchase : MonoBehaviour
|
||||
{
|
||||
private const int PRODUCT_SCROLL_OBJECT_NUM = 5;
|
||||
|
||||
private const int DEPTH_PURCHASE_SUCCESS_DIALOG = 100;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _redEtherLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _premierOrbOrbPieceLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIScrollView _scrollView;
|
||||
|
||||
[SerializeField]
|
||||
private UIWrapContent _wrapContent;
|
||||
|
||||
[SerializeField]
|
||||
private UIScrollBarWrapContent _scrollBarWrapContent;
|
||||
|
||||
[SerializeField]
|
||||
private WrapContentsScrollBarSize _wrapContentScrollBarSize;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _itemPlateOriginal;
|
||||
|
||||
[SerializeField]
|
||||
private PurchaseConfirm _prefabConfirmDialog;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _labelNoItem;
|
||||
|
||||
private List<ItemPurchaseData> _itemDataList;
|
||||
|
||||
private List<ItemPurchasePlate> _plateList = new List<ItemPurchasePlate>();
|
||||
|
||||
private List<string> _loadedResourceList = new List<string>();
|
||||
|
||||
private ItemPurchaseData _purchaseItemData;
|
||||
|
||||
public void Init(Action onInitFinCallBack)
|
||||
{
|
||||
_labelNoItem.gameObject.SetActive(value: false);
|
||||
_itemPlateOriginal.gameObject.SetActive(value: false);
|
||||
_scrollBarWrapContent.m_WrapContents = _wrapContent;
|
||||
StartConnectItemPurchaseInfo(delegate
|
||||
{
|
||||
_itemDataList = Data.ItemPurchaseInfo.itemPurchaseList;
|
||||
CreateItemView(onInitFinCallBack);
|
||||
});
|
||||
UserItemCountUpdate();
|
||||
}
|
||||
|
||||
private void CreateItemView(Action onFinCallBack = null)
|
||||
{
|
||||
if (_itemDataList.Count <= 0)
|
||||
{
|
||||
_labelNoItem.gameObject.SetActive(value: true);
|
||||
_scrollView.gameObject.SetActive(value: false);
|
||||
_scrollBarWrapContent.gameObject.SetActive(value: false);
|
||||
onFinCallBack.Call();
|
||||
return;
|
||||
}
|
||||
_labelNoItem.gameObject.SetActive(value: false);
|
||||
_scrollView.gameObject.SetActive(value: true);
|
||||
_scrollBarWrapContent.gameObject.SetActive(value: true);
|
||||
StartCoroutine(LoadImages(delegate
|
||||
{
|
||||
StartCoroutine(CreateScrollView(onFinCallBack));
|
||||
}));
|
||||
}
|
||||
|
||||
private void StartConnectItemPurchaseInfo(Action<NetworkTask.ResultCode> callbackOnSuccess)
|
||||
{
|
||||
ItemPurchaseInfoTask task = new ItemPurchaseInfoTask();
|
||||
StartCoroutine(Toolbox.NetworkManager.Connect(task, callbackOnSuccess));
|
||||
}
|
||||
|
||||
private IEnumerator LoadImages(Action callBack = null)
|
||||
{
|
||||
ResourcesManager resourcesManager = Toolbox.ResourcesManager;
|
||||
List<string> assetList = new List<string>();
|
||||
for (int i = 0; i < _itemDataList.Count; i++)
|
||||
{
|
||||
ItemPurchaseData itemPurchaseData = _itemDataList[i];
|
||||
string assetTypePath = resourcesManager.GetAssetTypePath(itemPurchaseData.textureName, ResourcesManager.AssetLoadPathType.Item);
|
||||
if (!assetList.Contains(assetTypePath) && !_loadedResourceList.Contains(assetTypePath))
|
||||
{
|
||||
assetList.Add(assetTypePath);
|
||||
}
|
||||
if (IsCardPackTicket(itemPurchaseData.require_item_type, itemPurchaseData.RequireUserGoodsId))
|
||||
{
|
||||
string assetTypePath2 = resourcesManager.GetAssetTypePath($"card_pack_{itemPurchaseData.RequireUserGoodsId}_icon", ResourcesManager.AssetLoadPathType.ShopCardPack);
|
||||
if (!assetList.Contains(assetTypePath2) && !_loadedResourceList.Contains(assetTypePath2))
|
||||
{
|
||||
assetList.Add(assetTypePath2);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (assetList.Count > 0)
|
||||
{
|
||||
yield return StartCoroutine(resourcesManager.LoadAssetGroupAsync(assetList, null));
|
||||
_loadedResourceList.AddRange(assetList);
|
||||
}
|
||||
callBack.Call();
|
||||
}
|
||||
|
||||
private void UnloadImages()
|
||||
{
|
||||
if (_loadedResourceList != null)
|
||||
{
|
||||
Toolbox.ResourcesManager.RemoveAssetGroup(_loadedResourceList);
|
||||
_loadedResourceList = null;
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator CreateScrollView(Action onFinishCallback = null)
|
||||
{
|
||||
_wrapContent.gameObject.SetActive(value: false);
|
||||
if (_plateList.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < _plateList.Count; i++)
|
||||
{
|
||||
UnityEngine.Object.Destroy(_plateList[i].gameObject);
|
||||
}
|
||||
_plateList.Clear();
|
||||
}
|
||||
if (_itemDataList.Count == 1)
|
||||
{
|
||||
_wrapContent.enabled = false;
|
||||
ItemPurchasePlate component = NGUITools.AddChild(_scrollView.gameObject, _itemPlateOriginal).GetComponent<ItemPurchasePlate>();
|
||||
component._buyBtnCallBack = OnPushBuyButton;
|
||||
component.SetData(0);
|
||||
_plateList.Add(component);
|
||||
}
|
||||
else
|
||||
{
|
||||
_wrapContent.enabled = true;
|
||||
for (int j = 0; j < _itemDataList.Count && j < 5; j++)
|
||||
{
|
||||
ItemPurchasePlate component2 = NGUITools.AddChild(_wrapContent.gameObject, _itemPlateOriginal).GetComponent<ItemPurchasePlate>();
|
||||
component2._buyBtnCallBack = OnPushBuyButton;
|
||||
_plateList.Add(component2);
|
||||
}
|
||||
}
|
||||
yield return null;
|
||||
for (int k = 0; k < _plateList.Count; k++)
|
||||
{
|
||||
_plateList[k].gameObject.SetActive(value: true);
|
||||
}
|
||||
_wrapContent.minIndex = -(_itemDataList.Count - 1);
|
||||
_wrapContent.maxIndex = 0;
|
||||
_wrapContent.onInitializeItem = OnInitializeItem;
|
||||
_wrapContent.gameObject.SetActive(value: true);
|
||||
ResetScrollView();
|
||||
onFinishCallback.Call();
|
||||
}
|
||||
|
||||
private void ResetScrollView()
|
||||
{
|
||||
_wrapContentScrollBarSize.ContentUpdate();
|
||||
_wrapContent.SortBasedOnScrollMovement();
|
||||
_scrollView.ResetPosition();
|
||||
_wrapContent.WrapContent();
|
||||
}
|
||||
|
||||
private void OnInitializeItem(GameObject go, int wrapIndex, int realIndex)
|
||||
{
|
||||
int num = -realIndex;
|
||||
if (num >= _itemDataList.Count || num < 0)
|
||||
{
|
||||
go.SetActive(value: false);
|
||||
return;
|
||||
}
|
||||
go.SetActive(value: true);
|
||||
go.GetComponent<ItemPurchasePlate>().SetData(num);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
UnloadImages();
|
||||
}
|
||||
|
||||
private void OnPushBuyButton(ItemPurchaseData itemData)
|
||||
{
|
||||
if (itemData != null)
|
||||
{
|
||||
DialogBase dialogBase = ShopCommonUtility.CreateBasePopupPurchaseConfirm(new EventDelegate(delegate
|
||||
{
|
||||
_purchaseItemData = itemData;
|
||||
ItemPurchaseBuyTask itemPurchaseBuyTask = new ItemPurchaseBuyTask();
|
||||
itemPurchaseBuyTask.SetParameter(itemData.purchase_id, itemData.rest);
|
||||
StartCoroutine(Toolbox.NetworkManager.Connect(itemPurchaseBuyTask, OnSuccessItemPurchaseBuy));
|
||||
}));
|
||||
PurchaseConfirm purchaseConfirm = UnityEngine.Object.Instantiate(_prefabConfirmDialog);
|
||||
dialogBase.SetObj(purchaseConfirm.gameObject);
|
||||
dialogBase.SetTitleLabel(Data.SystemText.Get("Shop_0135"));
|
||||
string purchaseText = Data.SystemText.Get("Shop_0101", itemData.purchase_name);
|
||||
int haveUserGoods = PlayerStaticData.GetHaveUserGoods(itemData.require_item_type, itemData.RequireUserGoodsId);
|
||||
if (IsCardPackTicket(itemData.require_item_type, itemData.RequireUserGoodsId))
|
||||
{
|
||||
Texture texture = Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath($"card_pack_{itemData.RequireUserGoodsId}_icon", ResourcesManager.AssetLoadPathType.ShopCardPack, isfetch: true)) as Texture;
|
||||
purchaseConfirm.SetConfirmDialog(itemData.require_item_num, purchaseText, haveUserGoods, itemData.require_item_type, itemData.RequireUserGoodsId, null, texture);
|
||||
}
|
||||
else
|
||||
{
|
||||
purchaseConfirm.SetConfirmDialog(itemData.require_item_num, purchaseText, haveUserGoods, itemData.require_item_type, itemData.RequireUserGoodsId, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsCardPackTicket(UserGoods.Type itemType, long userGoodsId)
|
||||
{
|
||||
if (itemType != UserGoods.Type.Item)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (Item.GetItemType(itemType, (int)userGoodsId) == Item.Type.CardPackTicket)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void OnSuccessItemPurchaseBuy(NetworkTask.ResultCode e)
|
||||
{
|
||||
MyPageMenu.Instance.UpdateCrystalCount();
|
||||
MyPageMenu.Instance.UpdateRupyCount();
|
||||
ShopCommonUtility.CreatePurchaseSuccess(_purchaseItemData.purchase_name).SetPanelDepth(100);
|
||||
List<ItemPurchaseData> oldItemDataList = new List<ItemPurchaseData>(_itemDataList);
|
||||
StartConnectItemPurchaseInfo(delegate
|
||||
{
|
||||
bool flag = false;
|
||||
if (oldItemDataList.Count != _itemDataList.Count)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < _itemDataList.Count; i++)
|
||||
{
|
||||
if (oldItemDataList[i].purchase_id != _itemDataList[i].purchase_id)
|
||||
{
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
CreateItemView();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int j = 0; j < _plateList.Count; j++)
|
||||
{
|
||||
_plateList[j].UpdatePlate();
|
||||
}
|
||||
}
|
||||
UserItemCountUpdate();
|
||||
});
|
||||
}
|
||||
|
||||
private void UserItemCountUpdate()
|
||||
{
|
||||
_redEtherLabel.text = PlayerStaticData.UserRedEtherCount.ToString();
|
||||
_premierOrbOrbPieceLabel.text = PlayerStaticData.GetItemNum(1001).ToString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user