[Top][All Lists]
[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();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3718 - in trunk/pingus: . src src/components src/display src/screen,
grumbel at BerliOS <=