示例#1
0
        /// <summary>
        /// Añade un enemigo en una posición
        /// Lo añade a su lista de enemigos
        /// </summary>
        /// <param name="enemyAsset"></param>
        /// <param name="enemyPos"></param>
        public void AddEnemy(EnemyAsset enemyAsset, Vector2Int enemyPos)
        {
            //Comprobación de error
            if (enemyPos.x >= _board.GetWidth() || enemyPos.y >= _board.GetWidth())
            {
                Debug.LogError("Se ha tratado de añadir un enemigo en Tile Inexistente: " + enemyPos);
            }

            else
            {
                //Buscamos el grupo al que corresponde este enemigo
                EnemyGroup enemyGroup = Enemies.FirstOrDefault(t => t.EnemyAsset == enemyAsset);

                //Si no existe el grupo
                if (enemyGroup == null)
                {
                    //Instancia e inicializa un grupo de enemigos
                    GameObject enemyGroupGO = new GameObject("EnemyGroup: " + enemyAsset.name);
                    enemyGroup = enemyGroupGO.AddComponent <EnemyGroup>();
                    enemyGroup.Init(enemyAsset, _board);
                    enemyGroup.transform.parent = transform;
                    Enemies.Add(enemyGroup);
                }

                //Añadimos un enemigo al grupo
                enemyGroup.AddEnemy(enemyPos);
            }
        }
        private double lastBeat;        //Temporizador

        /// <summary>
        /// Obtiene referencias, inicializa valores y se suscribe a eventos
        /// </summary>
        /// <param name="enemyAsset"></param>
        /// <param name="board"></param>
        public void Init(EnemyAsset enemyAsset, Board board)
        {
            EnemyAsset = enemyAsset;
            _board     = board;

            enemies  = new List <Enemy>();
            lastBeat = 0.0d;

            //Se suscribe para que le informen cuando la musica ha acabado
            LevelManager.Instance.MusicResetDelegate += OnMusicReset;
        }