pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] r3351 - trunk/pingus/src


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3351 - trunk/pingus/src
Date: Sun, 28 Oct 2007 08:51:14 +0100

Author: grumbel
Date: 2007-10-28 08:51:14 +0100 (Sun, 28 Oct 2007)
New Revision: 3351

Modified:
   trunk/pingus/src/level_menu.cpp
   trunk/pingus/src/levelset.cpp
   trunk/pingus/src/levelset.hpp
   trunk/pingus/src/savegame_manager.cpp
   trunk/pingus/src/start_screen.cpp
Log:
- added abort button and completion percentage

Modified: trunk/pingus/src/level_menu.cpp
===================================================================
--- trunk/pingus/src/level_menu.cpp     2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/level_menu.cpp     2007-10-28 07:51:14 UTC (rev 3351)
@@ -31,7 +31,42 @@
 #include "gui/gui_manager.hpp"
 #include "game_session.hpp"
 #include "start_screen.hpp"
+#include "gui/surface_button.hpp"
+#include "sound/sound.hpp"
 
+class LevelMenuAbortButton
+  : public GUI::SurfaceButton
+{
+private:
+  LevelMenu* parent;
+
+public:
+  LevelMenuAbortButton(LevelMenu* p)
+    : GUI::SurfaceButton(Display::get_width()/2 - 300,
+                         Display::get_height()/2 + 144,
+                         ResDescriptor("core/start/back"),
+                         ResDescriptor("core/start/back_clicked"),
+                         ResDescriptor("core/start/back_hover")),
+      parent(p)
+  {
+  }
+
+  void draw(DrawingContext& gc) {
+    SurfaceButton::draw(gc);
+    gc.print_center(Fonts::chalk_normal, x_pos + 55, y_pos, _("Abort"));
+  }
+
+  void on_click() {
+    parent->on_escape_press();
+  }
+
+  void on_pointer_enter()
+  {
+    SurfaceButton::on_pointer_enter();
+    Sound::PingusSound::play_sound ("tick");
+  }
+};
+
 class LevelsetSelector : public GUI::RectComponent
 {
 private:
@@ -216,7 +251,10 @@
   : x_pos((Display::get_width()  - 800)/2),
     y_pos((Display::get_height() - 600)/2)
 {
-  background = Resource::load_sprite("core/menu/filedialog");
+  //background = Resource::load_sprite("core/menu/filedialog");
+  background = Resource::load_sprite("core/menu/startscreenbg");
+  background.scale(Display::get_width(), Display::get_height());
+
   ok_button  = Resource::load_sprite("core/start/ok");
 
   levelset_selector = new LevelsetSelector(this, Rect(Vector2i(x_pos + 100, 
y_pos + 140), Size(600, 300)));
@@ -224,6 +262,7 @@
 
   gui_manager->add(levelset_selector, true);
   gui_manager->add(level_selector,    true);
+  gui_manager->add(new LevelMenuAbortButton(this), true);
 
   level_selector->hide();
 }
@@ -235,20 +274,22 @@
 void
 LevelMenu::draw_background(DrawingContext& gc)
 {
-  gc.push_modelview();
-  gc.translate(static_cast<float>(x_pos), static_cast<float>(y_pos));
-
-  // gc.draw_fillrect(Rect(100, 100, 400, 400), Color(255, 0, 0));
-  gc.draw(background, Vector2i(400 - background.get_width()/2, 300 - 
background.get_height()/2));
-
-  gc.pop_modelview();
+  gc.draw(background, gc.get_width()/2, gc.get_height()/2);
 }
 
 void
 LevelMenu::on_escape_press()
 {
-  std::cout << "OptionMenu: poping screen" << std::endl;
-  ScreenManager::instance()->pop_screen();
+  if (level_selector->is_visible())
+    {
+      levelset_selector->show();
+      level_selector->hide();           
+    }
+  else
+    {
+      //std::cout << "OptionMenu: poping screen" << std::endl;
+      ScreenManager::instance()->pop_screen();
+    }
 }
 
 void

Modified: trunk/pingus/src/levelset.cpp
===================================================================
--- trunk/pingus/src/levelset.cpp       2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/levelset.cpp       2007-10-28 07:51:14 UTC (rev 3351)
@@ -24,8 +24,10 @@
 #include "plf_res_mgr.hpp"
 #include "savegame_manager.hpp"
 #include "resource.hpp"
+#include "math.hpp"
 
 Levelset::Levelset(const Pathname& pathname)
+  : completion(0)
 {
   FileReader reader = FileReader::parse(pathname);
   if (reader.get_name() != "pingus-levelset")
@@ -103,8 +105,7 @@
 int
 Levelset::get_completion()  const
 {
-  // FIXME: insert savegame magic
-  return 0;
+  return completion;
 }
 
 Sprite
@@ -140,6 +141,12 @@
               levels[i+1]->accessible = true;
         }
     }
+
+  completion = 0;
+  for(std::vector<Level*>::iterator i = levels.begin(); i != levels.end(); ++i)
+    if ((*i)->finished)
+      completion += 1;
+  completion = Math::clamp(0, completion * 100 / int(levels.size()), 100);
 }
 
 /* EOF */

Modified: trunk/pingus/src/levelset.hpp
===================================================================
--- trunk/pingus/src/levelset.hpp       2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/levelset.hpp       2007-10-28 07:51:14 UTC (rev 3351)
@@ -41,7 +41,7 @@
   std::string title;
   std::string description;
   Sprite image;
-
+  int  completion;
   std::vector<Level*> levels;
 
 public:

Modified: trunk/pingus/src/savegame_manager.cpp
===================================================================
--- trunk/pingus/src/savegame_manager.cpp       2007-10-28 07:43:06 UTC (rev 
3350)
+++ trunk/pingus/src/savegame_manager.cpp       2007-10-28 07:51:14 UTC (rev 
3351)
@@ -137,7 +137,7 @@
 SavegameManager::SavegameTable::iterator
 SavegameManager::find(const std::string& filename)
 {
-  std::cout << "SavegameManager::find: \"" << filename << "\"" << std::endl;
+  //std::cout << "SavegameManager::find: \"" << filename << "\"" << std::endl;
 
   for(SavegameTable::iterator i = savegames.begin();
       i != savegames.end(); ++i)

Modified: trunk/pingus/src/start_screen.cpp
===================================================================
--- trunk/pingus/src/start_screen.cpp   2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/start_screen.cpp   2007-10-28 07:51:14 UTC (rev 3351)
@@ -93,7 +93,6 @@
   }
 };
 
-
 class StartScreenAbortButton
   : public GUI::SurfaceButton
 {





reply via email to

[Prev in Thread] Current Thread [Next in Thread]