public override void Handle(GameSession session, PacketReader packet)
        {
            RideMode mode = (RideMode)packet.ReadByte();

            switch (mode)
            {
            case RideMode.StartRide:
                HandleStartRide(session, packet);
                break;

            case RideMode.StopRide:
                HandleStopRide(session, packet);
                break;

            case RideMode.ChangeRide:
                HandleChangeRide(session, packet);
                break;

            case RideMode.StartMultiPersonRide:
                HandleStartMultiPersonRide(session, packet);
                break;

            case RideMode.StopMultiPersonRide:
                HandleStopMultiPersonRide(session);
                break;

            default:
                IPacketHandler <GameSession> .LogUnknownMode(mode);

                break;
            }
        }
Exemple #2
0
        /// <summary>
        /// depending on what is target speed it can have different meanings
        /// speed >> 0 ---> going forward
        /// speed ~= 0 ---> stand still mode
        /// speed << 0 ---> going backward
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void Car_evTargetSpeedChanged(object sender, TargetSpeedChangedEventArgs args)
        {
            targetSpeedLocalCopy = args.GetTargetSpeed();
            Logger.Log(this, String.Format("target speed changed to: {0}", args.GetTargetSpeed()));

            if (targetSpeedLocalCopy <= MAX_STAND_STILL_SPEED_IN_MPS && targetSpeedLocalCopy >= MIN_STAND_STILL_SPEED_IN_MPS)
            {
                Mode = RideMode.standStill;
            }
            else if (targetSpeedLocalCopy > MAX_STAND_STILL_SPEED_IN_MPS)
            {
                Mode = RideMode.forward;
            }
            else //if targetSpeedLocalCopy < MIN_STAND_STILL_SPEED_IN_MPS
            {
                Mode = RideMode.backward;
            }

            //this setter also sends event "evNewSpeedSettingCalculated"
            SpeedSteering = regulator.SetTargetValue(targetSpeedLocalCopy);
        }
Exemple #3
0
        /// <summary>
        /// depending on what is target speed it can have different meanings
        /// speed >> 0 ---> going forward
        /// speed ~= 0 ---> stand still mode
        /// speed << 0 ---> going backward
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void Car_evTargetSpeedChanged(object sender, TargetSpeedChangedEventArgs args)
        {
            targetSpeedLocalCopy = args.GetTargetSpeed();
            Logger.Log(this, String.Format("target speed changed to: {0}", args.GetTargetSpeed()));

            if (targetSpeedLocalCopy <= MAX_STAND_STILL_SPEED_IN_MPS && targetSpeedLocalCopy >= MIN_STAND_STILL_SPEED_IN_MPS)
            {
                Mode = RideMode.standStill;
            }
            else if (targetSpeedLocalCopy > MAX_STAND_STILL_SPEED_IN_MPS)
            {
                Mode = RideMode.forward;
            }
            else //if targetSpeedLocalCopy < MIN_STAND_STILL_SPEED_IN_MPS
            {
                Mode = RideMode.backward;
            }

            //this setter also sends event "evNewSpeedSettingCalculated"
            SpeedSteering = regulator.SetTargetValue(targetSpeedLocalCopy);
        }
Exemple #4
0
        private void HandleKeyDown(KeyEventArgs key)
        {
            double valToBeSet;

            switch (key.Key)
            {
            case Key.Up:
            case Key.W:
                valToBeSet = Controller.Model.CarInfo.TargetSpeed + SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK;
                Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS);
                valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet);
                Controller.SetTargetSpeed(valToBeSet);
                break;

            case Key.Down:
            case Key.S:
                valToBeSet = Controller.Model.CarInfo.TargetSpeed - SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK;
                Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS);
                valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet);
                Controller.SetTargetSpeed(valToBeSet);
                break;

            case Key.Left:
            case Key.A:
                valToBeSet = Controller.Model.CarInfo.TargetWheelAngle - WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK;
                Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD);
                Controller.SetTargetWheelAngle(valToBeSet);
                break;

            case Key.Right:
            case Key.D:
                valToBeSet = Controller.Model.CarInfo.TargetWheelAngle + WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK;
                Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD);
                Controller.SetTargetWheelAngle(valToBeSet);
                break;

            case Key.Escape:
                Controller.AlertBrake();
                break;

            case Key.Space:
                Controller.OverrideTargetBrakeSetting(TARGET_BRAKE_SETTING_WHEN_MANUAL_BRAKING_ON);
                brakingTimer.Interval = BRAKE_ACTIVATION_TIME_ON_SPACE_PRESSING_IN_MS;
                brakingTimer.Start();
                break;

            case Key.Q:
                Controller.OverrideTargetBrakeSetting(-80);
                brakingTimer.Interval = BRAKE_ACTIVATION_TIME_ON_SPACE_PRESSING_IN_MS;
                brakingTimer.Start();
                break;

            case Key.K:     //K -> change road direction
                if (rideMode == RideMode.Forward)
                {
                    rideMode = RideMode.Backward;
                }
                else
                {
                    rideMode = RideMode.Forward;
                }
                Controller.SetTargetSpeed(0.0);
                break;

            case Key.Enter:     //Enter -> set wheel to middles
                Controller.SetTargetWheelAngle(0.0);
                break;
            }
        }
Exemple #5
0
        private void HandleKeyDown(KeyEventArgs key)
        {
            double valToBeSet;

            switch (key.Key)
            {
                case Key.Up:
                case Key.W:
                    valToBeSet = Controller.Model.CarInfo.TargetSpeed + SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK;
                    Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS);
                    valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet);
                    Controller.SetTargetSpeed(valToBeSet);
                    break;

                case Key.Down:
                case Key.S:
                    valToBeSet = Controller.Model.CarInfo.TargetSpeed - SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK;
                    Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS);
                    valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet);
                    Controller.SetTargetSpeed(valToBeSet);
                    break;

                case Key.Left:
                case Key.A:
                    valToBeSet = Controller.Model.CarInfo.TargetWheelAngle - WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK;
                    Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD);
                    Controller.SetTargetWheelAngle(valToBeSet);
                    break;

                case Key.Right:
                case Key.D:
                    valToBeSet = Controller.Model.CarInfo.TargetWheelAngle + WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK;
                    Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD);
                    Controller.SetTargetWheelAngle(valToBeSet);
                    break;

                case Key.Escape:
                    Controller.AlertBrake();
                    break;

                case Key.Space:
                    Controller.OverrideTargetBrakeSetting(TARGET_BRAKE_SETTING_WHEN_MANUAL_BRAKING_ON);
                    brakingTimer.Interval = BRAKE_ACTIVATION_TIME_ON_SPACE_PRESSING_IN_MS;
                    brakingTimer.Start();
                    break;

                case Key.K: //K -> change road direction
                    if(rideMode == RideMode.Forward)
                    {
                        rideMode = RideMode.Backward;
                    }
                    else
                    {
                        rideMode = RideMode.Forward;
                    }
                    Controller.SetTargetSpeed(0.0);
                    break;

                case Key.Enter: //Enter -> set wheel to middles
                    Controller.SetTargetWheelAngle(0.0);
                    break;
            }
        }