53 lines
1.9 KiB
C#
53 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
|
|
};
|
|
}
|
|
}
|
|
}
|