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)); } }
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; }
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(); }
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; }
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; }
public BattleElement(SideBarWidget widget, LiveStandingsModule module) { this.InitializeComponent(); this.widget = widget; this.module = module; }
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++; } }
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++; } }
public void FadeIn() { Module = (LiveStandingsModule)API.Instance.FindModule("LiveStandings"); pageIndex = 0; Active = true; Storyboard sb = FindResource("FadeIn") as Storyboard; sb.Begin(); }
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; }
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)); } }
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); } }
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(); }
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); } }
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; }
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; }
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; } }