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;
     }
 }