using System.Collections.Generic; using GeometryTD.Definition; namespace GeometryTD.Procedure { public static class FixedRunNodeSequenceBuilder { private const int FixedNodeCount = 10; private static readonly int[] PlainCombatLevelCycle = { 1, 2, 3, 1 }; public static IReadOnlyList Build(LevelThemeType themeType) { if (themeType != LevelThemeType.Plain) { return new List(); } List nodeSeeds = new List(FixedNodeCount) { CreateNodeSeed(1, 0, RunNodeType.Combat, themeType, PlainCombatLevelCycle[0]), CreateNodeSeed(2, 1, RunNodeType.Event, themeType, 0), CreateNodeSeed(3, 2, RunNodeType.Combat, themeType, PlainCombatLevelCycle[1]), CreateNodeSeed(4, 3, RunNodeType.Shop, themeType, 0), CreateNodeSeed(5, 4, RunNodeType.Combat, themeType, PlainCombatLevelCycle[2]), CreateNodeSeed(6, 5, RunNodeType.Event, themeType, 0), CreateNodeSeed(7, 6, RunNodeType.Combat, themeType, PlainCombatLevelCycle[3]), CreateNodeSeed(8, 7, RunNodeType.Shop, themeType, 0), CreateNodeSeed(9, 8, RunNodeType.Event, themeType, 0), CreateNodeSeed(10, 9, RunNodeType.BossCombat, themeType, 4) }; return nodeSeeds; } private static RunNodeSeed CreateNodeSeed( int nodeId, int sequenceIndex, RunNodeType nodeType, LevelThemeType themeType, int linkedLevelId) { return new RunNodeSeed { NodeId = nodeId, SequenceIndex = sequenceIndex, NodeType = nodeType, ThemeType = themeType, LinkedLevelId = linkedLevelId }; } } }