Esempio n. 1
0
 void ResetAttractionCirclesAndSpots()
 {
     currentAttractionCircle = null;
     if (currentSpot != null)
     {
         currentSpot.availability = true;
         currentSpot = null;
     }
 }
Esempio n. 2
0
 public void RemoveAttractionCircle(AttractionCircleV2 _oldAttractionCircle)
 {
     if (myState == AIState.Fleeing && _oldAttractionCircle == attractionCircleFleeing) //si le cercle dont on vient de sortir était le repulse
     {
         if (myState != AIState.Neutral)
         {
             SetState(AIState.Neutral);
         }
     }
     AttractionCircleList.Remove(_oldAttractionCircle);
     CompareAttractionCircles();
 }
Esempio n. 3
0
    public void CompareAttractionCircles()
    {
        AttractionCircleV2 _targetedAttractionCircle = null;
        int maxScore = 0;

        if (AttractionCircleList.Count > 0)
        {
            for (int i = 0; i < AttractionCircleList.Count; i++)
            {
                if (AttractionCircleList[i].repulse) // one repulse circle detected !!
                {
                    attractionCircleFleeing = AttractionCircleList[i];
                    if (myState != AIState.Fleeing)
                    {
                        SetState(AIState.Fleeing);
                    }
                    return;
                }
                if (AttractionCircleList[i].score > maxScore) //attraction circle better than previous ones checked
                {
                    _targetedAttractionCircle = AttractionCircleList[i];
                    maxScore = _targetedAttractionCircle.score;
                }
            }
            if (maxScore > 0 && _targetedAttractionCircle != null && myState != AIState.Fleeing) //new attraction circle found
            {
                SetNewCurrentAttractionCircle(_targetedAttractionCircle);
            }
            else if (myState != AIState.Fleeing) //when no attraction circles
            {
                if (myState != AIState.Neutral)
                {
                    SetState(AIState.Neutral);
                }
                SetNewCurrentAttractionCircle(null);
            }
        }
    }
Esempio n. 4
0
 void SetNewCurrentAttractionCircle(AttractionCircleV2 _newCurrentAttractionCircle)
 {
     currentAttractionCircle = _newCurrentAttractionCircle;
     SetNewCurrentSpot();
     GoToCurrentSpot();
 }
Esempio n. 5
0
 public void AddAttractionCircle(AttractionCircleV2 _newAttractionCircle)
 {
     AttractionCircleList.Add(_newAttractionCircle);
     CompareAttractionCircles();
 }