pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] r3718 - in trunk/pingus: . src src/components src/display s


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3718 - in trunk/pingus: . src src/components src/display src/screen
Date: Mon, 7 Jul 2008 17:06:14 +0200

Author: grumbel
Date: 2008-07-07 17:06:12 +0200 (Mon, 07 Jul 2008)
New Revision: 3718

Modified:
   trunk/pingus/SConstruct
   trunk/pingus/TODO
   trunk/pingus/src/components/button_panel.cpp
   trunk/pingus/src/config_manager.cpp
   trunk/pingus/src/display/cursor.hpp
   trunk/pingus/src/display/display.cpp
   trunk/pingus/src/display/display.hpp
   trunk/pingus/src/fps_counter.cpp
   trunk/pingus/src/fps_counter.hpp
   trunk/pingus/src/pingus_main.cpp
   trunk/pingus/src/screen/screen_manager.cpp
   trunk/pingus/src/screen/screen_manager.hpp
Log:
Removed DisplayHook

Modified: trunk/pingus/SConstruct
===================================================================
--- trunk/pingus/SConstruct     2008-07-07 09:29:22 UTC (rev 3717)
+++ trunk/pingus/SConstruct     2008-07-07 15:06:12 UTC (rev 3718)
@@ -122,7 +122,6 @@
 'src/gui/component.cpp',
 'src/gui/checkbox.cpp',
 'src/gui/combobox.cpp', 
-'src/display/cursor.cpp',
 'src/display/display.cpp', 
 'src/gui/group_component.cpp', 
 'src/gui/gui_manager.cpp', 

Modified: trunk/pingus/TODO
===================================================================
--- trunk/pingus/TODO   2008-07-07 09:29:22 UTC (rev 3717)
+++ trunk/pingus/TODO   2008-07-07 15:06:12 UTC (rev 3718)
@@ -181,6 +181,13 @@
 Roadmap for Pingus 0.7.3
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
+Must Have:
+==========
+
+* internal UTF8 Support with the current fonts (MES-1 later or more later)
+
+* resizable GUI for all screens
+
 New Features:
 =============
 
@@ -199,8 +206,6 @@
   them being animated and stuff like that), we however don't have
   seperate colmask for those images
 
-* remove flip_screen_hook
-
 * test wall-jump: maybe make it smaller then a normal jump
 
 * make climber attach to wall after jumper 

Modified: trunk/pingus/src/components/button_panel.cpp
===================================================================
--- trunk/pingus/src/components/button_panel.cpp        2008-07-07 09:29:22 UTC 
(rev 3717)
+++ trunk/pingus/src/components/button_panel.cpp        2008-07-07 15:06:12 UTC 
(rev 3718)
@@ -21,7 +21,6 @@
 #include "../game_session.hpp"
 #include "button_panel.hpp"
 
-
 using namespace Actions;
 
 struct action_sorter {

Modified: trunk/pingus/src/config_manager.cpp
===================================================================
--- trunk/pingus/src/config_manager.cpp 2008-07-07 09:29:22 UTC (rev 3717)
+++ trunk/pingus/src/config_manager.cpp 2008-07-07 15:06:12 UTC (rev 3718)
@@ -18,6 +18,7 @@
 #include "SDL.h"
 #include "globals.hpp"
 #include "fps_counter.hpp"
+#include "display/display.hpp"
 #include "screen/screen_manager.hpp"
 #include "config_manager.hpp"
 
@@ -166,22 +167,15 @@
 {
   if (maintainer_mode)
     std::cout << "ConfigManager::set_print_fps: " << v << std::endl;
-  
-  if (v != get_print_fps())
-    {
-      if (v)
-        fps_counter.show();
-      else
-        fps_counter.hide();
 
-      on_print_fps_change(v);
-    }
+  print_fps = v;
+  on_print_fps_change(v);
 }
 
 bool
 ConfigManager::get_print_fps()
 {
-  return fps_counter.is_visible();
+  return print_fps;
 }
 
 void
@@ -212,7 +206,7 @@
 bool
 ConfigManager::get_swcursor()
 {
-  return ScreenManager::instance()->swcursor_visible();
+  return swcursor_enabled;
 }
 
 void

Modified: trunk/pingus/src/display/cursor.hpp
===================================================================
--- trunk/pingus/src/display/cursor.hpp 2008-07-07 09:29:22 UTC (rev 3717)
+++ trunk/pingus/src/display/cursor.hpp 2008-07-07 15:06:12 UTC (rev 3718)
@@ -24,7 +24,7 @@
 /** A simple mouse cursor class and stupid. We can't use the X11/win32
     nativ mouse cursor because we want also to support non-mouse input
     devices and because we want to support multiple cursors */
-class Cursor : public DisplayHook
+class Cursor
 {
 private:
   Sprite sprite;

Modified: trunk/pingus/src/display/display.cpp
===================================================================
--- trunk/pingus/src/display/display.cpp        2008-07-07 09:29:22 UTC (rev 
3717)
+++ trunk/pingus/src/display/display.cpp        2008-07-07 15:06:12 UTC (rev 
3718)
@@ -24,7 +24,6 @@
 #include "../math.hpp"
 #include "display.hpp"
 
-std::list<DisplayHook*> Display::display_hooks;
 std::vector<SDL_Rect>   Display::cliprect_stack;
 SDL_Surface* Display::screen;
 
@@ -42,70 +41,13 @@
 }
 } // namespace
 
-DisplayHook::DisplayHook() : visible(false)
-{
-}
-
-DisplayHook::~DisplayHook() 
-{
-  hide();
-}
-
-bool
-DisplayHook::is_visible()
-{
-  return visible;
-}
-
 void
-DisplayHook::show()
-{
-  if (!visible)
-    {
-      Display::add_flip_screen_hook(this);
-      visible = true;
-    }
-}
-
-void
-DisplayHook::hide()
-{
-  if (visible)
-    {
-      Display::remove_flip_screen_hook(this);
-      visible = false;
-    }
-}
-
-void
 Display::flip_display(bool sync)
 {
-  for(std::list<DisplayHook*>::iterator i = display_hooks.begin();
-      i != display_hooks.end();
-      i++)
-    {
-      (*i)->on_event();
-    }
-
   SDL_Flip(screen);
 }
 
 void
-Display::add_flip_screen_hook(DisplayHook* hook)
-{
-  if (std::find(display_hooks.begin(), display_hooks.end(), hook) == 
display_hooks.end())
-    display_hooks.push_back(hook);
-  else
-    std::cout << "Display: Trying to insert a display hook multiple times..." 
<< std::endl;
-}
-
-void
-Display::remove_flip_screen_hook(DisplayHook* hook)
-{
-  display_hooks.remove(hook);
-}
-
-void
 Display::set_video_mode(int width, int height)
 {
   Uint32 flags = 0;

Modified: trunk/pingus/src/display/display.hpp
===================================================================
--- trunk/pingus/src/display/display.hpp        2008-07-07 09:29:22 UTC (rev 
3717)
+++ trunk/pingus/src/display/display.hpp        2008-07-07 15:06:12 UTC (rev 
3718)
@@ -27,35 +27,11 @@
 class Color;
 class DisplayHook;
 
-/** A flip display hook can be used to attach an event to a
-    flip_screen(). An example usage for this is a software mouse
-    cursor or a frame counter */
-class DisplayHook
-{
-protected:
-  bool visible;
-  
-public:
-  DisplayHook();
-  virtual ~DisplayHook();
-  /** Called sortly before a flip_display () */
-  virtual void on_event() = 0;
-
-  virtual bool is_visible();
-  virtual void show();
-  virtual void hide();
-
-private:
-  DisplayHook (const DisplayHook&);
-  DisplayHook& operator= (const DisplayHook&);
-};
-
 /** This is a kind of wrapper class around CL_Display, it provides
     ways to set the cursor and hooks for flip_display() */
 class Display
 {
 private:
-  static std::list<DisplayHook*> display_hooks;
   static std::vector<SDL_Rect>   cliprect_stack;
   static SDL_Surface* screen;
 public:
@@ -68,9 +44,6 @@
 
   static void flip_display(bool sync=false);
 
-  static void add_flip_screen_hook(DisplayHook*);
-  static void remove_flip_screen_hook(DisplayHook*);
-
   static int get_width();
   static int get_height();
 

Modified: trunk/pingus/src/fps_counter.cpp
===================================================================
--- trunk/pingus/src/fps_counter.cpp    2008-07-07 09:29:22 UTC (rev 3717)
+++ trunk/pingus/src/fps_counter.cpp    2008-07-07 15:06:12 UTC (rev 3718)
@@ -18,50 +18,34 @@
 #include "fonts.hpp"
 #include "fps_counter.hpp"
 #include "gettext.h"
+#include "display/display.hpp"
 
-
 FPSCounter fps_counter;
 
 FPSCounter::FPSCounter()
 {
-}
-
-FPSCounter::~FPSCounter()
-{
-       font = Font();
-}
-
-// We are not initialising the fpscounter in the constructor, 'cause
-// that doesn't work (ClanLib hasn't init the display at that point)
-void
-FPSCounter::init()
-{
-  font = Fonts::pingus_small;
   start_time = SDL_GetTicks();
   strcat(fps_string, "");
   fps_count = 0;
 }
 
-// Get rid of any ClanLib objects that might want to linger after
-// we unload all of our resources.
-void FPSCounter::deinit()
+FPSCounter::~FPSCounter()
 {
-  font = Font();
 }
 
 void
-FPSCounter::on_event()
+FPSCounter::draw()
 {
   update_fps_counter();
 
   if (odd_frame)
     {
-      font.draw(origin_center, Display::get_width()/2, 34, fps_string);
+      Fonts::pingus_small.draw(origin_center, Display::get_width()/2, 34, 
fps_string);
       odd_frame = false;
     }
   else
     {
-      font.draw(origin_center, Display::get_width()/2, 34, "+ " + 
std::string(fps_string) + " +");
+      Fonts::pingus_small.draw(origin_center, Display::get_width()/2, 34, "+ " 
+ std::string(fps_string) + " +");
       odd_frame = true;
     }
 }

Modified: trunk/pingus/src/fps_counter.hpp
===================================================================
--- trunk/pingus/src/fps_counter.hpp    2008-07-07 09:29:22 UTC (rev 3717)
+++ trunk/pingus/src/fps_counter.hpp    2008-07-07 15:06:12 UTC (rev 3718)
@@ -16,17 +16,10 @@
 
 #ifndef HEADER_PINGUS_FPS_COUNTER_HPP
 #define HEADER_PINGUS_FPS_COUNTER_HPP
-
-#include "font.hpp"
-#include "display/display.hpp"
-
-///
-class FPSCounter : public DisplayHook
+
+class FPSCounter
 {
 private:
-  /** The font... */
-  Font font;
-
   /** Used to know when the frame has changed */
   bool odd_frame;
 
@@ -42,34 +35,19 @@
 
   /** Check if one second is passed and if that is the case, update
       everything then. */
-  virtual void update_fps_counter();
+  void update_fps_counter();
 
 public:
-  ///
   FPSCounter();
-  ///
-  virtual ~FPSCounter();
+  ~FPSCounter();
 
-  /** When we got a Display::flip_display() this function is
-      called... */
-  virtual void on_event();
+  void draw();
 
-  /** Load all the gfx and fonts... */
-  void init();
-
-       /** Unload gfx and fonts... */
-       void deinit();
-
 private:
   FPSCounter (const FPSCounter&);
   FPSCounter& operator= (const FPSCounter&);
 };
-
-/** The fps_counter is a global object, so we don't need to construct
-    it over and over again */
-extern FPSCounter fps_counter;
-
-
+
 #endif
 
 /* EOF */

Modified: trunk/pingus/src/pingus_main.cpp
===================================================================
--- trunk/pingus/src/pingus_main.cpp    2008-07-07 09:29:22 UTC (rev 3717)
+++ trunk/pingus/src/pingus_main.cpp    2008-07-07 15:06:12 UTC (rev 3718)
@@ -802,15 +802,11 @@
   Fonts::init();
   Sound::PingusSound::init();
   PinguActionFactory::init();
-  
-  fps_counter.init();
 }
 
 void
 PingusMain::deinit_pingus()
 {
-  fps_counter.deinit();
-
   Fonts::deinit();
   PinguActionFactory::deinit();
   Sound::PingusSound::deinit();

Modified: trunk/pingus/src/screen/screen_manager.cpp
===================================================================
--- trunk/pingus/src/screen/screen_manager.cpp  2008-07-07 09:29:22 UTC (rev 
3717)
+++ trunk/pingus/src/screen/screen_manager.cpp  2008-07-07 15:06:12 UTC (rev 
3718)
@@ -25,6 +25,7 @@
 #include "screen_manager.hpp"
 #include "../path_manager.hpp"
 #include "screen.hpp"
+#include "fps_counter.hpp"
 #include "../display/drawing_context.hpp"
 #include "../input/controller.hpp"
 #include "../input/manager.hpp"
@@ -46,6 +47,9 @@
   else
     input_controller = 
std::auto_ptr<Input::Controller>(input_manager->create_controller(Pathname(controller_file,
                                                                                
                   Pathname::SYSTEM_PATH)));
+
+  cursor = Sprite("core/cursors/animcross");
+  fps_counter = std::auto_ptr<FPSCounter>(new FPSCounter());
 }
 
 ScreenManager::~ScreenManager ()
@@ -91,8 +95,8 @@
         }
       get_current_screen()->update(time_delta);
 
-      if (cursor.get())
-        cursor->update(time_delta);
+      if (swcursor_enabled)
+        cursor.update(time_delta);
 
       // Last screen has popped, so we are going to end here
       if (screens.empty())
@@ -125,12 +129,22 @@
        continue;
 
       // skip draw if the screen changed to avoid glitches
-      if (last_screen == get_current_screen() || fast_mode)
+      if (last_screen == get_current_screen())
        {
          if (get_current_screen()->draw(*display_gc))
             {
               display_gc->render(Display::get_screen(), Rect(Vector2i(0,0), 
Size(Display::get_width(),
                                                                                
  Display::get_height())));
+
+              if (swcursor_enabled)
+                {
+                  Vector2f mouse_pos = 
Input::Controller::current()->get_pointer(Input::STANDARD_POINTER)->get_pos();
+                  cursor.draw(mouse_pos.x, mouse_pos.y, Display::get_screen());
+                }
+
+              if (print_fps)
+                fps_counter->draw();
+
               Display::flip_display();
               display_gc->clear();
             }
@@ -302,31 +316,17 @@
 }
 
 void
-ScreenManager::show_swcursor(bool v)
+ScreenManager::show_swcursor(bool visible)
 {
-  if (v)
+  swcursor_enabled = visible;
+  if (swcursor_enabled)
     {
-      if (!cursor.get())
-        {
-          cursor = std::auto_ptr<Cursor>(new Cursor("core/cursors/animcross"));
-          cursor->show();
-          SDL_ShowCursor(SDL_DISABLE);
-        }
+      SDL_ShowCursor(SDL_DISABLE);
     }
   else
     {
-      if (cursor.get())
-        {
-          cursor = std::auto_ptr<Cursor>();
-          SDL_ShowCursor(SDL_ENABLE);
-        }
+      SDL_ShowCursor(SDL_ENABLE);
     }
 }
-
-bool
-ScreenManager::swcursor_visible()
-{
-  return cursor.get();
-}
 
 /* EOF */

Modified: trunk/pingus/src/screen/screen_manager.hpp
===================================================================
--- trunk/pingus/src/screen/screen_manager.hpp  2008-07-07 09:29:22 UTC (rev 
3717)
+++ trunk/pingus/src/screen/screen_manager.hpp  2008-07-07 15:06:12 UTC (rev 
3718)
@@ -21,13 +21,14 @@
 #include <memory>
 #include <boost/smart_ptr.hpp>
 #include <vector>
+#include "sprite.hpp"
 
 namespace Input {
 class Manager;
 class Controller;
 }
 
-class Cursor;
+class FPSCounter;
 class Size;
 class DrawingContext;
 class Screen;
@@ -43,7 +44,9 @@
   std::auto_ptr<Input::Controller> input_controller;
 
   std::auto_ptr<DrawingContext> display_gc;
-  std::auto_ptr<Cursor> cursor;
+  
+  std::auto_ptr<FPSCounter> fps_counter;
+  Sprite cursor;
 
   /** Screen stack (first is the screen, second is delete_screen,
       which tells if the screen should be deleted onces it got poped
@@ -85,7 +88,6 @@
   ScreenPtr get_current_screen();
 
   void show_swcursor(bool v);
-  bool swcursor_visible();
   
 private:
   void real_clear();





reply via email to

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