Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-05-12 10:57:38 +0000
committerStijn Buys <ingar@osirion.org>2008-05-12 10:57:38 +0000
commit24c695e83947d3457dbd1f5d696fa09b4ef953c0 (patch)
treea666996d17bf611ffbec4fa364f258b00e7adef4 /src
parentd2e93235b9ccd37bf8c8fb7c4376ab1911c83639 (diff)
light offset bugfix, console word wrapping
Diffstat (limited to 'src')
-rw-r--r--src/client/console.cc54
-rw-r--r--src/render/draw.cc2
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());