private mg_jr_Level AddRandomLevelToQueue(EnvironmentType _environmentType, int _difficulty) { Assert.AreNotEqual(EnvironmentType.MAX, _environmentType, "Invalid value: " + _environmentType); _difficulty = m_availableDifficulties[_environmentType].ClampToRange(_difficulty); EnvironmentTypeAndDifficultyID key = new EnvironmentTypeAndDifficultyID(_environmentType, _difficulty); List <mg_jr_LevelDefinition> list = m_levelDefinitions[key]; mg_jr_LevelDefinition mg_jr_LevelDefinition2 = null; int num = -1; foreach (mg_jr_LevelDefinition item in list) { if (!item.IsUseLimitReached) { int num2 = Random.Range(0, 1000) * item.CurrentRarity; if (num2 > num) { mg_jr_LevelDefinition2 = item; num = num2; } } } if (mg_jr_LevelDefinition2 == null) { ResetLevelRarity(_environmentType); mg_jr_LevelDefinition2 = list[0]; } Assert.NotNull(mg_jr_LevelDefinition2, "No useablelevel def found"); return(LoadLevelAfterExisting(mg_jr_LevelDefinition2)); }
private void LoadLevelDeffinitions(TextAsset[] levelXmls) { foreach (TextAsset xmlLevelDef in levelXmls) { mg_jr_LevelDefinition mg_jr_LevelDefinition2 = new mg_jr_LevelDefinition(); mg_jr_LevelDefinition2.LoadFromXML(xmlLevelDef); EnvironmentTypeAndDifficultyID key = new EnvironmentTypeAndDifficultyID(mg_jr_LevelDefinition2.EnvironmentType, mg_jr_LevelDefinition2.Difficulty); if (!m_levelDefinitions.ContainsKey(key)) { m_levelDefinitions.Add(key, new List <mg_jr_LevelDefinition>()); } m_levelDefinitions[key].Add(mg_jr_LevelDefinition2); DifficultyRange value; if (!m_availableDifficulties.ContainsKey(mg_jr_LevelDefinition2.EnvironmentType)) { value = new DifficultyRange(mg_jr_LevelDefinition2.Difficulty); m_availableDifficulties.Add(mg_jr_LevelDefinition2.EnvironmentType, value); continue; } value = m_availableDifficulties[mg_jr_LevelDefinition2.EnvironmentType]; value.Minimum = Mathf.Min(mg_jr_LevelDefinition2.Difficulty, value.Minimum); value.Maximum = Mathf.Max(mg_jr_LevelDefinition2.Difficulty, value.Maximum); m_availableDifficulties[mg_jr_LevelDefinition2.EnvironmentType] = value; } }
public void ResetLevelRarity(EnvironmentType _forEnvironment) { Assert.AreNotEqual(EnvironmentType.MAX, _forEnvironment, "Invalid value: " + _forEnvironment); DifficultyRange difficultyRange = m_availableDifficulties[_forEnvironment]; for (int i = difficultyRange.Minimum; i <= difficultyRange.Maximum; i++) { EnvironmentTypeAndDifficultyID key = new EnvironmentTypeAndDifficultyID(_forEnvironment, i); List <mg_jr_LevelDefinition> list = m_levelDefinitions[key]; foreach (mg_jr_LevelDefinition item in list) { item.ResetUsage(); } } }
private bool AddLevelToQueueWith(mg_jr_ResourceList _resource, EnvironmentType _environmentType, int _difficulty) { bool result = false; EnvironmentTypeAndDifficultyID key = new EnvironmentTypeAndDifficultyID(_environmentType, _difficulty); List <mg_jr_LevelDefinition> list = m_levelDefinitions[key]; mg_jr_Resources resources = MinigameManager.GetActive <mg_JetpackReboot>().Resources; foreach (mg_jr_LevelDefinition item in list) { if (item.ContainsAtLeastOne(resources.FindXmlNameOfPrefab(_resource))) { LoadLevelAfterExisting(item); result = true; break; } } return(result); }