ddnet/src/game/client/components/console.h
GreYFoXGTi 5d9ee1736e made the code so it would have less conflicts in the future and Merged branch 'master' of http://github.com/oy/teeworlds
Conflicts:
	data/languages/dutch.txt
	data/languages/french.txt
	data/languages/german.txt
	data/languages/russian.txt
	src/game/server/entities/flag.cpp
	src/game/server/entities/flag.h
	src/game/server/gamecontext.cpp
	src/game/server/gamemodes/ctf.cpp
	src/game/server/gamemodes/ctf.h
	src/game/server/gamemodes/dm.cpp
	src/game/server/gamemodes/dm.h
	src/game/server/gamemodes/mod.cpp
	src/game/server/gamemodes/tdm.cpp
	src/game/server/gamemodes/tdm.h
2010-11-22 00:26:00 +02:00

97 lines
2.7 KiB
C++

/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
/* If you are missing that file, acquire a complete release at teeworlds.com. */
#ifndef GAME_CLIENT_COMPONENTS_CONSOLE_H
#define GAME_CLIENT_COMPONENTS_CONSOLE_H
#include <engine/shared/ringbuffer.h>
#include <game/client/component.h>
#include <game/client/lineinput.h>
class CGameConsole : public CComponent
{
class CInstance
{
public:
struct CBacklogEntry
{
float m_YOffset;
char m_aText[1];
};
TStaticRingBuffer<CBacklogEntry, 64*1024, CRingBufferBase::FLAG_RECYCLE> m_Backlog;
TStaticRingBuffer<char, 64*1024, CRingBufferBase::FLAG_RECYCLE> m_History;
char *m_pHistoryEntry;
CLineInput m_Input;
int m_Type;
int m_CompletionEnumerationCount;
int m_BacklogActPage;
public:
CGameConsole *m_pGameConsole;
char m_aCompletionBuffer[128];
int m_CompletionChosen;
int m_CompletionFlagmask;
float m_CompletionRenderOffset;
IConsole::CCommandInfo *m_pCommand;
CInstance(int t);
void Init(CGameConsole *pGameConsole);
void ClearBacklog();
void ClearHistory();
void ExecuteLine(const char *pLine);
void OnInput(IInput::CEvent Event);
void PrintLine(const char *pLine);
const char *GetString() const { return m_Input.GetString(); }
static void PossibleCommandsCompleteCallback(const char *pStr, void *pUser);
};
class IConsole *m_pConsole;
CInstance m_LocalConsole;
CInstance m_RemoteConsole;
CInstance *CurrentConsole();
float TimeNow();
int m_ConsoleType;
int m_ConsoleState;
float m_StateChangeEnd;
float m_StateChangeDuration;
void Toggle(int Type);
void Dump(int Type);
static void PossibleCommandsRenderCallback(const char *pStr, void *pUser);
static void ClientConsolePrintCallback(const char *pStr, void *pUserData);
static void ConToggleLocalConsole(IConsole::IResult *pResult, void *pUserData, int ClientID);
static void ConToggleRemoteConsole(IConsole::IResult *pResult, void *pUserData, int ClientID);
static void ConClearLocalConsole(IConsole::IResult *pResult, void *pUserData, int ClientID);
static void ConClearRemoteConsole(IConsole::IResult *pResult, void *pUserData, int ClientID);
static void ConDumpLocalConsole(IConsole::IResult *pResult, void *pUserData, int ClientID);
static void ConDumpRemoteConsole(IConsole::IResult *pResult, void *pUserData, int ClientID);
public:
enum
{
CONSOLETYPE_LOCAL=0,
CONSOLETYPE_REMOTE,
};
CGameConsole();
void PrintLine(int Type, const char *pLine);
virtual void OnStateChange(int NewState, int OldState);
virtual void OnConsoleInit();
virtual void OnReset();
virtual void OnRender();
virtual void OnMessage(int MsgType, void *pRawMsg);
virtual bool OnInput(IInput::CEvent Events);
};
#endif