Exemple #1
0
    /*
     * Alert
     */
    protected virtual void OnTriggerExit2D(Collider2D collider)
    {
        ISpirit colliderAgent = collider.GetComponent <Spirit>();

        if (colliderAgent != null)
        {
            if (colliderAgent.GetAffinity() == spirit.GetAffinity())
            {
                presentAllyList.Remove(colliderAgent);
                // Debug.Log(presentAllyList.Count);
                if (colliderAgent == primeAlly)
                {
                    FindPrimeAlly();
                }
            }
            else
            {
                presentAdversaryList.Remove(colliderAgent);
                // Debug.Log(presentAdversaryList.Count);
                if (colliderAgent == primeAdversary)
                {
                    FindPrimeAdversary();
                }
            }
        }
    }
Exemple #2
0
 protected virtual void Start()
 {
     presentAllyList      = new List <ISpirit>();
     presentAdversaryList = new List <ISpirit>();
     primeAlly            = null;
     primeAdversary       = null;
 }
Exemple #3
0
 /**
  * Returns prime present ally circle agent or null if none.
  */
 protected virtual void FindPrimeAlly()
 {
     if (presentAllyList.Count > 0)
     {
         primeAlly = presentAllyList[0];
     }
     else
     {
         primeAlly = null;
     }
 }
Exemple #4
0
    public float baseDamage;        // set in inspector

    public override void Actuate(IActivator activator, Dictionary <object, object> argumentDictionary = null)
    {
        CompleteBody completeBodyActivator = (CompleteBody)activator;

        Vector2 headPosition = completeBodyActivator.transform.TransformPoint(completeBodyActivator.headPosition);

        // PrefabReferences.prefabReferences.bullet.SetActive(false);  // done in inspector/editor now  // https://answers.unity.com/questions/636079/assign-exposed-vars-before-instantianting-prefab.html
        GameObject projectileGameObject = Instantiate(PrefabReferences.prefabReferences.bullet, headPosition, completeBodyActivator.transform.rotation);

        ISpirit spirit = projectileGameObject.GetComponent <Spirit>();

        spirit.SetAffinity(completeBodyActivator.GetAffinity());
        Projectile projectile = projectileGameObject.GetComponent <Projectile>();

        projectile.completeBodyActivator = completeBodyActivator;
        projectile.timeout         = projectileTimeout;
        projectile.initialVelocity = initialVelocity;
        projectile.baseDamage      = baseDamage;

        projectileGameObject.SetActive(true);
        projectileGameObject.GetComponent <Rigidbody2D>().velocity = projectileGameObject.transform.TransformDirection(new Vector2(0, projectile.initialVelocity));
        projectileGameObject.GetComponent <Collider2D>().enabled   = true;
    }
Exemple #5
0
 protected virtual void Awake()
 {
     spirit = GetComponent <Spirit>();
 }
Exemple #6
0
 public void SplashWater(ISpirit enemy)
 {
     enemy.Douse("Holy Water");  // Kills with holy water
 }