private bool RunProceduralGeneration() { if (blackBoard.Reset) { if (blackBoard.ConfigUI.Config.HeiarchalEnabled) { blackBoard.DifficultyNGram = NGramFactory.InitHierarchicalNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.HeiarchalMemory); blackBoard.SimpleDifficultyNGram = NGramFactory.InitHierarchicalNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.HeiarchalMemory); } else if (blackBoard.ConfigUI.Config.BackOffEnabled) { blackBoard.DifficultyNGram = NGramFactory.InitBackOffNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.BackOffMemory); blackBoard.SimpleDifficultyNGram = NGramFactory.InitBackOffNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.BackOffMemory); } else { blackBoard.DifficultyNGram = NGramFactory.InitGrammar(blackBoard.ConfigUI.Config.N); blackBoard.SimpleDifficultyNGram = NGramFactory.InitGrammar(blackBoard.ConfigUI.Config.N); } GenerateNGram(); blackBoard.Reset = false; } else { if (blackBoard.DifficultyNGram == null) { if (blackBoard.ConfigUI.Config.HeiarchalEnabled) { blackBoard.DifficultyNGram = NGramFactory.InitHierarchicalNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.HeiarchalMemory); blackBoard.SimpleDifficultyNGram = NGramFactory.InitHierarchicalNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.HeiarchalMemory); } else if (blackBoard.ConfigUI.Config.BackOffEnabled) { blackBoard.DifficultyNGram = NGramFactory.InitBackOffNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.BackOffMemory); blackBoard.SimpleDifficultyNGram = NGramFactory.InitBackOffNGram( blackBoard.ConfigUI.Config.N, blackBoard.ConfigUI.Config.BackOffMemory); } else { blackBoard.DifficultyNGram = NGramFactory.InitGrammar(blackBoard.ConfigUI.Config.N); blackBoard.SimpleDifficultyNGram = NGramFactory.InitGrammar(blackBoard.ConfigUI.Config.N); } } if (grammar == null || blackBoard.ProgressIndex != previousIndex) { GenerateNGram(); } } if (blackBoard.ConfigUI.Config.DifficultyNGramEnabled) { grammar.AddGrammar(blackBoard.DifficultyNGram); } return(GenerateLevel()); }