Files
Car-Simulation/Car simulation/UI/Instruments/InstrumentPanel.cs
2026-02-16 18:32:48 +01:00

73 lines
2.1 KiB
C#

using Car_simulation.Core.Models;
using SFML.Graphics;
using SFML.System;
namespace Car_simulation.UI.Instruments
{
public class InstrumentPanel
{
private List<Text> _displayTexts = new List<Text>();
private Tachometer _tachometer;
private Speedometer _speedometer;
private Font _font;
private Color _textColor = Color.White;
public InstrumentPanel(Font font, Vector2f tachometerPosition, Vector2f speedometerPosition)
{
_font = font;
_tachometer = new Tachometer(font, tachometerPosition, 200, 7000);
_speedometer = new Speedometer(font, speedometerPosition, 200);
InitializeDisplayTexts();
}
private void InitializeDisplayTexts()
{
for (int i = 0; i < 30; i++)
{
Text text = new Text("", _font, 16);
text.FillColor = Color.White;
text.Position = new Vector2f(20, 20 + i * 24);
_displayTexts.Add(text);
}
}
public void Update(Car_simulation.Core.Models.Car car)
{
UpdateTextDisplay(car);
_tachometer.Update(car.Engine.RPM);
_speedometer.Update(car.Speed);
}
private void UpdateTextDisplay(Car car)
{
var displayData = car.GetDisplayData();
// Just put each line in a text element
for (int i = 0; i < _displayTexts.Count; i++)
{
if (i < displayData.Count)
{
_displayTexts[i].DisplayedString = displayData[i];
_displayTexts[i].FillColor = _textColor;
}
else
{
_displayTexts[i].DisplayedString = "";
}
}
}
public void Draw(RenderWindow window)
{
foreach (var text in _displayTexts)
{
if (!string.IsNullOrEmpty(text.DisplayedString))
window.Draw(text);
}
_tachometer.Draw(window);
_speedometer.Draw(window);
}
}
}