public void AddEmptyLevelToQueue(float _widthInWorldUnits) { Vector2 size = new Vector2(_widthInWorldUnits, 10.24f); mg_jr_LevelDefinition pattern = new mg_jr_LevelDefinition(size); LoadLevelAfterExisting(pattern); }
private mg_jr_Level LoadLevelAfterExisting(mg_jr_LevelDefinition _pattern) { _pattern.UseDeffinition(); GameObject gameObject = new GameObject(string.Concat("mg_jr_Level_", _pattern.EnvironmentType, "_", _pattern.Difficulty)); mg_jr_Level mg_jr_Level2 = gameObject.AddComponent <mg_jr_Level>(); mg_jr_Level2.LevelDefinition = _pattern; EnvironmentVariant variant = m_environmentManager.CurrentEnvironment.Variant; foreach (mg_jr_LevelDefinition.ObjectSpawnDefinition objectSpawnDefinition in _pattern.ObjectSpawnDefinitions) { GameObject pooledResource = m_resources.GetPooledResource(objectSpawnDefinition.XmlResourceName, variant); pooledResource.transform.parent = gameObject.transform; pooledResource.transform.position = objectSpawnDefinition.PositionInLevel; pooledResource.name = pooledResource.name + "_" + objectSpawnDefinition.Name; } Vector3 position; if (m_activeLevels.Count == 0) { float num = _pattern.Size.y * 0.5f - Camera.main.orthographicSize; position = new Vector3(Camera.main.RightEdgeInWorld(), Camera.main.TopEdgeInWorld() + num, 0f); } else { mg_jr_Level value = m_activeLevels.Last.Value; position = value.TopRightCornerInWorld(); } gameObject.transform.position = position; gameObject.transform.parent = base.transform; m_activeLevels.AddLast(mg_jr_Level2); return(mg_jr_Level2); }
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; } }