pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] r4139 - branches/pingus-hanusz/src


From: grumbel
Subject: [Pingus-CVS] r4139 - branches/pingus-hanusz/src
Date: Thu, 12 May 2011 16:07:04 +0200

Author: grumbel
Date: 2011-05-12 16:07:04 +0200 (Thu, 12 May 2011)
New Revision: 4139

Modified:
   branches/pingus-hanusz/src/level_menu.cpp
   branches/pingus-hanusz/src/level_menu.hpp
   branches/pingus-hanusz/src/levelset.cpp
   branches/pingus-hanusz/src/levelset.hpp
   branches/pingus-hanusz/src/pingus_main.cpp
Log:
Some initial changes for pingus-hanusz

Modified: branches/pingus-hanusz/src/level_menu.cpp
===================================================================
--- branches/pingus-hanusz/src/level_menu.cpp   2011-05-12 13:03:03 UTC (rev 
4138)
+++ branches/pingus-hanusz/src/level_menu.cpp   2011-05-12 14:07:04 UTC (rev 
4139)
@@ -194,11 +194,12 @@
 
         gc.print_left(Fonts::chalk_normal,  30, -32, _("Title"));
         gc.print_right(Fonts::chalk_normal, rect.get_width() - 30, - 32, 
_("Status"));
+        gc.print_center(Fonts::chalk_normal, rect.get_width() - 165, - 32, 
_("Retries Left"));
 
         int y = 0;
         for(int i = 0; i < levelset->get_level_count(); ++i)
           {
-            if (!levelset->get_level(i)->accessible)
+            if (!levelset->get_level(i)->is_accessible())
               gc.draw(marker_locked, Vector2i(0, y));
             else if (i == current_level)
               gc.draw(marker, Vector2i(0, y));
@@ -213,6 +214,9 @@
             else
               gc.print_right(Fonts::chalk_small, rect.get_width() -30, y+4, 
_("unsolved"));
 
+            gc.print_right(Fonts::chalk_small, rect.get_width() -30 -125, y+4, 
+                           (boost::format("%d") % (3 - 
levelset->get_level(i)->play_count)).str());
+
             y += 32;
           }
       }
@@ -240,8 +244,9 @@
   {
     if (current_level != -1)
       {
-        if (levelset->get_level(current_level)->accessible)
+        if (levelset->get_level(current_level)->is_accessible())
           {
+            levelset->get_level(current_level)->play_count += 1;
             ScreenManager::instance()->push_screen(new 
StartScreen(levelset->get_level(current_level)->plf), true);
           }
       }
@@ -250,9 +255,10 @@
   void update_layout() {}
 };
 
-LevelMenu::LevelMenu()
-  : x_pos((Display::get_width()  - 800)/2),
-    y_pos((Display::get_height() - 600)/2)
+LevelMenu::LevelMenu() :
+  start_time(SDL_GetTicks()),
+  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/startscreenbg");
@@ -263,8 +269,13 @@
   levelset_selector = new LevelsetSelector(this, Rect(Vector2i(x_pos + 100, 
y_pos + 140), Size(600, 300)));
   level_selector    = new LevelSelector(this, Rect(Vector2i(x_pos + 100, y_pos 
+ 160), Size(600, 300)));
 
+  m_username_inputbox = new GUI::InputBox(350, Vector2i(x_pos + 300, y_pos + 
300), "");
+  m_time_inputbox = new GUI::InputBox(350, Vector2i(x_pos + 300, y_pos + 350), 
"15");
+
   gui_manager->add(levelset_selector, true);
   gui_manager->add(level_selector,    true);
+  gui_manager->add(m_username_inputbox,    true);
+  gui_manager->add(m_time_inputbox,    true);
   gui_manager->add(new LevelMenuAbortButton(this), true);
 
   level_selector->hide();
@@ -278,6 +289,26 @@
 LevelMenu::draw_background(DrawingContext& gc)
 {
   gc.draw(background, Vector2i(gc.get_width()/2, gc.get_height()/2));
+
+  if (level_selector->is_visible())
+  {
+    int total_time = 15 * 60;
+    int sec = total_time - ((SDL_GetTicks() - start_time) / 1000);
+    int min = sec / 60;
+    sec = sec % 60;
+
+    gc.print_center(Fonts::chalk_small, gc.get_width()/2, gc.get_height()/2 + 
180, 
+                    (boost::format("%2d:%02d") % min % sec).str());
+  }
+  else
+  {
+    gc.print_right(Fonts::chalk_small, gc.get_width()/2 - 160, 
gc.get_height()/2, 
+                   "Username:");
+
+    gc.print_right(Fonts::chalk_small, gc.get_width()/2 - 160, 
gc.get_height()/2 + 50, 
+                   "Time:");
+  }
+
   SDL_Delay(10);
 }
 
@@ -287,6 +318,11 @@
   if (level_selector->is_visible())
     {
       levelset_selector->show();
+
+      m_username_inputbox->show();
+      m_username_inputbox->set_string("");
+      m_time_inputbox->show();
+
       level_selector->hide();           
     }
   else
@@ -299,17 +335,29 @@
 void
 LevelMenu::set_levelset(Levelset* levelset)
 {
+  if (!m_username_inputbox->get_string().empty())
+  {
   if (levelset)
     {
       level_selector->set_levelset(levelset);
       levelset_selector->hide();
       level_selector->show();
+
+      m_username_inputbox->hide();
+      m_time_inputbox->hide();
+
+      start_time = SDL_GetTicks();
     }
   else
     {
       levelset_selector->show();
-      level_selector->hide();      
+      level_selector->hide();   
+
+      m_username_inputbox->show();
+      m_username_inputbox->set_string("");
+      m_time_inputbox->show(); 
     }
+  }
 }
 
 /* EOF */

Modified: branches/pingus-hanusz/src/level_menu.hpp
===================================================================
--- branches/pingus-hanusz/src/level_menu.hpp   2011-05-12 13:03:03 UTC (rev 
4138)
+++ branches/pingus-hanusz/src/level_menu.hpp   2011-05-12 14:07:04 UTC (rev 
4139)
@@ -23,6 +23,7 @@
 #include "levelset.hpp"
 #include "sprite.hpp"
 #include "screen/gui_screen.hpp"
+#include "gui/input_box.hpp"
 
 class LevelSelector;
 class LevelsetSelector;
@@ -31,6 +32,7 @@
 class LevelMenu : public GUIScreen
 {
 private:
+  int start_time;
   int x_pos;
   int y_pos;
 
@@ -39,6 +41,8 @@
 
   LevelSelector* level_selector;
   LevelsetSelector* levelset_selector;
+  GUI::InputBox* m_username_inputbox;
+  GUI::InputBox* m_time_inputbox;
 
 public:
   LevelMenu();

Modified: branches/pingus-hanusz/src/levelset.cpp
===================================================================
--- branches/pingus-hanusz/src/levelset.cpp     2011-05-12 13:03:03 UTC (rev 
4138)
+++ branches/pingus-hanusz/src/levelset.cpp     2011-05-12 14:07:04 UTC (rev 
4139)
@@ -54,9 +54,10 @@
                 {
                   level->plf        = PLFResMgr::load_plf(level->resname);
                   
-                  level->accessible = false;
+                  level->accessible = true;
                   level->finished   = false;
-                      
+                  level->play_count = 0;
+  
                   levels.push_back(level);
                 }
               else

Modified: branches/pingus-hanusz/src/levelset.hpp
===================================================================
--- branches/pingus-hanusz/src/levelset.hpp     2011-05-12 13:03:03 UTC (rev 
4138)
+++ branches/pingus-hanusz/src/levelset.hpp     2011-05-12 14:07:04 UTC (rev 
4139)
@@ -34,7 +34,12 @@
     std::string resname;
     bool accessible;
     bool finished;
+    int  play_count;
     PingusLevel plf;
+
+    bool is_accessible() const {
+      return play_count < 3;
+    }
   };
 
 private:

Modified: branches/pingus-hanusz/src/pingus_main.cpp
===================================================================
--- branches/pingus-hanusz/src/pingus_main.cpp  2011-05-12 13:03:03 UTC (rev 
4138)
+++ branches/pingus-hanusz/src/pingus_main.cpp  2011-05-12 14:07:04 UTC (rev 
4139)
@@ -34,6 +34,7 @@
 #include "lisp/parser.hpp"
 #include "editor/editor_level.hpp"
 #include "string_util.hpp"
+#include "level_menu.hpp"
 #include "sexpr_file_reader.hpp"
 
 #if defined(__APPLE__)
@@ -715,7 +716,10 @@
   else // start a normal game
     {
       pout(PINGUS_DEBUG_LOADING) << "starting normal game" << std::endl;
-      ScreenManager::instance()->push_screen(PingusMenuManager::instance (), 
false);
+
+      //ScreenManager::instance()->push_screen(PingusMenuManager::instance (), 
false);
+      ScreenManager::instance()->push_screen(new LevelMenu(), true);
+
       pout(PINGUS_DEBUG_LOADING) << "done: starting normal game" << std::endl;
     }
 




reply via email to

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