/* dedicated/console.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_DEDICATED_CONSOLE_H__ #define __INCLUDED_DEDICATED_CONSOLE_H__ #include "sys/consoleinterface.h" namespace dedicated { class Console : public sys::ConsoleInterface { public: Console(); ~Console(); /// dump console content to cout void open_log(); /// initialize the server console static void init(); /// shutdown the server console static void shutdown(); #ifdef HAVE_CURSES /// resize the console virtual void resize(); /// run one console frame void frame(); protected: /// draw the ncurses console void draw(); /// clear and draw background (ncurses) void draw_background(); /// draw status void draw_status(); /// draw the console text (ncurses) void draw_text(); /// draw the console input (ncurses) void draw_input(); #endif /// print one line of text virtual void print(const std::string & text); #ifdef HAVE_CURSES private: typedef std::deque History; /// set ncurses drawing color void set_color(const char *color_code); // input history History history; History::reverse_iterator history_pos; size_t input_pos; size_t console_scroll; int console_width; int console_height; #endif std::string console_logfilename; }; Console *console(); } #endif // __INCLUDED_DEDICATED_CONSOLE_H__