public static Level GetNextLevel(Level currentLevel) { Level mate1, mate2; _history.Add(currentLevel); _currentGenerationIndex = 0; _currentGenerationNumber++; _difficultyThreshold = GetPreviousDifficulty(); SelectRandomMates(out mate1, out mate2); Level child = new Level(mate1, mate2); child.MoveLevelRight(currentLevel); //_currentLevelSetup.Print(_currentGenerationIndex); _currentGenerationIndex++; return child; }
static void SelectRandomMates(out Level mate1, out Level mate2) { int index = random.Next(0, _history.Count - 1); mate1 = _history[index]; index = random.Next(0, _history.Count - 1); mate2 = _history[index]; }
public Level(Level mum, Level dad) { CreateChildSpawners(LevelObjectType.GroundEnemy, mum, dad); GenerateLandscape(); }
private void CreateChildSpawners(LevelObjectType type, Level mum, Level dad) { SpawnerGroup dadSpawners = dad.GetSpawners(type); SpawnerGroup mumSpawners = mum.GetSpawners(type); SpawnerGroup newSpawners = new SpawnerGroup(mumSpawners); newSpawners.BuildFromParents(mumSpawners, dadSpawners); m_spawners[(int)type] = newSpawners; }
public void MoveLevelRight(Level left) { float offset = left.TotalLevelWidth; for (int i = 0; i < m_levelObjects.Length; ++i) if (m_levelObjects[i] != null) for (int j = 0; j < m_levelObjects[i].Count; ++j) m_levelObjects[i][j].Transform.PosX += offset; m_house.Transform.PosX += offset; }
public void BuildNextLevel() { if (m_currentLevel == null) { m_currentLevel = new Level(); } else { m_currentLevel.Clear(); m_nextLevel.MoveLevelLeft(); m_currentLevel = m_nextLevel; } m_nextLevel = LevelGenerator.GetNextLevel(m_currentLevel); }