public void BuildMenu(Transform transform, MazeGenerationSettings existingSettings, Action <MazeGenerationSettings> settingsChanged) { _growingTreeSettings = existingSettings as GrowingTreeSettings ?? new GrowingTreeSettings(); _growingTreeSettings.Strategies = _growingTreeSettings.Strategies ?? new List <GrowingTreeStrategy>(); _algorithmSettingsInitialiser.InitialiseOver(_growingTreeSettings, existingSettings); _growingTreeStrategyStorage.LoadStrategies(_growingTreeSettings.Strategies); _resourceLoader.InstantiateControl <TextControl>(transform).Initialize("Growing Tree Algorithm Settings"); _resourceLoader.InstantiateControl <TextControl>(transform).Initialize("Cell selection weighting: the action will be randomly chosen "); _resourceLoader.InstantiateControl <SliderControl>(transform) .Initialize("Oldest", 0, 10, _growingTreeStrategyStorage.Get(GrowingTreeStrategy.Oldest), i => StrategyChanged(GrowingTreeStrategy.Oldest, i, settingsChanged)); _resourceLoader.InstantiateControl <SliderControl>(transform) .Initialize("Newest", 0, 10, _growingTreeStrategyStorage.Get(GrowingTreeStrategy.Newest), i => StrategyChanged(GrowingTreeStrategy.Newest, i, settingsChanged)); _resourceLoader.InstantiateControl <SliderControl>(transform) .Initialize("Middle", 0, 10, _growingTreeStrategyStorage.Get(GrowingTreeStrategy.Middle), i => StrategyChanged(GrowingTreeStrategy.Middle, i, settingsChanged)); _resourceLoader.InstantiateControl <SliderControl>(transform) .Initialize("Randomness", 0, 10, _growingTreeStrategyStorage.Get(GrowingTreeStrategy.Random), i => StrategyChanged(GrowingTreeStrategy.Random, i, settingsChanged)); _resourceLoader.InstantiateControl <SliderControl>(transform) .Initialize("Random Oldest Half", 0, 10, _growingTreeStrategyStorage.Get(GrowingTreeStrategy.RandomOldest), i => StrategyChanged(GrowingTreeStrategy.RandomOldest, i, settingsChanged)); _resourceLoader.InstantiateControl <SliderControl>(transform) .Initialize("Random Newest Half", 0, 10, _growingTreeStrategyStorage.Get(GrowingTreeStrategy.RandomNewest), i => StrategyChanged(GrowingTreeStrategy.RandomNewest, i, settingsChanged)); settingsChanged(GetSettings()); }
public ExperimentRunner(IMazeGenerationFactory mazeGenerationFactory, IArrayHelper arrayHelper, IOutputWriter outputWriter, IDirectionsFlagParser directionsFlagParser) { _mazeGenerationFactory = mazeGenerationFactory; _arrayHelper = arrayHelper; _outputWriter = outputWriter; _directionsFlagParser = directionsFlagParser; Settings1 = new MazeGenerationSettings { Algorithm = Algorithm.BinaryTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = true, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 } }; Settings2 = new MazeGenerationSettings { Algorithm = Algorithm.BinaryTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = false, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 } }; Settings3 = new MazeGenerationSettings { Algorithm = Algorithm.RecursiveBacktrackerAlgorithm, AgentType = AgentType.None, DoorsAtEdge = true, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 } }; Settings4 = new MazeGenerationSettings { Algorithm = Algorithm.RecursiveBacktrackerAlgorithm, AgentType = AgentType.None, DoorsAtEdge = false, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 } }; Settings5 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = true, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Newest } }; Settings6 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = false, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Newest } }; Settings7 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = true, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Random } }; Settings8 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = false, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Random } }; Settings9 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = true, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Newest, GrowingTreeStrategy.Newest, GrowingTreeStrategy.Newest, GrowingTreeStrategy.RandomOldest, GrowingTreeStrategy.Middle } }; Settings10 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = false, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Newest, GrowingTreeStrategy.Newest, GrowingTreeStrategy.Newest, GrowingTreeStrategy.RandomOldest, GrowingTreeStrategy.Middle } }; Settings11 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = true, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Newest, GrowingTreeStrategy.Oldest } }; Settings12 = new GrowingTreeSettings { Algorithm = Algorithm.GrowingTreeAlgorithm, AgentType = AgentType.None, DoorsAtEdge = false, ExtraWalls = WallCarverOption.Random, Option = MazeType.DirectedMaze, Size = new MazeSize { X = 25, Y = 25, Z = 25 }, Strategies = new List <GrowingTreeStrategy> { GrowingTreeStrategy.Newest, GrowingTreeStrategy.Oldest } }; }