Files
SVSimServer/SVSim.BattleEngine/Engine/Matching_Room.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

257 lines
8.2 KiB
C#

using System;
using Cute;
using Wizard;
using Wizard.ErrorDialog;
using Wizard.RoomMatch;
public class Matching_Room : Matching
{
public enum GAME_STATE
{
WAIT,
LOADING,
BATTLE,
RESULT
}
private BattleParameter _battleParameter;
private bool _isConvention;
private bool _isGathering;
private bool _isInitRoomBattle;
private GAME_STATE _gameState;
public const int RESULT_CODE_ROOM_NOT_FOUND = 1751;
public const int RESULT_CODE_GATHERING_NOT_JOIN = 5304;
public const int RESULT_CODE_GATHERING_EXPIRE = 5311;
public bool IsStopChangeScene { get; set; }
public override void FirstSetting(int classId, int selDeck, bool isRecovery = false)
{
_isInitRoomBattle = false;
errorDialogReturnText = Wizard.Data.SystemText.Get("Battle_0202");
base.FirstSetting(classId, selDeck, isRecovery);
}
public void SetBattleParameter(BattleParameter battleParameter)
{
_battleParameter = battleParameter;
}
public Matching_Room(bool isConvention, bool isGathering)
{
_isConvention = isConvention;
_isGathering = isGathering;
errorDialogReturnText = Wizard.Data.SystemText.Get("Battle_0434");
isDisplayCancelButton = false;
IsStopChangeScene = false;
}
public override void DoMatching(Action onFinished, int init, DO_MATCHING_LOG log)
{
base.DoMatching(onFinished, 0, log);
RoomBattleDoMatchingTask roomBattleDoMatchingTask = ((_battleParameter.DeckFormat == Format.Hof) ? new RoomBattleDoMatchingTaskHOF() : ((_battleParameter.DeckFormat == Format.Windfall) ? new RoomBattleDoMatchingTaskWindFall() : ((_battleParameter.DeckFormat == Format.Avatar) ? new RoomBattleDoMatchingTaskAvatar(_isGathering) : ((!RoomConnectController.IsNormalMatchingAPI(_battleParameter)) ? new RoomBattle2PickDoMatchingTask(_battleParameter.TwoPickFormat, _battleParameter.Rule) : new RoomBattleDoMatchingTask(_isConvention, _isGathering)))));
roomBattleDoMatchingTask.SetParameter(selectDeckID, 0, (int)log, includeCardMasterHash: true);
ConnectAPI(roomBattleDoMatchingTask, delegate
{
if (Wizard.Data.RoomBattleMatching.data.matching_state != 3009)
{
_gameState = (GAME_STATE)Wizard.Data.RoomBattleMatching.data.battle_state;
_doMatchingResultKind = (DoMatchingResult)Wizard.Data.RoomBattleMatching.data.matching_state;
onFinished.Call();
RoomBase.IsMatchingFinish = true;
}
});
}
protected override void OnFinishedDoMatching()
{
if (ToolboxGame.RealTimeNetworkAgent == null)
{
return;
}
switch (_doMatchingResultKind)
{
case DoMatchingResult.RC_BATTLE_MATCHING_NOT_JOINED_GATHERING:
OpenErrorDialog((int)_doMatchingResultKind, UIManager.ViewScene.MyPage);
return;
case DoMatchingResult.RC_BATTLE_MATCHING_GATHERING_BATTLE_END:
OpenErrorDialog((int)_doMatchingResultKind, UIManager.ViewScene.Gathering);
return;
case DoMatchingResult.RC_BATTLE_MATCHING_NOT_ROOM_ID:
OpenErrorDialog((int)_doMatchingResultKind, UIManager.ViewScene.Gathering);
return;
}
switch (_gameState)
{
case GAME_STATE.LOADING:
ErrorDialogWithReturn(Wizard.Data.SystemText.Get("Battle_0401"), Wizard.Data.SystemText.Get("Battle_0411"), Wizard.Data.SystemText.Get("Common_0132"));
break;
case GAME_STATE.BATTLE:
ErrorDialogWithReturn(Wizard.Data.SystemText.Get("Battle_0402"), Wizard.Data.SystemText.Get("Battle_0411"), Wizard.Data.SystemText.Get("Common_0132"));
break;
case GAME_STATE.RESULT:
ErrorDialogWithReturn(Wizard.Data.SystemText.Get("Battle_0403"), Wizard.Data.SystemText.Get("Battle_0411"), Wizard.Data.SystemText.Get("Common_0132"));
break;
default:
MatchingInitBattle();
break;
}
}
protected override void SettingOwnerToMatchingState()
{
_isInitRoomBattle = true;
errorDialogReturnText = Wizard.Data.SystemText.Get("Battle_0434");
base.SettingOwnerToMatchingState();
switch (_doMatchingResultKind)
{
case DoMatchingResult.RC_BATTLE_MATCHING_SUCCEEDED_OWNER:
isOwner = true;
break;
case DoMatchingResult.RC_BATTLE_MATCHING_SUCCEEDED:
isOwner = false;
break;
default:
ErrorDialogWithReturn(Wizard.Data.SystemText.Get("Battle_0404"), Wizard.Data.SystemText.Get("Error_0002"), Wizard.Data.SystemText.Get("Common_0132"));
break;
case DoMatchingResult.RC_BATTLE_MATCHING_IN_BATTLE_PHASE:
break;
}
}
protected override NetworkBattleDefine.NetworkBattleURI GetInitBattleUri()
{
return NetworkBattleDefine.NetworkBattleURI.InitRoomBattle;
}
protected override void GotoHomeScene()
{
RoomBase.IsMatchingFinish = false;
bool isInitRoomBattle = _isInitRoomBattle;
if (IsStopChangeScene)
{
return;
}
UIManager.ChangeViewSceneParam changeViewSceneParam = new UIManager.ChangeViewSceneParam();
changeViewSceneParam.OnChange = delegate
{
UIManager.GetInstance().CloseInSceneLoadingBattle();
};
if (isInitRoomBattle)
{
UIManager.GetInstance().ChangeViewScene(UIManager.ViewScene.Room, changeViewSceneParam);
return;
}
changeViewSceneParam.IsCutCardMotion = true;
changeViewSceneParam.OnFinishChangeView = delegate
{
UIManager.GetInstance().CloseInSceneLoadingMatching();
UIManager.GetInstance().CloseInSceneLoadingBattle();
};
UIManager.GetInstance().ChangeViewScene(UIManager.ViewScene.MyPage, changeViewSceneParam);
}
protected override void GotoDeckSelectScene()
{
GotoHomeScene();
}
public override FinishTaskBase GetBattleFinishTask()
{
if (_battleParameter.DeckFormat == Format.Hof)
{
return new RoomBattleFinishTaskHOF();
}
if (_battleParameter.DeckFormat == Format.Windfall)
{
return new RoomBattleFinishTaskWindFall();
}
if (_battleParameter.DeckFormat == Format.Avatar)
{
return new RoomBattleFinishTaskAvatar(_isGathering);
}
if (RoomConnectController.IsNormalMatchingAPI(_battleParameter))
{
return new RoomBattleFinishTask(_isConvention, _isGathering);
}
return new RoomBattle2PickFinishTask(_battleParameter.TwoPickFormat, _battleParameter.Rule);
}
protected override void ErrorDialog(string text, string title, bool isFailedInitNetwork)
{
DialogBase dialogBase = CreateDialogBase();
dialogBase.SetSize(DialogBase.Size.M);
dialogBase.SetTitleLabel(title);
dialogBase.SetText(text);
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
dialogBase.SetButtonText(errorDialogReturnText);
dialogBase.SetFadeButtonEnabled(flag: false);
dialogBase.SetPanelDepth(5400);
dialogBase.ClickSe_Btn1 = Se.TYPE.SYS_BTN_CANCEL_TRANS;
EventDelegate method_btn = new EventDelegate(base.ReturnScene);
dialogBase.SetButtonDelegate(method_btn);
}
public override void TimeOutAction(string log, bool isInitNetworkFailed)
{
if (!_goTitleOnTimeout && _isGathering)
{
ErrorDialogGoToTitle(Wizard.Data.SystemText.Get("Battle_0508"), Wizard.Data.SystemText.Get("Battle_0412"));
return;
}
if (_goTitleOnTimeout && !_receivedMatchingTimeout)
{
ErrorDialogGoToTitle(Wizard.Data.SystemText.Get("Battle_0508"), Wizard.Data.SystemText.Get("Battle_0412"));
return;
}
LocalLog.AccumulateLastTraceLog("TimeOutAction " + log);
ErrorDialogGoToTitle(Wizard.Data.SystemText.Get("Error_0006"), Wizard.Data.SystemText.Get("ErrorHeader_0006"));
}
public override void GotoBattle()
{
base.GotoBattle();
RoomConnectController.IsAlreadyStartBattle = true;
}
private void OnPushErrorDialogButton(UIManager.ViewScene scene)
{
bool matchingDataReady = GetMatchingDataReady();
if (!matchingDataReady && isOffViewAllEnable)
{
UIManager.GetInstance().OffViewAll();
}
ToolboxGame.DestroyNetworkAgent();
if (matchingDataReady && GameMgr.GetIns().GetBattleCtrl() != null)
{
UIManager.GetInstance().StartCoroutine(BattleEndCoroutin(delegate
{
UIManager.GetInstance().ChangeViewScene(scene);
}));
}
else
{
UIManager.GetInstance().ChangeViewScene(scene);
}
}
private void OpenErrorDialog(int errorCode, UIManager.ViewScene scene)
{
DialogBase dialogBase = CreateDialogBase();
Dialog.Setup(dialogBase, errorCode.ToString());
dialogBase.SetPanelDepth(5400);
dialogBase.onPushButton1 = delegate
{
OnPushErrorDialogButton(scene);
};
_matchingTimeCheker.Stop();
}
}