geometry-tower-defense/Assets/GameMain/Scripts/Procedure/ProcedureMain/FixedRunNodeSequenceBuilder.cs

52 lines
1.9 KiB
C#

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<RunNodeSeed> Build(LevelThemeType themeType)
{
if (themeType != LevelThemeType.Plain)
{
return new List<RunNodeSeed>();
}
List<RunNodeSeed> nodeSeeds = new List<RunNodeSeed>(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
};
}
}
}