diff options
author | Stijn Buys <ingar@osirion.org> | 2008-05-12 10:57:38 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-05-12 10:57:38 +0000 |
commit | 24c695e83947d3457dbd1f5d696fa09b4ef953c0 (patch) | |
tree | a666996d17bf611ffbec4fa364f258b00e7adef4 /src | |
parent | d2e93235b9ccd37bf8c8fb7c4376ab1911c83639 (diff) |
light offset bugfix, console word wrapping
Diffstat (limited to 'src')
-rw-r--r-- | src/client/console.cc | 54 | ||||
-rw-r--r-- | src/render/draw.cc | 2 |
2 files changed, 46 insertions, 10 deletions
diff --git a/src/client/console.cc b/src/client/console.cc index fae402c..914d32f 100644 --- a/src/client/console.cc +++ b/src/client/console.cc @@ -171,17 +171,52 @@ void draw() std::deque<std::string> lines; for (std::deque<std::string>::iterator it = text.begin(); it != text.end() && current_line < bottom; it++) { if (current_line >= bottom - height) { - std::string line(*it); - line.erase(0,2); - - while (line.size() > width) { - lines.push_back(line.substr(0, width)); - line.erase(0, width); + std::string linedata(*it); + linedata += '\n'; + + std::string word; + std::string line; + const char *c = linedata.c_str(); + + while (*c) { + // new word, wrap if necessary + if ((*c == '\n' ) || ( *c == ' ')) { + + if (line.size() + word.size() > width) { + if (line.size()) { + lines.push_back(line); + line.clear(); + } + } + + line.append(word); + word.clear(); + + // force break words longer than width + while (line.size() > width) { + lines.push_back(line.substr(0, width)); + line.erase(0, width); + } + + // new line + if (*c == '\n' ) { + lines.push_back(line); + line.clear(); + // new word + } else if (*c == ' ' ) { + line += ' '; + } + // new character + } else { + + word += *c; + } + + c++; } - if (line.size()) - lines.push_back(line); + } - current_line++; + current_line++; } float y = video::height*con_height-2*Text::fontheight()-4; @@ -387,6 +422,7 @@ void Console::flush() { console::flush(); } + std::ostream & Console::messagestream() { return (buffer << ". "); diff --git a/src/render/draw.cc b/src/render/draw.cc index e2037e2..7c35bf3 100644 --- a/src/render/draw.cc +++ b/src/render/draw.cc @@ -428,7 +428,7 @@ void draw_pass_model_fx() // strobe frequency t = 1.0f; if ((*lit)->strobe()) - t = (core::application()->time() + entity->state()->fuzz() + (*lit)->offset()) * (*lit)->frequency(); + t = (core::application()->time() + entity->state()->fuzz() - (*lit)->offset()) * (*lit)->frequency(); if (!(*lit)->strobe() || (( t - floorf(t)) <= (*lit)->time())) { math::Vector3f location = entity->state()->location() + (entity->axis() * (*lit)->location()); |