From 5c734fe66e9ace93c03937adc2fc56336fb474fb Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 23 Feb 2008 17:10:35 +0000 Subject: client chatbox and message notifications --- src/client/console.cc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src/client/console.cc') diff --git a/src/client/console.cc b/src/client/console.cc index 85cb72e..3954d45 100644 --- a/src/client/console.cc +++ b/src/client/console.cc @@ -21,6 +21,7 @@ namespace console { //--- private definition ------------------------------------------ + /// private client console implementation class Console : public sys::ConsoleInterface { public: @@ -52,16 +53,23 @@ std::deque::reverse_iterator history_pos; size_t input_pos = 0; // console visibility -bool console_visible; +bool console_visible = false; size_t console_scroll = 0; +// notifications +size_t notify_pos = 0; +std::string notify_text[MAXNOTIFYLINES]; +float notify_time[MAXNOTIFYLINES]; + //--- engine functions -------------------------------------------- -void func_con_toggle(std::stringstream &args) +void func_con_toggle(std::string const &args) { + std::istringstream argstream(args); int i; - if (args >> i) { + + if (argstream >> i) { if (i) console_visible = true; else console_visible = false; } else console_visible = !console_visible; @@ -109,7 +117,6 @@ void draw() { using namespace render; - flush(); if(!console_visible) return; @@ -184,6 +191,13 @@ void flush() text.pop_front(); } text.push_back(std::string(line)); + + // save notification + notify_text[notify_pos] = line; + notify_time[notify_pos] = sys::time(); + notify_pos = (notify_pos+1) % MAXNOTIFYLINES; + + // print to stdout std::cout << line << std::endl; } @@ -193,7 +207,6 @@ void flush() void toggle() { console_visible = !console_visible; - setkeyboardmode(console_visible); if (console_visible) { console_scroll = 0; -- cgit v1.2.3