|
From: Tapio V. <aa...@us...> - 2010-01-27 13:52:50
|
Module: performous
Branch: master
Commit: afa567dca8f365aaeaf785a82f8214f73d03be53
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jan 27 15:26:19 2010 +0200
Add "Loading song..." notification.
---
game/main.cc | 2 +-
game/screen.hh | 6 +++++-
game/screen_sing.cc | 4 +++-
game/screenmanager.cc | 2 +-
4 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/game/main.cc b/game/main.cc
index 40bfc9b..da85251 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -149,7 +149,7 @@ void audioSetup(Capture& capture, Audio& audio) {
void mainLoop(std::string const& songlist) {
Window window(config["graphic/window_width"].i(), config["graphic/window_height"].i(), config["graphic/fullscreen"].b());
- ScreenManager sm;
+ ScreenManager sm(window);
try {
sm.flashMessage(_("Audio capture..."), 0.0f, 1.0f, 1.0f); window.blank(); sm.drawFlashMessage(); window.swap();
Capture capture;
diff --git a/game/screen.hh b/game/screen.hh
index 481744e..08f8973 100644
--- a/game/screen.hh
+++ b/game/screen.hh
@@ -3,6 +3,7 @@
#include "singleton.hh"
#include "animvalue.hh"
#include "opengl_text.hh"
+#include "video_driver.hh"
#include <boost/ptr_container/ptr_map.hpp>
#include <SDL.h>
#include <string>
@@ -35,7 +36,7 @@ class Screen {
class ScreenManager: public Singleton <ScreenManager> {
public:
/// constructor
- ScreenManager();
+ ScreenManager(Window& window);
/// adds a screen to the manager
void addScreen(Screen* s) { std::string tmp = s->getName(); screens.insert(tmp, s); };
/// Switches active screen
@@ -46,6 +47,8 @@ class ScreenManager: public Singleton <ScreenManager> {
Screen* getCurrentScreen() { return currentScreen; };
/// returns pointer to Screen for given name
Screen* getScreen(std::string const& name);
+ /// returns a reference to the window
+ Window& getWindow() { return window; };
/// Set a message to flash in current screen
void flashMessage(std::string const& name, float fadeIn=0.5f, float hold=1.5f, float fadeOut=1.0f);
@@ -58,6 +61,7 @@ class ScreenManager: public Singleton <ScreenManager> {
bool isFinished() { return m_finished; };
private:
+ Window& window;
bool m_finished;
float m_timeToFadeIn;
float m_timeToFadeOut;
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 5cefeb3..9b5123c 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -30,13 +30,15 @@ namespace {
}
void ScreenSing::enter() {
+ ScreenManager* sm = ScreenManager::getSingletonPtr();
+ sm->flashMessage(_("Loading song..."), 0.0, 1.0, 0.5);
+ sm->drawFlashMessage(); sm->getWindow().swap(); // Make loading message show
theme.reset(new ThemeSing());
// Load the rest of the song
if (m_song->loadStatus != Song::FULL) {
try { SongParser sp(*m_song); }
catch (std::exception& e) {
std::cout << e.what() << std::endl;
- ScreenManager* sm = ScreenManager::getSingletonPtr();
sm->flashMessage(_("Song is broken!"));
sm->activateScreen("Songs");
}
diff --git a/game/screenmanager.cc b/game/screenmanager.cc
index ddf6279..f678ebb 100644
--- a/game/screenmanager.cc
+++ b/game/screenmanager.cc
@@ -5,7 +5,7 @@
template<> ScreenManager* Singleton<ScreenManager>::ms_Singleton = NULL;
-ScreenManager::ScreenManager(): m_finished(false), currentScreen(), m_messagePopup(0.0, 1.0), m_textMessage(getThemePath("message_text.svg")) {
+ScreenManager::ScreenManager(Window& window): window(window), m_finished(false), currentScreen(), m_messagePopup(0.0, 1.0), m_textMessage(getThemePath("message_text.svg")) {
m_textMessage.dimensions.middle().screenTop(0.05);
}
|