Beispiel #1
0
    void GenerateEnemies()
    {
        float enemy = 0;
        float type  = 0;

        GObject entity = null;

        ReturnOldEnemiesToPool();

        // Debug.LogError("m_Tilemaps[c_Tilemap_Water].origin " + m_Tilemaps[c_Tilemap_Water].origin);

        int sizeX = m_Tilemaps[c_Tilemap_Water].origin.x + m_Tilemaps[c_Tilemap_Water].size.x;
        int sizeY = m_Tilemaps[c_Tilemap_Water].origin.y + m_Tilemaps[c_Tilemap_Water].size.y;

        for (int i = m_Tilemaps[c_Tilemap_Water].origin.x; i < sizeX; i++)
        {
            for (int y = m_Tilemaps[c_Tilemap_Water].origin.y; y < sizeY; y++)
            {
                if (i == c_Shark_X && y == c_Shark_Y)
                {
                    continue;
                }

                enemy = UnityEngine.Random.Range(0f, 1f);

                // Debug.Log("enemy range " + enemy);

                if (enemy <= m_EnemyProbability)
                {
                    // put enemy in the cell

                    type = UnityEngine.Random.Range(0f, 1f);
                    if (type <= m_MineProbability)
                    {
                        // mine
                        entity = m_MainLogic.GetEntityManager().GetEntity(GObject.ObjectType.Mine);
                    }
                    else
                    {
                        // swimmer static
                        entity = m_MainLogic.GetEntityManager().GetEntity(GObject.ObjectType.SwimmerStatic);
                    }

                    if (entity != null)
                    {
                        entity.Put(i, y);

                        entity.m_Transform.SetParent(m_TrsLevelObjects);
                        m_AllEnemies.Add(entity);
                    }
                }
            }
        }
    }
Beispiel #2
0
    // upper half of the screen is dedicated to enemies
    void GenerateEnemies(bool randomizeHealth, bool randomizeBonuses)
    {
        float enemyCurrProbability = 0;

        GObject entity = null;

        ReturnOldObjectsToPool();

        float worldSizeX = m_WorldBounds.x * 2;
        float worldSizeY = m_WorldBounds.y;

        //possible num of enemies in matrix taking into account gaps between and screen size
        float enemiesOnXTotalWidth  = Mathf.Floor(worldSizeX);
        float enemiesOnYTotalHeight = Mathf.Floor(worldSizeY);

        float borderX = worldSizeX - enemiesOnXTotalWidth;
        float borderY = worldSizeY - enemiesOnYTotalHeight;

        float enemySpaceX = (enemiesOnXTotalWidth - m_EnemyGapTotal) / Enemy.WIDTH;
        float enemySpaceY = (enemiesOnYTotalHeight - m_EnemyGapTotal) / Enemy.HEIGHT;

        float enemiesOnX = Mathf.Floor(enemySpaceX);
        float enemiesOnY = Mathf.Floor(enemySpaceY);

        borderX += (enemySpaceX - enemiesOnX);
        borderY += (enemySpaceY - enemiesOnY);

        float gapX = m_EnemyGapTotal / (enemiesOnX - 1);
        float gapY = m_EnemyGapTotal / (enemiesOnY - 1);

        // Debug.Log("worldSizeX " + worldSizeX + " enemiesOnX " + enemiesOnX + " borderX " + borderX);
        // Debug.Log("worldSizeY " + worldSizeY + " enemiesOnY " + enemiesOnY + " borderY " + borderY);

        // Debug.Log("gapX " + gapX + " enemiesOnXTotalWidth " + enemiesOnXTotalWidth);
        // Debug.Log("gapY " + gapX + " enemiesOnYTotalHeight " + enemiesOnYTotalHeight);

        for (int i = 0; i < enemiesOnX; i++)
        {
            for (int j = 0; j < enemiesOnY; j++)
            {
                // if (j>0) break; // test

                enemyCurrProbability = UnityEngine.Random.Range(0f, 1f);
                if (enemyCurrProbability <= c_EnemyProbability)
                {
                    entity = MainLogic.GetMainLogic().GetEntityManager().GetEntity(GObject.ObjectType.Enemy);
                    // Debug.Log("put enemy " + entity);

                    if (entity != null)
                    {
                        m_VcTemp.x = borderX / 2 + gapX * i + Enemy.WIDTH * i + Enemy.WIDTH / 2 - m_WorldBounds.x;
                        m_VcTemp.y = (-1) * (borderY / 2 + gapY * j + Enemy.HEIGHT * j + Enemy.HEIGHT / 2) + m_WorldBounds.y;

                        entity.Put(m_VcTemp.x, m_VcTemp.y);

                        entity.m_Transform.SetParent(m_TrsLevelObjects);
                        m_AllEnemies.Add(entity);

                        Enemy enemy = entity as Enemy;
                        enemy.Reset();

                        enemy.AddDieListener(OnEnemyDie);

                        if (randomizeHealth)
                        {
                            enemy.RandomizeHealth();
                        }
                        else
                        {
                            enemy.SetDefaultHealth();
                        }

                        if (randomizeBonuses)
                        {
                            enemy.RandomizeBonus();
                        }
                    }
                }
            }
        }
        m_TotalEnemiesOnLevel = m_AllEnemies.Count;
    }