bool PrepareMove(Entity player, ICollection<Entity> entitiesInSpot) { if (entitiesInSpot.ContainsComponent(ComponentIds.AIMove)) { // enemy there, can't do anything return false; } // handle walls Entity wall = null; if (entitiesInSpot.ContainsComponent(ComponentIds.Destructible, out wall)) { wall.DamageDestructible(); pool.PlayAudio(player.audioAttackSource); if (player.hasView) { player.AddAnimation(Animation.playerChop); } // nothing to do now that we've chopped return false; } // otherwise we can move return true; }
bool PrepareMove(Entity enemy, ICollection<Entity> entitiesInSpot) { // handle player Entity player; if (enemy.hasFoodDamager && entitiesInSpot.ContainsComponent(ComponentIds.Controllable, out player)) { pool.AddToFoodBag(-enemy.foodDamager.points); pool.PlayAudio(enemy.audioAttackSource); enemy.AddAnimation(Animation.enemyAttack); player.AddAnimation(Animation.playerHit); // can't move return false; } if (entitiesInSpot.Count == 1 && entitiesInSpot.ContainsComponent(ComponentIds.Food)) { return true; } return false; }