From 15ca94f41b77cdf439774fe1e6502979be9d3f8e Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Wed, 6 Feb 2008 00:56:15 +0000 Subject: console scroll --- osirion.kdevelop | 2 +- osirion.kdevelop.pcs | Bin 287842 -> 298526 bytes osirion.kdevses | 16 +++++----------- src/client/console.cc | 46 +++++++++++++++++++++++++++++++++------------- src/client/console.h | 2 +- src/client/video.cc | 10 ++++++---- src/core/cvar.cc | 14 +++++++------- src/core/func.cc | 2 +- 8 files changed, 54 insertions(+), 38 deletions(-) diff --git a/osirion.kdevelop b/osirion.kdevelop index d40c050..58a8bfc 100644 --- a/osirion.kdevelop +++ b/osirion.kdevelop @@ -21,7 +21,7 @@ - src/core/libcore.la + src/client/libclient.la debug diff --git a/osirion.kdevelop.pcs b/osirion.kdevelop.pcs index 403fa43..e70b121 100644 Binary files a/osirion.kdevelop.pcs and b/osirion.kdevelop.pcs differ diff --git a/osirion.kdevses b/osirion.kdevses index a179a02..cc06cff 100644 --- a/osirion.kdevses +++ b/osirion.kdevses @@ -1,19 +1,13 @@ - - - + + + - - + + - - - - - - diff --git a/src/client/console.cc b/src/client/console.cc index 42ef78a..83d69de 100644 --- a/src/client/console.cc +++ b/src/client/console.cc @@ -50,6 +50,9 @@ std::deque text; // console visibility bool console_visible; +size_t console_scroll = 0; +size_t input_pos = 0; + //--- engine functions -------------------------------------------- extern "C" void func_con_toggle(std::stringstream &args) @@ -108,23 +111,29 @@ void draw() gl::end(); // draw the console text + if (console_scroll > text.size()) + console_scroll = text.size(); + gl::enable(GL_TEXTURE_2D); std::deque::reverse_iterator rit = text.rbegin(); - float y = video::height*con_height-2*CHARHEIGHT-8; + float bottom = video::height*con_height-2*CHARHEIGHT-8; + float y = bottom+console_scroll*CHARHEIGHT; while (y > 0 && rit < text.rend()) { - std::string line(*rit); + if (y <= bottom) { + std::string line(*rit); - if (line[0] == '?') - gl::color(0.7f,0.7f,0.7f, 1.0f); - else if (line[0] == '*') - gl::color(1.0f,1.0f,0.0f, 1.0f); - else if (line[0] == '!') - gl::color(1.0f,0.0f,0.0f, 1.0f); - else - gl::color(1.0f,1.0f,1.0f, 1.0f); - line.erase(0,2); - - draw_text(CHARWIDTH, y, line); + if (line[0] == '?') + gl::color(0.7f,0.7f,0.7f, 1.0f); + else if (line[0] == '*') + gl::color(1.0f,1.0f,0.0f, 1.0f); + else if (line[0] == '!') + gl::color(1.0f,0.0f,0.0f, 1.0f); + else + gl::color(1.0f,1.0f,1.0f, 1.0f); + line.erase(0,2); + + draw_text(CHARWIDTH, y, line); + } y -= CHARHEIGHT; ++rit; } @@ -159,6 +168,9 @@ void toggle() { console_visible = !console_visible; setkeyboardmode(console_visible); + console_scroll = 0; + input.clear(); + input_pos = 0; } void keypressed(const SDL_keysym &keysym) @@ -175,6 +187,14 @@ void keypressed(const SDL_keysym &keysym) input.erase(input.size()-1, 1); } break; + case SDLK_PAGEUP: + console_scroll +=5; + if (console_scroll > text.size()) console_scroll = text.size(); + break; + case SDLK_PAGEDOWN: + if (console_scroll > 5) console_scroll -=5; + else console_scroll = 0; + break; default: break; } diff --git a/src/client/console.h b/src/client/console.h index 3ea064e..e558438 100644 --- a/src/client/console.h +++ b/src/client/console.h @@ -14,7 +14,7 @@ #include #include -#define MAXCONLINES 2048 +const size_t MAXCONLINES=2048; namespace client { diff --git a/src/client/video.cc b/src/client/video.cc index f7ae792..19555ec 100644 --- a/src/client/video.cc +++ b/src/client/video.cc @@ -84,7 +84,8 @@ bool init() SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 2); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); - flags = SDL_OPENGL | SDL_FULLSCREEN; + if (r_fullscreen->value()) flags = SDL_OPENGL | SDL_FULLSCREEN; + else flags = SDL_OPENGL; if(!SDL_SetVideoMode(width, height, bpp, flags )) { con_warn << "Failed to set video mode " << width << "x" << height << "x" << bpp << "bpp" << std::endl; @@ -101,14 +102,15 @@ bool init() con_print << " video mode " << width << "x" << height << "x" << bpp << "bpp" << std::endl; aspect = (float) width / (float) height; - + (*r_width) = width; + (*r_height) = height; render::init(); + video::reset(); + view::init(); - video::reset(); - return true; } diff --git a/src/core/cvar.cc b/src/core/cvar.cc index a1444ae..f7402ab 100644 --- a/src/core/cvar.cc +++ b/src/core/cvar.cc @@ -77,9 +77,9 @@ Cvar get(const char *name, const char *value, int flags) { Cvar c = find(name); if (c) { - con_debug << "cvar::get " << name << " already exist with value " << value << std::endl; + //con_debug << "cvar::get " << name << " already exist with value " << cvar->text() << std::endl; } else { - con_debug << "cvar::get " << name << " " << value << std::endl; + //con_debug << "cvar::get " << name << " " << value << std::endl; c = new Cvar_t(flags); registry[std::string(name)] = c; (*c) = value; @@ -91,9 +91,9 @@ Cvar get(const char *name, float value, int flags) { Cvar c = find(name); if (c) { - con_debug << "cvar::get " << name << " already exist with value " << value << std::endl; + //con_debug << "cvar::get " << name << " already exist with value " << cvar->text() << std::endl; } else { - con_debug << "cvar::get " << name << " " << value << std::endl; + //con_debug << "cvar::get " << name << " " << value << std::endl; c = new Cvar_t(flags); registry[std::string(name)] = c; (*c) = value; @@ -108,8 +108,8 @@ Cvar set(const char *name, const char *value, int flags) c = new Cvar_t(flags); registry[std::string(name)] = c; } - con_debug << "cvar::set " << name << " " << value << std::endl; (*c) = value; + //con_debug << "cvar::set " << name << " " << cvar->text() << std::endl; return c; } @@ -120,8 +120,8 @@ Cvar set(const char *name, float value, int flags) c = new Cvar_t(flags); registry[std::string(name)] = c; } - con_debug << "cvar::set " << name << " " << value << std::endl; (*c) = value; + //con_debug << "cvar::set " << name << " " << cvar->text() << std::endl; return c; } @@ -156,7 +156,7 @@ Cvar find(const char *name) void list() { - con_print << "-- listcvar -----------------" << std::endl; + con_print << "Registered variables:" << std::endl; std::map::iterator it; for (it = registry.begin(); it != registry.end(); it++) { diff --git a/src/core/func.cc b/src/core/func.cc index c72faea..064f77d 100644 --- a/src/core/func.cc +++ b/src/core/func.cc @@ -43,7 +43,7 @@ Func find(const std::string &functionname) void list() { - con_print << "-- listfunc -----------------" << std::endl; + con_print << "Registered functions:" << std::endl; std::map::iterator it; for (it = registry.begin(); it != registry.end(); it++) { con_print << " " << (*it).first << std::endl; -- cgit v1.2.3