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; } }
public override void Update(GameTime gameTime, AttackingGameObject objectUsingAbility) { base.Update(gameTime, objectUsingAbility); if (this.IsOnCooldown) { if (!this.Animation.IsActive) { if (!this.AbilityFinished) { BattleEngine.DamageResolution(this); this.AbilityFinished = true; } objectUsingAbility.IsUsingAbility = false; } this.TimeSinceUse += gameTime.ElapsedGameTime.Milliseconds / 1000; if (this.TimeSinceUse >= this.CooldownTime) { this.AbilityFinished = false; this.IsOnCooldown = false; } this.Animation.Animate(gameTime, objectUsingAbility); } }
public virtual void Update(GameTime gameTime, AttackingGameObject objectUsingAbility) { this.Animation.Position = objectUsingAbility.Position; }
protected abstract void UpdateAffectedTargets(AttackingGameObject thisObject);