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); }