Ejemplo n.º 1
0
        public bool DeactivateTarget(InteractableBody target, Character character)
        {
            if (target)
            {
                return(target.Deactivate(character));
            }

            return(false);
        }
Ejemplo n.º 2
0
        // ACTIVITIES

        public bool ActivateTarget(InteractableBody target, CharacterInteface characterInterface, int activityListIndex)
        {
            Debug.Log("ActivateTarget " + target);
            if (target)
            {
                return(target.Activate(characterInterface, activityListIndex));
            }

            return(false);
        }
Ejemplo n.º 3
0
        public void GoToTarget(InteractableBody target, Action onTargetReached)
        {
            Target = target;

            if (Target != null)
            {
                _OnTargetReached += onTargetReached;
                _CurrentState     = State.Walk;
            }
        }
Ejemplo n.º 4
0
        public static int RegisterInteractable(InteractableBody interactable)
        {
            if (!interactable)
            {
                return(-1);
            }

            int result = _Instance._Interactables.Count;

            _Instance._Interactables.Add(interactable);

            return(result);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 public bool DeactivateTarget(InteractableBody target)
 {
     return(_ActivityManager.DeactivateTarget(target, _Character));
 }
Ejemplo n.º 7
0
 public bool ActivateTarget(InteractableBody target, int activityListIndex)
 {
     return(_ActivityManager.ActivateTarget(target, this, activityListIndex));
 }
Ejemplo n.º 8
0
 private static bool HasPositiveFeelingBonus(Feeling feeling, InteractableBody body)
 {
     return(body.GetBonus(feeling) > 0);
 }
Ejemplo n.º 9
0
 public override void StartActivity()
 {
     Target = Level.GetNearestInteractableBody(OwnerCharacterInteface.Position, FeelingInvolved);
 }