void ResetAttractionCirclesAndSpots() { currentAttractionCircle = null; if (currentSpot != null) { currentSpot.availability = true; currentSpot = null; } }
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(); }
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); } } }
void SetNewCurrentAttractionCircle(AttractionCircleV2 _newCurrentAttractionCircle) { currentAttractionCircle = _newCurrentAttractionCircle; SetNewCurrentSpot(); GoToCurrentSpot(); }
public void AddAttractionCircle(AttractionCircleV2 _newAttractionCircle) { AttractionCircleList.Add(_newAttractionCircle); CompareAttractionCircles(); }