private bool CheckTransportable(GiveTransportableTo message)
        {
            if (Component.Transportables.Contains(message.Transportable))
            {
                return(true);
            }

            Sender.Tell(new CouldNotProcessMessage(message, NotContainingTransportable));
            return(false);
        }
        private bool CheckCapacity(GiveTransportableTo message, TransportableStorage targetStorage)
        {
            bool limitedCapacity = targetStorage.Capacity > 0;

            if (limitedCapacity && targetStorage.Transportables.Count >= targetStorage.Capacity)
            {
                Sender.Tell(new CouldNotProcessMessage(message, NotEnoughCapacity));
                return(false);
            }

            return(true);
        }
        private bool CheckGiveTransportableTo(GiveTransportableTo message, out TransportableComponent transportable,
                                              out TransportableStorage targetStorage)
        {
            transportable = null;
            targetStorage = null;
            if (!CheckTransportable(message))
            {
                return(false);
            }

            transportable = message.Transportable;
            targetStorage = message.Target;
            return(true);
        }
        private void HandleGiveTransportableTo(GiveTransportableTo message)
        {
            if (!CheckGiveTransportableTo(message, out TransportableComponent transportable,
                                          out TransportableStorage targetStorage))
            {
                return;
            }

            if (!CheckCapacity(message, targetStorage))
            {
                return;
            }

            targetStorage.Transportables.Add(transportable);
            transportable.Transporter = targetStorage;
            Component.Transportables.Remove(transportable);
        }
Exemple #5
0
 private void TellMessageToStorage(GiveTransportableTo message, TransportableStorage storage)
 {
     SetupTransportableStorageActor(storage).Tell(message);
 }