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)); }
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; } } }
public void DeleteEnemy(CCEnemyBase enemy, bool sound) { RemoveChild(enemy); if (typeof(CCEnemyBase) == enemy.GetType()) (enemy as CCEnemyBase).Destroy(sound); lock (Enemies) { Enemies.Remove(enemy); } }
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(); } } } } }
//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); }
/// <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); }
public void AddEnemy(CCEnemyBase enemy) { lock (Enemies) { Enemies.Add(enemy); } AddChild(enemy, 2); }
public string GetShipIAInfo(CCEnemyBase enemy) { return string.Format("{0}{1}", (enemy.IsIA) ? "IA ENABLED" : "IA DISABLED", enemy.IA_INFO); }