예제 #1
0
 public void Cancel()
 {
     Movements.Cancel();
     Interactives.CancelUse();
     Gathers.CancelGather();
     Teleportables.Cancel();
 }
예제 #2
0
    private void Interact(Vector2 lineOrigin, Vector2 chargePos)
    {
        Interactives.Clear();
        Bonuses.Clear();

        var interactableDetect = Utils.LineCastAll(lineOrigin, chargePos, includeTriggers: true);
        var interactives       = interactableDetect.Where(i => i.transform.CompareTag("Interactive")).ToArray();

        foreach (var interactive in interactives)
        {
            if (interactive.transform.TryGetComponent(out IActivable activable))
            {
                Interactives.Add(activable);
            }
        }

        var bonuses = interactableDetect.Where(b => b.transform.CompareTag("Bonus")).ToArray();

        foreach (var item in bonuses)
        {
            if (item.transform.TryGetComponent(out Bonus bonus))
            {
                Bonuses.Add(bonus);
            }
        }
    }
예제 #3
0
 public static void RemoveInteractives(string userId)
 {
     if (Interactives != null)
     {
         var interactive = Interactives.FirstOrDefault(p => p.FromID == userId);
         if (interactive != null)
         {
             Interactives.Remove(interactive);
         }
     }
 }
예제 #4
0
        private void HandleMapComplementaryInformationsDataMessage(InteractiveUseEndedMessage message, ConnectedHost source)
        {
            ElementModel value;

            if (Interactives.TryGetValue((int)message.elemId, out value))
            {
                value.Enabled = false;
            }

            OnUpdated();
        }
예제 #5
0
 private void HandleMapComplementaryInformationsDataMessage(StatedMapUpdateMessage message, ConnectedHost source)
 {
     foreach (StatedElement element in message.statedElements)
     {
         ElementModel value;
         if (Interactives.TryGetValue(element.elementId, out value))
         {
             value.Update(element);
         }
     }
     OnUpdated();
 }
예제 #6
0
 public static void AddInteractive(string userId, string recieveId)
 {
     if (Interactives == null)
     {
         Interactives = new List <Interactive>();
     }
     if (Interactives.FirstOrDefault(p => p.FromID == userId && p.ReceiveID == recieveId) == null)
     {
         var interactive = new Interactive()
         {
             FromID = userId, ReceiveID = recieveId
         };
         Interactives.Add(interactive);
     }
 }
예제 #7
0
        private void HandleMapComplementaryInformationsDataMessage(StatedElementUpdatedMessage message, ConnectedHost source)
        {
            if (Interactives == null)
            {
                return;
            }

            ElementModel value;

            if (Interactives.TryGetValue(message.statedElement.elementId, out value))
            {
                value.Update(message.statedElement);
            }

            OnUpdated();
        }
예제 #8
0
        protected virtual void Dispose(bool disposing)
        {
            if (_disposedValue)
            {
                return;
            }

            if (disposing)
            {
                Movements.Dispose();
                Interactives.Dispose();
                Gathers.Dispose();
                Teleportables.Dispose();
            }

            Movements     = null;
            Interactives  = null;
            Gathers       = null;
            Teleportables = null;

            _disposedValue = true;
        }
예제 #9
0
 public bool CanStopOnCell(Cell cell)
 {
     return(IsCellWalkable(cell) && !Interactives.Any(x => x.Cell == cell));
 }
예제 #10
0
 public void Clear()
 {
     Movements.Clear();
     Interactives.Clear();
     Gathers.Clear();
 }