Esempio n. 1
0
        public static rF2VehicleScoring GetPlayerScoring(ref rF2Scoring scoring)
        {
            var playerVehScoring = new rF2VehicleScoring();

            for (int i = 0; i < scoring.mScoringInfo.mNumVehicles; ++i)
            {
                var vehicle = scoring.mVehicles[i];
                switch ((rFactor2Constants.rF2Control)vehicle.mControl)
                {
                case rFactor2Constants.rF2Control.AI:
                case rFactor2Constants.rF2Control.Player:
                case rFactor2Constants.rF2Control.Remote:
                    if (vehicle.mIsPlayer == 1)
                    {
                        playerVehScoring = vehicle;
                    }

                    break;

                default:
                    continue;
                }

                if (playerVehScoring.mIsPlayer == 1)
                {
                    break;
                }
            }

            return(playerVehScoring);
        }
Esempio n. 2
0
        public async Task Run(CancellationToken token)
        {
            var hubConnection = await _connectionManager.Connect();

            var telemetry = new rF2Telemetry();
            var scoring   = new rF2Scoring();

            var playerScoring   = new rF2VehicleScoring();
            var playerTelemetry = new rF2VehicleTelemetry();

            while (true)
            {
                await Task.Delay(200);

                try
                {
                    _scoringBuffer.GetMappedDataPartial(ref scoring);
                    _telemetryBuffer.GetMappedDataPartial(ref telemetry);
                }
                catch (Exception)
                {
                    await _connectionManager.Disconnect(hubConnection);

                    return;
                }

                if (telemetry.mNumVehicles != 0 && scoring.mScoringInfo.mNumVehicles != 0 && (rFactor2Constants.rF2GamePhase)scoring.mScoringInfo.mGamePhase == rFactor2Constants.rF2GamePhase.GreenFlag)
                {
                    var mappedIds = MapmIdToPositionInArray(ref telemetry);

                    foreach (var scoringVehicle in scoring.mVehicles)
                    {
                        switch ((rFactor2Constants.rF2Control)scoringVehicle.mControl)
                        {
                        case rFactor2Constants.rF2Control.AI:
                        case rFactor2Constants.rF2Control.Player:
                        case rFactor2Constants.rF2Control.Remote:
                            if (scoringVehicle.mIsPlayer == 1)
                            {
                                playerScoring = scoringVehicle;
                            }
                            break;

                        default:
                            continue;
                        }
                        if (playerScoring.mIsPlayer == 1)
                        {
                            break;
                        }
                    }

                    var playerTelemetryId = -1;
                    if (mappedIds.TryGetValue(playerScoring.mID, out playerTelemetryId))
                    {
                        playerTelemetry = telemetry.mVehicles[playerTelemetryId];
                    }
                    else
                    {
                        continue;
                    }

                    var telemetryToSend = new Test
                    {
                        Telemetry = new Telemetry(ref playerTelemetry)
                    };
                    await hubConnection.SendAsync("Send", telemetryToSend);
                }
            }
        }