Beispiel #1
0
    public override void StartTask(TrafficAI_Base ai)
    {
        Debug.Log("Starting landing at airport task!");
        Debug.Log("Trying to land on " + airport.id);
        TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;

        transportAI.aircraft.RearmAt(airport);
        base.StartTask(ai);
    }
Beispiel #2
0
    public override void StartTask(TrafficAI_Base ai)
    {
        Debug.Log("Starting landing at temporary task!");
        TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;

        ai.waypoint.GetTransform().position = VTMapManager.GlobalToWorldPoint(point);
        transportAI.aircraft.LandAtWpt(ai.waypoint);
        idleTimer = UnityEngine.Random.Range(15f, 30f);
        base.StartTask(ai);
    }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    public override void StartTask(TrafficAI_Base ai)
    {
        Debug.Log("Starting air to air refueling!");
        Debug.Log("Trying to refuel with " + refuelPlane.gameObject.name);
        TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;

        transportAI.pilot.fuelTank.SetNormFuel(Mathf.Min(transportAI.pilot.fuelTank.fuel / transportAI.pilot.fuelTank.maxFuel, 0.5f));
        transportAI.pilot.GoRefuel(refuelPlane);
        base.StartTask(ai);
    }
Beispiel #5
0
 public override bool CanStartTask(TrafficAI_Base ai)
 {
     if (base.CanStartTask(ai))
     {
         TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;
         return(transportAI.pilot.isVtol);
     }
     else
     {
         return(false);
     }
 }
Beispiel #6
0
    public override void UpdateTask(TrafficAI_Base ai, float deltaTime)
    {
        TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;

        if (transportAI.pilot.commandState == AIPilot.CommandStates.Park)
        {
            idleTimer -= deltaTime;
            if (idleTimer < 0)
            {
                transportAI.aircraft.TakeOff();
            }
        }
    }
Beispiel #7
0
    public override bool CanStartTask(TrafficAI_Base ai)
    {
        TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;

        if (base.CanStartTask(ai))
        {
            return(refuelPlane != null && transportAI.pilot.refuelPort);
        }
        else
        {
            return(false);
        }
    }
Beispiel #8
0
    public override bool CanStartTask(TrafficAI_Base ai)
    {
        if (base.CanStartTask(ai))
        {
            if (ai.gameObject.name == "ABomberAI")
            {
                return(false);
            }

            TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;
            return(transportAI.pilot.parkingSize < maxSize && (transportAI.rb.mass < maxMass || (vtolOnly && transportAI.pilot.isVtol)) && ParkingAvailable(transportAI.pilot.parkingSize));
        }
        else
        {
            return(false);
        }
    }
    void SpawnRandomAircraft(Vector3D pos, Vector3 dir)
    {
        if (mpMode && host == false)
        {
            return;
        }

        if (spawnableAircraft.Count > 0)
        {
            GameObject aircraft = spawnableAircraft[UnityEngine.Random.Range(0, spawnableAircraft.Count)].SpawnAircraft();

            FloatingOriginTransform floatingTransform = aircraft.AddComponent <FloatingOriginTransform>();
            if (floatingTransform != null)
            {
                floatingTransform.SetRigidbody(aircraft.GetComponent <Rigidbody>());
            }
            aircraft.GetComponent <Rigidbody>().interpolation = RigidbodyInterpolation.Interpolate;

            TrafficAI_Transport ai          = aircraft.AddComponent <TrafficAI_Transport>();
            GameObject          unitSpawner = new GameObject();
            ai.aircraft.unitSpawner = unitSpawner.AddComponent <UnitSpawner>();
            Traverse unitSpawnerTraverse = Traverse.Create(ai.aircraft.unitSpawner);
            unitSpawnerTraverse.Field("_spawned").SetValue(true);
            Traverse aircraftSpawnerTraverse = Traverse.Create(ai.aircraft);
            aircraftSpawnerTraverse.Field("taxiSpeed").SetValue(ai.aircraft.aiPilot.taxiSpeed);
            ai.Spawn(pos, dir);

            Debug.Log("Spawned " + aircraft.name + " as air traffic");
            activeAircraftAmmount++;

            if (mpMode)
            {
                Debug.Log("MP is enabled, networking this aircraft!");
                MPSetUpAircraft(ai.aircraft.actor);
            }
        }
        else
        {
            Debug.Log("No aircraft were available, cannot spawn a traffic aircraft.");
        }
    }
Beispiel #10
0
    public override bool IsTaskCompleted(TrafficAI_Base ai)
    {
        TrafficAI_Transport transportAI = (TrafficAI_Transport)ai;

        return(transportAI.pilot.commandState == AIPilot.CommandStates.Orbit);
    }