Notify() 공개 추상적인 메소드

public abstract Notify ( ) : void
리턴 void
예제 #1
0
    public new void Execute(CharacterObservable caller, CharacterObservable characterToAttack)
    {
        if (caller == null)
            throw new ArgumentException();
        if (characterToAttack == null)
            throw new ArgumentException();
        //On Later commit

        //if (!(caller is BaseEnemy) && !(characterToAttack is BaseEnemy))
        //	throw new Exception("Cannot attack team member");
        //if (caller is Healer && characterToAttack is BaseEnemy)
        //	throw new Exception("Cannot heal enemies");
        //if (caller is BaseEnemy && characterToAttack is BaseEnemy
        //    && !(caller is NormalHealer || caller is HardHealer))
        //	throw new Exception("No friendly-fire amongst AI");
        if (caller.Equals(characterToAttack))//To be tested November 20th 2015
            throw new Exception("Cannot harm self");

        Target = characterToAttack;
        if (Target == null)
            return;
        //if (caller is NormalHealer || caller is HardHealer && Target is BaseEnemy)
        //{
        //	Target.Health.RestoreHealth((int)caller.BaseStats.Power);
        //}
        else
        {
            var attackStrenght = caller.Stats.GetAttackStrenght(caller, Target);
            Target.Health.TakeDamageFromCharacter(caller);
        }
        Target.Notify(); // Single cal of notify here will either restore health, reduce health or make so that the manager call Death animation and destroy game object
        IsExecuted = true;
    }
예제 #2
0
    private void HarmCharacter(CharacterObservable human)
    {
        var isSelfWizardType        = Observable.IsOfTypeWizard();
        var isDefenseBonusActivated = human.Stats.DefenseBonusActivated;

        Observable.Animator.SetTrigger(isSelfWizardType ? "Attack" : "Conjuring");
        var attackPower = isSelfWizardType
            ? Observable.Stats.Power + Observable.Stats.MagicPower - CalculateDamageReduction(human)
            : Observable.Stats.Power - CalculateDamageReduction(human);

        if (CanDoExtraDamage())
        {
            attackPower *= GetIncreaseTemporaryStrength(attackPower);
        }
        human.Health.TakeDamageFromCharacter((isDefenseBonusActivated ? (attackPower - human.Stats.TemporaryDefenseBonusValue) : attackPower));
        human.Animator.SetTrigger(isDefenseBonusActivated ? "Hurt" : "Defense");
        human.Notify();
    }
    public new void Execute(CharacterObservable caller, CharacterObservable characterToAttack)
    {
        if (caller == null)
        {
            throw new ArgumentException();
        }
        if (characterToAttack == null)
        {
            throw new ArgumentException();
        }
        //On Later commit

        //if (!(caller is BaseEnemy) && !(characterToAttack is BaseEnemy))
        //	throw new Exception("Cannot attack team member");
        //if (caller is Healer && characterToAttack is BaseEnemy)
        //	throw new Exception("Cannot heal enemies");
        //if (caller is BaseEnemy && characterToAttack is BaseEnemy
        //    && !(caller is NormalHealer || caller is HardHealer))
        //	throw new Exception("No friendly-fire amongst AI");
        if (caller.Equals(characterToAttack))//To be tested November 20th 2015
        {
            throw new Exception("Cannot harm self");
        }

        Target = characterToAttack;
        if (Target == null)
        {
            return;
        }
        //if (caller is NormalHealer || caller is HardHealer && Target is BaseEnemy)
        //{
        //	Target.Health.RestoreHealth((int)caller.BaseStats.Power);
        //}
        else
        {
            var attackStrenght = caller.Stats.GetAttackStrenght(caller, Target);
            Target.Health.TakeDamageFromCharacter(caller);
        }
        Target.Notify(); // Single cal of notify here will either restore health, reduce health or make so that the manager call Death animation and destroy game object
        IsExecuted = true;
    }
    //TODO: Update method's signature
    public void Undo(CharacterObservable caller, CharacterObservable active)
    {
        if (!Equals(caller, active))
        {
            throw new Exception("Cannot Undo on non-active character");
        }

        PreviousAction = (ICharacterActionCommand)CommandStack.Pop();
        if (PreviousAction is AttackCommand && LastCharacterAttacked != null)
        {
            var attackStrenght = caller.Stats.GetAttackStrenght(caller, LastCharacterAttacked);
            LastCharacterAttacked.Health.RaiseHealth(caller);
            LastCharacterAttacked.healthWasRaised = true;
            LastCharacterAttacked.Notify();
            LastCharacterAttacked.healthWasRaised      = false;
            ((AttackCommand)PreviousAction).IsExecuted = false;
            return;
        }
        if (PreviousAction is DefendCommand)
        {
            caller.Stats.DefenseBonusActivated = false;
            caller.Stats.ResetTemporaryBonus();
            ((DefendCommand)PreviousAction).IsExecuted = false;
            return;
        }
        //Implementation to come
        if (PreviousAction is MoveCommand)
        {
            //caller.CurrentCoordinates = caller.OldCoordinates;
            //((MoveCommand)PreviousAction).Execute(caller.CurrentCoordinates);
            //((MoveCommand)PreviousAction).IsExecuted = false;
        }

        if (PreviousAction is RotateCommand)
        {
        }
    }
 private void HarmCharacter(CharacterObservable human)
 {
     var isSelfWizardType = Observable.IsOfTypeWizard();
     var isDefenseBonusActivated = human.Stats.DefenseBonusActivated;
     Observable.Animator.SetTrigger(isSelfWizardType ? "Attack" : "Conjuring");
     var attackPower = isSelfWizardType
         ? Observable.Stats.Power + Observable.Stats.MagicPower - CalculateDamageReduction(human)
         : Observable.Stats.Power - CalculateDamageReduction(human);
     if (CanDoExtraDamage())
         attackPower *= GetIncreaseTemporaryStrength(attackPower);
     human.Health.TakeDamageFromCharacter((isDefenseBonusActivated ? (attackPower - human.Stats.TemporaryDefenseBonusValue) : attackPower));
     human.Animator.SetTrigger(isDefenseBonusActivated ? "Hurt" : "Defense");
     human.Notify();
 }