Subversion Repositories WoWGM

Rev

Rev 31 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef  _CONSOLECLIENT_H_
#define  _CONSOLECLIENT_H_


#include <Engine/Base/RCString.hpp>
#include <Engine/Event/EvtApi.h>

enum COLOR_T {
        DEFAULT_COLOR     = 0x0,
        INPUT_COLOR       = 0x1,
        ECHO_COLOR        = 0x2,
        ERROR_COLOR       = 0x3,
        WARNING_COLOR     = 0x4,
        GLOBAL_COLOR      = 0x5,
        ADMIN_COLOR       = 0x6,
        HIGHLIGHT_COLOR   = 0x7,
        BACKGROUND_COLOR  = 0x8,
        NUM_COLORTYPES    = 0x9
};

enum CATEGORY {
        DEBUG     = 0x0,
        GRAPHICS  = 0x1,
        CONSOLE   = 0x2,
        COMBAT    = 0x3,
        GAME      = 0x4,
        DEFAULT   = 0x5,
        NET       = 0x6,
        SOUND     = 0x7,
        GM        = 0x8,
        NONE      = 0x9,
        LAST      = 0xA
};

#define NOHELP 0

enum EXECMODE {
        EM_PROMPTOVERWRITE  = 0x0,
        EM_RECORDING        = 0x1,
        EM_APPEND           = 0x2,
        EM_WRITEFILE        = 0x3,
        EM_NOTACTIVE        = 0x4,
        EM_NUM_EXECMODES    = 0x5
};


/****************************************************************************
*
*   Global variables
*
***/

extern EXECMODE& g_ExecCreateMode;

extern char* g_ExecBuffer;


/****************************************************************************
*
*   CVar flags
*
***/

#define LATCH     0x2
#define READONLY  0x4


/****************************************************************************
*
*   CVar struct
*
***/

struct CVar {

  //TODO: Encapsulate the following fields as TSHashObject
        unsigned int  m_hashval;
        void*         m_linktoslot[2];
        void*         m_linktofull[2];
        char*         m_key;
  //////////////////////////////////////////////////////////////////////////

        CATEGORY      m_category;
        unsigned int  m_flags;
        RCString      m_stringValue;
        float         m_floatValue;
        int           m_intValue;
        int           m_modified;
        RCString      m_defaultValue;
        RCString      m_resetValue;
        RCString      m_latchedValue;
        RCString      m_helpText;
        bool          (*m_callback)(CVar *,LPCSTR,LPCSTR,void *);
        void*         m_arg;

        //=======================================================================
        static CVar* Register (LPCSTR   name,
                         LPCSTR   help,
                         DWORD    flags,
                         LPCSTR   value,
                         bool     (*fcn)(CVar *,LPCSTR,LPCSTR,void *),
                         CATEGORY category,
                         bool     setCommand,
                         void*    arg,
                         bool     a9);  // TODO
};


/****************************************************************************
*
*   External functions
*
***/

//===========================================================================
extern void ConsoleAccessSetEnabled (BOOL enable);

//===========================================================================
extern BOOL ConsoleAccessGetEnabled ();

//===========================================================================
extern BOOL ConsoleIsActive ();

//===========================================================================
extern void ConsoleSetHotkey (KEY key);

//===========================================================================
extern void ConsoleSetTitle (LPSTR windowTitle);

//===========================================================================
extern void ConsoleWrite (LPCSTR str, COLOR_T color);

//===========================================================================
extern void ConsoleWriteA (LPCSTR str, COLOR_T color, ...);

//===========================================================================
extern void ConsoleCommandExecute (LPCSTR command, BOOL addToHistory);

//===========================================================================
extern void ConsoleCommandInitialize ();

//===========================================================================
extern BOOL ConsoleCommandRegister (LPCSTR    command,
                                    BOOL      (*handler)(LPCSTR,LPCSTR),
                                    CATEGORY  category,
                                    LPCSTR    helpText);

//===========================================================================
extern void ConsoleCommandUnregister (LPCSTR command);

//===========================================================================
extern void ConsoleCommandWriteHelp (LPCSTR str);

//===========================================================================
extern void ConsolePrintf(char const* str, ...);


#endif // ifndef _CONSOLECLIENT_H_