Eolt,
[Flags]
public enum LightSignal
{
None = 0,
Blue = 0b00001,
Red = 0b00010,
White = 0b00100,
Yellow = 0b01000,
Green = 0b10000,
TypeA = Blue | Red | Green | White,
TypeB = Red | Green,
TypeC = Yellow | Green,
TypeLastToB = Red | Blue
}
public enum EventType
{
Unknown,
A,
B,
C,
RenameLastToB
}
public EventType CalcEvent(LightSignal ls)
{
if(LightSignal.TypeA == ls) return EventType.A;
if(LightSignal.TypeB == ls) return EventType.B;
if(LightSignal.TypeC == ls) return EventType.C;
if((LightSignal.TypeLastToB & ls) == LightSignal.TypeLastToB) return EventType.RenameLastToB;
return defauit;
}
Фих знает, короче. Можно матрицы написать или хитрую методу на третичной логике.