1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
/*
===========================================================================
Copyright (C) 2024 the OpenMoHAA team
This file is part of OpenMoHAA source code.
OpenMoHAA source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
OpenMoHAA source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenMoHAA source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
===========================================================================
*/
#pragma once
typedef void (*consoleHandler_t)(const char *text);
class item
{
public:
str string;
int lines;
int begins[10];
int breaks[10];
const UColor *pColor;
item();
};
inline item::item()
{
lines = 0;
for (int i = 0; i < 10; i++) {
begins[i] = 0;
breaks[i] = 0;
}
pColor = NULL;
}
#define MAX_CONSOLE_ITEMS 300
class UIConsole : public UIWidget
{
protected:
UList<str> m_history;
void *m_historyposition;
item m_items[MAX_CONSOLE_ITEMS];
str m_currentline;
UIVertScroll *m_scroll;
int m_firstitem;
int m_numitems;
size_t m_caret;
str m_completionbuffer;
bool m_refreshcompletionbuffer;
int m_cntcmdnumber;
int m_cntcvarnumber;
consoleHandler_t m_consolehandler;
public:
CLASS_PROTOTYPE(UIConsole);
protected:
int getFirstItem(void);
int getNextItem(int prev);
int getLastItem(void);
int AddLine(void);
void DrawBottomLine(void);
void AddHistory(void);
virtual void Print(Event *ev);
virtual void KeyEnter(void);
public:
UIConsole();
void setConsoleHandler(consoleHandler_t handler);
void AddText(const char *text, const UColor *pColor);
void CalcLineBreaks(item& theItem);
void Clear(void);
void FrameInitialized(void) override;
void Draw(void) override;
void CharEvent(int ch) override;
qboolean KeyEvent(int key, unsigned int time) override;
void OnSizeChanged(Event *ev);
};
class UIFloatingConsole : public UIFloatingWindow
{
protected:
UIStatusBar *m_status;
SafePtr<UIConsole> m_console;
consoleHandler_t m_handler;
UColor m_consoleColor;
UColor m_consoleBackground;
float m_consoleAlpha;
public:
CLASS_PROTOTYPE(UIFloatingConsole);
UIFloatingConsole();
~UIFloatingConsole();
void FrameInitialized(void) override;
void OnChildSizeChanged(Event *ev);
void AddText(const char *text, const UColor *pColor);
void setConsoleHandler(consoleHandler_t handler);
void Clear(void);
void OnClosePressed(Event *ev);
void setConsoleBackground(const UColor& color, float alpha);
void setConsoleColor(const UColor& color);
};
class UIDMConsole : public UIConsole
{
qboolean m_bQuickMessageMode;
int m_iMessageMode;
public:
CLASS_PROTOTYPE(UIDMConsole);
private:
void KeyEnter(void) override;
public:
UIDMConsole();
void AddDMMessageText(const char *text, const UColor *pColor);
void Draw(void) override;
qboolean KeyEvent(int key, unsigned int time) override;
qboolean GetQuickMessageMode(void);
void SetQuickMessageMode(qboolean bQuickMessage);
int GetMessageMode(void);
void SetMessageMode(int iMode);
};
class UIFloatingDMConsole : public UIFloatingWindow
{
protected:
UIStatusBar *m_status;
SafePtr<UIDMConsole> m_console;
consoleHandler_t m_handler;
UColor m_consoleColor;
UColor m_consoleBackground;
float m_consoleAlpha;
public:
CLASS_PROTOTYPE(UIFloatingDMConsole);
UIFloatingDMConsole();
~UIFloatingDMConsole();
void FrameInitialized(void) override;
void OnChildSizeChanged(Event *ev);
void AddText(const char *text, const UColor *pColor);
void AddDMMessageText(const char *text, const UColor *pColor);
void setConsoleHandler(consoleHandler_t handler);
void Clear(void);
void OnClosePressed(Event *ev);
void setConsoleBackground(const UColor& color, float alpha);
void setConsoleColor(const UColor& color);
qboolean GetQuickMessageMode(void);
void SetQuickMessageMode(qboolean bQuickMessage);
int GetMessageMode(void);
void SetMessageMode(int iMode);
};
|