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); }
private void TellMessageToStorage(GiveTransportableTo message, TransportableStorage storage) { SetupTransportableStorageActor(storage).Tell(message); }