using System;
using Cute;
using Wizard;

public class Matching_Free : Matching
{
	public const int PRE_ROTATION_PERIOD_ERROR = 3010;

	public override void DoMatching(Action onFinished, int need_init, DO_MATCHING_LOG log)
	{
		base.DoMatching(onFinished, need_init, log);
		FreeBattleDoMatchingTask freeBattleDoMatchingTask = new FreeBattleDoMatchingTask();
		freeBattleDoMatchingTask.SetParameter(selectDeckID, need_init, (int)log);
		ConnectAPI(freeBattleDoMatchingTask, delegate
		{
			if (Data.DoMatchingDetail.data.matchingState != 3009)
			{
				DoMatchingResultSetting();
				onFinished.Call();
			}
		});
	}

	protected override void OnFailed(int code)
	{
		if (GetLastResultCode() != 3010)
		{
			base.OnFailed(code);
		}
	}

	public override FinishTaskBase GetBattleFinishTask()
	{
		return new FreeBattleFinishTask();
	}

	protected override void GotoDeckSelectScene()
	{
		UIManager.ChangeViewSceneParam changeViewSceneParam = new UIManager.ChangeViewSceneParam();
		changeViewSceneParam.MyPageMenuIndex = 2;
		changeViewSceneParam.OnFinishChangeView = delegate
		{
			UIManager.GetInstance().CloseInSceneLoadingMatching();
			UIManager.GetInstance().CloseInSceneLoadingBattle();
			MyPageMenu.Instance.ChangeMenu(2);
			DeckInfoTask task = new DeckInfoTask();
			task.SetParameter(Data.CurrentFormat);
			UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
			{
				DeckSelectUIDialog.Create(Data.SystemText.Get("Battle_0005"), task.DeckGroupListData, Data.CurrentFormat, DeckSelectUIDialog.eFormatChangeUIType.SingleFormat, isVisibleCreateNew: true, delegate(DialogBase dialog, DeckData deckData)
				{
					FreeAndRankMatchDeckSelectConfirmDialog.Create(dialog, deckData, isBattleEnd: false);
				});
			}));
		};
		UIManager.GetInstance().ChangeViewScene(UIManager.ViewScene.MyPage, changeViewSceneParam);
	}
}
