I am having difficulty figuring this problem out. The program (may be familiar out there, from the Linux Format Magazine), it draws 5 randomly colored (red, green, and blue) fireworks on the screen. You can only choose fireworks of the same color with the mouse and hit the space bar to blow them up. The challenge is to program in a white firework that acts as a bridge to allow you choose more then one colored firework. Below is the method that determines this. I can't quite get my head wrapped around how to choose a third color, it currently will let me choose one color and white ones, but not a third color. Thoughts?

Code:
private void CheckSelectFirework(Point point)
{
    foreach(Firework firework1 in Fireworks)
    {
        if(PointOverRect(point.X, point.Y, firework1.X, firework1.Y,
	                 FireworkTypes[firework1.Angle][firework1.Colour].Width,
	                 FireworkTypes[firework1.Angle][firework1.Colour].Height))
	{
            foreach(Firework firework2 in Fireworks)
	    {
                if(firework2.IsSelected && firework2.Colour != firework1.Colour && 
		   !firework1.IsWhite && !firework2.IsWhite)
		{
		    firework2.IsSelected = false;
                }
	    }
	    firework1.IsSelected = true;
        }
    }
}