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

View File

@@ -29,7 +29,36 @@ namespace Test_Merge
{
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)
{
@@ -67,7 +96,7 @@ namespace Test_Merge
newButton.Name = liveData[driverCount].Name;
newButton.TextAlign = ContentAlignment.MiddleLeft;
newButton.Click += Form1.btnDriver_Click;
newButton.Click += form1.btnDriver_Click;
buttons[driverCount] = newButton;
}

View File

@@ -148,7 +148,7 @@ namespace Test_Merge
}
else
{
Wrapper.DisplayLiveRanking(pnlLiveRanking);
Wrapper.DisplayLiveRanking(pnlLiveRanking,this);
}
}
@@ -165,7 +165,7 @@ namespace Test_Merge
{
btnResetEmulator.Text = "Restart driver";
btnResetEmulator.Enabled = false;
btnSettings.Enabled = false;
btnSettings.Enabled = true;
btnStartDecoding.Enabled = false;
btnStopUpdating.Enabled = false;
int errorCode = -1;
@@ -209,10 +209,53 @@ namespace Test_Merge
if (tbxResult.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
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;
}
}
}
}

View File

@@ -117,6 +117,32 @@ namespace Test_Merge
}
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)
{
string insertQuery = "INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)";