[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3505 - in trunk/pingus/src: . components display screen
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3505 - in trunk/pingus/src: . components display screen |
Date: |
Fri, 9 Nov 2007 11:57:47 +0100 |
Author: grumbel
Date: 2007-11-09 11:57:45 +0100 (Fri, 09 Nov 2007)
New Revision: 3505
Modified:
trunk/pingus/src/components/check_box.cpp
trunk/pingus/src/components/check_box.hpp
trunk/pingus/src/components/choice_box.cpp
trunk/pingus/src/components/choice_box.hpp
trunk/pingus/src/config_manager.cpp
trunk/pingus/src/config_manager.hpp
trunk/pingus/src/console.cpp
trunk/pingus/src/display/display.cpp
trunk/pingus/src/display/display.hpp
trunk/pingus/src/fps_counter.hpp
trunk/pingus/src/global_event.cpp
trunk/pingus/src/option_menu.cpp
trunk/pingus/src/option_menu.hpp
trunk/pingus/src/screen/screen_manager.cpp
trunk/pingus/src/screen/screen_manager.hpp
Log:
- hooked up some pieces of the OptionMenu, so its partially working now
Modified: trunk/pingus/src/components/check_box.cpp
===================================================================
--- trunk/pingus/src/components/check_box.cpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/components/check_box.cpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -46,5 +46,14 @@
gc.print_center(Fonts::chalk_normal, rect.left+rect.get_width()/2, rect.top,
"[ ]");
}
+void
+CheckBox::set_state(bool v, bool send_signal)
+{
+ state = v;
+
+ if (send_signal)
+ on_change(state);
+}
+
/* EOF */
Modified: trunk/pingus/src/components/check_box.hpp
===================================================================
--- trunk/pingus/src/components/check_box.hpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/components/check_box.hpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -37,6 +37,8 @@
void on_primary_button_press(int x, int y);
void update_layout() {}
+ void set_state(bool v, bool send_signal);
+
boost::signal<void (bool)> on_change;
private:
Modified: trunk/pingus/src/components/choice_box.cpp
===================================================================
--- trunk/pingus/src/components/choice_box.cpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/components/choice_box.cpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -56,6 +56,7 @@
{
if (!choices.empty())
{
+ int last_current_choice = current_choice;
x -= rect.left;
if (x > rect.get_width()/2)
@@ -72,6 +73,9 @@
current_choice = choices.size()-1;
//current_choice = 0;
}
+
+ if (last_current_choice != current_choice)
+ on_change(choices[current_choice]);
}
}
Modified: trunk/pingus/src/components/choice_box.hpp
===================================================================
--- trunk/pingus/src/components/choice_box.hpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/components/choice_box.hpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -22,6 +22,7 @@
#include <string>
#include <vector>
+#include <boost/signal.hpp>
#include "gui/rect_component.hpp"
/** */
@@ -39,6 +40,8 @@
void update_layout() {}
void add_choice(const std::string& str);
+ boost::signal<void (std::string)> on_change;
+
private:
ChoiceBox (const ChoiceBox&);
ChoiceBox& operator= (const ChoiceBox&);
Modified: trunk/pingus/src/config_manager.cpp
===================================================================
--- trunk/pingus/src/config_manager.cpp 2007-11-09 08:50:20 UTC (rev 3504)
+++ trunk/pingus/src/config_manager.cpp 2007-11-09 10:57:45 UTC (rev 3505)
@@ -24,7 +24,10 @@
*/
#include <iostream>
+#include "SDL.h"
#include "globals.hpp"
+#include "fps_counter.hpp"
+#include "screen/screen_manager.hpp"
#include "config_manager.hpp"
ConfigManager config_manager;
@@ -81,12 +84,21 @@
{
if (maintainer_mode)
std::cout << "ConfigManager::set_resolution: " << size.width << "x" <<
size.height << std::endl;
+
+ if (size != get_resolution())
+ {
+ screen_width = size.width;
+ screen_height = size.height;
+ Display::set_video_mode(screen_width, screen_height);
+ on_resolution_change(size);
+ }
}
Size
ConfigManager::get_resolution()
{
- return Size();
+ return Size(Display::get_width(),
+ Display::get_height());
}
void
@@ -94,12 +106,19 @@
{
if (maintainer_mode)
std::cout << "ConfigManager::set_fullscreen: " << v << std::endl;
+
+ if (v != get_fullscreen())
+ {
+ fullscreen_enabled = v;
+ Display::set_video_mode(screen_width, screen_height);
+ on_fullscreen_change(v);
+ }
}
bool
ConfigManager::get_fullscreen()
{
- return false;
+ return fullscreen_enabled;
}
void
@@ -133,12 +152,22 @@
{
if (maintainer_mode)
std::cout << "ConfigManager::set_mouse_grab: " << v << std::endl;
+
+ if (v != get_mouse_grab())
+ {
+ if (v)
+ SDL_WM_GrabInput(SDL_GRAB_ON);
+ else
+ SDL_WM_GrabInput(SDL_GRAB_OFF);
+
+ on_mouse_grab_change(v);
+ }
}
bool
ConfigManager::get_mouse_grab()
{
- return false;
+ return (SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON);
}
void
@@ -146,12 +175,22 @@
{
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);
+ }
}
bool
ConfigManager::get_print_fps()
{
- return false;
+ return fps_counter.is_visible();
}
void
@@ -172,12 +211,17 @@
{
if (maintainer_mode)
std::cout << "ConfigManager::set_swcursor: " << v << std::endl;
+
+ if (v != get_swcursor())
+ {
+ ScreenManager::instance()->show_swcursor(v);
+ }
}
bool
ConfigManager::get_swcursor()
{
- return false;
+ return ScreenManager::instance()->swcursor_visible();
}
void
Modified: trunk/pingus/src/config_manager.hpp
===================================================================
--- trunk/pingus/src/config_manager.hpp 2007-11-09 08:50:20 UTC (rev 3504)
+++ trunk/pingus/src/config_manager.hpp 2007-11-09 10:57:45 UTC (rev 3505)
@@ -37,51 +37,51 @@
void set_master_volume(int);
int get_master_volume();
- boost::signal<void(int)> on_master_volume_change();
+ boost::signal<void(int)> on_master_volume_change;
void set_sound_volume(int);
int get_sound_volume();
- boost::signal<void(int)> on_sound_volume_change();
+ boost::signal<void(int)> on_sound_volume_change;
void set_music_volume(int);
int get_music_volume();
- boost::signal<void(int)> on_music_volume_change();
+ boost::signal<void(int)> on_music_volume_change;
void set_resolution(const Size& size);
Size get_resolution();
- boost::signal<void(Size)> on_resolution_change();
+ boost::signal<void(Size)> on_resolution_change;
void set_fullscreen(bool);
bool get_fullscreen();
- boost::signal<void(bool)> on_fullscreen_change();
+ boost::signal<void(bool)> on_fullscreen_change;
void set_allow_resize(bool);
bool get_allow_resize();
- boost::signal<void(bool)> on_allow_reszie_change();
+ boost::signal<void(bool)> on_allow_reszie_change;
void set_fast_mode(bool);
bool get_fast_mode();
- boost::signal<void(bool)> on_fast_mode_change();
+ boost::signal<void(bool)> on_fast_mode_change;
void set_mouse_grab(bool);
bool get_mouse_grab();
- boost::signal<void(bool)> on_mouse_grab_change();
+ boost::signal<void(bool)> on_mouse_grab_change;
void set_print_fps(bool);
bool get_print_fps();
- boost::signal<void(bool)> on_print_fps_change();
+ boost::signal<void(bool)> on_print_fps_change;
void set_language(const std::string&);
std::string get_language();
- boost::signal<void(const std::string&)> on_language_change();
+ boost::signal<void(const std::string&)> on_language_change;
void set_swcursor(bool);
bool get_swcursor();
- boost::signal<void(bool)> on_swcursor_change();
+ boost::signal<void(bool)> on_swcursor_change;
void set_autoscroll(bool);
bool get_autoscroll();
- boost::signal<void(bool)> on_autoscroll_change();
+ boost::signal<void(bool)> on_autoscroll_change;
private:
ConfigManager (const ConfigManager&);
Modified: trunk/pingus/src/console.cpp
===================================================================
--- trunk/pingus/src/console.cpp 2007-11-09 08:50:20 UTC (rev 3504)
+++ trunk/pingus/src/console.cpp 2007-11-09 10:57:45 UTC (rev 3505)
@@ -116,7 +116,7 @@
Console::Console() : ostream (&streambuf) // std:: is missing here since Win32
doesn't like it
{
is_init = false;
- is_visible = false;
+ visible = false;
current_pos = 0;
number_of_lines = 12;
Modified: trunk/pingus/src/display/display.cpp
===================================================================
--- trunk/pingus/src/display/display.cpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/display/display.cpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -45,19 +45,39 @@
}
} // namespace
-DisplayHook::DisplayHook() : is_visible(false)
+DisplayHook::DisplayHook() : visible(false)
{
}
+DisplayHook::~DisplayHook()
+{
+ hide();
+}
+
+bool
+DisplayHook::is_visible()
+{
+ return visible;
+}
+
void
-DisplayHook::toggle_display()
+DisplayHook::show()
{
- if (is_visible)
- Display::remove_flip_screen_hook(this);
- else
- Display::add_flip_screen_hook(this);
+ if (!visible)
+ {
+ Display::add_flip_screen_hook(this);
+ visible = true;
+ }
+}
- is_visible = !is_visible;
+void
+DisplayHook::hide()
+{
+ if (visible)
+ {
+ Display::remove_flip_screen_hook(this);
+ visible = false;
+ }
}
void
Modified: trunk/pingus/src/display/display.hpp
===================================================================
--- trunk/pingus/src/display/display.hpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/display/display.hpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -36,14 +36,18 @@
class DisplayHook
{
protected:
- bool is_visible;
+ bool visible;
+
public:
DisplayHook();
- virtual ~DisplayHook() {}
+ virtual ~DisplayHook();
/** Called sortly before a flip_display () */
virtual void on_event() = 0;
- virtual void toggle_display();
+ virtual bool is_visible();
+ virtual void show();
+ virtual void hide();
+
private:
DisplayHook (const DisplayHook&);
DisplayHook& operator= (const DisplayHook&);
Modified: trunk/pingus/src/fps_counter.hpp
===================================================================
--- trunk/pingus/src/fps_counter.hpp 2007-11-09 08:50:20 UTC (rev 3504)
+++ trunk/pingus/src/fps_counter.hpp 2007-11-09 10:57:45 UTC (rev 3505)
@@ -20,9 +20,9 @@
#ifndef HEADER_PINGUS_FPS_COUNTER_HXX
#define HEADER_PINGUS_FPS_COUNTER_HXX
+#include "font.hpp"
#include "display/display.hpp"
-
///
class FPSCounter : public DisplayHook
{
Modified: trunk/pingus/src/global_event.cpp
===================================================================
--- trunk/pingus/src/global_event.cpp 2007-11-09 08:50:20 UTC (rev 3504)
+++ trunk/pingus/src/global_event.cpp 2007-11-09 10:57:45 UTC (rev 3505)
@@ -28,6 +28,7 @@
#include "level_menu.hpp"
#include "addon_menu.hpp"
#include "global_event.hpp"
+#include "config_manager.hpp"
#include "globals.hpp"
GlobalEvent global_event;
@@ -44,12 +45,14 @@
switch (event.keysym.sym)
{
case SDLK_F1:
- console.toggle_display();
+ if (console.is_visible())
+ console.hide();
+ else
+ console.show();
break;
case SDLK_F10:
- fps_counter.toggle_display();
- console << "Toggling fps counter display" << std::endl;
+ config_manager.set_print_fps(!config_manager.get_print_fps());
break;
case SDLK_RETURN:
@@ -57,12 +60,9 @@
break;
// FALL THROUGH
case SDLK_F11:
- fullscreen_enabled = !fullscreen_enabled;
- // re-initialize the screen
- Display::set_video_mode(screen_width, screen_height);
+ config_manager.set_fullscreen(!config_manager.get_fullscreen());
break;
-
case SDLK_F5:
if
(!dynamic_cast<OptionMenu*>(ScreenManager::instance()->get_screen()))
ScreenManager::instance()->push_screen(new OptionMenu(), true);
@@ -105,16 +105,7 @@
case SDLK_g:
if (keystate[SDLK_LCTRL] || keystate[SDLK_RCTRL])
{
- if (SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON)
- {
- SDL_WM_GrabInput(SDL_GRAB_OFF);
- console << "Grab input off" << std::endl;
- }
- else
- {
- SDL_WM_GrabInput(SDL_GRAB_ON);
- console << "Grab input on" << std::endl;
- }
+ config_manager.set_mouse_grab(!config_manager.get_mouse_grab());
}
break;
Modified: trunk/pingus/src/option_menu.cpp
===================================================================
--- trunk/pingus/src/option_menu.cpp 2007-11-09 08:50:20 UTC (rev 3504)
+++ trunk/pingus/src/option_menu.cpp 2007-11-09 10:57:45 UTC (rev 3505)
@@ -34,6 +34,8 @@
#include "tinygettext/dictionary_manager.hpp"
#include "option_menu.hpp"
+#define C(x) x
+
extern TinyGetText::DictionaryManager dictionary_manager;
OptionMenu::OptionMenu()
@@ -45,15 +47,23 @@
y_pos = 0;
ChoiceBox* resolution_box = new ChoiceBox(Rect());
- resolution_box->add_choice("640x480");
- resolution_box->add_choice("800x480");
- resolution_box->add_choice("800x600");
- resolution_box->add_choice("1024x768");
- resolution_box->add_choice("1152x864");
- resolution_box->add_choice("1280x960");
- resolution_box->add_choice("1280x1024");
- resolution_box->add_choice("1600x1200");
- resolution_box->add_choice("1920x1080");
+ resolution_box->add_choice("640x480"); // 4:3, VGA
+ resolution_box->add_choice("768x576"); // 4:3, PAL
+ resolution_box->add_choice("800x480"); // Nokia N770, N800
+ resolution_box->add_choice("800x600"); // 4:3, SVGA
+ resolution_box->add_choice("1024x768"); // 4:3, XGA
+ resolution_box->add_choice("1152x864"); // 4:3
+ resolution_box->add_choice("1280x720"); // 16:9, HD-TV, 720p
+ resolution_box->add_choice("1280x960"); // 4:3
+ resolution_box->add_choice("1280x1024"); // 5:4
+ resolution_box->add_choice("1366x768"); // ~16:9, Wide XGA
+ resolution_box->add_choice("1440x900"); // 16:10
+ resolution_box->add_choice("1600x1200"); // 4:3, UXGA
+ resolution_box->add_choice("1680x1050"); // 16:10, WSXGA
+ resolution_box->add_choice("1920x1080"); // 16:9, HD-TV, 1080p
+ resolution_box->add_choice("1920x1200"); // 16:10
+
+ resolution_box->add_choice("Custom");
ChoiceBox* language_box = new ChoiceBox(Rect());
std::set<std::string> lst = dictionary_manager.get_languages();
@@ -66,8 +76,8 @@
swcursor_box = new CheckBox(Rect());
fullscreen_box = new CheckBox(Rect());
- autoscrolling_box = new CheckBox(Rect());
- fastmode_box = new CheckBox(Rect());
+ autoscroll_box = new CheckBox(Rect());
+ fast_mode_box = new CheckBox(Rect());
mousegrab_box = new CheckBox(Rect());
printfps_box = new CheckBox(Rect());
@@ -77,8 +87,8 @@
swcursor_box->on_change.connect(boost::bind(&OptionMenu::on_swcursor_change,
this, _1));
fullscreen_box->on_change.connect(boost::bind(&OptionMenu::on_fullscreen_change,
this, _1));
-
autoscrolling_box->on_change.connect(boost::bind(&OptionMenu::on_autoscrolling_change,
this, _1));
- fastmode_box->on_change.connect(boost::bind(&OptionMenu::on_fastmode_change,
this, _1));
+
autoscroll_box->on_change.connect(boost::bind(&OptionMenu::on_autoscroll_change,
this, _1));
+
fast_mode_box->on_change.connect(boost::bind(&OptionMenu::on_fastmode_change,
this, _1));
mousegrab_box->on_change.connect(boost::bind(&OptionMenu::on_mousegrab_change,
this, _1));
printfps_box->on_change.connect(boost::bind(&OptionMenu::on_printfps_change,
this, _1));
@@ -86,12 +96,14 @@
sound_volume_box->on_change.connect(boost::bind(&OptionMenu::on_sound_volume_change,
this, _1));
music_volume_box->on_change.connect(boost::bind(&OptionMenu::on_music_volume_change,
this, _1));
+
resolution_box->on_change.connect(boost::bind(&OptionMenu::on_resolution_change,
this, _1));
+
add_item(_("Language:"), language_box);
add_item(_("Scroll Mode:"), scroll_box);
add_item(_("Resolution:"), resolution_box);
add_item(_("Fullscreen:"), fullscreen_box);
- add_item(_("Autoscrolling:"), autoscrolling_box);
- add_item(_("Low Detail:"), fastmode_box);
+ add_item(_("Autoscrolling:"), autoscroll_box);
+ add_item(_("Low Detail:"), fast_mode_box);
add_item(_("Master Volume:"), master_volume_box);
add_item(_("Sound Volume:"), sound_volume_box);
@@ -99,6 +111,25 @@
add_item(_("Print FPS:"), printfps_box);
add_item(_("Mouse Grab:"), mousegrab_box);
add_item(_("Software Cursor:"), swcursor_box);
+
+ // Connect with ConfigManager
+ mousegrab_box->set_state(config_manager.get_mouse_grab(), false);
+
C(config_manager.on_mouse_grab_change.connect(boost::bind(&CheckBox::set_state,
mousegrab_box, _1, false)));
+
+ printfps_box->set_state(config_manager.get_print_fps(), false);
+
C(config_manager.on_print_fps_change.connect(boost::bind(&CheckBox::set_state,
printfps_box, _1, false)));
+
+ fullscreen_box->set_state(config_manager.get_fullscreen(), false);
+
C(config_manager.on_fullscreen_change.connect(boost::bind(&CheckBox::set_state,
fullscreen_box, _1, false)));
+
+ swcursor_box->set_state(config_manager.get_swcursor(), false);
+
C(config_manager.on_swcursor_change.connect(boost::bind(&CheckBox::set_state,
swcursor_box, _1, false)));
+
+ autoscroll_box->set_state(config_manager.get_autoscroll(), false);
+
C(config_manager.on_autoscroll_change.connect(boost::bind(&CheckBox::set_state,
autoscroll_box, _1, false)));
+
+ fast_mode_box->set_state(config_manager.get_fast_mode(), false);
+
C(config_manager.on_fast_mode_change.connect(boost::bind(&CheckBox::set_state,
fast_mode_box, _1, false)));
}
void
@@ -139,14 +170,11 @@
OptionMenu::~OptionMenu()
{
+ for(Connections::iterator i = connections.begin(); i != connections.end();
++i)
+ {
+ (*i).disconnect();
+ }
}
-
-void
-OptionMenu::update(const GameDelta& delta)
-{
- GUIScreen::update(delta);
- SDL_Delay(50);
-}
struct OptionEntry {
OptionEntry(const std::string& left_,
@@ -183,8 +211,9 @@
}
void
-OptionMenu::resize(const Size&)
+OptionMenu::resize(const Size& size)
{
+
}
void
@@ -200,7 +229,7 @@
}
void
-OptionMenu::on_autoscrolling_change(bool v)
+OptionMenu::on_autoscroll_change(bool v)
{
config_manager.set_autoscroll(v);
}
@@ -241,4 +270,17 @@
config_manager.set_music_volume(v);
}
+void
+OptionMenu::on_resolution_change(const std::string& str)
+{
+ if (str != "Custom")
+ {
+ Size size;
+ if (sscanf(str.c_str(), "%dx%d", &size.width, &size.height) == 2)
+ {
+ config_manager.set_resolution(size);
+ }
+ }
+}
+
/* EOF */
Modified: trunk/pingus/src/option_menu.hpp
===================================================================
--- trunk/pingus/src/option_menu.hpp 2007-11-09 08:50:20 UTC (rev 3504)
+++ trunk/pingus/src/option_menu.hpp 2007-11-09 10:57:45 UTC (rev 3505)
@@ -20,6 +20,8 @@
#ifndef HEADER_OPTION_MENU_HPP
#define HEADER_OPTION_MENU_HPP
+#include <vector>
+#include <boost/signals.hpp>
#include "sprite.hpp"
#include "screen/gui_screen.hpp"
#include "components/label.hpp"
@@ -51,21 +53,23 @@
CheckBox* fullscreen_box;
CheckBox* swcursor_box;
- CheckBox* autoscrolling_box;
- CheckBox* fastmode_box;
+ CheckBox* autoscroll_box;
+ CheckBox* fast_mode_box;
CheckBox* mousegrab_box;
CheckBox* printfps_box;
SliderBox* master_volume_box;
SliderBox* sound_volume_box;
SliderBox* music_volume_box;
-
+
+ typedef std::vector<boost::signals::connection> Connections;
+ Connections connections;
+
public:
OptionMenu();
~OptionMenu();
void draw_background (DrawingContext& gc);
- void update (const GameDelta& delta);
void on_escape_press ();
void add_item(const std::string& label, GUI::RectComponent* control);
@@ -74,7 +78,7 @@
void on_swcursor_change(bool v);
void on_fullscreen_change(bool v);
- void on_autoscrolling_change(bool v);
+ void on_autoscroll_change(bool v);
void on_fastmode_change(bool v);
void on_mousegrab_change(bool v);
void on_printfps_change(bool v);
@@ -82,6 +86,8 @@
void on_master_volume_change(int v);
void on_sound_volume_change(int v);
void on_music_volume_change(int v);
+
+ void on_resolution_change(const std::string& str);
private:
OptionMenu (const OptionMenu&);
OptionMenu& operator= (const OptionMenu&);
Modified: trunk/pingus/src/screen/screen_manager.cpp
===================================================================
--- trunk/pingus/src/screen/screen_manager.cpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/screen/screen_manager.cpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -34,6 +34,7 @@
ScreenManager* ScreenManager::instance_ = 0;
ScreenManager::ScreenManager()
+ : cursor(0)
{
display_gc = new DrawingContext();
@@ -43,6 +44,7 @@
ScreenManager::~ScreenManager ()
{
delete display_gc;
+ delete cursor;
}
void
@@ -59,14 +61,8 @@
input_controller =
input_manager.create_controller(Pathname(controller_file,
Pathname::SYSTEM_PATH));
- Cursor* cursor = 0;
- if (swcursor_enabled)
- {
- cursor = new Cursor("core/cursors/animcross");
- Display::add_flip_screen_hook(cursor);
- SDL_ShowCursor(SDL_DISABLE);
- }
+ show_swcursor(swcursor_enabled);
DeltaManager delta_manager;
// Main loop for the menu
@@ -136,7 +132,7 @@
{
display_gc->render(Display::get_screen(), Rect(Vector2i(0,0),
Size(Display::get_width(),
Display::get_height())));
- Display::flip_display ();
+ Display::flip_display();
display_gc->clear();
}
}
@@ -150,8 +146,6 @@
SDL_Delay(1);
}
- Display::remove_flip_screen_hook(cursor);
- delete cursor;
delete input_controller;
}
@@ -312,6 +306,35 @@
}
void
+ScreenManager::show_swcursor(bool v)
+{
+ if (v)
+ {
+ if (!cursor)
+ {
+ cursor = new Cursor("core/cursors/animcross");
+ cursor->show();
+ SDL_ShowCursor(SDL_DISABLE);
+ }
+ }
+ else
+ {
+ if (cursor)
+ {
+ delete cursor;
+ cursor = 0;
+ SDL_ShowCursor(SDL_ENABLE);
+ }
+ }
+}
+
+bool
+ScreenManager::swcursor_visible()
+{
+ return cursor;
+}
+
+void
ScreenManager::init()
{
instance_ = 0;
Modified: trunk/pingus/src/screen/screen_manager.hpp
===================================================================
--- trunk/pingus/src/screen/screen_manager.hpp 2007-11-09 08:50:20 UTC (rev
3504)
+++ trunk/pingus/src/screen/screen_manager.hpp 2007-11-09 10:57:45 UTC (rev
3505)
@@ -25,6 +25,7 @@
#include "screen_ptr.hpp"
+class Cursor;
class Size;
class DrawingContext;
class Screen;
@@ -48,6 +49,7 @@
enum { CA_NONE, CA_POP, CA_POP_ALL, CA_REPLACE, CA_CLEAR } cached_action;
ScreenPtr replace_screen_arg;
+ Cursor* cursor;
protected:
ScreenManager ();
public:
@@ -80,6 +82,9 @@
/** @return a pointer to the current Screen */
Screen* get_screen();
+ void show_swcursor(bool v);
+ bool swcursor_visible();
+
private:
void real_clear();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3505 - in trunk/pingus/src: . components display screen,
grumbel at BerliOS <=