コード例 #1
0
        public override void Visit(SetDriverSectorTimeMessage message)
        {
            LiveDriver driver = GetDriver(message);

            driver.SetLastSector(message.SectorNumber, message.SectorTime);
            driver.CurrentSectorNumber = message.SectorNumber != 3 ? message.SectorNumber + 1 : 1;
        }
コード例 #2
0
 /// <inheritdoc/>
 public virtual void Visit(SetDriverSectorTimeMessage message)
 {
 }
コード例 #3
0
 public void Visit(SetDriverSectorTimeMessage message)
 {
     Result = true;
 }
コード例 #4
0
 void IMessageVisitor.Visit(SetDriverSectorTimeMessage message)
 {
     Dispatch(message);
 }
コード例 #5
0
 /// <inheritdoc/>
 public override void Visit(SetDriverSectorTimeMessage message)
 {
     if(IsForMyDriver(message))
     {
         Model.LapTimes.GetSector(message.SectorNumber).Add(message.SectorTime);
     }
 }
コード例 #6
0
        public void when_a_driver_is_on_the_track_in_sector_1_then_sector_1_column_colours_are_translated_into_a_set_sector_time_message(
            SessionType session)
        {
            In(session).Assert(translator =>
            {
                var driver = translator.GetDriver(1);
                var expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.Normal, 5));

                driver.ChangeStatus(DriverStatus.OnTrack);
                driver.LapNumber = 5;
                driver.CurrentSectorNumber = 1;
                driver.SetLastSector(1, PT(23.5, PostedTimeType.Normal, 4));
                driver.SetColumnHasValue(GridColumn.S1, true);
                Assert.MessagesAreEqual(
                    expected,
                    translator.Translate(new SetGridColumnColourMessage(1, GridColumn.S1, GridColumnColour.White))
                );
                Assert.Equal(expected.SectorTime, driver.GetLastSector(1));
                Assert.Equal(2, driver.CurrentSectorNumber);
            });
        }
コード例 #7
0
        public void when_a_driver_is_on_the_track_then_sector_2_column_values_are_translated_into_set_sector_time_messages(SessionType session)
        {
            In(session).Assert(translator =>
            {
                var driver = translator.GetDriver(1);
                var expected = new SetDriverSectorTimeMessage(1, 2, PT(23.5, PostedTimeType.Normal, 5));

                driver.ChangeStatus(DriverStatus.OnTrack);
                driver.LapNumber = 5;
                Assert.MessagesAreEqual(
                    expected,
                    translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S2, GridColumnColour.White, "23.5"))
                );
                Assert.Equal(expected.SectorTime, driver.GetLastSector(2));
                Assert.Equal(3, driver.CurrentSectorNumber);
                // We don't assert the other types here as it is sufficiently covered by the sector 1 test.
            });
        }
コード例 #8
0
        public void when_a_driver_is_on_the_track_then_sector_1_column_values_are_translated_into_set_sector_time_messages(SessionType session)
        {
            In(session).Assert(translator =>
            {
                SetDriverSectorTimeMessage expected;
                LiveDriver driver = translator.GetDriver(1);

                driver.ChangeStatus(DriverStatus.OnTrack);
                driver.LapNumber = 5;
                // TODO Perhaps this test should be moved into one of its own as we also test here that not setting the
                // CurrentSectorNumber still results in a translation for the given sector
                // Normal lap time.
                expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.Normal, 5));
                Assert.MessagesAreEqual(
                    expected,
                    translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S1, GridColumnColour.White, "23.5"))
                );
                Assert.Equal(expected.SectorTime, driver.GetLastSector(1));
                Assert.Equal(2, driver.CurrentSectorNumber);
                // Personal best lap time.
                driver.CurrentSectorNumber = 1;
                expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.PersonalBest, 5));
                Assert.MessagesAreEqual(
                    expected,
                    translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S1, GridColumnColour.Green, "23.5"))
                );
                Assert.Equal(expected.SectorTime, driver.GetLastSector(1));
                Assert.Equal(2, driver.CurrentSectorNumber);
                // Session best lap time.
                driver.CurrentSectorNumber = 1;
                expected = new SetDriverSectorTimeMessage(1, 1, PT(23.5, PostedTimeType.SessionBest, 5));
                Assert.MessagesAreEqual(
                    expected,
                    translator.Translate(new SetGridColumnValueMessage(1, GridColumn.S1, GridColumnColour.Magenta, "23.5"))
                );
                Assert.Equal(expected.SectorTime, driver.GetLastSector(1));
                Assert.Equal(2, driver.CurrentSectorNumber);
            });
        }
コード例 #9
0
 private Message TranslateSetDriverSectorTimeMessage(SetDriverSectorTimeMessage message)
 {
     if(!IsRaceSession || message.SectorNumber != 3)
     {
         return message;
     }
     // We do not receive lap messages during a race session so we infer it from the current race
     // lap number and the driver's current gap.
     return new CompositeMessage(message,
         new SetDriverLapNumberMessage(message.DriverId,
             GetDriver(message).ComputeLapNumber(RaceLapNumber)));
 }