コード例 #1
0
 public void ActiveIA(CCEnemyBase enemy, CCPlayerBase player)
 {
     enemy.IsIA = true;
     enemy.IADesiredActionState = EnemyDesiredActionState.SearchingTarget;
     enemy.IAPersonalityState = EnemyPersonalityState.Attacking; //(EnemyPersonalityState)CCRandom.Next(1, 3);
     enemy.IATarget = new CCPoint(enemy.PositionX, (int)CCRandom.GetRandomFloat(player.PositionY - 50f, player.PositionY + 50f));
 }
コード例 #2
0
        public void UpdateShipIA(CCEnemyBase enemy, CCPlayerBase player, CCSize wSize, int PLAYER_SPEED)
        {
            if (enemy.IsIA)
            {

                enemy.PositionX -= (PLAYER_SPEED + enemy.VELOCITY + enemy.VELOCITY + CCRandom.Next(1, 3));

                //Esta dentro de su rango;
                if (enemy.IADesiredActionState == EnemyDesiredActionState.Firing)
                {
                    if (ACTUAL_DELAY <= DELAY_SHOOT)
                        ACTUAL_DELAY++;
                    else
                    {
                        enemy.IADesiredActionState = EnemyDesiredActionState.SearchingTarget;
                        ACTUAL_DELAY = 0;
                    }
                }

                if (enemy.IAPersonalityState == EnemyPersonalityState.Suicide)
                {
                    if (enemy.PositionY > player.PositionY)
                        enemy.PositionY -= CCRandom.Next(1, 3);
                    else if (enemy.PositionY < player.PositionY)
                        enemy.PositionY += CCRandom.Next(1, 3);
                }
                else if (enemy.IAPersonalityState == EnemyPersonalityState.Attacking)
                {

                    //Si la posicion
                    if (enemy.IATarget.Y == enemy.Position.Y)
                        enemy.IATarget.Y = (int)CCRandom.GetRandomFloat(player.PositionY - 50f, player.PositionY + 50f);

                    if (enemy.PositionY > enemy.IATarget.Y)
                        enemy.PositionY -= CCRandom.Next(1, 3);
                    else if (enemy.PositionY < enemy.IATarget.Y)
                        enemy.PositionY += CCRandom.Next(1, 3);

                }

                if (enemy.PositionY > player.PositionY - 30 && enemy.PositionY < player.PositionY + 30 && enemy.PositionX < wSize.Width - 15)
                {

                    CCEventCustom eventC = new CCEventCustom(CCBeatEmUpGameLayer.EVENT_ENEMY_ID);
                    eventC.UserData = enemy;

                }

                if (player.PositionX > enemy.PositionX - 100)
                {
                    if (enemy.IADesiredActionState != EnemyDesiredActionState.OutOfRange)
                        enemy.IADesiredActionState = EnemyDesiredActionState.OutOfRange;
                }
            }
        }
コード例 #3
0
        public void DeleteEnemy(CCEnemyBase enemy, bool sound)
        {
            RemoveChild(enemy);

            if (typeof(CCEnemyBase) == enemy.GetType())
                (enemy as CCEnemyBase).Destroy(sound);

            lock (Enemies)
            {
                Enemies.Remove(enemy);
            }
        }
コード例 #4
0
        public void CheckEnemyCollition(CCPlayerBase Player1)
        {
            if (Player1 == null)
                return;

            if (!Player1.HasCollision)
            {

                var deletedShoot = new List<CCShootBase>();
                var deletedEnemy = new List<CCNode>();

                bool enemydeleted = false;

                CCEnemyBase[] cacheEnemies = new CCEnemyBase[Enemies.Count];
                Enemies.CopyTo(cacheEnemies);

                CCShootBase[] cacheShoots = new CCShootBase[Shoots.Count];
                Shoots.CopyTo(cacheShoots);

                foreach (CCEnemyBase tmpEnemy in cacheEnemies) //cacheEnemies.Where(s => (typeof(EnemyMeteor) == s.GetType() && (s as EnemyMeteor).CheckCollition) || (typeof(EnemyShip) == s.GetType() && (s as EnemyShip).CheckCollition)))
                {
                    enemydeleted = false;

                    //COMPROBAMOS LOS DISPAROS QUE HAN IMPACTADO CON EL ENEMIGO
                    foreach (var tmpShoot in cacheShoots)
                    {

                        //TODO: MEJORAR Y PONER UN CIRCULO CON RADIO ALTO Y ANCHO en el caso de los asteorides
                        //AÑADIMOS LA RRAY DE ELEMENTOS PARA BOTTAR
                        if (tmpEnemy.BoundingBox.IntersectsRect(tmpShoot.BoundingBox))
                        {

                            deletedShoot.Add(tmpShoot);
                            deletedEnemy.Add(tmpEnemy);
                            enemydeleted = true; //SOLO ES PARA EL ENEMIGO
                        }
                    }

                    if (enemydeleted) //SI HEMOS IMPACTADO EN ALGUN ENEMIGO LO BORRAMOS
                    {

                        //ELIMINAMOS EL DISPARO
                        foreach (var tmpShoot in deletedShoot)
                            RemoveShoot(tmpShoot);// tmpShoot.DeleteElement(); //Eliminamos el disparo que ha impactado con el enemigo

                        if (tmpEnemy.GetType() == typeof(CCEnemyBase))
                        {
                            if ((tmpEnemy as CCEnemyBase).RemoveLife(1))
                            {
                                EnemyKills++;
                                DeleteEnemy(tmpEnemy, true);
                            }
                        }
                        else if (tmpEnemy.GetType() == typeof(CCEnemyBase))
                        {
                            EnemyKills++;
                            DeleteEnemy(tmpEnemy, true);
                        }

                    }
                    else //SI EL ENEMIGO NO HA SIDO DESTRUIDO
                    {

                        //COMPROBAMOS QUE SALGA FUERA DE PANTALLA
                        if (tmpEnemy.PositionX < -(3 + tmpEnemy.ContentSize.Width))
                        {
                            DeleteEnemy(tmpEnemy, false);
                            enemydeleted = true;
                        }

                        //Comprobamos que esté activada la colision
                        if ((typeof(CCEnemyBase) == tmpEnemy.GetType() && (tmpEnemy as CCEnemyBase).CheckCollition))
                            //ENEMIGO CHOCA CON NAVE
                            if (!enemydeleted && Player1.BoundingBox.IntersectsRect(tmpEnemy.BoundingBox))
                            {

                                //TODO: COLLISION DETECTED EVENT
                                //   CollitionDetected();
                            }

                    }

                }

            }
        }
コード例 #5
0
 //public void CreateEnemyShipOnLayer(CCInfiniteTile tile, int number)
 //{
 //    for (int i = 0; i < number; i++)
 //        CreateEnemyShipOnLayer(tile);
 //}
 //public void CreateEnemyShipOnLayer(CCInfiniteTile tile)
 //{
 //    CCPoint Position = CCPointExHelper.GetAleatoryPositionBoundingX(this.BoundingBox, 100, Director.WindowSizeInPixels);
 //    //Position.X += tile.PositionX;
 //    CreateEnemyShipOnLayer(tile, Position);
 //}
 public void AddEnemyShipOnRandomPositionLayer(CCInfiniteTile tile, CCEnemyBase enemy)
 {
     enemy.Position = CCPointExHelper.GetAleatoryPositionBoundingX(BoundingBox, 100, Director.WindowSizeInPixels);
     AddEnemyShipOnLayer(tile, enemy);
 }
コード例 #6
0
 /// <summary>
 /// Adds and positions aleatory a enemy on a tile
 /// </summary>
 /// <param name="tile"></param>
 /// <param name="enemy"></param>
 public void AddEnemyShipOnLayer(CCInfiniteTile tile, CCEnemyBase enemy)
 {
     enemy.PositionX = tile.PositionX + enemy.PositionX;
     AddEnemy(enemy);
 }
コード例 #7
0
        public void AddEnemy(CCEnemyBase enemy)
        {
            lock (Enemies)
            {
                Enemies.Add(enemy);
            }

            AddChild(enemy, 2);
        }
コード例 #8
0
 public string GetShipIAInfo(CCEnemyBase enemy)
 {
     return string.Format("{0}{1}", (enemy.IsIA) ? "IA ENABLED" : "IA DISABLED", enemy.IA_INFO);
 }