Izmeni Update, da kod dodavanja u kolekciju ispituje da li vec postoji key-value par i da radi add odnosno update tog para:
Code:
public void Update(PushEventArgs args)
{
foreach (KeyValuePair<string, LightValue> kvp in Lights)
{
if (args.Name == kvp.Key)
{
switch (args.Light)
{
case "Red":
if (Lights[args.Name] == null)
Lights.Add(args.Name, Semafor.LightValue.Red);
else
Lights[args.Name] = Semafor.LightValue.Red;
break;
case "Green":
if (Lights[args.Name] == null)
Lights.Add(args.Name, Semafor.LightValue.Green);
else
Lights[args.Name] = Semafor.LightValue.Green;
break;
case "Orange":
if (Lights[args.Name] == null)
Lights.Add(args.Name, Semafor.LightValue.Orange);
else
Lights[args.Name] = Semafor.LightValue.Orange;
break;
}
break;
}
}
...
i ovo u OnPaint:
Code:
protected override void OnPaint(PaintEventArgs e)
{
...
foreach (KeyValuePair<string, LightValue> kvp in Lights)
{
switch (kvp.Key)
{
case "jupi":
{
SolidBrush orangeBrush = new SolidBrush(boja("jupi"));
...
}
case "ipuj":
{
SolidBrush orangeBrush = new SolidBrush(boja("ipuj"));
...
}
case "piju":
{
SolidBrush orangeBrush = new SolidBrush(boja("piju"));
...
}
i dodaj u Semafor.cs na dnu:
Code:
private Color boja(string imeKvadratica)
{
Color b = Color.Black;
switch (Lights[imeKvadratica])
{
case LightValue.Red:
b = Color.Red;
break;
case LightValue.Green:
b = Color.Green;
break;
case LightValue.Orange:
b = Color.Orange;
break;
}
return b;
}
Trebalo bi da radi ;)