Subversion Repositories WoWGM

Rev

Rev 3 | 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: 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,
                                                   unsigned int 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_