Ejemplo n.º 1
0
        public PC2BasePacket CreateVersion8(PC2RawPacket rawPacket)
        {
            var meta = PC2PacketMeta.Create(rawPacket);

            switch (meta.packetType)
            {
            case PC2PacketType.Telemetry:
                return(PCars2TelemetryData.Create(rawPacket, meta));

            case PC2PacketType.Timings:
                return(PCars2Timings.Create(rawPacket, meta));

            case PC2PacketType.TimeStats:
                return(PCars2TimeStatsData.Create(rawPacket, meta));

            case PC2PacketType.GameState:
                return(PC2GameStatePacket.Create(rawPacket, meta));

            case PC2PacketType.RaceDefinition:
                return(PC2RaceDefinition.Create(rawPacket, meta));

            case PC2PacketType.Participants:
            case PC2PacketType.WeatherState:
            case PC2PacketType.VehicleNames:
            case PC2PacketType.ParticipantVehicleNames:
            default:
                throw new NotImplementedException("Project Cars 2 packet type not handled: " + meta.packetType);
            }
        }
        public static PCars2TimeStatsData Create(PC2RawPacket rawPacket, PC2PacketMeta meta)
        {
            var timeStatsData = new PCars2TimeStatsData(meta);

            timeStatsData.participantChangedTimestamp = rawPacket.Data.ReadUInt32();
            timeStatsData.participantStats            = Enumerable.Range(0, PCars2TimeStatsData.MAX_PARTICIPANTS).Select(i => {
                var participantStatsInfo = new PCars2ParticipantStatsInfo();
                participantStatsInfo.participantIndex = i;
                participantStatsInfo.fastestLapTime   = rawPacket.Data.ReadSingle();
                participantStatsInfo.lastLapTime      = rawPacket.Data.ReadSingle();
                participantStatsInfo.lastSectorTime   = rawPacket.Data.ReadSingle();
                participantStatsInfo.fastestSector1   = rawPacket.Data.ReadSingle();
                participantStatsInfo.fastestSector2   = rawPacket.Data.ReadSingle();
                participantStatsInfo.fastestSector3   = rawPacket.Data.ReadSingle();
                return(participantStatsInfo);
            });
            return(timeStatsData);
        }