DDraceNetwork Documentation
Loading...
Searching...
No Matches
console.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_CLIENT_COMPONENTS_CONSOLE_H
4#define GAME_CLIENT_COMPONENTS_CONSOLE_H
5
6#include <base/lock.h>
7
8#include <engine/console.h>
10
13#include <game/client/ui.h>
14
15enum
16{
21};
22
23class CConsoleLogger;
24
26{
27 friend class CConsoleLogger;
29 {
30 public:
44
46 const char *m_pName;
47 int m_Type;
51
52 STextBoundingBox m_BoundingBox = {0.0f, 0.0f, 0.0f, 0.0f};
53 float m_LastInputHeight = 0.0f;
54
55 bool m_MouseIsPress = false;
56 vec2 m_MousePress = vec2(0.0f, 0.0f);
57 vec2 m_MouseRelease = vec2(0.0f, 0.0f);
59 int m_CurSelEnd = 0;
60 bool m_HasSelection = false;
62
64
75
76 char m_aUser[64];
79
81 const char *m_pCommandName;
82 const char *m_pCommandHelp;
83 const char *m_pCommandParams;
84
87 std::vector<const char *> m_vpCommandSuggestions;
88 std::vector<const char *> m_vpArgumentSuggestions;
89
90 bool m_Searching = false;
92 {
93 int m_Pos;
97
98 SSearchMatch(int Pos, int StartLine, int EndLine, int EntryLine) :
99 m_Pos(Pos), m_StartLine(StartLine), m_EndLine(EndLine), m_EntryLine(EntryLine) {}
100 };
103 std::vector<SSearchMatch> m_vSearchMatches;
104
105 CInstance(int t);
106 void Init(CGameConsole *pGameConsole);
107
111 void ClearHistory();
112 void Reset();
113
114 void ExecuteLine(const char *pLine);
115
116 bool OnInput(const IInput::CEvent &Event);
117 void PrintLine(const char *pLine, int Len, ColorRGBA PrintColor) REQUIRES(!m_BacklogPendingLock);
118 int GetLinesToScroll(int Direction, int LinesToScroll);
119 void ScrollToCenter(int StartLine, int EndLine);
121
122 const char *GetString() const { return m_Input.GetString(); }
135 void GetCommand(const char *pInput, char (&aCmd)[IConsole::CMDLINE_LENGTH]);
136 static void PossibleCommandsCompleteCallback(int Index, const char *pStr, void *pUser);
137 static void PossibleArgumentsCompleteCallback(int Index, const char *pStr, void *pUser);
138
139 void UpdateEntryTextAttributes(CBacklogEntry *pEntry) const;
140
141 bool IsInputHidden() const;
143
144 private:
145 void SetSearching(bool Searching);
146 void ClearSearch();
147 void UpdateSearch();
148
149 friend class CGameConsole;
150 };
151
154
157
158 CInstance *ConsoleForType(int ConsoleType);
160
165
168
169 static constexpr ColorRGBA ms_SearchHighlightColor = ColorRGBA(1.0f, 0.0f, 0.0f, 1.0f);
170 static constexpr ColorRGBA ms_SearchSelectedColor = ColorRGBA(1.0f, 1.0f, 0.0f, 1.0f);
171
172 int PossibleMaps(const char *pStr, IConsole::FPossibleCallback pfnCallback = IConsole::EmptyPossibleCommandCallback, void *pUser = nullptr);
173
174 static void PossibleCommandsRenderCallback(int Index, const char *pStr, void *pUser);
175 static void ConToggleLocalConsole(IConsole::IResult *pResult, void *pUserData);
176 static void ConToggleRemoteConsole(IConsole::IResult *pResult, void *pUserData);
177 static void ConClearLocalConsole(IConsole::IResult *pResult, void *pUserData);
178 static void ConClearRemoteConsole(IConsole::IResult *pResult, void *pUserData);
179 static void ConDumpLocalConsole(IConsole::IResult *pResult, void *pUserData);
180 static void ConDumpRemoteConsole(IConsole::IResult *pResult, void *pUserData);
181 static void ConConsolePageUp(IConsole::IResult *pResult, void *pUserData);
182 static void ConConsolePageDown(IConsole::IResult *pResult, void *pUserData);
183 static void ConConsolePageTop(IConsole::IResult *pResult, void *pUserData);
184 static void ConConsolePageBottom(IConsole::IResult *pResult, void *pUserData);
185 static void ConchainConsoleOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
186
187public:
188 enum
189 {
193 };
194
195 CGameConsole();
196 ~CGameConsole() override;
197 int Sizeof() const override { return sizeof(*this); }
198
199 void PrintLine(int Type, const char *pLine);
200 void RequireUsername(bool UsernameReq);
201
202 void OnStateChange(int NewState, int OldState) override;
203 void OnConsoleInit() override;
204 void OnInit() override;
205 void OnReset() override;
206 void OnRender() override;
207 void OnMessage(int MsgType, void *pRawMsg) override;
208 bool OnInput(const IInput::CEvent &Event) override;
209 void Prompt(char (&aPrompt)[32]);
210
211 void Toggle(int Type);
212 bool IsActive() const { return m_ConsoleState != CONSOLE_CLOSED; }
213
215};
216#endif
Definition component.h:165
Definition console.cpp:34
Definition console.h:29
int m_BacklogCurLine
Definition console.h:48
bool m_HasSelection
Definition console.h:60
int m_CompletionCommandEnd
Definition console.h:74
int m_CurSelEnd
Definition console.h:59
bool IsInputHidden() const
Definition console.cpp:837
const char * m_pCommandHelp
Definition console.h:82
void ExecuteLine(const char *pLine)
Definition console.cpp:411
CGameConsole * m_pGameConsole
Definition console.h:63
void GetCommand(const char *pInput, char(&aCmd)[IConsole::CMDLINE_LENGTH])
Definition console.cpp:468
bool m_IsCommand
Definition console.h:80
void UpdateBacklogTextAttributes()
Definition console.cpp:278
void Dump() REQUIRES(!m_BacklogPendingLock)
Definition console.cpp:978
void Init(CGameConsole *pGameConsole)
Definition console.cpp:259
bool m_MouseIsPress
Definition console.h:55
char m_aCompletionBufferArgument[IConsole::CMDLINE_LENGTH]
Definition console.h:67
int m_CompletionChosen
Definition console.h:66
bool m_Searching
Definition console.h:90
static void PossibleArgumentsCompleteCallback(int Index, const char *pStr, void *pUser)
Definition console.cpp:495
int m_CompletionChosenArgument
Definition console.h:68
CStaticRingBuffer< CBacklogEntry, 1024 *1024, CRingBufferBase::FLAG_RECYCLE > m_Backlog
Definition console.h:39
bool m_UsernameReq
Definition console.h:78
const char * m_pCommandName
Definition console.h:81
void UpdateEntryTextAttributes(CBacklogEntry *pEntry) const
Definition console.cpp:824
const char * m_pCommandParams
Definition console.h:83
void ClearHistory()
Definition console.cpp:315
std::vector< SSearchMatch > m_vSearchMatches
Definition console.h:103
char m_aCompletionBuffer[IConsole::CMDLINE_LENGTH]
Definition console.h:65
int m_CompletionFlagmask
Definition console.h:69
int m_CurSelStart
Definition console.h:58
STextBoundingBox m_BoundingBox
Definition console.h:52
int m_Type
Definition console.h:47
void SetSearching(bool Searching)
Definition console.cpp:848
int m_NewLineCounter
Definition console.h:61
void UpdateCompletionSuggestions()
Definition console.cpp:338
const char * m_pName
Definition console.h:46
CLock m_BacklogPendingLock
Definition console.h:40
float m_LastInputHeight
Definition console.h:53
std::vector< const char * > m_vpCommandSuggestions
Definition console.h:87
CInstance(int t)
Definition console.cpp:208
CStaticRingBuffer< char, 64 *1024, CRingBufferBase::FLAG_RECYCLE > m_History
Definition console.h:42
static void PossibleCommandsCompleteCallback(int Index, const char *pStr, void *pUser)
Definition console.cpp:454
CStaticRingBuffer< CBacklogEntry, 1024 *1024, CRingBufferBase::FLAG_RECYCLE > m_BacklogPending GUARDED_BY(m_BacklogPendingLock)
bool OnInput(const IInput::CEvent &Event)
Definition console.cpp:511
bool m_CompletionDirty
Definition console.h:85
void Reset()
Definition console.cpp:321
void ScrollToCenter(int StartLine, int EndLine)
Definition console.cpp:804
int m_BacklogLastActiveLine
Definition console.h:49
vec2 m_MousePress
Definition console.h:56
int m_CurrentMatchIndex
Definition console.h:101
std::vector< const char * > m_vpArgumentSuggestions
Definition console.h:88
const char * GetString() const
Definition console.h:122
int m_CompletionCommandStart
Definition console.h:73
float m_CompletionRenderOffsetChange
Definition console.h:71
void UpdateSearch()
Definition console.cpp:873
friend class CGameConsole
Definition console.h:149
char * m_pHistoryEntry
Definition console.h:43
float m_CompletionRenderOffset
Definition console.h:70
int GetLinesToScroll(int Direction, int LinesToScroll)
Definition console.cpp:779
bool m_QueueResetAnimation
Definition console.h:86
char m_aUser[64]
Definition console.h:76
void ClearSearch()
Definition console.cpp:865
int m_CompletionArgumentPosition
Definition console.h:72
bool m_UserGot
Definition console.h:77
vec2 m_MouseRelease
Definition console.h:57
void PrintLine(const char *pLine, int Len, ColorRGBA PrintColor) REQUIRES(!m_BacklogPendingLock)
Definition console.cpp:766
void PumpBacklogPending() REQUIRES(!m_BacklogPendingLock)
Definition console.cpp:287
int m_LinesRendered
Definition console.h:50
char m_aCurrentSearchString[IConsole::CMDLINE_LENGTH]
Definition console.h:102
void ClearBacklog() REQUIRES(!m_BacklogPendingLock)
Definition console.cpp:264
CLineInputBuffered< IConsole::CMDLINE_LENGTH > m_Input
Definition console.h:45
void Prompt(char(&aPrompt)[32])
Definition console.cpp:1117
void OnRender() override
Definition console.cpp:1144
void OnInit() override
Definition console.cpp:1773
static void ConConsolePageDown(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1701
void Toggle(int Type)
Definition console.cpp:1627
bool OnInput(const IInput::CEvent &Event) override
Definition console.cpp:1608
int m_ConsoleType
Definition console.h:161
CUi::CTouchState m_TouchState
Definition console.h:167
friend class CConsoleLogger
Definition console.h:27
float m_StateChangeDuration
Definition console.h:164
CInstance m_RemoteConsole
Definition console.h:156
CConsoleLogger * m_pConsoleLogger
Definition console.h:153
static void PossibleCommandsRenderCallback(int Index, const char *pStr, void *pUser)
Definition console.cpp:1068
static void ConClearLocalConsole(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1674
int m_ConsoleState
Definition console.h:162
void ForceUpdateRemoteCompletionSuggestions()
Definition console.cpp:332
static void ConConsolePageBottom(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1717
static void ConchainConsoleOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition console.cpp:1724
void PrintLine(int Type, const char *pLine)
Definition console.cpp:1743
static void ConToggleRemoteConsole(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1669
static constexpr ColorRGBA ms_SearchHighlightColor
Definition console.h:169
CInstance * ConsoleForType(int ConsoleType)
Definition console.cpp:1019
static void ConDumpLocalConsole(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1684
bool m_WantsSelectionCopy
Definition console.h:166
float m_StateChangeEnd
Definition console.h:163
void OnMessage(int MsgType, void *pRawMsg) override
Definition console.cpp:1604
static void ConConsolePageUp(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1694
~CGameConsole() override
Definition console.cpp:1013
CGameConsole()
Definition console.cpp:1002
static void ConDumpRemoteConsole(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1689
class IConsole * m_pConsole
Definition console.h:152
void OnReset() override
Definition console.cpp:1031
void OnStateChange(int NewState, int OldState) override
Definition console.cpp:1785
static void ConConsolePageTop(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1710
static void ConToggleLocalConsole(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1664
CInstance * CurrentConsole()
Definition console.cpp:1026
CInstance m_LocalConsole
Definition console.h:155
@ CONSOLETYPE_LOCAL
Definition console.h:190
@ CONSOLETYPE_REMOTE
Definition console.h:191
@ NUM_CONSOLETYPES
Definition console.h:192
void RequireUsername(bool UsernameReq)
Definition console.cpp:1734
int PossibleMaps(const char *pStr, IConsole::FPossibleCallback pfnCallback=IConsole::EmptyPossibleCommandCallback, void *pUser=nullptr)
Definition console.cpp:1036
void OnConsoleInit() override
Definition console.cpp:1751
int Sizeof() const override
Definition console.h:197
bool IsActive() const
Definition console.h:212
static constexpr ColorRGBA ms_SearchSelectedColor
Definition console.h:170
static void ConClearRemoteConsole(IConsole::IResult *pResult, void *pUserData)
Definition console.cpp:1679
Definition lineinput.h:202
Definition lock.h:90
Definition ringbuffer.h:82
Definition ui.h:348
Definition color.h:182
Definition console.h:64
Definition console.h:20
@ CMDLINE_LENGTH
Definition console.h:37
static void EmptyPossibleCommandCallback(int Index, const char *pCmd, void *pUser)
Definition console.h:107
void(* FPossibleCallback)(int Index, const char *pCmd, void *pUser)
Definition console.h:101
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:102
Definition input.h:22
Definition input.h:18
@ CONSOLE_OPEN
Definition console.h:19
@ CONSOLE_OPENING
Definition console.h:18
@ CONSOLE_CLOSING
Definition console.h:20
@ CONSOLE_CLOSED
Definition console.h:17
#define REQUIRES(...)
Definition lock.h:34
Direction
Definition nameplates.cpp:213
float m_YOffset
Definition console.h:33
int m_LineCount
Definition console.h:34
size_t m_Length
Definition console.h:36
ColorRGBA m_PrintColor
Definition console.h:35
char m_aText[1]
Definition console.h:37
int m_Pos
Definition console.h:93
int m_EndLine
Definition console.h:95
int m_EntryLine
Definition console.h:96
SSearchMatch(int Pos, int StartLine, int EndLine, int EntryLine)
Definition console.h:98
int m_StartLine
Definition console.h:94
Definition textrender.h:184
vector2_base< float > vec2
Definition vmath.h:161