|
From: Tapio V. <aa...@us...> - 2010-08-21 18:03:50
|
Module: performous
Branch: master
Commit: 97e4b9531588305391ac7ae56e248b23c8250b75
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 18:59:26 2010 +0300
Hide lyrics and instrument "cursor" when menu is open (overlap with menu comments).
---
game/guitargraph.cc | 30 ++++++++++---------
game/layout_singer.cc | 76 +++++++++++++++++++++++++------------------------
game/layout_singer.hh | 2 +
game/screen_sing.cc | 2 +
4 files changed, 59 insertions(+), 51 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 9cbd7e3..117b1dc 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -785,20 +785,22 @@ void GuitarGraph::draw(double time) {
}
// Draw the cursor
- float level = m_pressed_anim[0].get();
- glColor3f(level, level, level);
- drawBar(0.0, 0.01f);
- // Fret buttons on cursor
- for (int fret = m_drums; fret < m_pads; ++fret) {
- float x = getFretX(fret);
- float l = m_pressed_anim[fret + !m_drums].get();
- // Get a color for the fret and adjust it if GodMode is on
- glColor4fv(colorize(color(fret), time));
- m_button.dimensions.center(time2y(0.0)).middle(x);
- m_button.draw();
- glColor3f(l, l, l);
- m_tap.dimensions = m_button.dimensions;
- m_tap.draw();
+ if (!menuOpen()) {
+ float level = m_pressed_anim[0].get();
+ glColor3f(level, level, level);
+ drawBar(0.0, 0.01f);
+ // Fret buttons on cursor
+ for (int fret = m_drums; fret < m_pads; ++fret) {
+ float x = getFretX(fret);
+ float l = m_pressed_anim[fret + !m_drums].get();
+ // Get a color for the fret and adjust it if GodMode is on
+ glColor4fv(colorize(color(fret), time));
+ m_button.dimensions.center(time2y(0.0)).middle(x);
+ m_button.draw();
+ glColor3f(l, l, l);
+ m_tap.dimensions = m_button.dimensions;
+ m_tap.draw();
+ }
}
// Draw the notes
diff --git a/game/layout_singer.cc b/game/layout_singer.cc
index 0419a93..02ec959 100644
--- a/game/layout_singer.cc
+++ b/game/layout_singer.cc
@@ -9,7 +9,7 @@
#include <boost/format.hpp>
LayoutSinger::LayoutSinger(VocalTrack& vocals, Database& database, boost::shared_ptr<ThemeSing> theme):
- m_vocals(vocals), m_noteGraph(vocals),m_lyricit(vocals.notes.begin()), m_lyrics(), m_database(database), m_theme(theme) {
+ m_vocals(vocals), m_noteGraph(vocals),m_lyricit(vocals.notes.begin()), m_lyrics(), m_database(database), m_theme(theme), m_hideLyrics() {
m_score_text[0].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
m_score_text[1].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
m_score_text[2].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
@@ -103,43 +103,45 @@ void LayoutSinger::draw(double time, Position position) {
}
// Draw the lyrics
- double linespacing = 0.0;
- Dimensions pos;
- switch(position) {
- case LayoutSinger::BOTTOM: // Fullscreen
- pos.screenBottom(-0.1);
- linespacing = 0.06;
- break;
- case LayoutSinger::MIDDLE: // Band mode
- pos.center(-0.05);
- linespacing = 0.04;
- break;
- case LayoutSinger::LEFT:
- case LayoutSinger::RIGHT:
- pos.screenBottom(-0.1);
- linespacing = 0.06;
- break;
- }
- bool dirty;
- do {
- dirty = false;
- if (!m_lyrics.empty() && m_lyrics[0].expired(time)) {
- // Add extra spacing to replace the removed row
- if (m_lyrics.size() > 1) m_lyrics[1].extraspacing.move(m_lyrics[0].extraspacing.get() + 1.0);
- m_lyrics.pop_front();
- dirty = true;
- }
- if (!dirty && m_lyricit != m_vocals.notes.end() && m_lyricit->begin < time + 4.0) {
- m_lyrics.push_back(LyricRow(m_lyricit, m_vocals.notes.end()));
- dirty = true;
+ if (!m_hideLyrics) {
+ double linespacing = 0.0;
+ Dimensions pos;
+ switch(position) {
+ case LayoutSinger::BOTTOM: // Fullscreen
+ pos.screenBottom(-0.1);
+ linespacing = 0.06;
+ break;
+ case LayoutSinger::MIDDLE: // Band mode
+ pos.center(-0.05);
+ linespacing = 0.04;
+ break;
+ case LayoutSinger::LEFT:
+ case LayoutSinger::RIGHT:
+ pos.screenBottom(-0.1);
+ linespacing = 0.06;
+ break;
}
- } while (dirty);
- if (m_theme.get()) // if there is a theme, draw the lyrics with it
- {
- for (size_t i = 0; i < m_lyrics.size(); ++i, pos.move(0.0, linespacing)) {
- pos.move(0.0, m_lyrics[i].extraspacing.get() * linespacing);
- if (i == 0) m_lyrics[0].draw(m_theme->lyrics_now, time, pos);
- else if (i == 1 && position == LayoutSinger::BOTTOM) m_lyrics[1].draw(m_theme->lyrics_next, time, pos);
+ bool dirty;
+ do {
+ dirty = false;
+ if (!m_lyrics.empty() && m_lyrics[0].expired(time)) {
+ // Add extra spacing to replace the removed row
+ if (m_lyrics.size() > 1) m_lyrics[1].extraspacing.move(m_lyrics[0].extraspacing.get() + 1.0);
+ m_lyrics.pop_front();
+ dirty = true;
+ }
+ if (!dirty && m_lyricit != m_vocals.notes.end() && m_lyricit->begin < time + 4.0) {
+ m_lyrics.push_back(LyricRow(m_lyricit, m_vocals.notes.end()));
+ dirty = true;
+ }
+ } while (dirty);
+ if (m_theme.get()) // if there is a theme, draw the lyrics with it
+ {
+ for (size_t i = 0; i < m_lyrics.size(); ++i, pos.move(0.0, linespacing)) {
+ pos.move(0.0, m_lyrics[i].extraspacing.get() * linespacing);
+ if (i == 0) m_lyrics[0].draw(m_theme->lyrics_now, time, pos);
+ else if (i == 1 && position == LayoutSinger::BOTTOM) m_lyrics[1].draw(m_theme->lyrics_next, time, pos);
+ }
}
}
diff --git a/game/layout_singer.hh b/game/layout_singer.hh
index 68a74a4..a2fbceb 100644
--- a/game/layout_singer.hh
+++ b/game/layout_singer.hh
@@ -56,6 +56,7 @@ class LayoutSinger {
void draw(double time, Position position = LayoutSinger::BOTTOM);
void drawScore(Position position);
double lyrics_begin();
+ void hideLyrics(bool hide = true) { m_hideLyrics = hide; };
private:
VocalTrack& m_vocals;
NoteGraph m_noteGraph;
@@ -67,4 +68,5 @@ class LayoutSinger {
Database& m_database;
boost::shared_ptr<ThemeSing> m_theme;
AnimValue m_feedbackFader;
+ bool m_hideLyrics;
};
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index eedfdbb..25a2d34 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -402,6 +402,8 @@ void ScreenSing::draw() {
theme->bg_top.draw();
}
+ m_layout_singer->hideLyrics(m_audio.isPaused());
+
// Dancing
if( !m_dancers.empty() ) {
danceLayout(time);
|