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.
This commit is contained in:
gamer147
2026-06-05 20:30:59 -04:00
parent 78f310c2b3
commit 824309ec44
472 changed files with 55870 additions and 0 deletions

View File

@@ -0,0 +1,187 @@
using System;
using System.Collections.Generic;
using Cute;
using UnityEngine;
namespace Wizard;
public class MultiDeckSelectDialog : MonoBehaviour
{
private int _deckCount;
private List<DeckData> _deckList;
private DeckSelectUIDialog _deckSelectDialog;
private int _deckIndex;
private const int CARD_VIEW_DEPTH_OFFSET = 800;
public Action OnClose;
public Action<List<DeckData>> OnDecide { get; set; }
public static MultiDeckSelectDialog Create(int deckCount, Format format, string deckListHeader)
{
MultiDeckSelectDialog multiDeckSelectDialog = new GameObject().AddComponent<MultiDeckSelectDialog>();
multiDeckSelectDialog.Initialize(deckCount, format, deckListHeader);
return multiDeckSelectDialog;
}
private void Initialize(int deckCount, Format format, string deckListHeader)
{
_deckCount = deckCount;
_deckList = new List<DeckData>();
for (int i = 0; i < deckCount; i++)
{
_deckList.Add(null);
}
DeckInfoTask task = new DeckInfoTask();
task.SetParameter(format);
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
_deckSelectDialog = DeckSelectUIDialog.Create(deckListHeader, task.DeckGroupListData, format, DeckSelectUIDialog.eFormatChangeUIType.SingleFormat, isVisibleCreateNew: false, OnSelectDeck, new DeckSelectUI.InitOptions
{
OnUpdateDeckUICustomize = OnUpDateDeckUICustomize
});
}));
}
private void OnSelectDeck(DialogBase dialogDeckList, DeckData deck)
{
int num = SearchDeckIndex(deck);
if (num >= 0)
{
_deckList[num] = null;
for (int i = num + 1; i < _deckList.Count; i++)
{
_deckList[i - 1] = _deckList[i];
_deckList[i] = null;
}
_deckIndex--;
}
else
{
_deckList[_deckIndex] = deck;
_deckIndex++;
if (_deckIndex >= _deckCount)
{
string text = Data.SystemText.Get("RoomBattle_0091");
text += "\n\n";
CompleteDeckDecideDialog completeDeckDecideDialog = CompleteDeckDecideDialog.CreateForMultiDeck(dialogDeckList, text, showSimpleStageOption: false, OnDecideDeckList, OnCancelDeckList);
DeckDecisionUI decisionUI = completeDeckDecideDialog.DecisionUI;
decisionUI.OptionLabel.text = Data.SystemText.Get("Gathering_0027");
if (_deckCount == 1)
{
DialogBase dialog = completeDeckDecideDialog.Dialog;
dialog.SetButtonText(null, Data.SystemText.Get("Card_0083"));
dialog.onPushButton2 = decisionUI.OnClickCreateCardList;
dialog.ClickSe_Btn2 = Se.TYPE.SYS_BTN_DECIDE;
dialog.isNotCloseWindowButton2 = true;
decisionUI.SetDeckData(deck, null);
decisionUI.DeckName = deck.GetDeckName();
decisionUI.CardListCustomize = delegate(UICardList uiCardList)
{
uiCardList.SetPanelDepthOffset(800);
UIPanel[] componentsInChildren = uiCardList.CardDetail.gameObject.GetComponentsInChildren<UIPanel>(includeInactive: true);
for (int j = 0; j < componentsInChildren.Length; j++)
{
componentsInChildren[j].depth += 800;
}
};
}
}
}
_deckSelectDialog.UpdateAllDeckUICurrentPage();
}
private void OnDecideDeckList()
{
OnDecide.Call(_deckList);
UnityEngine.Object.Destroy(base.gameObject);
OnClose.Call();
}
private void OnCancelDeckList()
{
for (int i = 0; i < _deckList.Count; i++)
{
_deckList[i] = null;
}
_deckIndex = 0;
_deckSelectDialog.UpdateAllDeckUICurrentPage();
}
private static bool IsSameDeck(DeckData deck1, DeckData deck2)
{
if (deck1.IsDefaultDeck() != deck2.IsDefaultDeck())
{
return false;
}
return deck1.GetDeckID() == deck2.GetDeckID();
}
private int SearchDeckIndex(DeckData deck)
{
return _deckList.FindIndex((DeckData tempDeck) => tempDeck != null && IsSameDeck(tempDeck, deck));
}
private void OnUpDateDeckUICustomize(DeckUI deckUI)
{
if (deckUI.ViewType == DeckUI.eViewType.CreateNew || deckUI.ViewType == DeckUI.eViewType.Empty)
{
return;
}
if (_deckIndex >= _deckCount)
{
deckUI.SetSelectable(isSelectable: false);
return;
}
DeckData deck = deckUI.Deck;
if (!deck.IsUsable())
{
deckUI.SetSelectable(isSelectable: false);
}
else if (_deckCount > 1)
{
int num = SearchDeckIndex(deck);
if (num >= 0)
{
deckUI.SetTextCenterLabe(Data.SystemText.Get("RoomBattle_0084", (num + 1).ToString()));
deckUI.SetSelectable(isSelectable: true);
deckUI.SetColorToGrey(isGrey: true);
}
else if (IsSelectedClass(deck))
{
deckUI.SetTextCenterLabe(Data.SystemText.Get("RoomBattle_0085"));
deckUI.SetSelectable(isSelectable: false);
}
}
}
private bool IsSelectedClass(DeckData deck)
{
List<int> list = new List<int>();
bool useSubClass = FormatBehaviorManager.GetDefaultBehaviour(deck.Format).UseSubClass;
foreach (DeckData deck2 in _deckList)
{
if (deck2 != null)
{
list.Add(deck2.GetDeckClassID());
if (useSubClass)
{
list.Add(deck2.GetDeckSubClassID());
}
}
}
if (list.Contains(deck.GetDeckClassID()))
{
return true;
}
if (useSubClass && list.Contains(deck.GetDeckSubClassID()))
{
return true;
}
return false;
}
}