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

347 lines
6.7 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using Wizard;
using Wizard.Scripts.Network.Data.TableData.Arena.TwoPick;
using Wizard.Scripts.Network.Data.TaskData.Arena.TwoPick;
public class ArenaColosseum : ArenaEntryDataBase
{
public enum eRound
{
FinalNotAdvance = -1,
Round1 = 1,
Round2B = 2,
Round2A = 3,
FinalB = 4,
FinalA = 5,
FinalMin = 4,
RoundMax = 5,
Undecided = 6,
Lose = 7
}
public enum eStageNo
{
Stage1 = 1,
Stage2,
FinalStage,
Max
}
public enum eEntryStatus
{
TwoPickClassSelect = 1,
TwoPickCardSelect,
SetUpComplete
}
public enum eRule
{
NONE = 0,
RotationBo1 = 1,
UnlimitedBo1 = 2,
TwoPick = 3,
TwoPickChaos = 4,
Crossover = 5,
MyRotation = 6,
HOF = 31,
WindFall = 33,
Avatar = 39
}
public enum eDeckIndex
{
Main = 0,
First = 0,
Second = 1,
Third = 2
}
public struct Detail
{
public string RoundTimeText { get; set; }
public string RoundTimeStartText { get; set; }
public string RoundTimeEndText { get; set; }
public string GroupName { get; set; }
public int MaxBattleNum { get; set; }
public int BreakThroughNum { get; set; }
public int MaxEntryNum { get; set; }
}
public class TwoPick
{
public CandidateClass CandidateClass { get; set; }
public CandidateCardInfo CandidateCard { get; set; }
public Deck DeckData { get; set; }
public CandidateChaos CandidateChaos { get; set; }
}
public enum eResultEffect
{
None,
GroupA,
Final,
Clear
}
private bool _isRankMatching;
public bool CanUseNonPossessionCard;
public int DeckEntryId { get; set; }
public bool IsColosseumPeriod { get; set; }
public bool IsRoundPeriod { get; set; }
public eEntryStatus EntryStatus { get; set; }
public Format DeckFormat { get; set; }
public eRule Rule { get; set; }
public bool IsNormalTwoPick { get; set; }
public int ChaosNum { get; set; }
public bool IsTwoPickRule
{
get
{
if (Rule != eRule.TwoPick)
{
return Rule == eRule.TwoPickChaos;
}
return true;
}
}
public bool NeedsFirstTips { get; set; }
public int ColosseumId { get; set; }
public int ChaoseTipsId { get; set; }
public bool IsSpecialDeckSelectRule
{
get
{
if (Rule != eRule.HOF)
{
return Rule == eRule.WindFall;
}
return true;
}
}
public bool IsDeckMaxNumberChange => Rule == eRule.WindFall;
public int DeckMaxNumber
{
get
{
if (Rule == eRule.WindFall)
{
return 35;
}
return 40;
}
}
public bool IsRankMatching
{
get
{
return _isRankMatching;
}
set
{
if (_isRankMatching != value)
{
_isRankMatching = value;
if (RealTimeNetworkAgent.FinishTaskBase != null)
{
RealTimeNetworkAgent.FinishTaskBase = new ColosseumBattleFinishTask();
}
}
}
}
public List<DeckData> DeckList { get; set; }
public eRound Round { get; set; }
public int ServerRoundId { get; set; }
public eStageNo StageNo { get; set; }
public string Name { get; set; }
public List<ReceivedReward> RewardList { get; set; }
public eResultEffect ResultEffect { get; set; }
public string ColorCodeId { get; set; }
public string CardPool { get; set; }
public int RetryRemainingNum { get; set; }
public int BattleMax { get; set; }
public int ClearWinNum { get; set; }
public bool IsDeckEntry { get; set; }
public bool IsFreeEntry
{
get
{
return Data.MyPageNotifications.data.IsColosseumFreeEntry;
}
set
{
Data.MyPageNotifications.data.IsColosseumFreeEntry = value;
}
}
public bool IsRetry { get; set; }
public bool IsLastDay { get; set; }
public bool IsClear { get; set; }
public bool IsRetire { get; set; }
public bool IsFinish { get; set; }
public bool IsDeckDeleted { get; set; }
public bool IsFinalRoundTry { get; set; }
public eRound NextRound { get; set; }
public double RemainingUnixTime { get; set; }
public float RemainingSinceTime { get; set; }
public double RemainingServerUnixTime { get; set; }
public string NextRoundStartTimeText { get; set; }
public string NowRoundTimeText { get; set; }
public string ColosseumTimeText { get; set; }
public string AnnounceNo { get; set; }
public Detail[] DetailData { get; set; }
public eStageNo FocusStageNo { get; set; }
public int WinBattleNum { get; set; }
public List<bool> BattleResultList { get; set; }
public List<int> BoxGradeList { get; set; }
public int FinalRoundEliminateCount { get; set; }
public TwoPick TwoPickData { get; set; }
public ArenaColosseum()
{
base.LootBoxType = PlayerStaticData.LootBoxType.COLOSSEUM;
DeckList = new List<DeckData>();
RewardList = new List<ReceivedReward>();
BattleResultList = new List<bool>();
BoxGradeList = new List<int>();
DetailData = new Detail[5];
Rule = eRule.TwoPick;
TwoPickData = new TwoPick();
TwoPickData.CandidateClass = new CandidateClass();
TwoPickData.CandidateCard = new CandidateCardInfo();
TwoPickData.CandidateChaos = new CandidateChaos();
}
public int GetRoundNumber(eRound inRound)
{
switch (inRound)
{
case eRound.Round1:
return 1;
case eRound.Round2B:
case eRound.Round2A:
return 2;
default:
return 0;
}
}
public string GetGroupText(eRound inRound)
{
switch (inRound)
{
case eRound.Round2A:
case eRound.FinalA:
return Data.SystemText.Get("Colosseum_0020");
case eRound.Round2B:
case eRound.FinalB:
return Data.SystemText.Get("Colosseum_0021");
default:
return "";
}
}
public eStageNo GetStageNoFromRoundId(eRound inRoundId)
{
switch (inRoundId)
{
case eRound.Round1:
return eStageNo.Stage1;
case eRound.Round2B:
case eRound.Round2A:
return eStageNo.Stage2;
case eRound.FinalB:
case eRound.FinalA:
return eStageNo.FinalStage;
default:
return eStageNo.Stage1;
}
}
public bool IsFinalRound()
{
if (Round == eRound.FinalA || Round == eRound.FinalB)
{
return true;
}
return false;
}
public DialogBase CreateDetailDialog(GameObject defaultDetailPrefab)
{
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
GameObject gameObject = Object.Instantiate(defaultDetailPrefab);
dialogBase.SetObj(gameObject);
gameObject.GetComponent<ColosseumDetail>().Init(dialogBase);
return dialogBase;
}
public void ApiRuleParseAndSet(int apiRule)
{
ArenaColosseum colosseumData = Data.ArenaData.ColosseumData;
colosseumData.Rule = (eRule)apiRule;
colosseumData.DeckFormat = ArenaData.ApiDeckFormatParse(colosseumData.Rule);
}
}