Console logging is now identical in all builds; warning and error show the console...
[supertux.git] / src / supertux / console.cpp
index ba171d0..883ec09 100644 (file)
@@ -60,8 +60,8 @@ Console::init_graphics()
 {
   font.reset(new Font(Font::FIXED,"fonts/andale12.stf",1));
   fontheight = font->get_height();
-  background.reset(new Surface("images/engine/console.png"));
-  background2.reset(new Surface("images/engine/console2.png"));
+  background = Surface::create("images/engine/console.png");
+  background2 = Surface::create("images/engine/console2.png");
 }
 
 void
@@ -363,7 +363,7 @@ Console::addLine(std::string s)
     lines.pop_back();
 
   // increase console height if necessary
-  if (height < 64) {
+  if ((stayOpen > 0) && (height < 64)) {
     if(height < 4)
       height = 4;
     height += fontheight * line_count;
@@ -371,10 +371,6 @@ Console::addLine(std::string s)
 
   // reset console to full opacity
   alpha = 1.0;
-
-  // increase time that console stays open
-  if(stayOpen < 6)
-    stayOpen += 1.5;
 }
 
 void
@@ -439,6 +435,13 @@ Console::show()
 }
 
 void
+Console::open()
+{
+  if(stayOpen < 2)
+    stayOpen += 1.5;
+}
+
+void
 Console::hide()
 {
   focused = false;
@@ -488,10 +491,10 @@ Console::draw(DrawingContext& context)
 
   context.push_transform();
   context.set_alpha(alpha);
-  context.draw_surface(background2.get(), Vector(SCREEN_WIDTH/2 - background->get_width()/2 - background->get_width() + backgroundOffset, height - background->get_height()), layer);
-  context.draw_surface(background2.get(), Vector(SCREEN_WIDTH/2 - background->get_width()/2 + backgroundOffset, height - background->get_height()), layer);
+  context.draw_surface(background2, Vector(SCREEN_WIDTH/2 - background->get_width()/2 - background->get_width() + backgroundOffset, height - background->get_height()), layer);
+  context.draw_surface(background2, Vector(SCREEN_WIDTH/2 - background->get_width()/2 + backgroundOffset, height - background->get_height()), layer);
   for (int x = (SCREEN_WIDTH/2 - background->get_width()/2 - (static_cast<int>(ceilf((float)SCREEN_WIDTH / (float)background->get_width()) - 1) * background->get_width())); x < SCREEN_WIDTH; x+=background->get_width()) {
-    context.draw_surface(background.get(), Vector(x, height - background->get_height()), layer);
+    context.draw_surface(background, Vector(x, height - background->get_height()), layer);
   }
   backgroundOffset+=10;
   if (backgroundOffset > (int)background->get_width()) backgroundOffset -= (int)background->get_width();
@@ -501,10 +504,10 @@ Console::draw(DrawingContext& context)
   if (focused) {
     lineNo++;
     float py = height-4-1 * font->get_height();
-    context.draw_text(font.get(), "> "+inputBuffer, Vector(4, py), ALIGN_LEFT, layer);
+    context.draw_text(font, "> "+inputBuffer, Vector(4, py), ALIGN_LEFT, layer);
     if (SDL_GetTicks() % 1000 < 750) {
       int cursor_px = 2 + inputBufferPosition;
-      context.draw_text(font.get(), "_", Vector(4 + (cursor_px * font->get_text_width("X")), py), ALIGN_LEFT, layer);
+      context.draw_text(font, "_", Vector(4 + (cursor_px * font->get_text_width("X")), py), ALIGN_LEFT, layer);
     }
   }
 
@@ -514,7 +517,7 @@ Console::draw(DrawingContext& context)
     lineNo++;
     float py = height - 4 - lineNo*font->get_height();
     if (py < -font->get_height()) break;
-    context.draw_text(font.get(), *i, Vector(4, py), ALIGN_LEFT, layer);
+    context.draw_text(font, *i, Vector(4, py), ALIGN_LEFT, layer);
   }
   context.pop_transform();
 }