Skip to content

Commit

Permalink
Update game running delayed properties
Browse files Browse the repository at this point in the history
  • Loading branch information
sjdawson committed Jan 28, 2021
1 parent fd4f126 commit 140674d
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 11 deletions.
6 changes: 5 additions & 1 deletion GentlemanDriverPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class GentlemanDriverPlugin: IPlugin, IDataPlugin, IWPFSettings
public Sections.Laps Laps;
public Sections.TyreCompound TyreCompound;
public Sections.TyreTemps TyreTemps;
public Sections.GameRunningDelayed GameRunningDelayed;

/// <summary>
/// Initialise the plugin preparing all settings, properties, events and triggers.
Expand All @@ -28,21 +29,24 @@ public void Init(PluginManager pluginManager)
Laps = new Sections.Laps(this);
TyreCompound = new Sections.TyreCompound(this);
TyreTemps = new Sections.TyreTemps(this);
GameRunningDelayed = new Sections.GameRunningDelayed(this);
}

/// <param name="pluginManager"></param>
/// <param name="data"></param>
public void DataUpdate(PluginManager pluginManager, ref GameData data)
{
if (data.GameRunning)
{
{
if (data.OldData != null && data.NewData != null)
{
Laps.DataUpdate(ref data);
TyreCompound.DataUpdate();
TyreTemps.DataUpdate();
}
}

GameRunningDelayed.DataUpdate(ref data);
}

public void End(PluginManager pluginManager) => this.SaveCommonSettings("GentlemanDriverPluginSettings", Settings);
Expand Down
31 changes: 21 additions & 10 deletions Sections/GameRunningDelayed.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,44 @@ public class GameRunningDelayed
{
private readonly GentlemanDriverPlugin Base;

private DateTime Latch = DateTime.Now;
// Removing an hour on init ensures all props stay false until a game has been running.
private DateTime Latch = DateTime.Now.AddHours(-1);

private int[] LatchPeriods = {5, 10, 15, 20, 30, 60};

public GameRunningDelayed(GentlemanDriverPlugin gentlemanDriverPlugin)
{
Base = gentlemanDriverPlugin;

Base.AddProp("GameRunning.Delayed05s", false);
Base.AddProp("GameRunning.Delayed10s", false);
Base.AddProp("GameRunning.Delayed15s", false);
Base.AddProp("GameRunning.Delayed20s", false);
Base.AddProp("GameRunning.Delayed25s", false);
Base.AddProp("GameRunning.Delayed30s", false);
foreach (int period in LatchPeriods)
Base.AddProp("GameRunning.Delayed" + period.ToString("D2") + "s", false);
}

public void DataUpdate(ref GameData data)
{
Base.SetProp("GameRunning.Delayed05s", GameRunningDelayedCalc(data, 5000));
foreach (int period in LatchPeriods)
Base.SetProp("GameRunning.Delayed" + period.ToString("D2") + "s", GameRunningDelayedCalc(data, period * 1000));
}

/// <summary>
/// Show as true if the game is running, and for milliseconds after thats no longer the case
/// </summary>
/// <param name="data">Game data to find out if game is running</param>
/// <param name="milliseconds">Number of milliseconds to keep the value alive for</param>
private int GameRunningDelayedCalc(GameData data, int milliseconds)
private bool GameRunningDelayedCalc(GameData data, int milliseconds)
{
return 4;
if (data.GameRunning)
{
Latch = DateTime.Now;
return true;
}

if (DateTime.Now.CompareTo(Latch.AddMilliseconds(milliseconds)) > 0)
{
return false;
}

return true;
}
}
}

0 comments on commit 140674d

Please sign in to comment.