private void SpawnEnemyPack(Vector2 position)
    {
        EnemyPack pack = GetPackType();

        for (int i = 0; i < pack.enemies.Length; i++)
        {
            Vector2 randomSpawnPosition = GetRandomPosition(position);
            Vector2 spawnPosition       = GetCleanSpawnPosition(randomSpawnPosition);

            Instantiate(pack.enemies[i], spawnPosition, Quaternion.identity);
        }
    }
Example #2
0
            private void InitializeEnemyPacks(IEnumerable <Enemy> enemies)
            {
                this.enemyPacks = new List <EnemyPack>();
                EnemyPack currEnemyPack = null;

                for (int enemyPackIndex = 0; enemyPackIndex < InitialData.UnitData.EnemyPacks; enemyPackIndex++)
                {
                    int toTake = InitialData.UnitData.EnemiesCount / InitialData.UnitData.EnemyPacks;
                    int toSkip = this.enemyPacks.Count * toTake;
                    currEnemyPack         = new EnemyPack(enemies.Skip(toSkip).Take(toTake).ToList());
                    currEnemyPack.CanMove = true;
                    this.enemyPacks.Add(currEnemyPack);
                }
            }
Example #3
0
    private static void SaveEnemiesPacks(Room room)
    {
        room.enemiesContainers.Clear();

        for (int i = 0; i < room.enemiesParent.childCount; i++)
        {
            Transform enemiesContainer = room.enemiesParent.GetChild(i);
            EnemyPack pack             = new EnemyPack();

            pack.name      = enemiesContainer.name;
            pack.container = enemiesContainer.gameObject;

            room.enemiesContainers.Add(pack);

            enemiesContainer.gameObject.SetActive(false);
        }
    }
Example #4
0
            private void Move(EnemyPack enemyPack, GameTime gameTime)
            {
                bool toMoveDown = false;

                if (enemyPack.Leader.PositionX >= InitialData.Hud.ScreenWidth - InitialData.UnitData.EnemyWidth - InitialData.UnitData.EnemyWidth ||
                    enemyPack.Leader.PositionX <= InitialData.UnitData.EnemySpeedX)
                {
                    toMoveDown = true;
                    if (enemyPack.Direction == Direction.Right)
                    {
                        enemyPack.Direction = Direction.Left;
                        enemyPack.Leader    = enemyPack.Enemies.First();
                    }
                    else if (enemyPack.Direction == Direction.Left)
                    {
                        enemyPack.Direction = Direction.Right;
                        enemyPack.Leader    = enemyPack.Enemies.Last();
                    }
                }

                foreach (var enemy in enemyPack.Enemies)
                {
                    enemy.Update(gameTime);

                    if (enemyPack.Direction == Direction.Right)
                    {
                        enemy.SpeedX = InitialData.UnitData.EnemySpeedX;
                    }
                    else if (enemyPack.Direction == Direction.Left)
                    {
                        enemy.SpeedX = -InitialData.UnitData.EnemySpeedX;
                    }

                    else if (!toMoveDown)
                    {
                        enemy.SpeedY = 0;
                    }

                    if (toMoveDown)
                    {
                        enemy.SpeedY = InitialData.UnitData.EnemySpeedY;
                    }
                }
            }
    // [MenuItem("Tools/Save Enemy Pack")]
    private static void SaveEnemiesPacks()
    {
        Room room = Selection.activeTransform.root.GetComponent <Room>();

        room.enemiesContainers.Clear();

        for (int i = 0; i < room.enemiesParent.childCount; i++)
        {
            Transform enemiesContainer = room.enemiesParent.GetChild(i);
            EnemyPack pack             = new EnemyPack();

            pack.name      = enemiesContainer.name;
            pack.container = enemiesContainer.gameObject;

            room.enemiesContainers.Add(pack);

            enemiesContainer.gameObject.SetActive(false);
        }

        PrefabUtility.ReplacePrefab(room.gameObject, PrefabUtility.GetPrefabParent(room.gameObject), ReplacePrefabOptions.ConnectToPrefab);
    }
Example #6
0
 private void InitializeEnemyPacks(IEnumerable<Enemy> enemies)
 {
     this.enemyPacks = new List<EnemyPack>();
     EnemyPack currEnemyPack = null;
     for (int enemyPackIndex = 0; enemyPackIndex < InitialData.UnitData.EnemyPacks; enemyPackIndex++)
     {
         int toTake = InitialData.UnitData.EnemiesCount / InitialData.UnitData.EnemyPacks;
         int toSkip = this.enemyPacks.Count * toTake;
         currEnemyPack = new EnemyPack(enemies.Skip(toSkip).Take(toTake).ToList());
         currEnemyPack.CanMove = true;
         this.enemyPacks.Add(currEnemyPack);
     }
 }
Example #7
0
            private void Move(EnemyPack enemyPack, GameTime gameTime)
            {
                bool toMoveDown = false;

                if (enemyPack.Leader.PositionX >= InitialData.Hud.ScreenWidth - InitialData.UnitData.EnemyWidth - InitialData.UnitData.EnemyWidth ||
                                                                             enemyPack.Leader.PositionX <= InitialData.UnitData.EnemySpeedX)
                {
                    toMoveDown = true;
                    if (enemyPack.Direction == Direction.Right)
                    {
                        enemyPack.Direction = Direction.Left;
                        enemyPack.Leader = enemyPack.Enemies.First();
                    }
                    else if (enemyPack.Direction == Direction.Left)
                    {
                        enemyPack.Direction = Direction.Right;
                        enemyPack.Leader = enemyPack.Enemies.Last();
                    }
                }

                foreach (var enemy in enemyPack.Enemies)
                {
                    enemy.Update(gameTime);

                    if (enemyPack.Direction == Direction.Right)
                    {
                        enemy.SpeedX = InitialData.UnitData.EnemySpeedX;
                    }
                    else if (enemyPack.Direction == Direction.Left)
                    {
                        enemy.SpeedX = -InitialData.UnitData.EnemySpeedX;
                    }

                    else if (!toMoveDown)
                    {
                        enemy.SpeedY = 0;
                    }

                    if (toMoveDown)
                    {
                        enemy.SpeedY = InitialData.UnitData.EnemySpeedY;
                    }
                }
            }