// recoveryFraction - percentage of funds added after recovery, based on distance from KSC public void onVesselRecoveryProcessing(ProtoVessel v, MissionRecoveryDialog dialog, float recoveryFraction) { KerbalGUIManager.print("[rusty] onVesselRecoveryProcessing: x = " + recoveryFraction); KerbalGUIManager.print("[rusty] onVesselRecoveryProcessing: AddFunds = " + -dialog.fundsEarned); // deduct recovered funds Funding.Instance.AddFunds(-dialog.fundsEarned, TransactionReasons.VesselRecovery); // calculate distance // longest possible ground distance on Kerbin [km] //const double HALF_CIRCLE = 2 * Mathf.PI * 600 / 2; // distance from KSC [m] double distance = SpaceCenter.Instance.GreatCircleDistance(SpaceCenter.Instance.cb.GetRelSurfaceNVector(v.latitude, v.longitude)); // KSC is supposedly 25 m^2 in size, so no more than 5 km can be considered free if (distance <= 5000.0) { distance = 0.0f; } KerbalGUIManager.print("[rusty] onVesselRecoveryProcessing: distance = " + distance + " m"); // calculate recovery price // price of 1 metric tone per 1km const double recoveryRate = 100.0; double recoveryPrice = (double)vesselMass * (distance / 1000.0) * recoveryRate; // reset funds dialog.fundsEarned = 0.0; // show recovery GUI GUIRecovery wndRecovery = new GUIRecovery(); wndRecovery.vesselMass = vesselMass; wndRecovery.vesselTitle = v.vesselName; wndRecovery.recoveryPrice = recoveryPrice; wndRecovery.recoveryDistance = Math.Ceiling(distance / 1000.0); wndRecovery.show(); }
public void onDestroy() { observer = null; wndRecovery = null; }