public static int ParseToIndex( [NotNull] string color ) {
if ( color == null )
throw new ArgumentNullException( "color" );
color = color.ToLower();
if ( color.Length == 2 && color[0] == '&' ) {
if ( ColorNames.ContainsKey( color[1] ) ) {
return ColorNames.IndexOfKey( color[1] );
} else {
switch ( color ) {
case "&s":
return ColorNames.IndexOfKey( Sys[1] );
case "&y":
return ColorNames.IndexOfKey( Say[1] );
case "&p":
return ColorNames.IndexOfKey( PM[1] );
case "&r":
return ColorNames.IndexOfKey( Announcement[1] );
case "&h":
return ColorNames.IndexOfKey( Help[1] );
case "&w":
return ColorNames.IndexOfKey( Warning[1] );
case "&m":
return ColorNames.IndexOfKey( Me[1] );
case "&i":
return ColorNames.IndexOfKey( IRC[1] );
default:
return 15;
}
}
} else if ( ColorNames.ContainsValue( color ) ) {
return ColorNames.IndexOfValue( color );
} else {
return 15; // white
}
}