I have settled on two separate methods:
Code:
private void CheckSelectFirework(Point point)
{
foreach(Firework firework in Fireworks)
{
int SelectedColor = SetSelectedColor(firework);
if(PointOverRect(point.X,
point.Y,
firework.X,
firework.Y,
FireworkTypes[firework.Angle][firework.Colour].Width,
FireworkTypes[firework.Angle][firework.Colour].Height))
{
foreach(Firework firework2 in Fireworks)
{
if((LastColorSelected & SelectedColor) == 0)
{
firework2.IsSelected = false;
}
}
firework.IsSelected = true;
LastColorSelected = SelectedColor;
}
}
}
Code:
private static int SetSelectedColor(Firework firework)
{
int selectedColor = 0;
if(firework.Colour == Color.Red)
{
selectedColor = RED;
}
else if(firework.Colour == Color.Green)
{
selectedColor = GREEN;
}
else if(firework.Colour == Color.Blue)
{
selectedColor = BLUE;
}
else if(firework.IsWhite)
{
selectedColor = WHITE;
}
return selectedColor;
}