Example #1
0
 public SingleTargetAttack(Tower tower, IOnHitEffect attackAbility) : base(tower)
 {
     this.tower         = tower;
     this.attackAbility = attackAbility;
 }
Example #2
0
 public AOEAttack(Tower tower, IOnHitEffect attackAbility) : base(tower)
 {
     this.tower         = tower;
     this.attackAbility = attackAbility;
 }
Example #3
0
    // TODO: Is it worth to use reflection on this one?
    private void Initialize()
    {
        switch (data.attackTarget)
        {
        case AttackTarget.Closest:
            iAttackTarget = new ClosestAttackTarget(this);
            break;

        default:
            iAttackTarget = new NoneAttackTarget();
            break;
        }

        switch (data.onHitEffect)
        {
        case OnHitEffect.Slow:
            iOnHitEffect = new SlowAbility();
            break;

        case OnHitEffect.Stun:
            iOnHitEffect = new StunAbility();
            break;

        default:
            iOnHitEffect = new NoneAbility();
            break;
        }

        switch (data.attackType)
        {
        case AttackType.SingleTarget:
            iAttack = new SingleTargetAttack(this, iOnHitEffect);
            break;

        case AttackType.AOE:
            iAttack = new AOEAttack(this, iOnHitEffect);
            break;
        }

        switch (data.buffTarget)
        {
        case BuffTarget.Aura:
            iBuffTarget = new AuraBuffTarget(this);
            break;

        default:
            iBuffTarget = new NoneBuffTarget();
            break;
        }

        switch (data.buffType)
        {
        case BuffType.AttackDamage:
            iBuff = new AttackDamageBuff(this);
            break;

        case BuffType.AttackSpeed:
            iBuff = new AttackSpeedBuff(this);
            break;
        }
    }