Beispiel #1
0
        public IParkingSlot LocateFreeSlots(VehicleBase vehicle)
        {
            IParkingSlot parkingSlot = null;

            foreach (var level in _parkingLookup)
            {
                parkingSlot = FindSlot(parkingSlot, level, typeof(MotorcycleSlot));

                if (parkingSlot != null)
                {
                    break;
                }
                else
                {
                    parkingSlot = FindSlot(parkingSlot, level, typeof(CompactSlot));

                    if (parkingSlot != null)
                    {
                        break;
                    }
                    else
                    {
                        parkingSlot = FindSlot(parkingSlot, level, typeof(LargeSlot));

                        if (parkingSlot != null)
                        {
                            break;
                        }
                    }
                }
            }

            return(parkingSlot);
        }
Beispiel #2
0
 public void MarkBooked(VehicleBase vehicle, IParkingSlot slot)
 {
     if (!_vehicleToSlotMap.ContainsKey(slot))
     {
         _vehicleToSlotMap.Add(slot, vehicle);
     }
 }
        public static VehicleDb ToVehicleDb(this VehicleBase vehicleBase)
        {
            VehicleDb vehicleDb = new VehicleDb()
            {
                Id          = vehicleBase.Id,
                Make        = vehicleBase.Make,
                Model       = vehicleBase.Model,
                VehicleType = EVehicleType.Car
            };

            Car car = vehicleBase as Car;

            if (car != null)
            {
                vehicleDb.Engine   = car.Engine;
                vehicleDb.Doors    = car.Doors;
                vehicleDb.Wheels   = car.Wheels;
                vehicleDb.BodyType = car.BodyType;
            }

            Boat boat = vehicleBase as Boat;

            if (boat != null)
            {
                vehicleDb.Length      = boat.Length;
                vehicleDb.Name        = boat.Name;
                vehicleDb.VehicleType = EVehicleType.Boat;
            }
            return(vehicleDb);
        }
    public void CrossFinishLine(VehicleBase car)
    {
        Vector3 heading = car.transform.right;
        float   dot     = Vector3.Dot(_startingNavLine.transform.right, heading);

        if (dot <= 0)
        {
            return;
        }

        if (_lapsComplete.ContainsKey(car.id))
        {
            int laps = _lapsComplete[car.id];
            laps += 1;
            if (onLapFinished != null)
            {
                onLapFinished(car.id);
            }
            // Report race finished if done
            if (laps >= targetLaps)
            {
                if (onRaceFinished != null)
                {
                    onRaceFinished(car.id);
                }
            }
            _lapsComplete[car.id] = laps;
        }
        else
        {
            _lapsComplete[car.id] = 0;
        }
    }
        public IParkingSlot LocateFreeSlots(VehicleBase vehicle)
        {
            IParkingSlot parkingSlot = null;
            LinkedListNode <IParkingSlot> largeSlot = null;

            foreach (var level in _parkingLookup)
            {
                largeSlot = FindSlot(parkingSlot, level, typeof(LargeSlot));

                if (largeSlot != null)
                {
                    int counter       = 0;
                    int requiredSlots = 5; //todo: read from configuration

                    while (largeSlot.Next == null || !largeSlot.Next.Value.IsOccupied || counter == requiredSlots)
                    {
                        if (!largeSlot.Next.Value.IsOccupied)
                        {
                            counter++;

                            largeSlot = largeSlot.Next;
                        }
                    }

                    if (counter == requiredSlots)
                    {
                        break;
                    }
                }
            }

            return(parkingSlot);
        }
Beispiel #6
0
 public ArcadeCarPhysics(GameObject player, VehicleBase currentVehicle)
 {
     HandlingObject  = player;
     _currentVehicle = currentVehicle;
     SetSpecifications();
     CurrentCondition = HandlingCondition.OnGround;
 }
Beispiel #7
0
        private static void AllocateParkingSlot(VehicleBase vehicle, IParkingLot parkingLot)
        {
            IParkingSlot availableParkingSlot = parkingLot.FindParking(vehicle);

            if (availableParkingSlot != null)
            {
                parkingLot.AllocateParkingSlot(vehicle, availableParkingSlot);
            }
        }
Beispiel #8
0
 public SlowVehicleDestroyer(
     GameObject gameObject,
     VehicleBase currentVehicle,
     float minimumSpeed)
 {
     _minSpeed       = minimumSpeed;
     _go             = gameObject;
     _currentVehicle = currentVehicle;
 }
Beispiel #9
0
        public void MarkVacant(VehicleBase vehicle)
        {
            var matched = _vehicleToSlotMap.Single(x => x.Value == vehicle);

            if (_vehicleToSlotMap.ContainsKey(matched.Key))
            {
                _vehicleToSlotMap.Remove(matched.Key);
            }
        }
Beispiel #10
0
        void OnEnable()
        {
            m_lastVehicleTime = -1.0f;
            m_warningTime     = -10.0f;

            if (vehicle == null)
            {
                vehicle = GetComponentInParent <VehicleBase>();
            }
        }
 public OverloadVehicleDestroyer(
     GameObject gameObject,
     VehicleBase currentVehicle,
     float maxOverload)
 {
     _maxOverload    = maxOverload;
     _currentVehicle = currentVehicle;
     _previousSpeed  =
         _currentVehicle.Handling.CurrentVelocity.y;
 }
    public StupidEnemyCarHandling(GameObject enemy, VehicleBase currentVehicle)
    {
        HandlingObject  = enemy;
        _currentVehicle = currentVehicle;
        _pathFinder     = new StupidPathFinder();
        _prevPosition   = HandlingObject.transform.position;
        SetSpecifications();

        UpdateHandling();
        CurrentCondition = HandlingCondition.OnGround;
    }
    public FullRigidBodyCarPhysics(GameObject player, VehicleBase currentVehicle)
    {
        HandlingObject  = player;
        _currentVehicle = currentVehicle;
        _vehicleRb      = HandlingObject.GetComponent <Rigidbody2D>();
        SetSpecifications();

        var uiCanvas = GameObject.Find("UiCanvas").GetComponent <Canvas>();

        _speedText       = uiCanvas.transform.Find("SpeedLabel").GetComponent <Text>();
        CurrentCondition = HandlingCondition.OnGround;
    }
Beispiel #14
0
        static void Main(string[] args)
        {
            IParkingLot parkingLot = BuildParkingLot();

            if (parkingLot != null)
            {
                //// Configure Parking Lot with Paking Slots
                //parkingLot.ConfigureParking();

                VehicleBase vehicle = FactoryVehicle.Create(VehicleType.Bus);

                AllocateParkingSlot(vehicle, parkingLot);
            }
        }
Beispiel #15
0
        public bool MarkedOccupied(VehicleBase vehicle)
        {
            bool isParked = false;

            if (!IsOccupied)
            {
                if (vehicle is Bike)
                {
                    IsOccupied = true;
                    isParked   = true;
                }
            }

            return(isParked);
        }
        private VehicleOwnership GetClosesVehicle(PlayerSession playerSession)
        {
            VehicleOwnership[] vehicleOwnerships = Resources.FindObjectsOfTypeAll <VehicleOwnership>();
            if (vehicleOwnerships == null || vehicleOwnerships.Count() < 1)
            {
                return(null);
            }

            IEnumerable <VehicleOwnership> unDeadOwnerships = vehicleOwnerships.Where(x => x.StatManager != null && !x.StatManager.Dead);

            if (unDeadOwnerships == null || unDeadOwnerships.Count() < 1)
            {
                return(null);
            }

            IEnumerable <VehicleOwnership> sortedOwnerships = unDeadOwnerships.OrderBy(vehicleOwnership => GetPlayerToCarDistance(playerSession, vehicleOwnership));

            if (sortedOwnerships == null || sortedOwnerships.Count() < 1)
            {
                return(null);
            }

            foreach (VehicleOwnership vehicleOwnership in sortedOwnerships)
            {
                if (vehicleOwnership?.StatManager?.GetComponent <VehicleBase>() == null)
                {
                    continue;
                }
                VehicleBase        vehicleBase       = vehicleOwnership.StatManager.GetComponent <VehicleBase>();
                VehiclePassenger[] vehiclePassengers = vehicleBase.GetPassengers();
                if (vehiclePassengers == null || vehiclePassengers.Count() < 1)
                {
                    continue;
                }
                if (PlayerInsideVehicle(vehiclePassengers, playerSession))
                {
                    return(vehicleOwnership);
                }
            }

            return(sortedOwnerships.First());
        }
Beispiel #17
0
    void SetupSinglePlayerGame()
    {
        RetainedUserPicksScript userPicksScript = RetainedUserPicksScript.Instance;

        // Can we get the car number from the previous menu?
        CarController car = myCar.GetComponent <CarController>();

        car.SetCarChoice(userPicksScript.carSelected, false);
        car.id = _myParticipantId;

        // Set our time left and laps remaining
        _timeLeft      = startTimesPerLevel[userPicksScript.diffSelected];
        _lapsRemaining = lapsPerLevel[userPicksScript.diffSelected];

        guiObject.SetTime(_timeLeft);
        guiObject.SetLaps(_lapsRemaining);
        _trackController.targetLaps = _lapsRemaining;

        car.SpawnAtStart(0);

        for (int i = 0; i < numOpponents; ++i)
        {
            GameObject  c = GameObject.Instantiate(opponentPrefab);
            VehicleBase v = c.GetComponent <VehicleBase>();
            v.Setup();
            v.SetCarChoice(0, false);
            v.SpawnAtStart(i + 1);
        }

        VehicleBase[] cars = FindObjectsOfType <VehicleBase>();
        _vehicles = new List <VehicleBase>(cars.Length);
        for (int i = 0; i < cars.Length; ++i)
        {
            _vehicles.Add(cars[i]);
        }

        // Rules are created with the expectation that top will execute first, but data works better to remove from the end
        rules.Reverse();
        AdvanceToNextRule();
    }
        void Process(VehicleBase vehicle)
        {
            // Find out if the vehicle is inside the action range

            Vector3 relativePos = m_transform.InverseTransformPoint(vehicle.cachedTransform.position);
            float   position    = relativePos.z;

            if (position > 0.0f && position < range.z &&
                MathUtility.FastAbs(relativePos.x) < range.x * 0.5f &&
                MathUtility.FastAbs(relativePos.y) < range.y * 0.5f)
            {
                float fadeIn  = fadeInZone > 0.0f? Mathf.InverseLerp(0.0f, range.z * fadeInZone, position) : 1.0f;
                float fadeOut = fadeOutZone > 0.0f? Mathf.InverseLerp(range.z, range.z * (1.0f - fadeOutZone), position) : 1.0f;
                float factor  = Mathf.Min(fadeIn, fadeOut);

                float targetSpeed        = Mathf.Lerp(entryTargetSpeed, exitTargetSpeed, position / range.z);
                float speedLimitThrottle = Mathf.Lerp(1.0f, Mathf.Clamp01((targetSpeed - vehicle.speed) * inputRamp), factor);

                float vehicleThrottle = vehicle.data.Get(Channel.Input, InputData.Throttle) / 10000.0f;
                vehicleThrottle = Mathf.Min(vehicleThrottle, speedLimitThrottle);
                vehicle.data.Set(Channel.Input, InputData.Throttle, (int)(vehicleThrottle * 10000));
            }
        }
Beispiel #19
0
    void OnEnable()
    {
        rigidBody424     = GetComponent <Rigidbody>();
        vehicleBase      = GetComponent <VehicleBase>();
        target           = GetComponentInChildren <VPReplay>();
        replayController = GetComponentInChildren <VPReplayController>();

        // Disable autopilot when no replay data is available
        if (replayController == null || replayController.predefinedReplay == null)
        {
            enabled = false;
            return;
        }

        recordedReplay = replayController.predefinedReplay.recordedData;
        cuts           = recordedReplay.Count / 500;

        m_deviceInput = vehicleBase.GetComponentInChildren <VPDeviceInput>();
        if (m_deviceInput != null)
        {
            m_ffbForceIntensity    = m_deviceInput.forceIntensity;
            m_ffbDamperCoefficient = m_deviceInput.damperCoefficient;
        }
    }
        public static VehicleBase Create(VehicleType vehicleType)
        {
            VehicleBase vehicle = null;

            switch (vehicleType)
            {
            case VehicleType.Bike:
                vehicle = new Bike();
                break;

            case VehicleType.Car:
                vehicle = new Car();
                break;

            case VehicleType.Bus:
                vehicle = new Bus();
                break;

            default:
                throw new Exception(String.Format("Vehicle {0} not supported", vehicleType.ToString()));
            }

            return(vehicle);
        }
Beispiel #21
0
        void Process(VehicleBase vehicle)
        {
            // Find out if the vehicle is inside the action range

            Vector3 relativePos = m_transform.InverseTransformPoint(vehicle.cachedTransform.position);
            float   distance    = relativePos.z;

            if (distance > 0.0f && distance < range.z &&
                MathUtility.FastAbs(relativePos.x) < range.x * 0.5f &&
                MathUtility.FastAbs(relativePos.y) < range.y * 0.5f)
            {
                float speed = -m_transform.InverseTransformDirection(vehicle.cachedRigidbody.velocity).z;
                distance -= speed * speed * Time.deltaTime;
                if (distance < 0.0f)
                {
                    distance = 0.0f;
                }

                float targetBrakeSpeed = targetSpeed + Mathf.Sqrt(2.0f * maxAccelerationG * 9.8f * distance);
                float deltaSpeed       = targetBrakeSpeed - speed;

                // Debug.Log("Speed: " + speed.ToString("0.00") + " Target: " + targetBrakeSpeed.ToString("0.00") + " Delta: " + deltaSpeed.ToString("0.00"));

                float targetThrottleInput = Mathf.Clamp01(deltaSpeed * inputRamp);
                float targetBrakeInput    = Mathf.Clamp01(-deltaSpeed * inputRamp);

                float vehicleThrottle = vehicle.data.Get(Channel.Input, InputData.Throttle) / 10000.0f;
                float vehicleBrake    = vehicle.data.Get(Channel.Input, InputData.Brake) / 10000.0f;

                vehicleThrottle = Mathf.Min(vehicleThrottle, targetThrottleInput);
                vehicleBrake    = Mathf.Max(vehicleBrake, targetBrakeInput);

                vehicle.data.Set(Channel.Input, InputData.Throttle, (int)(vehicleThrottle * 10000));
                vehicle.data.Set(Channel.Input, InputData.Brake, (int)(vehicleBrake * 10000));
            }
        }
Beispiel #22
0
 public bool MarkedUnoccupied(VehicleBase vehicle)
 {
     return(IsOccupied = false);
 }
Beispiel #23
0
 void OnEnable()
 {
     target = GetComponentInParent <VehicleBase>();
 }
Beispiel #24
0
 public PlayerFiring(Transform parentTransform, VehicleBase currentVehicle)
 {
     _currentVehicle  = currentVehicle;
     _parentTransform = parentTransform;
 }
 void Awake()
 {
     vehicle = GetComponent <VehicleBase>();
 }
Beispiel #26
0
 void OnEnable()
 {
     target           = GetComponentInParent <VehicleBase>();
     m_aero           = target.GetComponentInChildren <Perrinn424Aerodynamics>();
     degreesPerSecond = 90 / m_aero.dRSActivationTime;
 }
 public void CreateVehicle(VehicleBase vehicle)
 {
     _vehicleRepository.CreateVehicle(vehicle.ToVehicleDb());
 }
Beispiel #28
0
 /// <summary>
 /// Build a minimal row from a class (key fields only)
 /// </summary>
 public static void BuildMinimalRow(ref DataRow row, Vehicle entity)
 {
     VehicleBase.BuildMinimalRow(ref row, entity);
 }
Beispiel #29
0
 private static void DeAllocateParking(VehicleBase vehicle, IParkingLot parkingLot)
 {
     parkingLot.DeallocateParkingSlot(vehicle);
 }
Beispiel #30
0
 public void Uninstall(VehicleBase vehicle)
 {
     vehicle.Performance.MaxSpeed -= _maxSpeed;
 }