protected override void UpdateAffectedTargets(AttackingGameObject thisObject) { foreach (var enemy in OrusTheGame.Instance.GameInformation.Levels[OrusTheGame.Instance.GameInformation.CurrentLevelIndex].Enemies) { if (thisObject.CollidesForAttack(enemy, !thisObject.IddleAnimation.SpriteEffect.HasFlag(SpriteEffects.FlipHorizontally))) { this.AffectedTargets.Add(enemy); } } }
public override void Update(GameTime gameTime, AttackingGameObject objectUsingAbility) { base.Update(gameTime, objectUsingAbility); var possibleColliders = new List <ICollideable>(); foreach (var enemy in OrusTheGame.Instance.GameInformation.Levels[OrusTheGame.Instance.GameInformation.CurrentLevelIndex].Enemies) { possibleColliders.Add(enemy); } possibleColliders.Add(OrusTheGame.Instance.GameInformation.Character); bool collides = false; foreach (var collider in possibleColliders) { foreach (var alreadyAffected in this.AffectedTargets) { if (objectUsingAbility.Collides(alreadyAffected)) { collides = true; } } if (objectUsingAbility.CollidesForAttack(collider, !objectUsingAbility.IddleAnimation.SpriteEffect.HasFlag(SpriteEffects.FlipHorizontally))) { var enemy = collider as AttackingGameObject; if (enemy != null) { this.AffectedTargets.Add(enemy); } collides = true; } if (collides) { this.Animation.SpriteEffect = objectUsingAbility.IddleAnimation.SpriteEffect; objectUsingAbility.MoveTo(3, !objectUsingAbility.IddleAnimation.SpriteEffect.HasFlag(SpriteEffects.FlipHorizontally), false, false); } } if (!collides) { this.Animation.IsActive = false; objectUsingAbility.IddleAnimation.IsActive = true; } }
public override void Update(GameTime gameTime, AttackingGameObject objectUsingAbility) { base.Update(gameTime, objectUsingAbility); var possibleColliders = new List<ICollideable>(); foreach (var enemy in OrusTheGame.Instance.GameInformation.Levels[OrusTheGame.Instance.GameInformation.CurrentLevelIndex].Enemies) { possibleColliders.Add(enemy); } possibleColliders.Add(OrusTheGame.Instance.GameInformation.Character); bool collides = false; foreach (var collider in possibleColliders) { foreach (var alreadyAffected in this.AffectedTargets) { if (objectUsingAbility.Collides(alreadyAffected)) { collides = true; } } if (objectUsingAbility.CollidesForAttack(collider, !objectUsingAbility.IddleAnimation.SpriteEffect.HasFlag(SpriteEffects.FlipHorizontally))) { var enemy = collider as AttackingGameObject; if(enemy != null) { this.AffectedTargets.Add(enemy); } collides = true; } if (collides) { this.Animation.SpriteEffect = objectUsingAbility.IddleAnimation.SpriteEffect; objectUsingAbility.MoveTo(3, !objectUsingAbility.IddleAnimation.SpriteEffect.HasFlag(SpriteEffects.FlipHorizontally), false, false); } } if(!collides) { this.Animation.IsActive = false; objectUsingAbility.IddleAnimation.IsActive = true; } }