|
From: Tapio V. <aa...@us...> - 2010-01-27 13:53:29
|
Module: performous
Branch: master
Commit: e2fdf66c9d09b2a4cdf3a38cee631f577e6019eb
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jan 27 14:39:59 2010 +0200
Add notification about broken tracks in song.
---
game/screen_sing.cc | 6 +++++-
game/song.cc | 1 +
game/song.hh | 1 +
game/songparser-ini.cc | 2 +-
4 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 945b1e3..76dd130 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -36,9 +36,13 @@ void ScreenSing::enter() {
try { SongParser sp(*m_song); }
catch (std::exception& e) {
std::cout << e.what() << std::endl;
- ScreenManager::getSingletonPtr()->activateScreen("Songs");
+ ScreenManager* sm = ScreenManager::getSingletonPtr();
+ sm->flashMessage(_("Song is broken!"));
+ sm->activateScreen("Songs");
}
}
+ // Notify about broken tracks
+ if (m_song->b0rkedTracks) ScreenManager::getSingletonPtr()->flashMessage(_("Song contains broken tracks!"));
bool foundbg = false;
if (!m_song->background.empty()) {
try {
diff --git a/game/song.cc b/game/song.cc
index 33b294f..a67015d 100644
--- a/game/song.cc
+++ b/game/song.cc
@@ -33,6 +33,7 @@ void Song::reload(bool errorIgnore) {
preview_start = getNaN();
beginTime = endTime = getNaN();
m_scoreFactor = 0.0;
+ b0rkedTracks = false;
try { SongParser(*this); } catch (...) { if (!errorIgnore) throw; }
collateUpdate();
}
diff --git a/game/song.hh b/game/song.hh
index b2c3fe9..33b29cd 100644
--- a/game/song.hh
+++ b/game/song.hh
@@ -88,6 +88,7 @@ class Song: boost::noncopyable {
double m_scoreFactor; ///< Normalization factor for the scoring system
typedef std::vector<std::pair<double,double> > Stops;
Stops stops;
+ bool b0rkedTracks;
};
static inline bool operator<(Song const& l, Song const& r) { return l.collateByArtist < r.collateByArtist; }
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index 7d6745c..9faa435 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -159,6 +159,7 @@ void SongParser::iniParse() {
// This number has been extracted from broken song tracks, but
// it is probably DIFFICULTYCOUNT * different_frets.
if (durCount <= 20) {
+ s.b0rkedTracks = true;
nm2.clear();
s.track_map.erase(name);
}
@@ -238,7 +239,6 @@ void SongParser::iniParse() {
oss << s.path << s.midifilename << std::endl;
std::cerr << oss.str(); // More likely to be atomic when written as one string
}
-
/*if (s.notes.empty()) {
Note n;
n.begin = 30.0;
|