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:
498
SVSim.BattleEngine/Engine/Wizard/GatheringCreateDialog.cs
Normal file
498
SVSim.BattleEngine/Engine/Wizard/GatheringCreateDialog.cs
Normal file
@@ -0,0 +1,498 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard.RoomMatch;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class GatheringCreateDialog : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UIButton _typeChangeButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _typeLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _battleStyleChangeButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _battleStyleLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _maxMemberChangeButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _maxMemberLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _formatChangeButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _formatLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _watchChangeButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _watchLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _battleHourChangeButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _battleHourLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _battleStartTimeChangeButton;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _battleStartTimeLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIToggle _isEntryDeckOnlyToggle;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _isEntryDeckOnlyObjectRoot;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _timeLimitObjectRoot;
|
||||
|
||||
[SerializeField]
|
||||
private UIGrid _ruleCategoryGrid;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _startTimeSelectPrefab;
|
||||
|
||||
[SerializeField]
|
||||
private UIToggle _ownerEntryBattleToggle;
|
||||
|
||||
public Action<GatheringRule> OnDecideRule;
|
||||
|
||||
private DialogBase _dialog;
|
||||
|
||||
private GatheringRule _rule = new GatheringRule();
|
||||
|
||||
private bool _ownerEntryBattleToggleFirstCall = true;
|
||||
|
||||
private bool _isEntryDeckOnlyToggleFirstCall = true;
|
||||
|
||||
private List<Format> _formatList = new List<Format>();
|
||||
|
||||
private Format[] ALL_FORMAT = new Format[2]
|
||||
{
|
||||
Format.Rotation,
|
||||
Format.Unlimited
|
||||
};
|
||||
|
||||
private int[] BATTLE_HOUR_SETTING = new int[8] { 1, 2, 3, 4, 8, 12, 24, 48 };
|
||||
|
||||
private int[] BATTLE_START_MINUTE_SETTING = new int[8] { 5, 15, 30, 60, 120, 240, 480, 1440 };
|
||||
|
||||
private int[] MAX_MEMBER_SETTING = new int[7] { 2, 4, 8, 16, 32, 64, 128 };
|
||||
|
||||
private static List<RoomConnectController.BattleRule> GetRuleListNormal(Format format)
|
||||
{
|
||||
List<RoomConnectController.BattleRule> list = new List<RoomConnectController.BattleRule>();
|
||||
list.Add(RoomConnectController.BattleRule.Bo1);
|
||||
if (format != Format.Avatar)
|
||||
{
|
||||
list.Add(RoomConnectController.BattleRule.Bo3);
|
||||
list.Add(RoomConnectController.BattleRule.Bo5);
|
||||
list.Add(RoomConnectController.BattleRule.Bo3Ban);
|
||||
list.Add(RoomConnectController.BattleRule.Bo5Ban);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static GatheringCreateDialog Create(GameObject prefab)
|
||||
{
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
GatheringCreateDialog component = UnityEngine.Object.Instantiate(prefab).GetComponent<GatheringCreateDialog>();
|
||||
component._dialog = dialogBase;
|
||||
SystemText systemText = Data.SystemText;
|
||||
dialogBase.SetObj(component.gameObject);
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
|
||||
dialogBase.SetButtonText(systemText.Get("Gathering_0020"));
|
||||
dialogBase.SetTitleLabel(systemText.Get("Gathering_0006"));
|
||||
component._rule.LoadFromPlayerPrefs();
|
||||
component._rule.BattleStartLocalTime = DefaultStartTime();
|
||||
component.Refresh();
|
||||
return component;
|
||||
}
|
||||
|
||||
private static DateTime DefaultStartTime()
|
||||
{
|
||||
DateTime nowTime = PlayerStaticData.UserTime.GetNowTime();
|
||||
int num = 15;
|
||||
int minute = nowTime.Minute;
|
||||
int num2 = minute / num * num;
|
||||
nowTime = nowTime.AddMinutes(num2 - minute);
|
||||
TimeSpan timeSpan = nowTime - PlayerStaticData.UserTime.GetNowTime();
|
||||
while (timeSpan.TotalMinutes < 16.0)
|
||||
{
|
||||
nowTime = nowTime.AddMinutes(15.0);
|
||||
timeSpan = nowTime - PlayerStaticData.UserTime.GetNowTime();
|
||||
}
|
||||
return nowTime;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_typeChangeButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickGatheringTypeChangeButton();
|
||||
}));
|
||||
_maxMemberChangeButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickMaxMemberChangeButton();
|
||||
}));
|
||||
_battleStyleChangeButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickBattleStyleChangeButton();
|
||||
}));
|
||||
_formatChangeButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickFormatChangeButton();
|
||||
}));
|
||||
_ownerEntryBattleToggle.onChange.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickOwnerEntryBattle();
|
||||
}));
|
||||
_watchChangeButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickWatchChangeButton();
|
||||
}));
|
||||
_battleHourChangeButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickBattleHourChangeButton();
|
||||
}));
|
||||
_battleStartTimeChangeButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickBattleStartHourChangeButton();
|
||||
}));
|
||||
_isEntryDeckOnlyToggle.onChange.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickIsEntryDeckOnlyButton();
|
||||
}));
|
||||
_dialog.onPushButton1 = delegate
|
||||
{
|
||||
CreateGathering();
|
||||
};
|
||||
}
|
||||
|
||||
private void OnClickGatheringTypeChangeButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
List<GatheringUtility.RuleTypeInfo> allGatheringRule = GatheringUtility.GetAllGatheringRule();
|
||||
GatheringUtility.RuleTypeInfo item = allGatheringRule.FirstOrDefault((GatheringUtility.RuleTypeInfo x) => x.Type == _rule.Type && x.TournamentType == _rule.TournamentType && x.IsReset == _rule.IsReset);
|
||||
List<string> textList = new List<string>();
|
||||
allGatheringRule.ForEach(delegate(GatheringUtility.RuleTypeInfo rule)
|
||||
{
|
||||
textList.Add(rule.Name);
|
||||
});
|
||||
DialogBase drumDialog = DrumrollDialog.Create(textList, allGatheringRule.IndexOf(item), null, null, OnDecideGatheringType, Data.SystemText.Get("Gathering_0036"));
|
||||
OnDrumUICommonSetting(drumDialog);
|
||||
}
|
||||
|
||||
private void OnDecideGatheringType(int index)
|
||||
{
|
||||
GatheringUtility.RuleTypeInfo ruleTypeInfo = GatheringUtility.GetAllGatheringRule()[index];
|
||||
_rule.Type = ruleTypeInfo.Type;
|
||||
_rule.TournamentType = ruleTypeInfo.TournamentType;
|
||||
_rule.IsReset = ruleTypeInfo.IsReset;
|
||||
_rule.SaveToPlayerPrefs();
|
||||
if (ruleTypeInfo.MaxMember < _rule.MaxMember)
|
||||
{
|
||||
int num = MAX_MEMBER_SETTING.ToList().IndexOf(ruleTypeInfo.MaxMember);
|
||||
if (num == -1)
|
||||
{
|
||||
Debug.LogError("選択肢に含まれていない最大人数です");
|
||||
OnSelectMember(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
OnSelectMember(num);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnClickBattleStyleChangeButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
int defaultIndex = 0;
|
||||
List<string> list = new List<string>();
|
||||
List<RoomConnectController.BattleRule> ruleListNormal = GetRuleListNormal(_rule.BattleParameterInstance.DeckFormat);
|
||||
for (int i = 0; i < ruleListNormal.Count; i++)
|
||||
{
|
||||
if (_rule.BattleParameterInstance.Rule == ruleListNormal[i])
|
||||
{
|
||||
defaultIndex = i;
|
||||
}
|
||||
list.Add(RoomRuleSetting.GetWinTypeString(ruleListNormal[i]));
|
||||
}
|
||||
DialogBase drumDialog = DrumrollDialog.Create(list, defaultIndex, null, null, OnDecideBattleStyle, Data.SystemText.Get("Gathering_0037"));
|
||||
OnDrumUICommonSetting(drumDialog);
|
||||
}
|
||||
|
||||
private void OnDecideBattleStyle(int index)
|
||||
{
|
||||
_rule.BattleParameterInstance.Rule = GetRuleListNormal(_rule.BattleParameterInstance.DeckFormat)[index];
|
||||
_rule.SaveToPlayerPrefs();
|
||||
}
|
||||
|
||||
private void OnClickFormatChangeButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
int defaultIndex = 0;
|
||||
List<string> list = new List<string>();
|
||||
List<Format> maintenanceFormatList = new List<Format>();
|
||||
DialogBase dialog = null;
|
||||
_formatList.Clear();
|
||||
for (int i = 0; i < ALL_FORMAT.Length; i++)
|
||||
{
|
||||
if (_rule.BattleParameterInstance.DeckFormat == ALL_FORMAT[i])
|
||||
{
|
||||
defaultIndex = i;
|
||||
}
|
||||
list.Add(FormatBehaviorManager.GetFormatName(ALL_FORMAT[i]));
|
||||
_formatList.Add(ALL_FORMAT[i]);
|
||||
}
|
||||
if (Prerelease.Status == Prerelease.eStatus.PRE_ROTATION)
|
||||
{
|
||||
if (_rule.BattleParameterInstance.DeckFormat == Format.PreRotation)
|
||||
{
|
||||
defaultIndex = _formatList.Count;
|
||||
}
|
||||
_formatList.Add(Format.PreRotation);
|
||||
list.Add(FormatBehaviorManager.GetFormatName(Format.PreRotation));
|
||||
}
|
||||
if (Data.Crossover.IsWithinGatheringPeriod)
|
||||
{
|
||||
if (_rule.BattleParameterInstance.DeckFormat == Format.Crossover)
|
||||
{
|
||||
defaultIndex = _formatList.Count;
|
||||
}
|
||||
_formatList.Add(Format.Crossover);
|
||||
string text = FormatBehaviorManager.GetFormatName(Format.Crossover);
|
||||
if (Data.MaintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.GATHERING_CROSSOVER))
|
||||
{
|
||||
maintenanceFormatList.Add(Format.Crossover);
|
||||
text += Data.SystemText.Get("RoomBattle_0099");
|
||||
}
|
||||
list.Add(text);
|
||||
}
|
||||
if (Data.MyRotationAllInfo.IsWithinGatheringPeriod)
|
||||
{
|
||||
if (_rule.BattleParameterInstance.DeckFormat == Format.MyRotation)
|
||||
{
|
||||
defaultIndex = _formatList.Count;
|
||||
}
|
||||
_formatList.Add(Format.MyRotation);
|
||||
string text2 = FormatBehaviorManager.GetFormatName(Format.MyRotation);
|
||||
if (Data.MaintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.GATHERING_MYROTATION))
|
||||
{
|
||||
maintenanceFormatList.Add(Format.MyRotation);
|
||||
text2 += Data.SystemText.Get("RoomBattle_0099");
|
||||
}
|
||||
list.Add(text2);
|
||||
}
|
||||
if (Data.AvatarBattleAllInfo.IsWithinGatheringPeriod)
|
||||
{
|
||||
if (_rule.BattleParameterInstance.DeckFormat == Format.Avatar)
|
||||
{
|
||||
defaultIndex = _formatList.Count;
|
||||
}
|
||||
_formatList.Add(Format.Avatar);
|
||||
string text3 = FormatBehaviorManager.GetFormatName(Format.Avatar);
|
||||
if (Data.MaintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.GATHERING_AVATAR))
|
||||
{
|
||||
maintenanceFormatList.Add(Format.Avatar);
|
||||
text3 += Data.SystemText.Get("RoomBattle_0099");
|
||||
}
|
||||
list.Add(text3);
|
||||
}
|
||||
Action<int> selectCallback = delegate(int index)
|
||||
{
|
||||
UIManager.SetObjectToGrey(dialog.button1.gameObject, maintenanceFormatList.Contains(_formatList[index]));
|
||||
if (_formatList[index] == Format.Avatar)
|
||||
{
|
||||
_rule.BattleParameterInstance.Rule = RoomConnectController.BattleRule.Bo1;
|
||||
}
|
||||
};
|
||||
dialog = DrumrollDialog.Create(list, defaultIndex, selectCallback, null, OnDecideFormat, Data.SystemText.Get("Gathering_0038"));
|
||||
OnDrumUICommonSetting(dialog);
|
||||
}
|
||||
|
||||
private void OnDecideFormat(int index)
|
||||
{
|
||||
_rule.BattleParameterInstance.DeckFormat = _formatList[index];
|
||||
_rule.SaveToPlayerPrefs();
|
||||
}
|
||||
|
||||
private void OnClickMaxMemberChangeButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
int defaultIndex = 0;
|
||||
List<string> list = new List<string>();
|
||||
for (int i = 0; i < MAX_MEMBER_SETTING.Length; i++)
|
||||
{
|
||||
if (_rule.MaxMember == MAX_MEMBER_SETTING[i])
|
||||
{
|
||||
defaultIndex = i;
|
||||
}
|
||||
if (GatheringUtility.GetMaxMemberNumber(_rule.Type) < MAX_MEMBER_SETTING[i])
|
||||
{
|
||||
break;
|
||||
}
|
||||
list.Add(Data.SystemText.Get("Gathering_0008", MAX_MEMBER_SETTING[i].ToString()));
|
||||
}
|
||||
DialogBase drumDialog = DrumrollDialog.Create(list, defaultIndex, null, null, OnSelectMember, Data.SystemText.Get("Gathering_0039"));
|
||||
OnDrumUICommonSetting(drumDialog);
|
||||
}
|
||||
|
||||
private void OnSelectMember(int index)
|
||||
{
|
||||
_rule.MaxMember = MAX_MEMBER_SETTING[index];
|
||||
_rule.SaveToPlayerPrefs();
|
||||
}
|
||||
|
||||
private void OnDrumUICommonSetting(DialogBase drumDialog)
|
||||
{
|
||||
_dialog.SetDisp(inDisp: false);
|
||||
drumDialog.ResetBackViewAlpha();
|
||||
drumDialog.OnCloseStart = delegate
|
||||
{
|
||||
drumDialog.InactiveBackView();
|
||||
_dialog.ReOpen(isResetBackViewAlpha: true);
|
||||
Refresh();
|
||||
};
|
||||
}
|
||||
|
||||
private void OnClickOwnerEntryBattle()
|
||||
{
|
||||
_rule.IsOwnerEntryBattle = _ownerEntryBattleToggle.value;
|
||||
if (!_ownerEntryBattleToggleFirstCall)
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(_ownerEntryBattleToggle.value ? Se.TYPE.SYS_TOGGLE_ON : Se.TYPE.SYS_TOGGLE_OFF);
|
||||
_rule.SaveToPlayerPrefs();
|
||||
}
|
||||
_ownerEntryBattleToggleFirstCall = false;
|
||||
}
|
||||
|
||||
private void OnClickIsEntryDeckOnlyButton()
|
||||
{
|
||||
_rule.IsEntryDeckOnly = _isEntryDeckOnlyToggle.value;
|
||||
if (!_isEntryDeckOnlyToggleFirstCall)
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(_isEntryDeckOnlyToggle.value ? Se.TYPE.SYS_TOGGLE_ON : Se.TYPE.SYS_TOGGLE_OFF);
|
||||
_rule.SaveToPlayerPrefs();
|
||||
}
|
||||
_isEntryDeckOnlyToggleFirstCall = false;
|
||||
}
|
||||
|
||||
private void OnClickWatchChangeButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
int defaultIndex = (int)(_rule.WatchSetting - 1);
|
||||
List<string> list = new List<string>();
|
||||
SystemText systemText = Data.SystemText;
|
||||
list.Add(systemText.Get("Gathering_0015"));
|
||||
list.Add(systemText.Get("Gathering_0016"));
|
||||
list.Add(systemText.Get("Gathering_0017"));
|
||||
DialogBase drumDialog = DrumrollDialog.Create(list, defaultIndex, null, null, OnDecideWatchSetting, Data.SystemText.Get("Gathering_0042"));
|
||||
OnDrumUICommonSetting(drumDialog);
|
||||
}
|
||||
|
||||
private void OnDecideWatchSetting(int index)
|
||||
{
|
||||
_rule.WatchSetting = (GatheringRule.eWatchSetting)(index + 1);
|
||||
_rule.SaveToPlayerPrefs();
|
||||
}
|
||||
|
||||
private void OnClickBattleHourChangeButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
List<string> list = new List<string>();
|
||||
int defaultIndex = 0;
|
||||
int num = 0;
|
||||
int[] bATTLE_HOUR_SETTING = BATTLE_HOUR_SETTING;
|
||||
for (int i = 0; i < bATTLE_HOUR_SETTING.Length; i++)
|
||||
{
|
||||
int num2 = bATTLE_HOUR_SETTING[i];
|
||||
list.Add(Data.SystemText.Get("Gathering_0013", num2.ToString()));
|
||||
if (num2 == _rule.BattleTimeHour)
|
||||
{
|
||||
defaultIndex = num;
|
||||
}
|
||||
num++;
|
||||
}
|
||||
DialogBase drumDialog = DrumrollDialog.Create(list, defaultIndex, null, null, OnDecideBattleHour, Data.SystemText.Get("Gathering_0041"));
|
||||
OnDrumUICommonSetting(drumDialog);
|
||||
}
|
||||
|
||||
private void OnDecideBattleHour(int index)
|
||||
{
|
||||
_rule.BattleTimeHour = BATTLE_HOUR_SETTING[index];
|
||||
_rule.SaveToPlayerPrefs();
|
||||
}
|
||||
|
||||
private void OnClickBattleStartHourChangeButton()
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
|
||||
DialogBase drumDialog = GatheringStartTimeSelectDialog.Create(_startTimeSelectPrefab, OnChangeBattleStartTime, _rule.BattleStartLocalTime);
|
||||
OnDrumUICommonSetting(drumDialog);
|
||||
}
|
||||
|
||||
private void OnChangeBattleStartTime(DateTime time)
|
||||
{
|
||||
_rule.BattleStartLocalTime = time;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
private void Refresh()
|
||||
{
|
||||
SystemText systemText = Data.SystemText;
|
||||
_typeLabel.text = _rule.GetGatheringTypeString();
|
||||
_maxMemberLabel.text = systemText.Get("Gathering_0008", _rule.MaxMember.ToString());
|
||||
_battleStyleLabel.text = RoomRuleSetting.GetWinTypeString(_rule.BattleParameterInstance.Rule);
|
||||
_formatLabel.text = FormatBehaviorManager.GetFormatName(_rule.BattleParameterInstance.DeckFormat);
|
||||
_ownerEntryBattleToggle.value = _rule.IsOwnerEntryBattle;
|
||||
_battleHourLabel.text = systemText.Get("Gathering_0013", _rule.BattleTimeHour.ToString());
|
||||
_isEntryDeckOnlyToggle.value = _rule.IsEntryDeckOnly;
|
||||
_battleStartTimeLabel.text = ConvertTime.ToLocal(_rule.BattleStartUtcTime);
|
||||
_isEntryDeckOnlyObjectRoot.SetActive(!_rule.IsTournament);
|
||||
_timeLimitObjectRoot.SetActive(!_rule.IsTournament);
|
||||
UIManager.SetObjectToGrey(_battleStyleChangeButton.gameObject, IsOnlyOneWinType());
|
||||
_ruleCategoryGrid.Reposition();
|
||||
switch (_rule.WatchSetting)
|
||||
{
|
||||
case GatheringRule.eWatchSetting.ALL_MEMBER:
|
||||
_watchLabel.text = systemText.Get("Gathering_0016");
|
||||
break;
|
||||
case GatheringRule.eWatchSetting.NONE:
|
||||
_watchLabel.text = systemText.Get("Gathering_0017");
|
||||
break;
|
||||
case GatheringRule.eWatchSetting.OWNER_ONLY:
|
||||
_watchLabel.text = systemText.Get("Gathering_0015");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateGathering()
|
||||
{
|
||||
if (_rule.IsTournament)
|
||||
{
|
||||
_rule.IsEntryDeckOnly = true;
|
||||
}
|
||||
OnDecideRule.Call(_rule);
|
||||
}
|
||||
|
||||
private bool IsOnlyOneWinType()
|
||||
{
|
||||
return GetRuleListNormal(_rule.BattleParameterInstance.DeckFormat).Count == 1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user