/// <summary> /// Se llama cuando llegamos al punto de entrega de un paquete /// </summary> void DeliverCurrentParcel() { try { var validAddress = _isAddressValid; var targetAvailable = _isTargetAvailable; CurrentParcel.Attempts++; // Comprobamos que el punto de entrega sea válido (existe una casa en el lugar) if (validAddress) { // La dirección es correcta, ahora comprobamos el usuario se encuentre en casa if (targetAvailable) { // Podemos entregar el paquete CurrentParcel.Deliver(); CurrentParcel = null; } else { // El destinatario estaba ausente, no podemos entregar el paquete Debug.LogWarning(gameObject.name + ": Error en la entrega del paquete " + CurrentParcel.name + ". Motivo: Destinatario ausente"); throw new RecipientMissingException(); } } else { // Dirección incorrecta Debug.LogWarning(gameObject.name + ": Error en la entrega del paquete " + CurrentParcel.name + ". Motivo: Dirección incorrecta"); throw new InvalidAddressException(); } } catch (InvalidAddressException) { CurrentParcel.AddInvalidAddressIncidence(); CurrentParcel.MarkAsReturnToSender(); } catch (RecipientMissingException) { CurrentParcel.AddRecipientMissingIncidence(); } }