Exemplo n.º 1
0
        public static DataTableEnemies.EnemyTypes[] GetEnemiesForLevel(AgeTypes age, int lvl)
        {
            if (m_Levels.ContainsKey(age))
            {
                //CurLvl = 0. 0 / 2 = 0 = 0; Enemies [0]
                //CurLvl = 0. 1 / 2 = 0.5 = 1; Enemies [0] [1]
                //CurLvl = 7. 7 / 2 = 3.5 = 4; Enemies [0] [1] [2] [3]
                //CurLvl = 15. 15 / 2 = 7.5 = 8; Enemies [0] [1] [2] [3] [4]

                float amountOfEnemies = (float)lvl / m_Levels[age].NewEnemyEachAmountOfLevels;
                int   enemyIndex      = Mathf.CeilToInt(amountOfEnemies);

                DataTableEnemies.EnemyTypes[] enemyTypes = m_Levels[age].EnemyTypes;

                //Размер массива ограничеваеться размером массива  доступных врагов
                DataTableEnemies.EnemyTypes[] enemies = new DataTableEnemies.EnemyTypes[enemyIndex + 1 <= enemyTypes.Length ? enemyIndex + 1 : enemyTypes.Length];

                for (int i = 0; i < enemyTypes.Length; i++)
                {
                    //EnemyTypes (j):           [0] [1] [2] [3] [4]
                    //Enemies:   (enemyIndex):  [0] [1]

                    if (i <= enemyIndex)
                    {
                        enemies[i] = enemyTypes[i];
                    }
                }

                return(enemies);
            }

            return(new DataTableEnemies.EnemyTypes[] { DataTableEnemies.EnemyTypes.Enemy1, DataTableEnemies.EnemyTypes.Enemy2, DataTableEnemies.EnemyTypes.Enemy3 });
        }
Exemplo n.º 2
0
        //Win condition
        public static AgeWinConditionController GetWinConditionController(AgeTypes age)
        {
            if (m_Levels.ContainsKey(age))
            {
                return(m_Levels[age].WinConditionController);
            }

            return(null);
        }
Exemplo n.º 3
0
        public static float GetSpeedMax(AgeTypes age)
        {
            if (m_Levels.ContainsKey(age))
            {
                return(m_Levels[age].MaxSpeed);
            }

            return(10);
        }
Exemplo n.º 4
0
        public static int GetSpawnCountSpread(AgeTypes age, int lvl, int levelSpawnCount)
        {
            if (m_Levels.ContainsKey(age))
            {
                float baseSpawnCountSpreadPercent = m_Levels[age].BaseSpawnCountSpreadPercent / 100f;
                return((int)(baseSpawnCountSpreadPercent * levelSpawnCount));
            }

            return(0);
        }
Exemplo n.º 5
0
        //Spawn
        // - Spawn count
        public static int GetSpawnCount(AgeTypes age, int lvl)
        {
            if (m_Levels.ContainsKey(age))
            {
                int baseSpawnCount = m_Levels[age].BaseSpawnCount;
                return(baseSpawnCount + lvl);
            }

            return(1);
        }
Exemplo n.º 6
0
        public static int GetHPSpreadPercent(AgeTypes age, int lvl, int levelHP)
        {
            if (m_Levels.ContainsKey(age))
            {
                float baseHPSpreadPercent = m_Levels[age].BaseHPSpreadPercent / 100f;
                return((int)(baseHPSpreadPercent * levelHP));
            }

            return(0);
        }
Exemplo n.º 7
0
        //HP
        public static int GetHP(AgeTypes age, int lvl)
        {
            if (m_Levels.ContainsKey(age))
            {
                int baseHP = m_Levels[age].BaseHP;
                return(baseHP + baseHP * lvl);
            }

            return(1);
        }
Exemplo n.º 8
0
        //Loot
        public static int GetMaxCoinCount(AgeTypes age, int lvl)
        {
            if (m_Levels.ContainsKey(age))
            {
                int baseCointCount = m_Levels[age].BaseCoinCount;
                return(baseCointCount + baseCointCount * lvl);
            }

            return(1);
        }
Exemplo n.º 9
0
        public static float GetSpeedSpreadPercent(AgeTypes age, int lvl, float levelSpeed)
        {
            if (m_Levels.ContainsKey(age))
            {
                float baseSpeedSpreadPercent = m_Levels[age].BaseSpeedSpreadPercent / 100f;
                return(baseSpeedSpreadPercent * levelSpeed);
            }

            return(0);
        }
Exemplo n.º 10
0
        public void Init(AgeTypes age, int level)
        {
            //HP
            int hp = DataTableLevels.GetHP(age, level);
            int hpSpreadPercent = DataTableLevels.GetHPSpreadPercent(age, level, hp);

            //Spawn
            int spawnCount       = DataTableLevels.GetSpawnCount(age, level);
            int spawnCountSpread = DataTableLevels.GetSpawnCountSpread(age, level, spawnCount);

            float rate       = DataTableLevels.GetSpawnRate(age, level);
            float rateSpread = DataTableLevels.GetSpawnRateSpread(age, level, rate);

            //Enemies
            float speed = DataTableLevels.GetSpeed(age, level);
            float speedSpreadPercent = DataTableLevels.GetSpeedSpreadPercent(age, level, speed);
            float maxSpeed           = DataTableLevels.GetSpeedMax(age);

            EnemyTypes[] enemies = DataTableLevels.GetEnemiesForLevel(age, level);

            //Loot
            int maxCoinCount = DataTableLevels.GetMaxCoinCount(age, level);

            Debug.LogWarning(string.Format("LevelController: Start level. Age: {0}. Level: {1}", age, level));
            Debug.Log(string.Format(" - HP {0}. HPSpreadPercent {1} \n - SpawnCount: {2}. SpawnCountSpread: {3} \n SpawnRate: {4}. SpawnRateSpread: {5} \n - Speed: {6}. SpeedSpread: {7}. MaxSpeed: {8}",
                                    hp, hpSpreadPercent,
                                    spawnCount, spawnCountSpread,
                                    rate, rateSpread,
                                    speed, speedSpreadPercent, maxSpeed));

            Debug.Log("Enemies:\n");
            for (int i = 0; i < enemies.Length; i++)
            {
                Debug.Log(string.Format("{0}\n", enemies[i]));
            }

            //Spawn points
            for (int i = 0; i < SpawnPoints.Length; i++)
            {
                SpawnPoints[i].OnDestroyedAllEnemiesFromSpawn += DestroyedAllEnemiesFromSpawn;
                SpawnPoints[i].OnDestroyEnemy += DestroyEnemyHandler;
                SpawnPoints[i].Init(hp, hpSpreadPercent,                        //HP
                                    spawnCount, spawnCountSpread,               //Spawn
                                    rate, rateSpread,
                                    speed, speedSpreadPercent,                  //Enemies
                                    maxSpeed,
                                    enemies,
                                    maxCoinCount);                              //Loot

                m_TotalEnemiesOnLevel += SpawnPoints[i].ActualSpawnCount;
            }

            //UI
            GameManager.Instance.Manager_UI.CreateLevelProgressBar(GameManager.Instance.Manager_UI.UIParent_MiddleTop, level);
        }
Exemplo n.º 11
0
        // - Spawn rate
        public static float GetSpawnRate(AgeTypes age, int lvl)
        {
            if (m_Levels.ContainsKey(age))
            {
                float baseSpawnRate = m_Levels[age].BaseSpawnRate;
                float result        = baseSpawnRate - (float)lvl / m_Levels[age].RateStepEachAmountOfLevels;

                return(Mathf.Clamp(result, m_Levels[age].MinSpawnRate, baseSpawnRate));
            }

            return(1);
        }
Exemplo n.º 12
0
        //Enemies
        public static float GetSpeed(AgeTypes age, int lvl)
        {
            if (m_Levels.ContainsKey(age))
            {
                float constValue = 0.07f;

                float baseSpeed = m_Levels[age].BaseSpeed;
                return(baseSpeed + (baseSpeed * (lvl * constValue)));
            }

            return(1);
        }
Exemplo n.º 13
0
            public Level(AgeTypes ageType,
                         //HP
                         int baseHP, int baseHPSpreadPercent,
                         //Spawn
                         // - Spawn count
                         int baseSpawnCount, int baseSpawnCountSpreadPercent,
                         // - Spawn rate
                         float baseSpawnRate, int baseSpawnRateSpreadPercent,
                         float minSpawnRate, int rateStepEachAmountOfLevels,
                         //Enemies
                         // - Speed
                         float baseSpeed, int baseSpeedSpreadPercent, float maxSpeed,
                         // - Enemy
                         float newEnemyEachAmountOfLevels,
                         DataTableEnemies.EnemyTypes[] enemyTypes,
                         //Loot
                         int baseCoinCount,
                         //Win condition
                         AgeWinConditionController winConditionController)
            {
                m_AgeType = ageType;

                //HP
                m_BaseHP = baseHP;
                m_BaseHPSpreadPercent = baseHPSpreadPercent;

                //Spawn
                // - Spawn count
                m_BaseSpawnCount = baseSpawnCount;
                m_BaseSpawnCountSpreadPercent = baseSpawnCountSpreadPercent;
                // - Spawn rate
                m_BaseSpawnRate = baseSpawnRate;
                m_BaseSpawnRateSpreadPercent = baseSpawnRateSpreadPercent;
                m_MinSpawnRate = minSpawnRate;
                m_RateStepEachAmountOfLevels = rateStepEachAmountOfLevels;

                //Enemies
                // - Speed
                m_BaseSpeed = baseSpeed;
                m_BaseSpeedSpreadPercent = baseSpeedSpreadPercent;
                m_MaxSpeed = maxSpeed;
                // - Enemy
                m_NewEnemyEachAmountOfLevels = newEnemyEachAmountOfLevels;
                m_EnemyTypes = enemyTypes;
                //Loot
                m_BaseCoinCount = baseCoinCount;
                //Win condition
                WinConditionController = winConditionController;
            }
Exemplo n.º 14
0
        public static float GetSpawnRateSpread(AgeTypes age, int lvl, float spawnRate)
        {
            if (m_Levels.ContainsKey(age))
            {
                float constValue = 2f;

                int   baseSpawnRateSpread = m_Levels[age].BaseSpawnRateSpread;
                float baseSpawnPercent    = m_Levels[age].BaseSpawnRateSpread / 100f;

                float result = baseSpawnPercent * (spawnRate / constValue);
                return(result);
            }

            return(0);
        }
Exemplo n.º 15
0
        static AgeWinConditionController GetWinConditionControllerForAge(AgeTypes ageType)
        {
            switch (ageType)
            {
            case AgeTypes.FirstAge:
            {
                Dictionary <DataTableItems.ItemTypes, int> itemsToWin = new Dictionary <DataTableItems.ItemTypes, int>();
                itemsToWin.Add(DataTableItems.ItemTypes.Stick, 3);

                return(new FirstAge_WinConditionController(itemsToWin));
            }
            }

            Debug.LogError("ERROR: Win condition controller for age " + ageType + " not found");
            return(null);
        }