Example #1
0
    private void sendHelp(Transform drone, Transform attacker, Transform victim)
    {
        ShieldDrone d = drone.GetComponent <ShieldDrone>();

        if (d.GetComponent <ShieldingTarget>() == null)
        {
            d.gameObject.AddComponent <ShieldingTarget>();
        }
        ShieldingTarget target = d.GetComponent <ShieldingTarget>();

        target.attacker       = attacker;
        target.defender       = victim;
        target.freeFormation  = freeFormation;
        target.home_formation = this;
        remove_drone(d);
        DirectShieldFormation directShield = active_shields.Find(f => f.follow.Equals(victim));

        if (directShield == null)
        {
            directShield = Instantiate(direct_shield, victim.position, Quaternion.identity);
            directShield.transform.SetParent(transform.parent);
            active_shields.Add(directShield);
            directShield.follow = victim;
        }
        freeFormation.move_drone(d, directShield);
    }
Example #2
0
    public void reassignShield(ShieldDrone drone)
    {
        ShieldingTarget target = drone.GetComponent <ShieldingTarget>();

        drone.SetShieldPower(false);
        cancelHelp(target.attacker, target.defender);
        if (pending_attackers.Count == 0)
        {
            target.freeFormation.move_drone(drone, target.home_formation);
        }
        else
        {
            helpPending(drone.transform);
        }
    }