You can now click on a driver to see its stats

This commit is contained in:
2023-05-24 09:31:03 +02:00
parent 5c6e3c5b2b
commit e4edd71adc
3 changed files with 104 additions and 6 deletions
+31 -2
View File
@@ -29,7 +29,36 @@ namespace Test_Merge
{ {
Reader.ChangeImage(image); Reader.ChangeImage(image);
} }
public void DisplayLiveRanking(Panel pnl) public DriverData GetFullDriverData(string driverName,Panel lastFiveLapsPanel)
{
DriverData result = new DriverData();
foreach (DriverData data in LiveDriverDataLogs[LiveDriverDataLogs.Count - 1])
{
if (data.Name == driverName)
result = data;
}
if(result.Name != "")
{
lastFiveLapsPanel.Controls.Clear();
Size labelDimensions = new Size(lastFiveLapsPanel.Width,lastFiveLapsPanel.Height / 5);
List<(int LapTime, int Lap)> lapsInfos = Storage.GetDriverLaptimes(driverName,5);
foreach ((int LapTime, int Lap) lapData in lapsInfos)
{
Button newButton = new Button();
newButton.Name = driverName + "_" + lapData.Lap;
newButton.Text = Reader.ConvertMsToTime(lapData.LapTime);
lastFiveLapsPanel.Controls.Add(newButton);
}
}
return result;
}
public void DisplayLiveRanking(Panel pnl, Form1 form1)
{ {
if(LiveDriverDataLogs.Count > 0) if(LiveDriverDataLogs.Count > 0)
{ {
@@ -67,7 +96,7 @@ namespace Test_Merge
newButton.Name = liveData[driverCount].Name; newButton.Name = liveData[driverCount].Name;
newButton.TextAlign = ContentAlignment.MiddleLeft; newButton.TextAlign = ContentAlignment.MiddleLeft;
newButton.Click += Form1.btnDriver_Click; newButton.Click += form1.btnDriver_Click;
buttons[driverCount] = newButton; buttons[driverCount] = newButton;
} }
+47 -4
View File
@@ -148,7 +148,7 @@ namespace Test_Merge
} }
else else
{ {
Wrapper.DisplayLiveRanking(pnlLiveRanking); Wrapper.DisplayLiveRanking(pnlLiveRanking,this);
} }
} }
@@ -165,7 +165,7 @@ namespace Test_Merge
{ {
btnResetEmulator.Text = "Restart driver"; btnResetEmulator.Text = "Restart driver";
btnResetEmulator.Enabled = false; btnResetEmulator.Enabled = false;
btnSettings.Enabled = false; btnSettings.Enabled = true;
btnStartDecoding.Enabled = false; btnStartDecoding.Enabled = false;
btnStopUpdating.Enabled = false; btnStopUpdating.Enabled = false;
int errorCode = -1; int errorCode = -1;
@@ -209,10 +209,53 @@ namespace Test_Merge
if (tbxResult.Text != "") if (tbxResult.Text != "")
GpUrl = textBox1.Text; GpUrl = textBox1.Text;
} }
public static void btnDriver_Click(object sender, EventArgs e) public void btnDriver_Click(object sender, EventArgs e)
{ {
//Happens when a driver button has been clicked //Happens when a driver button has been clicked
MessageBox.Show((sender as Button).Name + " has been selected"); //MessageBox.Show((sender as Button).Name + " has been selected");
DriverData driver = Wrapper.GetFullDriverData((sender as Button).Name,pnlCurrentDriverLapsHistory);
lblCurrentDriverName.Text = driver.Name;
lblCurrentDriverPosition.Text = driver.Position.ToString();
lblCurrentDriverGapToLeader.Text = Reader.ConvertMsToTime(driver.GapToLeader);
lblCurrentDriverLapTime.Text = Reader.ConvertMsToTime(driver.LapTime);
lblCurrentDriverTyreAge.Text = driver.CurrentTyre.NumberOfLaps.ToString();
if (driver.DRS)
{
lblCurrentDriverDRS.Text = "Open";
lblCurrentDriverDRS.ForeColor = Color.FromArgb(0, 164, 46);
}
else
{
lblCurrentDriverDRS.Text = "Closed";
lblCurrentDriverDRS.ForeColor = Color.Black;
}
switch (driver.CurrentTyre.Coumpound)
{
case Tyre.Type.Undefined:
lblCurrentDriverTyreType.Text = "uuuuh...";
lblCurrentDriverTyreType.ForeColor = Color.Violet;
break;
case Tyre.Type.Hard:
lblCurrentDriverTyreType.Text = "Hard";
lblCurrentDriverTyreType.ForeColor = Color.FromArgb(164,165,168);
break;
case Tyre.Type.Medium:
lblCurrentDriverTyreType.Text = "Medium";
lblCurrentDriverTyreType.ForeColor = Color.FromArgb(245, 191, 0);
break;
case Tyre.Type.Soft:
lblCurrentDriverTyreType.Text = "Soft";
lblCurrentDriverTyreType.ForeColor = Color.FromArgb(255, 0, 0);
break;
case Tyre.Type.Inter:
lblCurrentDriverTyreType.Text = "Intermediate";
lblCurrentDriverTyreType.ForeColor = Color.FromArgb(0, 164, 46);
break;
case Tyre.Type.Wet:
lblCurrentDriverTyreType.Text = "Wet";
lblCurrentDriverTyreType.ForeColor = Color.FromArgb(39, 96, 166);
break;
}
} }
} }
} }
+26
View File
@@ -117,6 +117,32 @@ namespace Test_Merge
} }
return result; return result;
} }
public List<(int LapTime, int Lap)> GetDriverLaptimes(string driverName,int numberOfLaptimes)
{
int driverId = GetDriverID(driverName);
List<(int LapTime, int Lap)> lapData = new List<(int LapTime, int Lap)>();
string selectQuery = "Select LapTime,Lap from Stats WHERE DriverID = @driverID LIMIT @limit";
using (var command = new SQLiteCommand(selectQuery, Connection))
{
command.Parameters.AddWithValue("@driverID", driverId);
command.Parameters.AddWithValue("@limit", numberOfLaptimes);
try
{
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int lapTime = reader.GetInt32(0);
int lap = reader.GetInt32(1);
lapData.Add((lapTime, lap));
}
}
catch
{
//MessageBox.Show("There has been an error while trying to retrieve the ID of a Driver from the database");
}
}
return lapData;
}
public void AddPitstop(string driverName,int lap,string tyre) public void AddPitstop(string driverName,int lap,string tyre)
{ {
string insertQuery = "INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)"; string insertQuery = "INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)";