void Log( LOG_TYPE flag, char *format, ... ) { boost::mutex::scoped_lock lConsole( mConsole, false ); va_list arglist; va_start( arglist, format ); switch( flag ) { case MSG_NONE: SetConsoleColor( CC_WHITE ); printf( "[MSG]: " ); break; case MSG_LOAD: SetConsoleColor( CC_LIGHTMAGENTA ); printf( "[LOAD]: " ); break; case MSG_STATUS: SetConsoleColor( CC_LIGHTGREEN ); printf( "[STATUS]: " ); break; case MSG_INFO: SetConsoleColor( CC_GREEN ); printf( "[INFO]: " ); break; case MSG_WARNING: SetConsoleColor( CC_LIGHTMAGENTA ); printf( "[WARNING]: " ); break; case MSG_ERROR: SetConsoleColor( CC_LIGHTRED ); printf( "[ERROR]: " ); break; case MSG_DEBUG: SetConsoleColor( CC_LIGHTBLUE ); printf( "[DEBUG]: " ); break; } SetConsoleColor( CC_WHITE ); lConsole.lock( ); vprintf( format, arglist ); printf( ( flag == MSG_LOAD ) ? "\r" : "\n" ); lConsole.unlock( ); va_end( arglist ); }