Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/SubClassSelectDialog.cs
gamer147 957af3d1ec 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.
2026-06-05 17:22:20 -04:00

116 lines
4.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Cute;
using UnityEngine;
namespace Wizard;
public class SubClassSelectDialog : MonoBehaviour
{
[SerializeField]
private UIGrid _subClassButtonGrid;
[SerializeField]
private ClassSelectionButton _classButtonParts;
[SerializeField]
private GameObject _selectMarkSubClass;
private ClassSelectionButton _firstSelectClassButton;
private List<string> _loadPathList = new List<string>();
public ClassCharacterMasterData SelectCharaMasterData { get; private set; }
public static DialogBase Create(DeckData srcDeck, SubClassSelectDialog prefab, List<int> usedClass, Action<int> onClickButton1)
{
UIManager.GetInstance().createInSceneCenterLoading();
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetSize(DialogBase.Size.M);
dialogBase.SetTitleLabel(Data.SystemText.Get("Card_0282"));
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
dialogBase.SetButtonText(Data.SystemText.Get("Card_0284"));
dialogBase.SetPanelDepth(100);
SubClassSelectDialog subClassSelectParts = UnityEngine.Object.Instantiate(prefab.gameObject).GetComponent<SubClassSelectDialog>();
dialogBase.SetObj(subClassSelectParts.gameObject);
UIManager.GetInstance().StartCoroutine(subClassSelectParts.Init(srcDeck, usedClass, delegate
{
UIManager.GetInstance().closeInSceneCenterLoading();
}));
dialogBase.onPushButton1 = delegate
{
onClickButton1.Call(subClassSelectParts.SelectCharaMasterData.class_id);
};
return dialogBase;
}
private IEnumerator Init(DeckData srcDeck, List<int> usedClass, Action onComplete)
{
int num = 9;
_selectMarkSubClass.SetActive(value: false);
_classButtonParts.gameObject.SetActive(value: false);
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
List<ClassCharacterMasterData> classCharacterMasterDatas = new List<ClassCharacterMasterData>();
for (int i = 1; i < num; i++)
{
classCharacterMasterDatas.Add(dataMgr.GetCharaPrmByClassId(i));
}
ResourcesManager resMgr = Toolbox.ResourcesManager;
foreach (ClassCharacterMasterData item in classCharacterMasterDatas)
{
_loadPathList.Add(resMgr.GetAssetTypePath(item.skin_id.ToString(), ResourcesManager.AssetLoadPathType.ClassCharaButton));
}
_loadPathList.Add(resMgr.GetAssetTypePath("empty", ResourcesManager.AssetLoadPathType.ClassCharaButton));
yield return UIManager.GetInstance().StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(_loadPathList, null));
foreach (ClassCharacterMasterData item2 in classCharacterMasterDatas)
{
if (item2.class_id != srcDeck.GetDeckClassID())
{
GameObject obj = NGUITools.AddChild(_subClassButtonGrid.gameObject, _classButtonParts.gameObject);
bool flag = usedClass.Contains(item2.class_id);
ClassSelectionButton component = obj.GetComponent<ClassSelectionButton>();
component.Init(item2, resMgr.LoadObject<Texture>(resMgr.GetAssetTypePath(item2.skin_id.ToString(), ResourcesManager.AssetLoadPathType.ClassCharaButton, isfetch: true)), OnClickClassButton, isShowStoryClearLabel: false, flag, showNotificationIcon: false);
obj.SetActive(value: true);
if (_firstSelectClassButton == null && !flag)
{
_firstSelectClassButton = component;
}
}
}
_subClassButtonGrid.Reposition();
SetSelection(_firstSelectClassButton);
_selectMarkSubClass.SetActive(value: true);
onComplete.Call();
}
private void OnClickClassButton(ClassSelectionButton classButton)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_TOGGLE_ON);
SelectSubClass(classButton);
}
private void SelectSubClass(ClassSelectionButton classButton)
{
if (SelectCharaMasterData != classButton.ClassCharacterMasterData)
{
SetSelection(classButton);
}
}
private void SetSelection(ClassSelectionButton classButton)
{
SelectCharaMasterData = classButton.ClassCharacterMasterData;
_selectMarkSubClass.transform.position = classButton.transform.position;
}
private void OnDestroy()
{
if (_loadPathList.Count > 0)
{
Toolbox.ResourcesManager.RemoveAssetGroup(_loadPathList);
_loadPathList.Clear();
}
}
}