Subversion Repositories WoWGM

Rev

Rev 32 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "pch.h"
#pragma hdrstop

#include "ConsoleClient.h"


/******************************************************************************
*
*   Client memory addresses
*
***/

#define  CONSOLEWRITE_PTR              0x00765270
#define  CONSOLEWRITEA_PTR             0x0063CD00
#define  CONSOLESETHOTKEY_PTR          0x0063CB00
#define  CONSOLESETTITLE_PTR           0x0063CB10
#define  CONSOLECOMMANDEXECUTE_PTR     0x007658A0
#define  CONSOLECOMMANDREGISTER_PTR    0x00769100
#define  CONSOLECOMMANDWRITEHELP_PTR   0x0063FDB0
#define  CONSOLECOMMANDUNREGISTER_PTR  0x007689E0
#define  CONSOLEPRINTF_PTR             0x007653B0

#define  G_EXECCREATEMODE_PTR          0x00ADBD48
#define  G_EXECBUFFER_PTR              0x00CA1A28

#define  S_ACTIVE_PTR                  0x00C4EAC8
#define  S_CONSOLEACCESSENABLED_PTR    0x00CABCC4
#define  S_CONSOLEKEY_PTR              0x00864554


/******************************************************************************
*
*         Client symbol pointers
*
***/

static BOOL* s_active = (BOOL*)S_ACTIVE_PTR;

static BOOL* s_consoleAccessEnabled = (BOOL*)S_CONSOLEACCESSENABLED_PTR;

static KEY* s_consoleKey = (KEY*)S_CONSOLEKEY_PTR;


void (*ConsoleWritePtr)(LPCSTR,COLOR_T) = *(void(*)(LPCSTR,COLOR_T))CONSOLEWRITE_PTR;

void (*ConsoleWriteAPtr)(LPCSTR,COLOR_T, ...) = *(void(*)(LPCSTR,COLOR_T,...))CONSOLEWRITEA_PTR;

void (*ConsoleSetHotkeyPtr)(KEY) = *(void(*)(KEY))CONSOLESETHOTKEY_PTR;

void (*ConsoleSetTitlePtr)(LPSTR) = *(void(*)(LPSTR))CONSOLESETTITLE_PTR;

void (*ConsoleCommandExecutePtr)(LPCSTR,BOOL) = *(void(*)(LPCSTR,BOOL))CONSOLECOMMANDEXECUTE_PTR;

BOOL (*ConsoleCommandRegisterPtr)(LPCSTR,BOOL(*)(LPCSTR,LPCSTR),CATEGORY,LPCSTR) = *(BOOL(*)(LPCSTR,BOOL(*)(LPCSTR,LPCSTR),CATEGORY,LPCSTR))CONSOLECOMMANDREGISTER_PTR;

void (*ConsoleCommandWriteHelpPtr)(LPCSTR) = *(void(*)(LPCSTR))CONSOLECOMMANDWRITEHELP_PTR;

void (*ConsoleCommandUnregisterPtr)(LPCSTR) = *(void(*)(LPCSTR))CONSOLECOMMANDUNREGISTER_PTR;

void (*ConsolePrintfPtr)(LPCSTR,...) = *(void(*)(LPCSTR,...))CONSOLEPRINTF_PTR;


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

EXECMODE& g_ExecCreateMode = *(EXECMODE*)G_EXECCREATEMODE_PTR;

char* g_ExecBuffer = (char *)G_EXECBUFFER_PTR;


/******************************************************************************
*
*   External
*
***/

//=============================================================================
void ConsoleWrite (char const* str, COLOR_T color) {
  ConsoleWritePtr(str,color);
}

//=============================================================================
void ConsoleWriteA (char const* str, COLOR_T color, ...) {
        va_list va;
        va_start(va,color);

        if (str && *str) {
                char buf[1024] = {};
                vsnprintf(buf,sizeof(buf),str,va);
                ConsoleWrite(buf,color);
        }

        va_end(va);
}

//=============================================================================
void ConsoleAccessSetEnabled (BOOL enable) {
  *s_consoleAccessEnabled = enable;
}

//=============================================================================
BOOL ConsoleAccessGetEnabled () {
  return *s_consoleAccessEnabled;
}

//=============================================================================
BOOL ConsoleIsActive () {
  return *s_active;
}

//=============================================================================
void ConsoleSetHotkey (KEY key) {
  ConsoleSetHotkeyPtr(key);
}

//=============================================================================
void ConsoleSetTitle (LPSTR windowTitle) {
  ConsoleSetTitlePtr(windowTitle);
}

//=============================================================================
void ConsoleCommandExecute (LPCSTR command, BOOL addToHistory) {
  ConsoleCommandExecutePtr(command,addToHistory);
}

//=============================================================================
BOOL ConsoleCommandRegister (LPCSTR   command,
                             BOOL     (*handler)(LPCSTR,LPCSTR),
                             CATEGORY category,
                             LPCSTR   helpText/* = NOHELP*/) {

        return ConsoleCommandRegisterPtr(command,handler,category,helpText);
}

//=============================================================================
void ConsoleCommandWriteHelp (LPCSTR str) {
        ConsoleCommandWriteHelpPtr(str);
}

//=============================================================================
void ConsoleCommandUnregister (LPCSTR command) {
        ConsoleCommandUnregisterPtr(command);
}

//=============================================================================
void ConsolePrintf (LPCSTR str, ...) {
  va_list arglist;
  va_start(arglist, str);

  char const* token = va_arg(arglist, char const*);
  
        ConsolePrintfPtr(str, token);

  va_end(arglist);
}