pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] CVS: Games/Pingus/src/gui screen_manager.cxx,1.2,1.3 screen


From: grumbel
Subject: [Pingus-CVS] CVS: Games/Pingus/src/gui screen_manager.cxx,1.2,1.3 screen_manager.hxx,1.1,1.2
Date: 22 Mar 2003 23:28:53 -0000

Update of /var/lib/cvs/Games/Pingus/src/gui
In directory dark:/tmp/cvs-serv8487/gui

Modified Files:
        screen_manager.cxx screen_manager.hxx 
Log Message:
reactivated fadeovers

Index: screen_manager.cxx
===================================================================
RCS file: /var/lib/cvs/Games/Pingus/src/gui/screen_manager.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- screen_manager.cxx  19 Feb 2003 17:17:00 -0000      1.2
+++ screen_manager.cxx  22 Mar 2003 23:28:51 -0000      1.3
@@ -85,6 +85,10 @@
          real_replace_screen (replace_screen_arg);
          cached_action = none;
        }
+      else
+        {
+         cached_action = none;
+        }
 
       // FIXME: is there a more gentel way to do that instead of spreading the 
checks all around here?
       // Last screen has poped, so we are going to end here
@@ -100,18 +104,15 @@
       else
        {
          //std::cout << "ScreenManager: fading screens" << std::endl;
-         //fade_over (last_screen, get_current_screen());
+         fade_over (last_screen, get_current_screen());
        }
 
       // Stupid hack to make this thing take less CPU
       CL_System::sleep (0);
-
-      /** Delete all screens that are no longer needed */
-      delete_screens.clear();
     } 
 }
 
-ScreenPtr
+ScreenPtr&
 ScreenManager::get_current_screen()
 {
   assert(!screens.empty());
@@ -130,11 +131,8 @@
 void
 ScreenManager::push_screen (Screen* screen, bool delete_screen)
 {
-  std::cout << "XXXXXXXX ScreenManager::push_screen" << std::endl;
-
   if (!screens.empty())
     {
-      std::cout << "ScreenManager::push_screen" << std::endl;
       screens.back ()->on_shutdown ();
     }
 
@@ -160,12 +158,7 @@
 void
 ScreenManager::real_replace_screen (const ScreenPtr& ptr)
 {
-  std::cout << "XXXXXXXX ScreenManager::replace_screen" << std::endl;
-
   screens.back ()->on_shutdown ();
-
-  delete_screens.push_back(screens.back ());
-  
   screens.back () = ptr;
   screens.back ()->on_startup ();
 }
@@ -173,13 +166,8 @@
 void
 ScreenManager::real_pop_screen ()
 {
-  std::cout << "XXXXXXXX ScreenManager::pop_screen" << std::endl;
-
   screens.back ()->on_shutdown ();
 
-  delete_screens.push_back(screens.back ());
-  
-  std::cout << "ScreenManager::real_pop_screen ()" << std::endl;
   screens.pop_back ();
 
   if (!screens.empty ())
@@ -195,45 +183,47 @@
 }
 
 void
-ScreenManager::fade_over (const ScreenPtr& old_screen, const ScreenPtr& 
new_screen)
+ScreenManager::fade_over (ScreenPtr& old_screen, ScreenPtr& new_screen)
 {
+#if 0
   FadeOut::fade_to_black();
   UNUSED_ARG(old_screen);
   UNUSED_ARG(new_screen);
-
-#if 0
+#else
   DeltaManager delta_manager;
   float passed_time = 0;
 
+  Input::EventLst events;
 
-  std::list<Input::Event*> events;
-  while (passed_time < 2.0f)
+  float progress = 0.0f;
+  while (progress <= 1.0f)
     {
       float time_delta = delta_manager.getset ();
       passed_time += time_delta;
+      
+      int border_x = int((CL_Display::get_width ()/2) * (1.0f - progress));
+      int border_y = int((CL_Display::get_height ()/2) * (1.0f - progress));
 
-      int border_x = int((CL_Display::get_width ()/2) * passed_time/2.0f);
-      int border_y = int((CL_Display::get_height ()/2) * passed_time/2.0f);
-
-      //std::cout << "FadeOver: " << border_x << " " << border_y << std::endl;
-
-      new_screen->draw (display_gc);
-
+      old_screen->draw (display_gc);
       CL_Display::push_clip_rect(CL_ClipRect (0 + border_x, 
                                              0 + border_y,
                                              CL_Display::get_width () - 
border_x,
                                              CL_Display::get_height () - 
border_y));
-      old_screen->draw (display_gc);
+      new_screen->draw (display_gc);
 
-      GameDelta delta (time_delta, events);
-      new_screen->update (delta);
-      old_screen->update (delta);
+      //GameDelta delta (time_delta, CL_System::get_time(), events);
+      // FIXME: Animation looks nifty but doesn't work all that good
+      //new_screen->update (delta);
+      //old_screen->update (delta);
 
       CL_Display::pop_clip_rect ();
 
       Display::flip_display ();
       CL_System::keep_alive ();
+     
+      progress = passed_time/1.0f;
     }
+
 #endif 
 }
 

Index: screen_manager.hxx
===================================================================
RCS file: /var/lib/cvs/Games/Pingus/src/gui/screen_manager.hxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- screen_manager.hxx  19 Feb 2003 09:51:44 -0000      1.1
+++ screen_manager.hxx  22 Mar 2003 23:28:51 -0000      1.2
@@ -40,11 +40,6 @@
       or replaced) */
   std::vector<ScreenPtr> screens;
 
-  /** Screens in this vector will be deleted at the end of the
-      main-loop. Its really more a keep alive vector, than a deleting
-      one, but well... */
-  std::vector<ScreenPtr> delete_screens;
-
   /** the screen that was used in the last update() */
   ScreenPtr last_screen;
 
@@ -80,10 +75,10 @@
   void real_pop_screen ();
 
   /** FadeOver test*/
-  void fade_over (const ScreenPtr& old_screen, const ScreenPtr& new_screen);
+  void fade_over (ScreenPtr& old_screen, ScreenPtr& new_screen);
 
   /** @return a pointer to the current Screen */
-  ScreenPtr get_current_screen();
+  ScreenPtr& get_current_screen();
 
 public:  
   static ScreenManager* instance ();





reply via email to

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