public bool DeactivateTarget(InteractableBody target, Character character) { if (target) { return(target.Deactivate(character)); } return(false); }
// ACTIVITIES public bool ActivateTarget(InteractableBody target, CharacterInteface characterInterface, int activityListIndex) { Debug.Log("ActivateTarget " + target); if (target) { return(target.Activate(characterInterface, activityListIndex)); } return(false); }
public void GoToTarget(InteractableBody target, Action onTargetReached) { Target = target; if (Target != null) { _OnTargetReached += onTargetReached; _CurrentState = State.Walk; } }
public static int RegisterInteractable(InteractableBody interactable) { if (!interactable) { return(-1); } int result = _Instance._Interactables.Count; _Instance._Interactables.Add(interactable); return(result); }
public static InteractableBody GetNearestInteractableBody(Vector3 characterPosition, Feeling feelingBonus) { if (_Instance._Interactables.Count == 0) { return(null); } InteractableBody nearestBody = null; int maxIndex = _Instance._Interactables.Count - 1; int j = maxIndex; for (int i = 0; i < _Instance._Interactables.Count; i++) { if (HasPositiveFeelingBonus(feelingBonus, _Instance._Interactables[i])) { nearestBody = _Instance._Interactables[i]; j = i; break; } } if (j == maxIndex) { return(nearestBody); } float nearestDistanceSquared = (characterPosition - nearestBody.transform.position).sqrMagnitude; for (int i = j + 1; i < _Instance._Interactables.Count; i++) { InteractableBody currentBody = _Instance._Interactables[i]; float currentDistanceSquared = (characterPosition - currentBody.transform.position).sqrMagnitude; if (currentDistanceSquared < nearestDistanceSquared) { if (HasPositiveFeelingBonus(feelingBonus, currentBody)) { nearestDistanceSquared = currentDistanceSquared; nearestBody = currentBody; } } } return(nearestBody); }
public bool DeactivateTarget(InteractableBody target) { return(_ActivityManager.DeactivateTarget(target, _Character)); }
public bool ActivateTarget(InteractableBody target, int activityListIndex) { return(_ActivityManager.ActivateTarget(target, this, activityListIndex)); }
private static bool HasPositiveFeelingBonus(Feeling feeling, InteractableBody body) { return(body.GetBonus(feeling) > 0); }
public override void StartActivity() { Target = Level.GetNearestInteractableBody(OwnerCharacterInteface.Position, FeelingInvolved); }