protected override void UpdateTask() { base.UpdateTask(); float maxDistance = AirTraffic.trafficRadius * 1.01f; if ((AirTraffic.instance.mpMode || AirTraffic.settings.mpTestMode) && AirTraffic.instance.akutan == false) { maxDistance = AirTraffic.mapRadius * 1.4f; } if (AirTraffic.DistanceFromOrigin(VTMapManager.WorldToGlobalPoint(transform.position)) > maxDistance) { if (aircraft.aiPilot.commandState == AIPilot.CommandStates.Orbit) { Debug.Log(gameObject.name + " went outta bounds, respawning elsewhere"); Vector3D pos = AirTraffic.PointOnCruisingRadius(); Vector3 dir = -pos.toVector3; dir.y = 0; Spawn(pos, dir); } else { if (health.normalizedHealth != 0) { Debug.Log(gameObject.name + " went outta bounds untintentionally, destroying them for our saftey"); health.Kill(); } } } }
public override void StartTask(TrafficAI_Base ai) { Debug.Log("Starting fly off map task!"); TrafficAI_Transport ai2 = (TrafficAI_Transport)ai; ai2.waypoint.GetTransform().position = VTMapManager.GlobalToWorldPoint(AirTraffic.PointOnMapRadius()); ai2.aircraft.SetOrbitNow(ai2.waypoint, 10000, AirTraffic.cruisingAltitudes.Random()); ai2.pilot.navSpeed = UnityEngine.Random.Range(ai2.normalSpeed, ai2.pilot.maxSpeed); base.StartTask(ai2); }
public override void ModLoaded() { HarmonyInstance harmony = HarmonyInstance.Create("cheese.airtraffic"); harmony.PatchAll(Assembly.GetExecutingAssembly()); base.ModLoaded(); VTOLAPI.SceneLoaded += SceneLoaded; VTOLAPI.MissionReloaded += MissionReloaded; settings = new AirTrafficSettings(); LoadFromFile(); Settings modSettings = new Settings(this); modSettings.CreateCustomLabel("Air Traffic Settings"); modSettings.CreateCustomLabel(""); modSettings.CreateCustomLabel("Transport Aircraft"); targetAircraftAmmount_changed += targetAircraftAmmount_Setting; modSettings.CreateCustomLabel("Ammount of transport aircraft:"); modSettings.CreateIntSetting("(Default = 15)", targetAircraftAmmount_changed, settings.targetAircraftAmmount); useTransportAV42_changed += useTransportAV42_Setting; modSettings.CreateCustomLabel("Allow AV-42 to spawn as transport:"); modSettings.CreateBoolSetting("(Default = true)", useTransportAV42_changed, settings.useTransportAV42); useTransportBig_changed += useTransportBig_Setting; modSettings.CreateCustomLabel("Allow big aircraft to spawn as transport:"); modSettings.CreateCustomLabel("(Modified KC-49 and E-4)"); modSettings.CreateBoolSetting("(Default = true)", useTransportBig_changed, settings.useTransportBig); useTransportDrone_changed += useTransportDrone_Setting; modSettings.CreateCustomLabel("Allow amazoon drone to spawn as transport:"); modSettings.CreateCustomLabel("(Modified refuel plane)"); modSettings.CreateBoolSetting("(Default = true)", useTransportDrone_changed, settings.useTransportDrone); useFighters_changed += useFighters_Setting; modSettings.CreateCustomLabel("Allow fighter jets to spawn as transport:"); modSettings.CreateCustomLabel("(F/A-26 and F45s)"); modSettings.CreateBoolSetting("(Default = true)", useFighters_changed, settings.useFighters); useBomber_changed += useBomber_Setting; modSettings.CreateCustomLabel("Allow bombers to spawn as supersonic transport:"); modSettings.CreateBoolSetting("(Default = true)", useBomber_changed, settings.useBomber); useBomber_changed += useBomber_Setting; modSettings.CreateCustomLabel("Allow enemy aircraft to spawn as transport:"); modSettings.CreateBoolSetting("(Default = true)", useEnemy_changed, settings.useEnemy); mpTestMode_changed += mpTestMode_Setting; modSettings.CreateCustomLabel("MP Test Mode:"); modSettings.CreateBoolSetting("(Default = false)", mpTestMode_changed, settings.mpTestMode); modSettings.CreateCustomLabel("This spreads the aircraft across the entire map instead of just near the player."); modSettings.CreateCustomLabel("DO NOT USE, IT IS NOT NECESSARY FOR MP"); modSettings.CreateCustomLabel(""); modSettings.CreateCustomLabel("Please feel free to @ me on the discord if"); modSettings.CreateCustomLabel("you think of any more features I could add!"); VTOLAPI.CreateSettingsMenu(modSettings); instance = this; UpdateTransportAircraft(); }
/// <summary> /// Initializes a new instance of the Analytics class. /// </summary> /// <param name="client">Client.</param> internal Analytics(Amadeus client) { this.airTraffic = new AirTraffic(client); }
/// <summary> /// Constructor. /// @hide /// </summary> public Analytics(Amadeus client) { this.AirTraffic = new AirTraffic(client); }