New grow and skid sounds from remaxim
[supertux.git] / src / statistics.cpp
index 8f958bc..285a357 100644 (file)
@@ -75,13 +75,13 @@ Statistics::parse(const lisp::Lisp& reader)
 void
 Statistics::write(lisp::Writer& writer)
 {
-  writer.write_int("coins-collected", coins);
-  writer.write_int("coins-collected-total", total_coins);
-  writer.write_int("badguys-killed", badguys);
-  writer.write_int("badguys-killed-total", total_badguys);
-  writer.write_float("time-needed", time);
-  writer.write_int("secrets-found", secrets);
-  writer.write_int("secrets-found-total", total_secrets);
+  writer.write("coins-collected", coins);
+  writer.write("coins-collected-total", total_coins);
+  writer.write("badguys-killed", badguys);
+  writer.write("badguys-killed-total", total_badguys);
+  writer.write("time-needed", time);
+  writer.write("secrets-found", secrets);
+  writer.write("secrets-found-total", total_secrets);
 }
 */
 
@@ -129,7 +129,7 @@ Statistics::draw_worldmap_info(DrawingContext& context)
   // skip draw if stats were declared invalid
   if (!valid) return;
 
-  context.draw_text(white_small_text, std::string("- ") + _("Best Level Statistics") + " -", Vector((WMAP_INFO_LEFT_X + WMAP_INFO_RIGHT_X) / 2, WMAP_INFO_TOP_Y1), ALIGN_CENTER, LAYER_GUI);
+  context.draw_text(small_font, std::string("- ") + _("Best Level Statistics") + " -", Vector((WMAP_INFO_LEFT_X + WMAP_INFO_RIGHT_X) / 2, WMAP_INFO_TOP_Y1), ALIGN_CENTER, LAYER_GUI,Statistics::header_color);
 
   std::string caption_buf;
   std::string stat_buf;
@@ -138,77 +138,34 @@ Statistics::draw_worldmap_info(DrawingContext& context)
     switch (stat_no)
     {
       case 0:
-             caption_buf = _("Max coins collected:");
-             stat_buf = coins_to_string(coins, total_coins);
-             break;
+          caption_buf = _("Max coins collected:");
+          stat_buf = coins_to_string(coins, total_coins);
+          break;
       case 1:
-             caption_buf = _("Max fragging:");
-             stat_buf = frags_to_string(badguys, total_badguys);
-             break;
+          caption_buf = _("Max fragging:");
+          stat_buf = frags_to_string(badguys, total_badguys);
+          break;
       case 2:
-             caption_buf = _("Min time needed:");
-             stat_buf = time_to_string(time);
-             break;
+          caption_buf = _("Min time needed:");
+          stat_buf = time_to_string(time);
+          break;
       case 3:
-             caption_buf = _("Max secrets found:");
-             stat_buf = secrets_to_string(secrets, total_secrets);
-             break;
+          caption_buf = _("Max secrets found:");
+          stat_buf = secrets_to_string(secrets, total_secrets);
+          break;
       default:
-             log_debug << "Invalid stat requested to be drawn" << std::endl;
-             break;
+          log_debug << "Invalid stat requested to be drawn" << std::endl;
+          break;
     }
 
-    context.draw_text(white_small_text, caption_buf, Vector(WMAP_INFO_LEFT_X, posy), ALIGN_LEFT, LAYER_GUI);
-    context.draw_text(white_small_text, stat_buf, Vector(WMAP_INFO_RIGHT_X, posy), ALIGN_RIGHT, LAYER_GUI);
-    posy += white_small_text->get_height() + 2;
+    context.draw_text(small_font, caption_buf, Vector(WMAP_INFO_LEFT_X, posy), ALIGN_LEFT, LAYER_GUI, Statistics::header_color);
+    context.draw_text(small_font, stat_buf, Vector(WMAP_INFO_RIGHT_X, posy), ALIGN_RIGHT, LAYER_GUI, Statistics::header_color);
+    posy += small_font->get_height() + 2;
   }
 
 }
 
 void
-Statistics::draw_message_info(DrawingContext& context, std::string title)
-{
-  // skip draw if level was never played
-  // TODO: do we need this?
-  if (coins == nv_coins) return;
-
-  // skip draw if stats were declared invalid
-  if (!valid) return;
-
-  const float width = white_small_text->get_text_width("Max coins collected: 1111 / 1111");
-  const float left = (SCREEN_WIDTH - width) / 2;
-  const float right = (SCREEN_WIDTH + width) / 2;
-
-  context.draw_text(gold_text, title, Vector(SCREEN_WIDTH/2, 410), ALIGN_CENTER, LAYER_GUI);
-
-  char stat_buf[128];
-  int py = 450 + 18;
-
-  snprintf(stat_buf, sizeof(stat_buf), "%d/%d", coins, total_coins);
-  context.draw_text(white_small_text, _("Max coins collected:"), Vector(left, py), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(white_small_text, "%d / %d", Vector(right, py), ALIGN_RIGHT, LAYER_GUI);
-  py+=18;
-
-  snprintf(stat_buf, sizeof(stat_buf), "%d/%d", badguys, total_badguys);
-  context.draw_text(white_small_text, _("Max fragging:"), Vector(left, py), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(white_small_text, "%d / %d", Vector(right, py), ALIGN_RIGHT, LAYER_GUI);
-  py+=18;
-
-  int csecs = (int)(time * 100);
-  int mins = (int)(csecs / 6000);
-  int secs = (csecs % 6000) / 100;
-  snprintf(stat_buf, sizeof(stat_buf), "%02d:%02d", mins,secs);
-  context.draw_text(white_small_text, _("Min time needed:"), Vector(left, py), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(white_small_text, "%02d:%02d", Vector(right, py), ALIGN_RIGHT, LAYER_GUI);
-  py+=18;
-
-  snprintf(stat_buf, sizeof(stat_buf), "%d/%d", secrets, total_secrets);
-  context.draw_text(white_small_text, _("Max secrets found:"), Vector(left, py), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(white_small_text, "%d / %d", Vector(right, py), ALIGN_RIGHT, LAYER_GUI);
-  py+=18;
-}
-
-void
 Statistics::draw_endseq_panel(DrawingContext& context, Statistics* best_stats, Surface* backdrop)
 {
   // skip draw if level was never played
@@ -245,25 +202,25 @@ Statistics::draw_endseq_panel(DrawingContext& context, Statistics* best_stats, S
   context.draw_surface(backdrop, Vector(bd_x, bd_y), LAYER_GUI);
   context.pop_transform();
 
-  context.draw_text(white_text, _("You"), Vector(col2_x, row1_y), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(white_text, _("Best"), Vector(col3_x, row1_y), ALIGN_LEFT, LAYER_GUI);
+  context.draw_text(normal_font, _("You"), Vector(col2_x, row1_y), ALIGN_LEFT, LAYER_GUI, Statistics::header_color);
+  context.draw_text(normal_font, _("Best"), Vector(col3_x, row1_y), ALIGN_LEFT, LAYER_GUI, Statistics::header_color);
 
-  context.draw_text(white_text, _("Coins"), Vector(col2_x-16, row3_y), ALIGN_RIGHT, LAYER_GUI);
+  context.draw_text(normal_font, _("Coins"), Vector(col2_x-16, row3_y), ALIGN_RIGHT, LAYER_GUI, Statistics::header_color);
   int coins_best = (best_stats && (best_stats->coins > coins)) ? best_stats->coins : coins;
   int total_coins_best = (best_stats && (best_stats->total_coins > total_coins)) ? best_stats->total_coins : total_coins;
-  context.draw_text(gold_text, coins_to_string(coins, total_coins), Vector(col2_x, row3_y), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(gold_text, coins_to_string(coins_best, total_coins_best), Vector(col3_x, row3_y), ALIGN_LEFT, LAYER_GUI);
+  context.draw_text(normal_font, coins_to_string(coins, total_coins), Vector(col2_x, row3_y), ALIGN_LEFT, LAYER_GUI, Statistics::text_color);
+  context.draw_text(normal_font, coins_to_string(coins_best, total_coins_best), Vector(col3_x, row3_y), ALIGN_LEFT, LAYER_GUI, Statistics::text_color);
 
-  context.draw_text(white_text, _("Secrets"), Vector(col2_x-16, row4_y), ALIGN_RIGHT, LAYER_GUI);
+  context.draw_text(normal_font, _("Secrets"), Vector(col2_x-16, row4_y), ALIGN_RIGHT, LAYER_GUI, Statistics::header_color);
   int secrets_best = (best_stats && (best_stats->secrets > secrets)) ? best_stats->secrets : secrets;
   int total_secrets_best = (best_stats && (best_stats->total_secrets > total_secrets)) ? best_stats->total_secrets : total_secrets;
-  context.draw_text(gold_text, secrets_to_string(secrets, total_secrets), Vector(col2_x, row4_y), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(gold_text, secrets_to_string(secrets_best, total_secrets_best), Vector(col3_x, row4_y), ALIGN_LEFT, LAYER_GUI);
+  context.draw_text(normal_font, secrets_to_string(secrets, total_secrets), Vector(col2_x, row4_y), ALIGN_LEFT, LAYER_GUI, Statistics::text_color);
+  context.draw_text(normal_font, secrets_to_string(secrets_best, total_secrets_best), Vector(col3_x, row4_y), ALIGN_LEFT, LAYER_GUI, Statistics::text_color);
 
-  context.draw_text(white_text, _("Time"), Vector(col2_x-16, row2_y), ALIGN_RIGHT, LAYER_GUI);
+  context.draw_text(normal_font, _("Time"), Vector(col2_x-16, row2_y), ALIGN_RIGHT, LAYER_GUI, Statistics::header_color);
   float time_best = (best_stats && (best_stats->time < time)) ? best_stats->time : time;
-  context.draw_text(gold_text, time_to_string(time), Vector(col2_x, row2_y), ALIGN_LEFT, LAYER_GUI);
-  context.draw_text(gold_text, time_to_string(time_best), Vector(col3_x, row2_y), ALIGN_LEFT, LAYER_GUI);
+  context.draw_text(normal_font, time_to_string(time), Vector(col2_x, row2_y), ALIGN_LEFT, LAYER_GUI, Statistics::text_color);
+  context.draw_text(normal_font, time_to_string(time_best), Vector(col3_x, row2_y), ALIGN_LEFT, LAYER_GUI, Statistics::text_color);
 }
 
 void
@@ -285,7 +242,7 @@ Statistics::reset()
 }
 
 void
-Statistics::merge(Statistics& s2)
+Statistics::merge(const Statistics& s2)
 {
   if (!s2.valid) return;
   coins = std::max(coins, s2.coins);
@@ -317,21 +274,21 @@ Statistics::declare_invalid()
 }
 
 std::string
-Statistics::coins_to_string(int coins, int total_coins) const {
+Statistics::coins_to_string(int coins, int total_coins) {
   std::ostringstream os;
   os << std::min(coins, 999) << "/" << std::min(total_coins, 999);
   return os.str();
 }
 
 std::string
-Statistics::frags_to_string(int badguys, int total_badguys) const {
+Statistics::frags_to_string(int badguys, int total_badguys) {
   std::ostringstream os;
   os << std::min(badguys, 999) << "/" << std::min(total_badguys, 999);
   return os.str();
 }
 
 std::string 
-Statistics::time_to_string(float time) const {
+Statistics::time_to_string(float time) {
   int time_csecs = std::min(static_cast<int>(time * 100), 99 * 6000 + 9999);
   int mins = (time_csecs / 6000);
   int secs = (time_csecs % 6000) / 100;
@@ -343,7 +300,7 @@ Statistics::time_to_string(float time) const {
 }
 
 std::string
-Statistics::secrets_to_string(int secrets, int total_secrets) const {
+Statistics::secrets_to_string(int secrets, int total_secrets) {
   std::ostringstream os;
   os << std::min(secrets, 999) << "/" << std::min(total_secrets, 999);
   return os.str();