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:
235
SVSim.BattleEngine/Engine/Wizard/ArenaConfigDialog.cs
Normal file
235
SVSim.BattleEngine/Engine/Wizard/ArenaConfigDialog.cs
Normal file
@@ -0,0 +1,235 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class ArenaConfigDialog : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UITexture[] _sleeveTextureListTwoPick;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _sleeveChangeButtonTwoPick;
|
||||
|
||||
[SerializeField]
|
||||
private UIToggle _usePremiumCardToggleTwoPick;
|
||||
|
||||
[SerializeField]
|
||||
private FilteringSleeveSelection _sleeveSelectionPrefab;
|
||||
|
||||
private const int SLEEVE_SELECTION_DIALOG_DEPTH = 400;
|
||||
|
||||
private const long INVALID_SLEEVE_ID = -1L;
|
||||
|
||||
private List<long> _loadedSleeveIdList = new List<long>();
|
||||
|
||||
private List<string> _loadedSleeveTexturePathList = new List<string>();
|
||||
|
||||
private FilteringImageSelection _sleeveSelection;
|
||||
|
||||
private long _oldSleeveId = -1L;
|
||||
|
||||
private bool _startUsePremiumCardToggleTwoPick;
|
||||
|
||||
private bool _isFirstToggleChange = true;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
UIManager.GetInstance().createInSceneCenterLoading();
|
||||
bool twoPickSleeveLoading = true;
|
||||
UIEventListener.Get(_sleeveChangeButtonTwoPick.gameObject).onClick = OnClickSleeveChangeButtonTwoPick;
|
||||
_isFirstToggleChange = true;
|
||||
_usePremiumCardToggleTwoPick.value = Data.Load.data._challengeConfig.UseTwoPickPremiumCard;
|
||||
_usePremiumCardToggleTwoPick.onChange.Add(new EventDelegate(OnChangePremiumCardToggle));
|
||||
_startUsePremiumCardToggleTwoPick = Data.Load.data._challengeConfig.UseTwoPickPremiumCard;
|
||||
UIManager.SetObjectToGrey(_usePremiumCardToggleTwoPick.gameObject, Data.ArenaData.TwoPickData.isJoin);
|
||||
LoadSleeve(GetCurrentSleeveId(DataMgr.BattleType.ColosseumTwoPick), delegate
|
||||
{
|
||||
StartCoroutine(UpdateSleeveTexture(DataMgr.BattleType.ColosseumTwoPick));
|
||||
twoPickSleeveLoading = false;
|
||||
if (!twoPickSleeveLoading)
|
||||
{
|
||||
UIManager.GetInstance().closeInSceneCenterLoading();
|
||||
}
|
||||
});
|
||||
InitSleeveSelection();
|
||||
}
|
||||
|
||||
public void Final()
|
||||
{
|
||||
if (_startUsePremiumCardToggleTwoPick != Data.Load.data._challengeConfig.UseTwoPickPremiumCard)
|
||||
{
|
||||
ArenaConfigUpdateTask arenaConfigUpdateTask = new ArenaConfigUpdateTask();
|
||||
arenaConfigUpdateTask.SetParameter(Data.Load.data._challengeConfig.UseTwoPickPremiumCard, Data.Load.data._challengeConfig.TwoPickSleeveId);
|
||||
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(arenaConfigUpdateTask));
|
||||
}
|
||||
UnloadAllSleeves();
|
||||
}
|
||||
|
||||
private void OnClickSleeveChangeButtonTwoPick(GameObject g)
|
||||
{
|
||||
OnClickSleeveChangeButton(DataMgr.BattleType.ColosseumTwoPick);
|
||||
}
|
||||
|
||||
private void OnClickSleeveChangeButton(DataMgr.BattleType type)
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
OpenSleeveSelectionDialog(type);
|
||||
}
|
||||
|
||||
private void OnChangePremiumCardToggle()
|
||||
{
|
||||
if (!_isFirstToggleChange)
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(_usePremiumCardToggleTwoPick.value ? Se.TYPE.SYS_TOGGLE_ON : Se.TYPE.SYS_TOGGLE_OFF);
|
||||
}
|
||||
_isFirstToggleChange = false;
|
||||
Data.Load.data._challengeConfig.UseTwoPickPremiumCard = _usePremiumCardToggleTwoPick.value;
|
||||
}
|
||||
|
||||
private void LoadSleeve(long sleeveId, Action onFinish = null)
|
||||
{
|
||||
List<string> first = CollectSleeveResourcePaths(sleeveId);
|
||||
List<string> loadPathList = first.Except(_loadedSleeveTexturePathList).ToList();
|
||||
if (loadPathList.Count == 0)
|
||||
{
|
||||
onFinish.Call();
|
||||
return;
|
||||
}
|
||||
StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(loadPathList, delegate
|
||||
{
|
||||
_loadedSleeveIdList.Add(sleeveId);
|
||||
_loadedSleeveTexturePathList.AddRange(loadPathList);
|
||||
onFinish.Call();
|
||||
}));
|
||||
}
|
||||
|
||||
private void UnloadAllSleeves()
|
||||
{
|
||||
Toolbox.ResourcesManager.RemoveAssetGroup(_loadedSleeveTexturePathList);
|
||||
_loadedSleeveIdList.Clear();
|
||||
_loadedSleeveTexturePathList.Clear();
|
||||
}
|
||||
|
||||
private List<string> CollectSleeveResourcePaths(long sleeveId)
|
||||
{
|
||||
sleeveId = Toolbox.ResourcesManager.GetExistingSleeveId(sleeveId);
|
||||
string path = sleeveId.ToString();
|
||||
List<string> loadPath = new List<string>();
|
||||
loadPath.Add(Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.SleeveTexture));
|
||||
Sleeve sleeve = Data.Master.SleeveMgr.Get(sleeveId);
|
||||
if (sleeve.IsPremiumSleeve)
|
||||
{
|
||||
UIManager.GetInstance().getUIBase_CardManager().AddPremireSleevePath(ref loadPath, sleeve);
|
||||
}
|
||||
return loadPath;
|
||||
}
|
||||
|
||||
private void InitSleeveSelection()
|
||||
{
|
||||
_sleeveSelection = NGUITools.AddChild(base.gameObject, _sleeveSelectionPrefab.gameObject).GetComponent<FilteringImageSelection>();
|
||||
_sleeveSelection.gameObject.SetActive(value: false);
|
||||
ResourcesManager resourcesManager = Toolbox.ResourcesManager;
|
||||
List<Sleeve> acquiredList = Data.Master.SleeveMgr.GetAcquiredList();
|
||||
List<SleeveCategory> list = Data.Master.SleeveCategoryIdDic.Values.OrderBy((SleeveCategory category) => category.Id).ToList();
|
||||
_sleeveSelection.Initialize(acquiredList.Count, list.Count);
|
||||
foreach (SleeveCategory item in list)
|
||||
{
|
||||
_sleeveSelection.AddSeries(item.Id, item.Name);
|
||||
}
|
||||
foreach (Sleeve sleeve in acquiredList)
|
||||
{
|
||||
string key = sleeve.sleeve_id.ToString();
|
||||
long existingSleeveId = Toolbox.ResourcesManager.GetExistingSleeveId(sleeve.sleeve_id);
|
||||
Sleeve sleeve2 = Data.Master.SleeveMgr.Get(existingSleeveId);
|
||||
List<string> loadPath = new List<string>();
|
||||
loadPath.Add(resourcesManager.GetAssetTypePath(existingSleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture));
|
||||
if (sleeve2.IsPremiumSleeve)
|
||||
{
|
||||
UIManager.GetInstance().getUIBase_CardManager().AddPremireSleevePath(ref loadPath, sleeve2);
|
||||
}
|
||||
_sleeveSelection.AddItem(key, sleeve._categoryId, isSelectable: true, loadPath, null, isDisplaySprite: false, sleeve.sleeve_name, null, () => sleeve.IsNew, delegate
|
||||
{
|
||||
Data.Master.SleeveMgr.UnsetNew(sleeve.sleeve_id);
|
||||
}, null, null, sleeve.IsFavorite);
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenSleeveSelectionDialog(DataMgr.BattleType type)
|
||||
{
|
||||
_oldSleeveId = GetCurrentSleeveId(type);
|
||||
_sleeveSelection.SelectItemWithKey(GetCurrentSleeveId(type).ToString());
|
||||
UIManager.GetInstance().createInSceneCenterLoading();
|
||||
DialogBase dialogBase = DialogBase.CreateFilteringImageSelectionDialog(_sleeveSelection, "Card_0146");
|
||||
dialogBase.SetPanelDepth(400);
|
||||
dialogBase.onPushButton1 = (Action)Delegate.Combine(dialogBase.onPushButton1, (Action)delegate
|
||||
{
|
||||
if (long.TryParse(_sleeveSelection.GetSelectedItemKey(), out var id) && id != _oldSleeveId)
|
||||
{
|
||||
LoadSleeve(id);
|
||||
SleeveConfigUpdate(type, id, delegate(NetworkTask.ResultCode code)
|
||||
{
|
||||
OnSuccessChangeSleeve(code, type, id);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void SleeveConfigUpdate(DataMgr.BattleType type, long id, Action<NetworkTask.ResultCode> callBack = null)
|
||||
{
|
||||
ArenaConfigUpdateTask arenaConfigUpdateTask = new ArenaConfigUpdateTask();
|
||||
long useChallenge2pickSleeveId = ((type == DataMgr.BattleType.ColosseumTwoPick) ? id : Data.Load.data._challengeConfig.TwoPickSleeveId);
|
||||
arenaConfigUpdateTask.SetParameter(Data.Load.data._challengeConfig.UseTwoPickPremiumCard, useChallenge2pickSleeveId);
|
||||
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(arenaConfigUpdateTask, callBack));
|
||||
}
|
||||
|
||||
private void OnSuccessChangeSleeve(NetworkTask.ResultCode code, DataMgr.BattleType type, long id)
|
||||
{
|
||||
SetCurrentSleeveId(type, id);
|
||||
StartCoroutine(UpdateSleeveTexture(type));
|
||||
}
|
||||
|
||||
private IEnumerator UpdateSleeveTexture(DataMgr.BattleType battleType)
|
||||
{
|
||||
long sleeveId = GetCurrentSleeveId(battleType);
|
||||
while (!_loadedSleeveIdList.Contains(sleeveId))
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
UITexture[] currentSleeveTextureList = GetCurrentSleeveTextureList(battleType);
|
||||
for (int i = 0; i < currentSleeveTextureList.Length; i++)
|
||||
{
|
||||
UIManager.GetInstance().getUIBase_CardManager().SetSleeveTextureWithoutPremium(currentSleeveTextureList[i], sleeveId);
|
||||
}
|
||||
}
|
||||
|
||||
private long GetCurrentSleeveId(DataMgr.BattleType battleType)
|
||||
{
|
||||
if (battleType == DataMgr.BattleType.ColosseumTwoPick)
|
||||
{
|
||||
return Data.Load.data._challengeConfig.TwoPickSleeveId;
|
||||
}
|
||||
return -1L;
|
||||
}
|
||||
|
||||
private void SetCurrentSleeveId(DataMgr.BattleType battleType, long sleeveId)
|
||||
{
|
||||
if (battleType == DataMgr.BattleType.ColosseumTwoPick)
|
||||
{
|
||||
Data.Load.data._challengeConfig.TwoPickSleeveId = sleeveId;
|
||||
}
|
||||
}
|
||||
|
||||
private UITexture[] GetCurrentSleeveTextureList(DataMgr.BattleType battleType)
|
||||
{
|
||||
if (battleType == DataMgr.BattleType.ColosseumTwoPick)
|
||||
{
|
||||
return _sleeveTextureListTwoPick;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user