|
From: Peque <ms...@us...> - 2010-03-14 23:48:37
|
Module: performous
Branch: hiscore_in_songbrowser
Commit: 80c3a1cfd5b11f5ceee9c539828f1691508a7129
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Mon Mar 15 00:47:48 2010 +0100
Clean up. Bug is not solved.
---
game/database.cc | 2 +-
game/main.cc | 2 -
game/screen_hiscore.cc | 98 ------------------------------------------------
game/screen_hiscore.hh | 46 ----------------------
game/screen_songs.cc | 30 ++++++++------
5 files changed, 18 insertions(+), 160 deletions(-)
diff --git a/game/database.cc b/game/database.cc
index 8663c34..b478125 100644
--- a/game/database.cc
+++ b/game/database.cc
@@ -136,7 +136,7 @@ void Database::queryPerSongHiscore_HiscoreDisplay (std::ostream & os, boost::sha
for (size_t i=0; ((i<hi.size())&&(i<max_displayed)); ++i)
{
- os << i+1+start_pos << "\t"
+ os << i+start_pos+1 << "\t"
<< m_players.lookup(hi[i+start_pos].playerid) << "\t"
<< hi[i+start_pos].score << "\t"
<< "(" << hi[i+start_pos].track << ")\n";
diff --git a/game/main.cc b/game/main.cc
index 6378538..e62c9af 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -17,7 +17,6 @@
#include "screen_practice.hh"
#include "screen_configuration.hh"
#include "screen_players.hh"
-#include "screen_hiscore.hh"
#include <boost/format.hpp>
#include <boost/program_options.hpp>
@@ -169,7 +168,6 @@ void mainLoop(std::string const& songlist) {
sm.addScreen(new ScreenPractice("Practice", audio, capture));
sm.addScreen(new ScreenConfiguration("Configuration", audio));
sm.addScreen(new ScreenPlayers("Players", audio, database));
- sm.addScreen(new ScreenHiscore("Hiscore", audio, songs, database));
sm.activateScreen("Intro");
sm.flashMessage(_("Main menu..."), 0.0f, 1.0f, 1.0f); window.blank(); sm.drawFlashMessage(); window.swap();
sm.updateScreen(); // exit/enter, any exception is fatal error
diff --git a/game/screen_hiscore.cc b/game/screen_hiscore.cc
deleted file mode 100644
index 424aed5..0000000
--- a/game/screen_hiscore.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-#include "screen_hiscore.hh"
-
-#include "configuration.hh"
-#include "audio.hh"
-#include "fs.hh"
-#include "util.hh"
-#include "database.hh"
-#include "joystick.hh"
-#include "i18n.hh"
-
-#include <iostream>
-#include <sstream>
-#include <boost/format.hpp>
-
-ScreenHiscore::ScreenHiscore(std::string const& name, Audio& audio, Songs& songs, Database& database):
- ScreenSongs(name, audio, songs, database), m_database(database), m_players(database.m_players)
-{
- m_players.setAnimMargins(5.0, 5.0);
-}
-
-void ScreenHiscore::enter() {
- 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()));
- m_score_text[3].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
- m_player_icon.reset(new Surface(getThemePath("sing_pbox.svg")));
-
- // m_emptyCover.reset(new Surface(getThemePath("no_person.svg"))); // TODO use persons head
-
- m_search.text.clear();
- m_players.setFilter(m_search.text);
-
- ScreenSongs::enter();
-}
-
-void ScreenHiscore::exit() {
- m_player_icon.reset();
- m_score_text[0].reset();
- m_score_text[1].reset();
- m_score_text[2].reset();
- m_score_text[3].reset();
-
- ScreenSongs::exit();
-}
-
-void ScreenHiscore::activateNextScreen() {
- ScreenManager* sm = ScreenManager::getSingletonPtr();
- sm->activateScreen("Songs");
-}
-
-void ScreenHiscore::manageEvent(SDL_Event event) {
- input::NavButton nav(input::getNav(event));
- if (nav == input::CANCEL || nav == input::START) activateNextScreen();
- else if (nav == input::PAUSE) m_audio.togglePause();
-}
-
-/**Draw the scores in the bottom*/
-void ScreenHiscore::drawScores() {
- // Score display
- {
- unsigned int i = 0;
- for (std::list<Player>::const_iterator p = m_database.cur.begin(); p != m_database.cur.end(); ++p, ++i) {
- float act = p->activity();
- if (act == 0.0f) continue;
- glColor4f(p->m_color.r, p->m_color.g, p->m_color.b,act);
- m_player_icon->dimensions.left(-0.5 + 0.01 + 0.25 * i).fixedWidth(0.075)
- .screenBottom(-0.025);
- m_player_icon->draw();
- m_score_text[i%4]->render((boost::format("%04d") % p->getScore()).str());
- m_score_text[i%4]->dimensions().middle(-0.350 + 0.01 + 0.25 * i).fixedHeight(0.075)
- .screenBottom(-0.025);
- m_score_text[i%4]->draw();
- glColor4f(1.0, 1.0, 1.0, 1.0);
- }
- }
-}
-
-void ScreenHiscore::draw() {
- ScreenSharedInfo info;
- info.videoGap = 0.0;
-
- ScreenSongs::drawMultimedia();
- ScreenSongs::updateMultimedia(*m_song, info);
-
- std::ostringstream oss_song, oss_order;
-
- // Format the player information text
- oss_song << _("Hiscore for ") << m_song->title << "\n";
-
- m_database.queryPerSongHiscore(oss_order, m_song);
-
- // Draw song and order texts
- theme->song.draw(oss_song.str());
- theme->order.draw(oss_order.str());
-
- ScreenSongs::stopMultimedia(info);
-}
-
diff --git a/game/screen_hiscore.hh b/game/screen_hiscore.hh
deleted file mode 100644
index 0a0a5c2..0000000
--- a/game/screen_hiscore.hh
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include <boost/scoped_ptr.hpp>
-#include "animvalue.hh"
-#include "cachemap.hh"
-#include "opengl_text.hh"
-#include "screen.hh"
-#include "surface.hh"
-#include "textinput.hh"
-#include "theme.hh"
-#include "video.hh"
-
-#include "screen_songs.hh"
-
-class Song;
-class Songs;
-class Audio;
-class Players;
-class Database;
-
-/// song chooser screen
-class ScreenHiscore : public ScreenSongs {
- public:
- /// constructor: songs is just used to pass to ScreenSongs
- ScreenHiscore(std::string const& name, Audio& audio, Songs& songs, Database& database);
-
- void enter();
- void exit();
- void activateNextScreen();
-
- void manageEvent(SDL_Event event);
- void draw();
- void drawScores();
-
- void setSong (boost::shared_ptr<Song> song_)
- {
- m_song = song_;
- }
-
- private:
- Database& m_database;
- Players& m_players;
- boost::scoped_ptr<Surface> m_player_icon;
- boost::scoped_ptr<SvgTxtThemeSimple> m_score_text[4];
- boost::shared_ptr<Song> m_song;
-};
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index 4a057b3..6d7e473 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -77,10 +77,12 @@ void ScreenSongs::manageEvent(SDL_Event event) {
return;
} else if (show_hiscores) {
if (nav == input::CANCEL || m_songs.empty()) show_hiscores = false;
- else if ((nav == input::UP)&&(hiscore_start_pos)) hiscore_start_pos--;
+ else if ((nav == input::UP)&&(hiscore_start_pos > 0)) hiscore_start_pos--;
else if (nav == input::DOWN) hiscore_start_pos++;
- else if (nav == input::LEFT) m_songs.advance(-1);
- else if (nav == input::RIGHT) m_songs.advance(1);
+ else if ((nav == input::MOREUP)&&(hiscore_start_pos > 4)) hiscore_start_pos -= 5;
+ else if (nav == input::MOREDOWN) hiscore_start_pos += 5;
+ else if (nav == input::LEFT) { m_songs.advance(-1); hiscore_start_pos=0; }
+ else if (nav == input::RIGHT) { m_songs.advance(1); hiscore_start_pos=0; }
else if (nav == input::START) {}; // TODO change hiscore type listed (all, just vocals, guitar easy, guitar medium, guitar hard, guit
return;
} else if (nav == input::CANCEL) {
@@ -100,16 +102,18 @@ void ScreenSongs::manageEvent(SDL_Event event) {
SDL_keysym keysym = event.key.keysym;
int key = keysym.sym;
SDLMod mod = event.key.keysym.mod;
- if (key == SDLK_r && mod & KMOD_CTRL) { m_songs.reload(); m_songs.setFilter(m_search.text); }
- if (!m_jukebox && m_search.process(keysym)) m_songs.setFilter(m_search.text);
- if (key == SDLK_F5) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 8); // Vocals
- if (key == SDLK_F6) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 4); // Guitars
- if (key == SDLK_F7) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 2); // Drums
- if (key == SDLK_F8) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 1); // Dance
- // The rest are only available when there are songs available
- else if (m_songs.empty()) return;
- else if (!m_jukebox && key == SDLK_F4) m_jukebox = true;
- else if (key == SDLK_END) show_hiscores ? show_hiscores = false : show_hiscores = true;
+ if (!show_hiscores) {
+ if (key == SDLK_r && mod & KMOD_CTRL) { m_songs.reload(); m_songs.setFilter(m_search.text); }
+ if (!m_jukebox && m_search.process(keysym)) m_songs.setFilter(m_search.text);
+ if (key == SDLK_F5) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 8); // Vocals
+ if (key == SDLK_F6) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 4); // Guitars
+ if (key == SDLK_F7) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 2); // Drums
+ if (key == SDLK_F8) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 1); // Dance
+ // The rest are only available when there are songs available
+ else if (m_songs.empty()) return;
+ else if (!m_jukebox && key == SDLK_F4) m_jukebox = true;
+ else if (key == SDLK_END) show_hiscores ? show_hiscores = false : show_hiscores = true;
+ } else if (key == SDLK_END) show_hiscores ? show_hiscores = false : show_hiscores = true;
}
}
|