void RegisterCompletedDelivery(DeliveryInfo deliveryInfo) { float deliveryTime = Time.time - deliveryInfo.timestamp; if (deliveryTime < 0) { Debug.LogError("DELIVERY TIME < 0 - BIG ERROR"); return; } ++completedDeliveries; avgDeliveryTime += deliveryTime; revenue += TimeValueFunctions.DeliveryValue(deliveryTime, deliveryInfo.packageInfo, deliveryInfo.timeValueFunction); }
public void EnqueueDeliveryRequest(Improbable.Entity.Component.ResponseHandle <DeliveryHandler.Commands.RequestDelivery, DeliveryRequest, DeliveryResponse> handle) { MetricsWriter.Send(new ControllerMetrics.Update().SetIncomingDeliveryRequests(++incomingRequests)); float expectedDuration = Vector3.Distance(gameObject.transform.position, handle.Request.destination.ToUnityVector()) / SimulationSettings.MaxDroneSpeed; if (deliveryRequestQueue.Count >= SimulationSettings.MaxDeliveryRequestQueueSize) { handle.Respond(new DeliveryResponse(false)); float value = TimeValueFunctions.DeliveryValue(expectedDuration, handle.Request.packageInfo, handle.Request.timeValueFunction); potential += value; rejecValue += value; ++rejections; } else { deliveryRequestQueue.Enqueue(new QueueEntry(Time.time, handle.Request, 0, expectedDuration)); handle.Respond(new DeliveryResponse(true)); } }