//////////////////////////////////////////////////////////////////////////////
//
// Asura_InfoMsgSystem.h
//
// Copyright (c) 2003 Rebellion. All rights reserved.
//
// Description:
//
//     Simple system for outputting information messages to the player. This
//     is for things like reasonably technical info like you'd see displayed
//     in the console in Quake/Half-Life games or for event logging (loading
//     map XXX, etc.) in a dedicated server situation.
//
//     Project-specific code dictates what's done with the message. It might
//     be printf()'d or routed to the command console, for example.
//
//     Define ASURA_SUPPORT_INFO_MSG_SYSTEM in your project's / platform's
//     Asura_EngineConfiguration.h if you want to use this. If you don't
//     define it then there's no need to include this header or the
//     corresponding source file in your DSP.
//
//////////////////////////////////////////////////////////////////////////////

// B E G I N   F I L E   W R A P P E R ///////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#ifndef ___ASURA_INFOMSGSYSTEM_H___
#define ___ASURA_INFOMSGSYSTEM_H___ 1

// I N C L U D E S ///////////////////////////////////////////////////////////

#include "Core/Asura_PlatformBasics.h"

// M A C R O S ///////////////////////////////////////////////////////////////

// You can override the default limit in your Asura_EngineConfiguration.h.
#ifndef ASURA_INFO_MSG_SYSTEM_MAX_FORMATTED_SIZE
    #define ASURA_INFO_MSG_SYSTEM_MAX_FORMATTED_SIZE (512)
#endif

// C L A S S E S /////////////////////////////////////////////////////////////

class Asura_InfoMsgSystem
{

    public:

        // C L A S S   M E T H O D S /////////////////////////////////////////

#ifdef ASURA_SUPPORT_INFO_MSG_SYSTEM
        static void Output( const Asura_UnicodeChar* wszFmt, ... );
#else
        static void Output( const Asura_UnicodeChar* wszFmt, ... ) { }
#endif

    private:
        
        // C L A S S   M E T H O D S /////////////////////////////////////////

#ifdef ASURA_SUPPORT_INFO_MSG_SYSTEM
        static void Project_Output( const Asura_UnicodeChar* wszMsg );
#endif

};

// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

#endif // #ifndef ___ASURA_INFOMSGSYSTEM_H___
