ezEngine  Milestone 7
Console.h
1 #pragma once
2 
3 #include <CoreUtils/Basics.h>
4 #include <Foundation/Strings/StringBuilder.h>
5 #include <Foundation/Communication/Event.h>
6 #include <Foundation/Configuration/CVar.h>
7 #include <CoreUtils/Console/ConsoleFunction.h>
8 
9 
18 class EZ_COREUTILS_DLL ezConsole
19 {
20 public:
21  ezConsole();
22  virtual ~ezConsole();
23 
26 
29  {
30  ezString m_sText;
31  ezColor m_TextColor;
32 
35 
38 
39  ConsoleString() { m_TextColor = ezColor::White; m_bShowOnScreen = false; }
40  bool operator< (const ConsoleString& rhs) const { return m_sText < rhs.m_sText; }
41  };
42 
45 
46 
48  struct ConsoleEvent
49  {
50  enum EventType
51  {
57  };
58 
59  EventType m_EventType;
60 
62  const char* m_szCommand;
63 
66 
69 
72  };
73 
76 
78 
81 
83  void SetMaxConsoleStrings(ezUInt32 uiMax) { m_uiMaxConsoleStrings = ezMath::Clamp<ezUInt32>(uiMax, 0, 100000); }
84 
86  ezUInt32 GetMaxConsoleStrings() const { return m_uiMaxConsoleStrings; }
87 
89  virtual void EnableLogOutput(bool bEnable);
90 
92  virtual void SaveState(ezStreamWriterBase& Stream) const;
93 
95  virtual void LoadState(ezStreamReaderBase& Stream);
96 
98 
101 
105  void SetCommandInterpreter(ezCommandProcessor processor) { m_CommandProcessor = processor; }
106 
111  void ProcessCommand(const char* szCmd);
112 
120  void BindKey(const char* szKey, const char* szCommand);
121 
123  void UnbindKey(const char* szKey);
124 
126  void ExecuteBoundKey(const char* szKey);
127 
129 
132 
137  void AddInputCharacter(ezUInt32 uiChar);
138 
140  void ClearInputLine();
141 
143  const char* GetInputLine() const { return m_sInputLine.GetData(); }
144 
146  ezInt32 GetCaretPosition() const { return m_iCaretPosition; }
147 
149  void MoveCaret(ezInt32 iMoveOffset);
150 
152  void DeleteNextCharacter();
153 
155  void Scroll(ezInt32 iLines);
156 
158  ezUInt32 GetScrollPosition() const { return m_iScrollPosition; }
159 
165  virtual void AutoCompleteInputLine();
166 
178  virtual void DoDefaultInputHandling(bool bConsoleOpen);
179 
181 
184 
188  void AddConsoleString(const char* szText, const ezColor& color = ezColor(1, 1, 1), bool bShowOnScreen = false);
189 
191  const ezDeque<ConsoleString>& GetConsoleStrings() const { return m_ConsoleStrings; }
192 
194  void ClearConsoleStrings();
195 
197  const ezStaticArray<ezString, 16>& GetInputHistory() const { return m_InputHistory; }
198 
200  void SearchInputHistory(ezInt32 iHistoryUp);
201 
203 
206 
208  static ezString GetFullInfoAsString(ezCVar* pCVar);
209 
211  static const ezString GetValueAsString(ezCVar* pCVar);
212 
214 
215 protected:
217  void RemoveCharacter(ezUInt32 uiInputLinePosition);
218 
220  void ClampCaretPosition();
221 
223  void AddToInputHistory(const char* szString);
224 
226  static void FindPossibleCVars(const char* szVariable, ezDeque<ezString>& CommonStrings, ezDeque<ConsoleString>& ConsoleStrings);
227 
229  static void FindPossibleFunctions(const char* szVariable, ezDeque<ezString>& CommonStrings, ezDeque<ConsoleString>& ConsoleStrings);
230 
232  static const ezString FindCommonString(const ezDeque<ezString>& vStrings);
233 
235  void LogHandler(const ezLoggingEventData& data);
236 
237  ezInt32 m_iCaretPosition;
238  ezStringBuilder m_sInputLine;
239 
240 private:
241  virtual bool ProcessInputCharacter(ezUInt32 uiChar);
242  virtual bool FilterInputCharacter(ezUInt32 uiChar);
243 
244  ezCommandProcessor m_CommandProcessor;
245  ezDeque<ConsoleString> m_ConsoleStrings;
246  ezUInt32 m_uiMaxConsoleStrings;
247  ezInt32 m_iScrollPosition;
248  ezInt32 m_iCurrentInputHistoryElement;
249  bool m_bLogOutputEnabled;
250  bool m_bDefaultInputHandlingInitialized;
251 
252  ezStaticArray<ezString, 16> m_InputHistory;
253  ezMap<ezString, ezString> m_BoundKeys;
254 };
255 
256