public void GetTargetReferenceFromRallyPoint(GameObject other)
    {
        Creep newCreep = other.GetComponent <Creep>();
        scrCreepEngagementHandler _newCreepEngagementHandler = newCreep.GetComponent <scrCreepEngagementHandler>();

        if (newCreep._CreepHealth.CurrentHealth > 0f) //Extra check needed in case a creep that just died "slides" into the collider
        {
            DefenderCreepList.Add(newCreep);
            foreach (DefenderEngagementHandler _defender in Defenders) //Send all defenders to engage as none
            {
                if (_defender.defenderIsAlive && !_defender.thisDefenderIsEngagedAsMainTarget && !_defender.thisDefenderIsEngagedAsNoneTarget)
                {
                    //print("Sent a defender as none target");
                    _defender.DefenderEngageNewTargetAsNone(newCreep);
                }
            }
            for (int i = 0; i < Defenders.Count; i++) //Send a defender to engage as main
            {
                if (!Defenders[i].thisDefenderIsEngagedAsMainTarget && Defenders[i].defenderIsAlive && _newCreepEngagementHandler.CurrentTarget == null)
                {
                    //print("Sent a defender to engage new target: " + newCreep);
                    Defenders[i].DefenderEngageNewTargetAsMain(Defenders[i], newCreep);
                    return; //Only send one
                }
            }
        }
    }
Example #2
0
    private void InformCreepTarget(Creep _target)
    {
        CurrentCreepTarget = _target;
        scrCreepEngagementHandler _currentTargetEngagementHandler = CurrentCreepTarget.GetComponent <scrCreepEngagementHandler>();

        _currentTargetEngagementHandler.AddDefenderToCreepTargetsList(this);
        _currentTargetEngagementHandler.SetThisCreepIsEngaged();
        defenderMovement.MakeDefenderMoveTowardsTarget();
    }
Example #3
0
    private Creep CheckForUnengagedTargets()
    {
        print("Looking for unengaged target");
        longestTargetDistance = 0f;
        Creep newTarget = null;

        foreach (Creep _target in defenderTowerTargets.DefenderCreepList)
        {
            scrCreepEngagementHandler _targetEngagementHandler = _target.GetComponent <scrCreepEngagementHandler>();
            if (_target.DistanceTravelled > longestTargetDistance && !_targetEngagementHandler.ThisCreepIsEngaged)
            {
                print("Found unengaged target");
                longestTargetDistance = _target.DistanceTravelled;
                newTarget             = _target;
            }
        }
        return(newTarget);
    }
 private void Awake()
 {
     animator          = GetComponentInChildren <Animator>();        //Get the reference to the animator conponent attached to this object
     _creep            = GetComponent <Creep>();
     engagementHandler = GetComponent <scrCreepEngagementHandler>(); //Gets the reference on this game object
 }