protected override void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.GetComponent <TongueJoint>())
        {
            return;
        }
        if (col.gameObject.GetComponent <ProjectileController>())
        {
            return;
        }

        //if (vehicle.isColliding.Contains(col.gameObject)) return;
        //vehicle.isColliding.Add(col.gameObject);

        AffectVisitor   damager   = col.gameObject.GetComponent <AffectVisitor>();
        AffectVisitable damagable = gameObject.GetComponent <AffectVisitable>();

        if (damager == null)
        {
            //Debug.LogWarning("Non-damager " + col.gameObject.name + " collided with damageable " + gameObject.name + ", please implement AffectVisitor method on it, or exclude from check on this damagable. ");
            return;
        }

        damagable.AcceptAffectFrom(damager);
    }
Exemple #2
0
    // i hate muddying this simple pure "CauseAffectTo" with this unclean conditional, it violates clean code conventions... i have no better choice at the moment...
    // it's more like "AttemptCauseDamageNow"
    public override int CauseAffectTo(AffectVisitable damagable)
    {
        int damage = (hitHappenedRecently) ? 0 : this.damage;

        if (!hitHappenedRecently)
        {
            hitHappenedRecently   = true;
            this.stats.damageDelt = damage;
        }
        return(damage);
    }
Exemple #3
0
    void ReceiveDamage(Collision2D col)
    {
        if (!col.gameObject.GetComponent <ProjectileController>())
        {
            return;
        }

        AffectVisitor   damager   = col.gameObject.GetComponent <AffectVisitor>();
        AffectVisitable damagable = gameObject.GetComponent <AffectVisitable>();

        damagable.AcceptAffectFrom(damager);
    }
    protected override void OnCollisionEnter2D(Collision2D col)
    {
        if (!col.gameObject.GetComponent <ProjectileController>())
        {
            return;
        }

        AffectVisitor   damager   = col.gameObject.GetComponent <AffectVisitor>();
        AffectVisitable damagable = gameObject.GetComponent <AffectVisitable>();

        damagable.AcceptAffectFrom(damager);
    }
Exemple #5
0
 public override int CauseAffectTo(AffectVisitable damagable)
 {
     return(0);
 }
 public abstract int CauseAffectTo(AffectVisitable visitable);
Exemple #7
0
 public virtual int CauseAffectTo(AffectVisitable visitable)
 {
     return(damage);
 }
 public override int CauseAffectTo(AffectVisitable visitable)
 {
     return(damage);
 }