|
From: Markus R. <god...@us...> - 2009-07-29 15:35:32
|
Module: performous
Branch: master
Commit: 15244b3ab9ad86db747e6ad47dc6154ba368ebbf
Author: Markus Raab <un...@ma...>
Date: Fri Jul 24 17:00:10 2009 +0200
people are displayed!
very relaxed filtering system
---
game/players.cc | 35 ++++++++++++++++++++++++++---------
game/players.hh | 9 +++++++--
game/screen_players.cc | 11 ++++++++++-
3 files changed, 43 insertions(+), 12 deletions(-)
diff --git a/game/players.cc b/game/players.cc
index 3b70fe1..c9830d3 100644
--- a/game/players.cc
+++ b/game/players.cc
@@ -4,11 +4,20 @@
#include <boost/regex.hpp>
Players::Players(std::string filename):
- m_filename(filename)
-{}
+ m_players(),
+ m_filtered(),
+ m_filename(filename),
+ m_filter(),
+ math_cover()
+{
+ load();
+ m_filtered = m_players;
+}
Players::~Players()
-{}
+{
+ save();
+}
void Players::load()
{
@@ -31,10 +40,14 @@ void Players::save()
}
}
-void Players::addPlayer (std::string name)
+void Players::addPlayer (std::string const& name)
{
PlayerItem pi;
pi.name = name;
+
+ players_t::const_iterator it = std::find(m_players.begin(), m_players.end(), pi);
+ if (it != m_players.end()) return; // dont do anything, player exists
+
m_players.push_back(pi);
}
@@ -45,6 +58,13 @@ void Players::setFilter(std::string const& val) {
}
void Players::filter_internal() {
+ if (m_filter == "")
+ {
+ // without filter get all names
+ m_filtered = m_players;
+ return;
+ }
+
try {
players_t filtered;
for (players_t::const_iterator it = m_players.begin(); it != m_players.end(); ++it) {
@@ -54,7 +74,7 @@ void Players::filter_internal() {
} catch (...) {
players_t(m_players.begin(), m_players.end()).swap(m_filtered); // Invalid regex => copy everything
}
- // TODO: reset images
+ math_cover.reset();
}
/*
@@ -66,15 +86,12 @@ int main(int argc, char** argv)
std::string filter = argv[1];
Players p("players.txt");
- p.load();
- // p.addPlayer(name);
+ p.addPlayer("hubert");
p.setFilter(filter);
for (size_t i=0; i<p.size(); i++)
{
std::cout << p[i].name << std::endl;
}
-
- p.save();
}
*/
diff --git a/game/players.hh b/game/players.hh
index 3979d3c..e45ea59 100644
--- a/game/players.hh
+++ b/game/players.hh
@@ -18,6 +18,11 @@ struct PlayerItem
std::string picture; /// a path to a picture shown
std::map<std::string, int> scores; /// map between a Song and the highest score the Player achieved
*/
+
+ bool operator== (PlayerItem const& pi) const
+ {
+ return name == pi.name;
+ }
};
/**A collection of all Players.
@@ -47,7 +52,7 @@ class Players
load();
}
void save();
- void addPlayer (std::string name);
+ void addPlayer (std::string const& name);
/// advances to next player
void advance(int diff) {
@@ -61,7 +66,7 @@ class Players
PlayerItem operator[](std::size_t pos) { return m_filtered[pos]; }
PlayerItem operator[](std::size_t pos) const { return m_filtered[pos]; }
/// number of players
- int size() const { return m_filtered.size(); };
+ std::size_t size() const { return m_filtered.size(); };
/// true if empty
int empty() const { return m_filtered.empty(); };
/// filters playerlist by regular expression
diff --git a/game/screen_players.cc b/game/screen_players.cc
index 0a54faa..27166d0 100644
--- a/game/screen_players.cc
+++ b/game/screen_players.cc
@@ -11,11 +11,20 @@ ScreenPlayers::ScreenPlayers(std::string const& name, Audio& audio, Players& pla
{
m_players.setAnimMargins(5.0, 5.0);
m_playTimer.setTarget(getInf()); // Using this as a simple timer counting seconds
+
+ // print all names
+ std::cout << "Constructor of ScreenPlayers" << std::endl;
+ for (size_t i=0; i<m_players.size(); i++)
+ {
+ std::cout << "Name " << i << ": " << m_players[i].name << std::endl;
+ }
}
void ScreenPlayers::enter() {
+ std::cout << "Entered ScreenPlayers" << std::endl;
+
theme.reset(new ThemeSongs());
- m_emptyCover.reset(new Surface(getThemePath("no_cover.svg")));
+ m_emptyCover.reset(new Surface(getThemePath("no_cover.svg"))); // TODO use persons head
m_search.text.clear();
m_players.setFilter(m_search.text);
m_audio.fadeout();
|