Esempio n. 1
0
        private void driver(int delta)
        {
            LiveStandingsModule lsm = api.FindModule("LiveStandings") as LiveStandingsModule;

            int    pos       = lsm.FindDriver(CameraModule.FollowedDriver).PositionLive + delta;
            string nextPlate = "";

            if (pos < 1)
            {
                nextPlate = lsm.FindLastDriver().Driver.Car.CarNumber;
            }
            else if (pos > lsm.Items.Count)
            {
                nextPlate = lsm.Leader.Driver.Car.CarNumber;
            }
            else
            {
                nextPlate = lsm.FindDriverByPos(pos).Driver.Car.CarNumber;
            }

            if (autoCommit)
            {
                api.SwitchCamera(padCarNum(nextPlate), Convert.ToInt32(cameraSelectComboBox.SelectedValue));
            }
        }
Esempio n. 2
0
        public void FadeIniRatingGains()
        {
            if (Active)
            {
                return;
            }

            module  = (LiveStandingsModule)API.Instance.FindModule("LiveStandings");
            drivers = (DriverModule)API.Instance.FindModule("DriverModule");
            Mode    = SideBarMode.iRating;
            SideBarTitle title = new SideBarTitle(ParentWindow);

            title.VerticalAlignment = VerticalAlignment.Top;
            LayoutRoot.Children.Add(title);
            elements.Add(title);
            title.FadeIn("LIVE iRATING GAINS");

            for (int i = 0; i < Math.Min(drivers.DriversCount, 22); i++)
            {
                LiveStandingsItem item = module.FindDriverByPos(i + 1);
                if (item != null)
                {
                    SpeedElement se = new SpeedElement(ParentWindow, SpeedElement.SpeedElementMode.iRating);
                    se.VerticalAlignment = VerticalAlignment.Top;
                    se.Margin            = new Thickness(0, (i + 1) * 36, 0, 0);
                    LayoutRoot.Children.Add(se);
                    elements.Add(se);
                    se.FadeIn(i + 1, item, (i + 1) * 25);
                }
            }

            Active = true;
        }
Esempio n. 3
0
        public void FadeIn()
        {
            if (cam == null)
            {
                cam = Controller.TMTVO.Instance.Api.FindModule("CameraModule") as CameraModule;
            }

            if (standings == null)
            {
                standings = Controller.TMTVO.Instance.Api.FindModule("LiveStandings") as LiveStandingsModule;
            }

            int carIdx = cam.FollowedDriver;

            if (Active || carIdx < 0)
            {
                return;
            }

            float rpm = ((float[])Controller.TMTVO.Instance.Api.GetData("CarIdxRPM"))[carIdx];

            if (rpm < 0)
            {
                return;
            }

            Active = true;
            Storyboard sb = FindResource("FadeIn") as Storyboard;

            sb.Begin();
        }
Esempio n. 4
0
        public void FadeInTopSpeeds()
        {
            if (Active)
            {
                return;
            }

            module = (LiveStandingsModule)API.Instance.FindModule("LiveStandings");
            Mode   = SideBarMode.TopSpeed;
            SideBarTitle title = new SideBarTitle(ParentWindow);

            title.VerticalAlignment = VerticalAlignment.Top;
            LayoutRoot.Children.Add(title);
            elements.Add(title);
            title.FadeIn("TOP SPEEDS kph");

            List <LiveStandingsItem> query = module.OrderByTopSpeed();

            for (int i = 0; i < 10; i++)
            {
                LiveStandingsItem item = query[i];
                if (item.TopSpeed > 0)
                {
                    SpeedElement se = new SpeedElement(ParentWindow, SpeedElement.SpeedElementMode.TopSpeed);
                    se.VerticalAlignment = VerticalAlignment.Top;
                    se.Margin            = new Thickness(0, (i + 1) * 36, 0, 0);
                    LayoutRoot.Children.Add(se);
                    elements.Add(se);
                    se.FadeIn(i + 1, item, (i + 1) * 25);
                }
            }

            Active = true;
        }
Esempio n. 5
0
        public void Tick(LiveStandingsItem item, LiveTimingItemMode mode)
        {
            this.Item   = item;
            this.mode   = mode;
            this.Module = API.Instance.FindModule("LiveStandings") as LiveStandingsModule;

            if (Item == null)
            {
                LayoutRoot.Visibility = Visibility.Hidden;
                return;
            }

            LayoutRoot.Visibility = Visibility.Visible;

            UpdateWidget();
            if (Item.PositionImprovedTiming)
            {
                PositionImproved();
            }
            else if (Item.LapTimeImproved)
            {
                LapTimeImproved();
            }

            OldCarIdx = item.Driver.CarIndex;
            Item.PositionImprovedTiming = Item.LapTimeImproved = Item.PositionLostTiming = false;
        }
Esempio n. 6
0
        public BattleElement(SideBarWidget widget, LiveStandingsModule module)
        {
            this.InitializeComponent();

            this.widget = widget;
            this.module = module;
        }
Esempio n. 7
0
        public void FadeInBattleForPos(int pos, int count)
        {
            this.FirstPos = pos;
            this.Count    = count;

            module = (LiveStandingsModule)API.Instance.FindModule("LiveStandings");
            foreach (LiveStandingsItem item in module.Items)
            {
                item.PositionImprovedBattleFor = item.PositionLostBattleFor = false;
            }

            Mode   = SideBarMode.BattleForPosition;
            Active = true;
            SideBarTitle title = new SideBarTitle(ParentWindow);
            string       t     = "BATTLE FOR ";

            if (pos == 1)
            {
                t += "1st";
            }
            else if (pos == 2)
            {
                t += " 2nd";
            }
            else if (pos == 3)
            {
                t += " 3rd";
            }
            else
            {
                t += pos.ToString("0") + "th";
            }

            title.VerticalAlignment = VerticalAlignment.Top;
            LayoutRoot.Children.Add(title);
            elements.Add(title);
            title.FadeIn(t);

            int j = 1;

            for (int i = pos; i < pos + count; i++)
            {
                LiveStandingsItem item = module.FindDriverByPos(i);
                if (item == null)
                {
                    break;
                }

                BattleElement e = new BattleElement(ParentWindow, this, module);
                e.VerticalAlignment = VerticalAlignment.Top;
                elements.Add(e);
                LayoutRoot.Children.Add(e);
                e.Margin = new Thickness(0, j * 36, 0, 0);
                e.FadeIn(item, j * 25);

                j++;
            }
        }
Esempio n. 8
0
        public void FadeInBattleForPos(int pos, int count)
        {
            this.FirstPos = pos;
            this.Count    = count;

            Active = true;
            Mode   = SideBarMode.BattleForPosition;
            SideBarTitle title = new SideBarTitle();
            string       t     = "BATTLE FOR ";

            if (pos == 1)
            {
                t += "1st";
            }
            else if (pos == 2)
            {
                t += " 2nd";
            }
            else if (pos == 3)
            {
                t += " 3rd";
            }
            else
            {
                t += pos.ToString("0") + "th";
            }

            title.VerticalAlignment = VerticalAlignment.Top;
            LayoutRoot.Children.Add(title);
            elements.Add(title);
            title.FadeIn(t);

            if (module == null)
            {
                module = (LiveStandingsModule)TMTVO.Controller.TMTVO.Instance.Api.FindModule("LiveStandings");
            }

            int j = 1;

            for (int i = pos; i < pos + count; i++)
            {
                LiveStandingsItem item = module.FindDriverByPos(i);
                if (item == null)
                {
                    break;
                }

                BattleElement e = new BattleElement(this, module);
                e.VerticalAlignment = VerticalAlignment.Top;
                elements.Add(e);
                LayoutRoot.Children.Add(e);
                e.Margin = new Thickness(0, j * 36, 0, 0);
                e.FadeIn(item, j * 25);

                j++;
            }
        }
Esempio n. 9
0
        public void FadeIn()
        {
            Module = (LiveStandingsModule)API.Instance.FindModule("LiveStandings");

            pageIndex = 0;
            Active    = true;
            Storyboard sb = FindResource("FadeIn") as Storyboard;

            sb.Begin();
        }
Esempio n. 10
0
        public BattleElement(IThemeWindow parent, SideBarWidget widget, LiveStandingsModule module)
        {
            this.InitializeComponent();
            this.ParentWindow = parent;

            this.widget             = widget;
            this.module             = module;
            this.mode               = BattleElementMode.Default;
            cooldownTimer           = new System.Timers.Timer(5000);
            cooldownTimer.AutoReset = false;
            cooldownTimer.Elapsed  += cooldownTimer_Elapsed;
        }
Esempio n. 11
0
        private void DriverOverview_Click(object sender, RoutedEventArgs e)
        {
            if (f1Window.SideBar.Active && f1Window.SideBar.Mode == SideBarWidget.SideBarMode.DriverOverView)
            {
                f1Window.SideBarFadeOut();
            }
            else if (!f1Window.SideBar.Active)
            {
                LiveStandingsModule lsm = ((LiveStandingsModule)api.FindModule("LiveStandings"));

                int carIdx1 = int.Parse(DriverOverviewDriver1.SelectedValue.ToString());
                int carIdx2 = int.Parse(DriverOverviewDriver2.SelectedValue.ToString());
                f1Window.SideBarFadeInDriverOverview(lsm.FindDriver(carIdx1), lsm.FindDriver(carIdx2));
            }
        }
Esempio n. 12
0
        public void FadeInDriverOverview(LiveStandingsItem driver1, LiveStandingsItem driver2)
        {
            if (driver1 == null && driver2 == null)
            {
                return;
            }

            module    = (LiveStandingsModule)API.Instance.FindModule("LiveStandings");
            this.Mode = SideBarMode.DriverOverView;
            Active    = true;
            if (driver1 != null)
            {
                addDriverOverviewElement(driver1, 0);
            }

            if (driver2 != null)
            {
                addDriverOverviewElement(driver2, 1);
            }
        }
Esempio n. 13
0
        public void FadeIn()
        {
            if (cam == null)
            {
                cam = API.Instance.FindModule("CameraModule") as CameraModule;
            }

            if (standings == null)
            {
                standings = API.Instance.FindModule("LiveStandings") as LiveStandingsModule;
            }

            int carIdx = cam.FollowedDriver;

            if (Active || carIdx < 0)
            {
                return;
            }

            float rpm = ((float[])API.Instance.GetData("CarIdxRPM"))[carIdx];

            if (rpm < 0)
            {
                return;
            }

            prevGear = ((int[])API.Instance.GetData("CarIdxGear"))[carIdx];
            if (canUpdateGear)
            {
                sb_Completed(null, null);
                currentGear = prevGear;
            }

            Active = true;
            Storyboard sb = FindResource("FadeIn") as Storyboard;

            sb.Begin();
        }
Esempio n. 14
0
        private void SpeedCompare_Click(object sender, RoutedEventArgs e)
        {
            if (f1Window.SpeedCompareWidget.Active)
            {
                f1Window.SpeedCompFadeOut();
            }
            else
            {
                LiveStandingsModule m = (LiveStandingsModule)api.FindModule("LiveStandings");

                LiveStandingsItem driver1 = null;
                LiveStandingsItem driver2 = null;

                int carIdx = CameraModule.FollowedDriver;
                if (carIdx == -1)
                {
                    return;
                }

                if (SpeedCompMode.SelectedIndex == 0)
                {
                    driver1 = m.FindDriver(carIdx);
                    driver2 = m.FindDriverByPos(driver1.PositionLive + 1);
                }
                else
                {
                    driver2 = m.FindDriver(carIdx);
                    driver1 = m.FindDriverByPos(driver2.PositionLive - 1);
                }

                if (driver1 == null || driver2 == null)
                {
                    return;
                }

                f1Window.SpeedCompFadeIn(driver1, driver2);
            }
        }
Esempio n. 15
0
        public void Tick(LiveStandingsItem item, LiveTimingItemMode mode)
        {
            this.Item = item;
            this.mode = mode;
            this.Module = F1TVOverlay.Controller.TMTVO.Instance.Api.FindModule("LiveStandings") as LiveStandingsModule;

            if (Item == null)
            {
                LayoutRoot.Visibility = Visibility.Hidden;
                return;
            }

            LayoutRoot.Visibility = Visibility.Visible;

            UpdateWidget();
            if (Item.PositionImproved)
                PositionImproved();
            else if (Item.LapTimeImproved)
                LapTimeImproved();

            OldCarIdx = item.Driver.CarIndex;
            Item.PositionImproved = Item.LapTimeImproved = Item.PositionLost = false;
        }
Esempio n. 16
0
        public override void Update(ConfigurationSection rootNode, API api)
        {
            SessionType type = (api.FindModule("SessionTimer") as SessionTimerModule).SessionType;

            if (type != SessionType.LapRace && type != SessionType.TimeRace)
            {
                return;
            }

            if (liveStandings == null)
            {
                liveStandings = api.FindModule("LiveStandings") as LiveStandingsModule;
            }

            if (drivers == null)
            {
                drivers = api.FindModule("DriverModule") as DriverModule;
            }

            int driversCount = drivers.DriversCount;
            int notStarters  = liveStandings.Items.Count(d => d.Dns);

            if (lastDriversCount != driversCount)
            {
                matrix         = new double[driversCount, driversCount + 1];
                exponentialSoF = new double[driversCount];
                expectedScores = new double[driversCount];
                fudgeFactors   = new double[driversCount];
            }

            for (int i = 0; i < driversCount; i++)
            {
                LiveStandingsItem driverOpponent = liveStandings.FindDriverByPosNL(i + 1);
                if (driverOpponent == null)
                {
                    return;
                }

                matrix[i, 0]      = driverOpponent.Driver.IRating;
                exponentialSoF[i] = Math.Exp(-driverOpponent.Driver.IRating / log);
                fudgeFactors[i]   = driverOpponent.Dns ? 0 : (((driversCount - (notStarters / 2D)) / 2 - driverOpponent.Position) / 100);

                for (int j = 1; j <= driversCount; j++)
                {
                    LiveStandingsItem driverSelf = liveStandings.FindDriverByPosNL(j);
                    if (driverSelf == null)
                    {
                        return;
                    }

                    matrix[i, j] = calcMatrixEntry(driverOpponent.Driver.IRating, driverSelf.Driver.IRating);
                }
            }

            changeStarters.Clear();
            expChangeNonStarters.Clear();

            foreach (LiveStandingsItem driver in liveStandings.Items)
            {
                int    index         = driver.Position - 1;
                double expectedScore = -0.5D;
                for (int i = 1; i <= driversCount; i++)
                {
                    expectedScore += matrix[index, i];
                }

                expectedScores[index] = expectedScore;
                if (driver.Dns)
                {
                    expChangeNonStarters.Add(expectedScore);
                }
            }

            foreach (LiveStandingsItem driver in liveStandings.Items)
            {
                if (!driver.Dns)
                {
                    int    i      = driver.Position - 1;
                    double change = (driversCount - driver.Position - expectedScores[i] - fudgeFactors[i]) * 200D / (driversCount - notStarters);
                    changeStarters.Add(change);

                    driver.IRatingChange = (int)change;
                }
            }

            foreach (LiveStandingsItem driver in liveStandings.Items)
            {
                if (driver.Dns)
                {
                    int i = driver.Position - 1;

                    double sum = 0D;
                    foreach (double d in changeStarters)
                    {
                        sum += d;
                    }

                    double avg = 0;
                    foreach (double d in expChangeNonStarters)
                    {
                        avg += d;
                    }

                    avg /= expChangeNonStarters.Count;

                    double change = (-sum) / notStarters * expectedScores[i] / avg;
                    driver.IRatingChange = (int)change;
                }
            }

            lastDriversCount = driversCount;
        }
Esempio n. 17
0
        public void FadeIn(DriverInfoMode mode)
        {
            if (cameraModule == null)
            {
                cameraModule = TMTVO.Controller.TMTVO.Instance.Api.FindModule("CameraModule") as CameraModule;
            }

            if (standingsModule == null)
            {
                standingsModule = TMTVO.Controller.TMTVO.Instance.Api.FindModule("LiveStandings") as LiveStandingsModule;
            }

            if (sessionTimer == null)
            {
                sessionTimer = TMTVO.Controller.TMTVO.Instance.Api.FindModule("SessionTimer") as SessionTimerModule;
            }

            if (Active)
            {
                return;
            }

            int camIndex = cameraModule.FollowedDriver;

            driver = standingsModule.FindDriver(camIndex);
            if (driver == null)
            {
                return;
            }

            Active    = true;
            this.mode = mode;

            DriversName.Text   = driver.Driver.LastUpperName;
            TeamCarName.Text   = Controller.TMTVO.Instance.Cars.GetValue(driver.Driver.Car.CarName);
            DriversNumber.Text = driver.Driver.Car.CarNumber;
            NumberPlate.Fill   = new SolidColorBrush(driver.Driver.LicColor);

            Storyboard sb = FindResource("FadeInName") as Storyboard;

            sb.Begin();

            if (mode != DriverInfoMode.NameOnly)
            {
                int position = 0;
                if (mode == DriverInfoMode.QualiTimeOnly || mode == DriverInfoMode.QualiTimeWithGap)
                {
                    position = GridModule.FindDriverStatic(driver).Position;
                }
                else
                {
                    position = driver.PositionLive;
                }

                if (position == 1)
                {
                    BackgroundLeader.Visibility = Visibility.Visible;
                }
                else
                {
                    BackgroundLeader.Visibility = Visibility.Hidden;
                }

                Position.Text = position.ToString("0");
                (FindResource("FadeInPosition") as Storyboard).Begin();
                pActive = true;
            }

            if (mode == DriverInfoMode.Improvements)
            {
                BestTime.Text = driver.FastestLapTime.ConvertToTimeString();
                LastTime.Text = driver.LastLapTime.ConvertToTimeString();

                int improvement = GridModule.FindDriverStatic(camIndex).Position - driver.PositionLive;
                if (improvement < 0)
                {
                    Improvement.Text = (-improvement).ToString("0");
                    ImpAngle.Angle   = lostAngle;
                    ImpTriangle.Fill = lostBrush;
                }
                else if (improvement == 0)
                {
                    Improvement.Text = "0";
                    ImpAngle.Angle   = neutralAngle;
                    ImpTriangle.Fill = neutralBrush;
                }
                else
                {
                    Improvement.Text = improvement.ToString("0");
                    ImpAngle.Angle   = improvedAngle;
                    ImpTriangle.Fill = improvedBrush;
                }

                (FindResource("FadeInImprovements") as Storyboard).Begin();
                bActive = true;
            }

            if (mode == DriverInfoMode.FastestLapTimeOnly || mode == DriverInfoMode.FastestLapTimeWithGap || mode == DriverInfoMode.QualiTimeOnly || mode == DriverInfoMode.QualiTimeWithGap)
            {
                FastestTime.Text = ((mode == DriverInfoMode.QualiTimeOnly || mode == DriverInfoMode.QualiTimeWithGap) ? GridModule.FindDriverStatic(camIndex).QualiTime : driver.FastestLapTime).ConvertToTimeString();
                (FindResource("FadeInFastestLap") as Storyboard).Begin();
                fActive = true;
            }

            if (mode == DriverInfoMode.FastestLapTimeWithGap || mode == DriverInfoMode.QualiTimeWithGap)
            {
                if (mode == DriverInfoMode.FastestLapTimeWithGap)
                {
                    Gap.Text = "+" + (driver.FastestLapTime - standingsModule.Leader.FastestLapTime).ConvertToTimeString();
                }
                else
                {
                    Gap.Text = "+" + (GridModule.FindDriverStatic(camIndex).QualiTime - GridModule.GetLeader().QualiTime).ConvertToTimeString();
                }

                (FindResource("FadeInGap") as Storyboard).Begin();
                gActive = true;
            }
        }