using System.Collections.Generic; namespace Wizard; public static class FormatBehaviorManager { private static Dictionary _behaviorDic = new Dictionary(); public static IFormatBehavior Create(Format format, ConventionDeckList conventionDeckList) { if (conventionDeckList != null) { switch (format) { case Format.Rotation: return new ConventionRotationFormatBehavior(conventionDeckList); case Format.Unlimited: return new ConventionUnlimitedFormatBehavior(conventionDeckList); case Format.Crossover: return new ConventionCrossoverFormatBehavior(conventionDeckList); case Format.MyRotation: return new ConventionMyRotationFormatBehavior(conventionDeckList); } } return GetDefaultBehaviour(format); } public static IFormatBehavior GetDefaultBehaviour(Format format) { if (_behaviorDic.TryGetValue(format, out var value)) { return value; } value = CreateDefaultBehaviour(format); _behaviorDic.Add(format, value); return value; } private static IFormatBehavior CreateDefaultBehaviour(Format format) { return format switch { Format.Rotation => new RotationFormatBehavior(), Format.Unlimited => new UnlimitedFormatBehavior(), Format.Sealed => new SealedFormatBehavior(), Format.PreRotation => new PreRotationFormatBehavior(), Format.Hof => new HofFormatBehavior(), Format.Crossover => new CrossoverFormatBehavior(), Format.MyRotation => new MyRotationFormatBehavior(), Format.Avatar => new AvatarFormatBehavior(), _ => new NoneFormatBehavior(), }; } public static string GetFormatName(Format format) { return format switch { Format.Hof => Data.SystemText.Get("Colosseum_0108"), Format.Windfall => Data.SystemText.Get("Colosseum_0115"), _ => GetDefaultBehaviour(format).Name, }; } }