You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(288) |
Aug
(119) |
Sep
(31) |
Oct
(59) |
Nov
(458) |
Dec
(359) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(268) |
Feb
(26) |
Mar
(36) |
Apr
(48) |
May
(119) |
Jun
(37) |
Jul
(173) |
Aug
(429) |
Sep
(137) |
Oct
(156) |
Nov
(59) |
Dec
(45) |
| 2011 |
Jan
(398) |
Feb
(257) |
Mar
(49) |
Apr
(5) |
May
(34) |
Jun
(11) |
Jul
(38) |
Aug
(12) |
Sep
(1) |
Oct
(49) |
Nov
(5) |
Dec
(10) |
| 2012 |
Jan
(21) |
Feb
(32) |
Mar
(20) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(173) |
Aug
|
Sep
(25) |
Oct
(6) |
Nov
(44) |
Dec
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-02-04 03:11:08
|
Module: web
Branch: master
Commit: 91a12a3998e04a2853b17dc3653214b1558ad70d
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Feb 4 05:03:37 2010 +0200
CSS3 box shadow
---
htdocs-binary/style.css | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/htdocs-binary/style.css b/htdocs-binary/style.css
index c029295..3ce1b8a 100644
--- a/htdocs-binary/style.css
+++ b/htdocs-binary/style.css
@@ -74,12 +74,13 @@ h3 {
/* page */
#sitebox {
width: 800px;
- /* FIXME: this is not CSS valid */
- float: center;
- margin: 0 auto;
- border: 4px solid black;
- background: #f0f0f0;
+ margin: 40px auto 40px auto;
+ border: 0;
padding: 0;
+ background: #f0f0f0;
+ box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ -webkit-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ -moz-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
}
/* banner */
#title {
|
|
From: Tapio V. <aa...@us...> - 2010-02-03 20:41:34
|
Module: performous
Branch: master
Commit: 38e443b17a5285a8934731072a01876bf6598f6a
Author: Tapio Vierros <tap...@gm...>
Date: Wed Feb 3 22:40:25 2010 +0200
Tweaks to backgrounds/cover loading/guessing.
---
game/screen_sing.cc | 22 +++++++++++++---------
game/songparser.hh | 9 +++++++--
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 40745a7..57ac1f9 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -45,25 +45,29 @@ void ScreenSing::enter() {
}
// Notify about broken tracks
if (m_song->b0rkedTracks) ScreenManager::getSingletonPtr()->flashMessage(_("Song contains broken tracks!"));
+ // Load background
bool foundbg = false;
- if (!m_song->background.empty()) {
+ if (!m_song->background.empty()) { // Load bg image
try {
m_background.reset(new Surface(m_song->path + m_song->background));
foundbg = true;
} catch (std::exception& e) {
+ m_song->background = "";
std::cerr << e.what() << std::endl;
}
}
- if (!m_song->video.empty() && config["graphic/video"].b()) {
+ if (!m_song->video.empty() && config["graphic/video"].b()) { // Load video
m_video.reset(new Video(m_song->path + m_song->video, m_song->videoGap));
- foundbg = true;
}
- if (foundbg == false) {
- try {
- std::string bgpath = m_backgrounds.getRandom();
- m_background.reset(new Surface(bgpath));
- } catch (std::exception& e) {
- std::cerr << e.what() << std::endl;
+ if (!foundbg) { // Use random bg if specified fails (also for tracks with video)
+ for (int i = 1; i <= 2; ++i) { // Try two times in case first is b0rked
+ try {
+ std::string bgpath = m_backgrounds.getRandom();
+ m_background.reset(new Surface(bgpath));
+ break;
+ } catch (std::exception& e) {
+ std::cerr << e.what() << std::endl;
+ }
}
}
//FIXME: this line crashes under windows. Have to fix. At moment, just don't use it on Windows
diff --git a/game/songparser.hh b/game/songparser.hh
index 14f3f37..caf9d73 100644
--- a/game/songparser.hh
+++ b/game/songparser.hh
@@ -64,8 +64,13 @@ class SongParser {
throw SongParserException(e.what(), m_linenum);
}
+ // Remove bogus entries
+ if (!boost::filesystem::exists(m_song.path + m_song.cover)) m_song.cover = "";
+ if (!boost::filesystem::exists(m_song.path + m_song.background)) m_song.background = "";
+ if (!boost::filesystem::exists(m_song.path + m_song.video)) m_song.video = "";
+
// In case no images/videos were specified, try to guess them
- if (m_song.cover.empty() || (m_song.background.empty() && m_song.video.empty())) {
+ if (m_song.cover.empty() || m_song.background.empty() || m_song.video.empty()) {
boost::regex coverfile("((cover|album|label|\\[co\\])\\.(png|jpeg|jpg|svg))$", boost::regex_constants::icase);
boost::regex backgroundfile("((background|bg||\\[bg\\])\\.(png|jpeg|jpg|svg))$", boost::regex_constants::icase);
boost::regex videofile("(.*\\.(avi|mpg|mpeg|flv|mov|mp4))$", boost::regex_constants::icase);
@@ -78,7 +83,7 @@ class SongParser {
m_song.cover = name;
} else if (m_song.background.empty() && regex_match(name.c_str(), match, backgroundfile)) {
m_song.background = name;
- } else if (m_song.background.empty() && m_song.video.empty() && regex_match(name.c_str(), match, videofile)) {
+ } else if (m_song.video.empty() && regex_match(name.c_str(), match, videofile)) {
m_song.video = name;
}
}
|
|
From: Tapio V. <aa...@us...> - 2010-02-03 16:15:23
|
Module: performous
Branch: master
Commit: 0a5cd180d8fb75303ad19681801f7593005e512a
Author: Tapio Vierros <tap...@gm...>
Date: Wed Feb 3 18:12:23 2010 +0200
Fix flawed BRE completion detection.
---
game/guitargraph.cc | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index ee8cccb..76c7b3d 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -438,7 +438,7 @@ void GuitarGraph::drumHit(double time, int fret) {
m_streak += 1;
if (m_streak > m_longestStreak) m_longestStreak = m_streak;
// Handle Big Rock Ending scoring
- if (m_drumfillScore > 0 && *best == m_chords.back()) endBRE();
+ if (m_drumfillHits > 0 && *best == m_chords.back()) endBRE();
}
m_correctness.setTarget(double(m_chordIt->status) / m_chordIt->polyphony, true);
}
@@ -450,7 +450,7 @@ void GuitarGraph::guitarPlay(double time, input::Event const& ev) {
// Handle Big Rock Ending
if (m_dfIt != m_drumfills.end() && time >= m_dfIt->begin - maxTolerance
&& time <= m_dfIt->end + maxTolerance) {
- if (!ev.type == input::Event::PRESS) return;
+ if (ev.type != input::Event::PRESS) return;
m_drumfillHits += 1;
m_flames[ev.button].push_back(AnimValue(0.0, flameSpd));
m_flames[ev.button].back().setTarget(1.0);
@@ -525,7 +525,7 @@ void GuitarGraph::guitarPlay(double time, input::Event const& ev) {
}
}
// Handle Big Rock Ending scoring
- if (m_drumfillScore > 0 && *best == m_chords.back()) endBRE();
+ if (m_drumfillHits > 0 && *best == m_chords.back()) endBRE();
}
}
|
|
From: Tapio V. <aa...@us...> - 2010-02-03 15:09:55
|
Module: performous
Branch: master
Commit: c740f3582876c9da95553c974e2b93e18fa8478f
Author: Tapio Vierros <tap...@gm...>
Date: Wed Feb 3 17:08:30 2010 +0200
Move instrument score display down a bit (lyrics overlapped in widescreen).
---
game/guitargraph.cc | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 2104b82..ee8cccb 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -867,13 +867,13 @@ void GuitarGraph::drawInfo(double time, double offsetX, Dimensions dimensions) {
// Draw scores
glColor4f(0.1f, 0.3f, 1.0f, 0.90f);
m_scoreText->render((boost::format("%04d") % getScore()).str());
- m_scoreText->dimensions().middle(-xcor + offsetX).fixedHeight(h*1.1).screenBottom(-0.32);
+ m_scoreText->dimensions().middle(-xcor + offsetX).fixedHeight(h*1.1).screenBottom(-0.28);
m_scoreText->draw();
// Draw streak counter
glColor4f(0.9f, 0.9f, 0.05f, 0.95f);
m_streakText->render(boost::lexical_cast<std::string>(unsigned(m_streak)) + "/"
+ boost::lexical_cast<std::string>(unsigned(m_longestStreak)));
- m_streakText->dimensions().middle(xcor + offsetX).fixedHeight(h).screenBottom(-0.32);
+ m_streakText->dimensions().middle(xcor + offsetX).fixedHeight(h).screenBottom(-0.28);
m_streakText->draw();
}
// Is Starpower ready?
|
|
From: Tapio V. <aa...@us...> - 2010-02-03 15:00:47
|
Module: performous
Branch: master
Commit: c99c59d509c558d52d73cac9f18e1d4271f44d6f
Author: Tapio Vierros <tap...@gm...>
Date: Wed Feb 3 16:58:17 2010 +0200
Require minimum length of 6s for solos in order to avoid starpower sections.
---
game/guitargraph.cc | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index d4f1b9f..2104b82 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -985,12 +985,17 @@ void GuitarGraph::updateChords() {
// Solos
NoteMap const& nm = m_track_index->second->nm;
- NoteMap::const_iterator it = nm.find(103); // 103 = Expert Solo - used for every difficulty
- if (it != nm.end()) m_solos = it->second;
+ NoteMap::const_iterator solotrack = nm.find(103); // 103 = Expert Solo - used for every difficulty
+ if (solotrack != nm.end()) {
+ for (Durations::const_iterator it = solotrack->second.begin(); it != solotrack->second.end(); ++it) {
+ // Require at least 6s length in order to avoid starpower sections
+ if (it->end - it->begin >= 6.0) m_solos.push_back(*it);
+ }
+ }
// Drum fills
- it = nm.find(124); // 124 = drum fills (actually 120-124, but one is enough)
- if (it != nm.end()) {
- m_drumfills = it->second;
+ NoteMap::const_iterator dfTrack = nm.find(124); // 124 = drum fills (actually 120-124, but one is enough)
+ if (dfTrack != nm.end()) {
+ m_drumfills = dfTrack->second;
// Big Rock Ending scoring (single hold note)
if (!m_drums || m_song.hasBRE)
m_scoreFactor += 50.0 * (m_drumfills.back().end - m_drumfills.back().begin);
|
|
From: Yoda-JM <yo...@us...> - 2010-02-01 11:28:53
|
Module: web Branch: master Commit: 85739e0f81f84507bae0816cfd6298b8baa219d5 Author: Vincent Le Ligeour <yo...@us...> Date: Mon Feb 1 12:28:36 2010 +0100 Added Mandriva download link --- htdocs-source/install.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/htdocs-source/install.txt b/htdocs-source/install.txt index 4055720..5cba69b 100644 --- a/htdocs-source/install.txt +++ b/htdocs-source/install.txt @@ -19,6 +19,7 @@ Song downloads can be found on the separate <strong>songs page</strong>. Debian: <strong>performous</strong> in official repositories OpenSUSE: <a href="http://packman.links2linux.de/package/Performous/">packages</a> ArchLinux: <a href="http://aur.archlinux.org/packages.php?ID=24623">packages</a> + Mandriva 2010.0: <a href="http://ftp.blogdrake.net/mandriva/2010.0/update/i586/Performous-0.5.1-01bdk2010.0.i586.rpm">i586</a> <a href="http://ftp.blogdrake.net/mandriva/2010.0/update/x86_64/Performous-0.5.1-01bdk2010.0.x86_64.rpm">x86_64</a> If you get an error about unsatisfied dependencies on Ubuntu, you may have to enable the community-supported software source <strong>universe</strong> via <strong>System | Administration | Software Sources</strong>. Most users already have this enabled. |
|
From: Yoda-JM <yo...@us...> - 2010-02-01 11:07:14
|
Module: performous
Branch: master
Commit: 0559ad2d1e6853b0f88d98d48e0d95135a404734
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Feb 1 12:06:22 2010 +0100
Fixed some compilation warnings
---
tools/gh_fsb/fsbext.c | 25 +++++++++++++------------
tools/gh_fsb/show_dump.h | 1 +
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/tools/gh_fsb/fsbext.c b/tools/gh_fsb/fsbext.c
index 894edd7..1d46227 100644
--- a/tools/gh_fsb/fsbext.c
+++ b/tools/gh_fsb/fsbext.c
@@ -828,7 +828,7 @@ void fr_FSOUND_FSB_HEADER_FSB1(FILE *fd, FSOUND_FSB_HEADER_FSB1 *fh) {
" fh->numsamples %08x\n"
" fh->datasize %08x\n"
" fh->dunno_null %08x\n",
- (u32)ftell(fd) - sizeof(*fh),
+ (u32)(ftell(fd) - sizeof(*fh)),
fh->id,
fh->numsamples,
fh->datasize,
@@ -856,7 +856,7 @@ void fr_FSOUND_FSB_HEADER_FSB2(FILE *fd, FSOUND_FSB_HEADER_FSB2 *fh) {
" fh->numsamples %08x\n"
" fh->shdrsize %08x\n"
" fh->datasize %08x\n",
- (u32)ftell(fd) - sizeof(*fh),
+ (u32)(ftell(fd) - sizeof(*fh)),
fh->id,
fh->numsamples,
fh->shdrsize,
@@ -888,7 +888,7 @@ void fr_FSOUND_FSB_HEADER_FSB3(FILE *fd, FSOUND_FSB_HEADER_FSB3 *fh) {
" fh->datasize %08x\n"
" fh->version %08x\n"
" fh->mode %08x\n",
- (u32)ftell(fd) - sizeof(*fh),
+ (u32)(ftell(fd) - sizeof(*fh)),
fh->id,
fh->numsamples,
fh->shdrsize,
@@ -924,7 +924,7 @@ void fr_FSOUND_FSB_HEADER_FSB4(FILE *fd, FSOUND_FSB_HEADER_FSB4 *fh) {
" fh->datasize %08x\n"
" fh->version %08x\n"
" fh->mode %08x\n",
- (u32)ftell(fd) - sizeof(*fh),
+ (u32)(ftell(fd) - sizeof(*fh)),
fh->id,
fh->numsamples,
fh->shdrsize,
@@ -968,8 +968,8 @@ void fr_FSOUND_FSB_SAMPLE_HEADER_1(FILE *fd, FSOUND_FSB_SAMPLE_HEADER_1 *fh) {
" fh->mode %08x\n"
" fh->loopstart %08x\n"
" fh->loopend %08x\n",
- (u32)ftell(fd) - sizeof(*fh),
- sizeof(fh->name), fh->name,
+ (u32)(ftell(fd) - sizeof(*fh)),
+ (u32)sizeof(fh->name), fh->name,
fh->lengthsamples,
fh->lengthcompressedbytes,
fh->deffreq,
@@ -1019,9 +1019,9 @@ void fr_FSOUND_FSB_SAMPLE_HEADER_2(FILE *fd, FSOUND_FSB_SAMPLE_HEADER_2 *fh) {
" fh->defpan %04x\n"
" fh->defpri %04x\n"
" fh->numchannels %04x\n",
- (u32)ftell(fd) - sizeof(*fh),
+ (u32)(ftell(fd) - sizeof(*fh)),
fh->size,
- sizeof(fh->name), fh->name,
+ (u32)sizeof(fh->name), fh->name,
fh->lengthsamples,
fh->lengthcompressedbytes,
fh->loopstart,
@@ -1081,9 +1081,9 @@ void fr_FSOUND_FSB_SAMPLE_HEADER_3_1(FILE *fd, FSOUND_FSB_SAMPLE_HEADER_3_1 *fh)
" fh->varfreq %08x\n"
" fh->varvol %04x\n"
" fh->varpan %04x\n",
- (u32)ftell(fd) - sizeof(*fh),
+ (u32)(ftell(fd) - sizeof(*fh)),
fh->size,
- sizeof(fh->name), fh->name,
+ (u32)sizeof(fh->name), fh->name,
fh->lengthsamples,
fh->lengthcompressedbytes,
fh->loopstart,
@@ -1118,7 +1118,7 @@ void fr_FSOUND_FSB_SAMPLE_HEADER_BASIC(FILE *fd, FSOUND_FSB_SAMPLE_HEADER_BASIC
"- %08x fr_FSOUND_FSB_SAMPLE_HEADER_BASIC:\n"
" fh->lengthsamples %08x\n"
" fh->lengthcompressedbytes %08x\n",
- (u32)ftell(fd) - sizeof(*fh),
+ (u32)(ftell(fd) - sizeof(*fh)),
fh->lengthsamples,
fh->lengthcompressedbytes);
}
@@ -1511,7 +1511,7 @@ void add_extension(u8 *fname, int add, int extract, int add_guess) {
} else {
oldext = strrchr(fname, '.');
if(oldext) {
- sprintf(oldext_buff, "%.*s", sizeof(oldext_buff), oldext);
+ sprintf(oldext_buff, "%.*s", (u32)sizeof(oldext_buff), oldext);
end = oldext;
oldext = oldext_buff;
} else {
@@ -1645,6 +1645,7 @@ FILE *try_fsbdec(FILE *fd) {
" it's possible to see part of the plain-text password in the encrypted file!\n"
" ", HEXSIZE);
fflush(stdin);
+ // TODO: test return value
fgets(key, sizeof(key), stdin);
delimit(key);
if(strcmp(key, "?")) break;
diff --git a/tools/gh_fsb/show_dump.h b/tools/gh_fsb/show_dump.h
index 7548eaf..4336c6d 100644
--- a/tools/gh_fsb/show_dump.h
+++ b/tools/gh_fsb/show_dump.h
@@ -62,6 +62,7 @@ void show_dump(unsigned char *data, unsigned int len, FILE *stream) {
}
*bytes++ = '\n';
+ // TODO: test return value
fwrite(buff, bytes - buff, 1, stream);
}
}
|
|
From: Yoda-JM <yo...@us...> - 2010-02-01 11:07:12
|
Module: performous
Branch: master
Commit: b4af5af655041030a839d7f89970d135c12fc6c6
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Jan 31 11:46:12 2010 +0100
Fixed typo in performous ebuild
---
.../games-arcade/performous/performous-9999.ebuild | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/portage-overlay/games-arcade/performous/performous-9999.ebuild b/portage-overlay/games-arcade/performous/performous-9999.ebuild
index 60dbada..e1f28cf 100644
--- a/portage-overlay/games-arcade/performous/performous-9999.ebuild
+++ b/portage-overlay/games-arcade/performous/performous-9999.ebuild
@@ -64,11 +64,11 @@ src_unpack() {
src_configure() {
local mycmakeargs="
- $(cmake-utils_use alsa LIBDA_PLUGIN_ALSA)
- $(cmake-utils_use jack LIBDA_PLUGIN_JACK)
- $(cmake-utils_use gstreamer LIBDA_PLUGIN_GSTREAMER)
- $(cmake-utils_use portaudio LIBDA_PLUGIN_PORTAUDIO)
- $(cmake-utils_use pulseaudio LIBDA_PLUGIN_PULSEAUDIO)
+ $(cmake-utils_use alsa LibDA_PLUGIN_ALSA)
+ $(cmake-utils_use jack LibDA_PLUGIN_JACK)
+ $(cmake-utils_use gstreamer LibDA_PLUGIN_GSTREAMER)
+ $(cmake-utils_use portaudio LibDA_PLUGIN_PORTAUDIO)
+ $(cmake-utils_use pulseaudio LibDA_PLUGIN_PULSEAUDIO)
$(cmake-utils_use_enable tools TOOLS)
$(cmake-utils_use_enable editor EDITOR)
-DCMAKE_INSTALL_PREFIX=${GAMES_PREFIX}
|
|
From: Tapio V. <aa...@us...> - 2010-01-31 19:59:23
|
Module: performous Branch: master Commit: 68741cc4ef45d7abb5ebe7b890dc2406f0d2dc7b Author: Tapio Vierros <tap...@gm...> Date: Sun Jan 31 21:58:30 2010 +0200 Attempt to make guitar and bass necks a bit more interesting. --- themes/default/bassneck.svg | 41 ++++++++++++------------ themes/default/guitarneck.svg | 69 ++++++++++++++++++++--------------------- 2 files changed, 55 insertions(+), 55 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-01-31 08:52:01
|
Module: performous
Branch: master
Commit: ef10179450b354abf67c820a44218e8832191f30
Author: Tapio Vierros <tap...@gm...>
Date: Sun Jan 31 10:50:43 2010 +0200
Allow 2D notes to live another day.
---
game/guitargraph.cc | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index f2a0b07..d4f1b9f 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -777,12 +777,10 @@ void GuitarGraph::drawNote(int fret, glutil::Color c, float tBeg, float tEnd, fl
m_fretObj.draw(x, y, 0.0f);
y -= fretWid;
} else { // 2D
- UseTexture tblock(m_tail);
- glutil::Begin block(GL_TRIANGLE_STRIP);
c.a = time2a(tBeg); glColor4fv(c);
- vertexPair(x, y, c, 1.0f);
+ m_button.dimensions.center(yBeg).middle(x);
+ m_button.draw();
y -= 2 * fretWid;
- vertexPair(x, y, c, 0.5f);
}
// Render the middle
bool doanim = hit || hitAnim > 0; // Enable glow?
|
|
From: Tapio V. <aa...@us...> - 2010-01-31 08:51:58
|
Module: performous
Branch: master
Commit: 4033c9696806fde58a8325e70832c0ee54be836a
Author: Tapio Vierros <tap...@gm...>
Date: Sun Jan 31 10:45:56 2010 +0200
Fix guitar holds sometimes falsely releasing.
---
game/guitargraph.cc | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 487f538..f2a0b07 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -314,10 +314,10 @@ void GuitarGraph::endHold(int fret, double time) {
m_events[m_holds[fret] - 1].glow.setTarget(0.0);
m_events[m_holds[fret] - 1].whammy.setTarget(0.0, true);
m_holds[fret] = 0;
- if (time > 0) { // Do we set the relaseTime?
+ if (time > 0) { // Do we set the releaseTime?
// Search for the Chord this hold belongs to
for (Chords::iterator it = m_chords.begin(); it != m_chords.end(); ++it) {
- if (time >= it->begin && time <= it->end) {
+ if (time > it->begin + maxTolerance && time < it->end - maxTolerance) {
it->releaseTimes[fret] = time;
if (it->status < 100 && time >= it->end - maxTolerance)
it->status += 100; // Mark as past note for rewinding
@@ -691,7 +691,7 @@ void GuitarGraph::draw(double time) {
it->hitAnim[fret].setTarget(1.0);
// Call the actual note drawing function
drawNote(fret, c, tBeg, tEnd, whammy, it->tappable, glow > 0.5f, it->hitAnim[fret].get(),
- it->releaseTimes[fret] > 0.0 ? it->releaseTimes[fret] - time : 0.0);
+ it->releaseTimes[fret] > 0.0 ? it->releaseTimes[fret] - time : getNaN());
}
}
} //< disable lighting
@@ -765,7 +765,7 @@ void GuitarGraph::drawNote(int fret, glutil::Color c, float tBeg, float tEnd, fl
// Long notes
if (yBeg - 2 * fretWid >= yEnd) {
// A hold is released? Let it go...
- if (releaseTime != 0.0 && tEnd - releaseTime > 0.1) yBeg = time2y(releaseTime);
+ if (releaseTime == releaseTime && tEnd - releaseTime > 0.1) yBeg = time2y(releaseTime);
// Short note? Render minimum renderable length
if (yEnd > yBeg - 3 * fretWid) yEnd = yBeg - 3 * fretWid;
// Render the ring
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-01-31 02:20:20
|
Module: performous Branch: master Commit: bee402888811a01ea53abb4dcdf3f7611518be9c Author: Lasse Karkkainen <tro...@tr...> Date: Sun Jan 31 04:20:06 2010 +0200 Make ss_extract default to no video compression --- tools/ss_extract.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp index 908f637..b35b3ce 100644 --- a/tools/ss_extract.cpp +++ b/tools/ss_extract.cpp @@ -30,7 +30,7 @@ int sleepts = -1; xmlpp::Node::PrefixNsMap nsmap; std::string ns; const bool video = true; -const bool mkvcompress = true; +const bool mkvcompress = false; const bool oggcompress = true; // LibXML2 logging facility |
|
From: Tapio V. <aa...@us...> - 2010-01-30 22:40:14
|
Module: performous Branch: master Commit: 469806f77c8b3e759812f8fb16a141b44427306b Author: Tapio Vierros <tap...@gm...> Date: Sun Jan 31 00:15:24 2010 +0200 Separate graphics and drawing for drum fills. --- game/guitargraph.cc | 34 +++- game/guitargraph.hh | 2 + themes/default/tail_drumfill.svg | 375 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 403 insertions(+), 8 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-01-30 22:40:00
|
Module: performous Branch: master Commit: 2c6ac0325bce33a5671809819b67da80710b1e67 Author: Tapio Vierros <tap...@gm...> Date: Sat Jan 30 23:22:47 2010 +0200 Pimped guitar holds. * Separate normal/glow graphics * Animated glow * Breaks 2D notes --- game/guitargraph.cc | 34 +++-- game/guitargraph.hh | 3 +- themes/default/button_l.svg | 120 ---------------- themes/default/tail.svg | 318 ++++++++++++++++++++++++++++++++++++++++++ themes/default/tail_glow.svg | 193 +++++++++++++++++++++++++ 5 files changed, 531 insertions(+), 137 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-01-30 17:57:08
|
Module: performous
Branch: master
Commit: 8a999e625df40e530d7410d6ab9e081a981dbae7
Author: Tapio Vierros <tap...@gm...>
Date: Sat Jan 30 19:55:49 2010 +0200
Don't count dead notes while joining.
---
game/dancegraph.cc | 2 +-
game/guitargraph.cc | 1 +
2 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/game/dancegraph.cc b/game/dancegraph.cc
index 6551dd7..52cfe65 100644
--- a/game/dancegraph.cc
+++ b/game/dancegraph.cc
@@ -199,7 +199,7 @@ void DanceGraph::engine() {
if (time < it->first + it->second) { time = it->first; break; } // Inside stop
time -= it->second;
}
-
+ if (time < m_jointime) m_dead = 0; // Disable dead counting while joining
bool difficulty_changed = false;
// Handle all events
for (input::Event ev; m_input.tryPoll(ev);) {
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 492f0c2..de5c2bf 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -191,6 +191,7 @@ void GuitarGraph::engine() {
}
if (!m_drumfills.empty()) updateDrumFill(time); // Drum Fills / BREs
if (m_starpower.get() > 0.001) m_correctness.setTarget(1.0, true);
+ if (time < m_jointime) m_dead = 0; // Disable dead counting while joining
double whammy = 0;
bool difficulty_changed = false;
// Handle all events
|
|
From: Tapio V. <aa...@us...> - 2010-01-30 17:57:06
|
Module: performous Branch: master Commit: 1a716961b76c85db80f30cd96822ce738b0981bd Author: Tapio Vierros <tap...@gm...> Date: Sat Jan 30 19:44:26 2010 +0200 Somewhat nicer score display for instruments. --- game/guitargraph.cc | 269 ++++++++++++++++++++++++++------------------------ game/guitargraph.hh | 2 + game/screen_sing.cc | 2 +- 3 files changed, 143 insertions(+), 130 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-01-30 15:18:58
|
Module: performous
Branch: master
Commit: d24d365b3d6e53170c939a8b1a58d1588d64d9a1
Author: Tapio Vierros <tap...@gm...>
Date: Sat Jan 30 17:17:53 2010 +0200
Fix stars in singing sometimes disappearing prematurely.
---
game/notegraph.cc | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/game/notegraph.cc b/game/notegraph.cc
index 7ae5fad..5ec0b26 100644
--- a/game/notegraph.cc
+++ b/game/notegraph.cc
@@ -17,12 +17,12 @@ NoteGraph::NoteGraph(Song const& song):
dimensions.stretch(1.0, 0.5); // Initial dimensions, probably overridden from somewhere
m_nlTop.setTarget(m_song.noteMax, true);
m_nlBottom.setTarget(m_song.noteMin, true);
+ for (Notes::const_iterator it = m_song.notes.begin(); it != m_song.notes.end(); ++it)
+ it->accuracy = 0.0; // Reset accuracy
reset();
}
void NoteGraph::reset() {
- for (Notes::const_iterator it = m_song.notes.begin(); it != m_song.notes.end(); ++it)
- it->accuracy = 0.0; // Reset accuracy
m_songit = m_song.notes.begin();
}
|
|
From: Tapio V. <aa...@us...> - 2010-01-30 15:02:16
|
Module: performous Branch: master Commit: 01308790ece5715a7fa917ed703308d55dfc1ea6 Author: Tapio Vierros <tap...@gm...> Date: Sat Jan 30 17:00:57 2010 +0200 Remove duplicate info in a description. --- data/schema.xml | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/data/schema.xml b/data/schema.xml index 8f3e598..f3e1ec1 100644 --- a/data/schema.xml +++ b/data/schema.xml @@ -220,7 +220,7 @@ to save the current settings to XML. <entry name="system/midi_input" type="string" value=""> <locale name="C"> <short>Hardware MIDI input device</short> - <long>Part of sound card name or its number or empty to use the first available device. Used currently for MIDI drum controllers. Empty to select the first available device.</long> + <long>Part of sound card name or its number or empty to use the first available device. Used currently for MIDI drum controllers.</long> </locale> </entry> <entry name="system/path_songs" type="string_list"> |
|
From: Peque <ms...@us...> - 2010-01-30 00:23:25
|
Module: performous
Branch: master
Commit: 8f7098c2d527296c55cdfe734dc0decbba011cba
Author: Miguel Sánchez de León Peque <mi...@vo...>
Date: Sat Jan 30 01:20:30 2010 +0100
Flash messages now have the quality set in configuration for SVG text. Spanish translation updated.
---
game/screenmanager.cc | 3 +-
lang/es.po | 76 ++++++++++++++++++++++++++++--------------------
2 files changed, 46 insertions(+), 33 deletions(-)
diff --git a/game/screenmanager.cc b/game/screenmanager.cc
index f678ebb..f4c2ca2 100644
--- a/game/screenmanager.cc
+++ b/game/screenmanager.cc
@@ -1,11 +1,12 @@
#include "screen.hh"
#include "fs.hh"
+#include "configuration.hh"
#include <stdexcept>
template<> ScreenManager* Singleton<ScreenManager>::ms_Singleton = NULL;
-ScreenManager::ScreenManager(Window& window): window(window), 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"), config["graphic/text_lod"].f()) {
m_textMessage.dimensions.middle().screenTop(0.05);
}
diff --git a/lang/es.po b/lang/es.po
index b620b96..060f8fb 100644
--- a/lang/es.po
+++ b/lang/es.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Performous\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-24 16:50+0100\n"
+"POT-Creation-Date: 2010-01-27 18:47+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Miguel Sánchez de León Peque <peq...@ho...>\n"
"Language-Team: \n"
@@ -101,88 +101,100 @@ msgstr "Introduce texto para filtrar o crear un nuevo jugador."
msgid "Search Text:"
msgstr "Buscar texto:"
-#: ../game/songs.cc:192
+#: ../game/songs.cc:195
msgid "random order"
msgstr "ordenadas aleatoriamente"
-#: ../game/songs.cc:193
+#: ../game/songs.cc:196
msgid "sorted by song"
msgstr "ordenadas por canción"
-#: ../game/songs.cc:194
+#: ../game/songs.cc:197
msgid "sorted by artist"
msgstr "ordenadas por artista"
-#: ../game/songs.cc:195
+#: ../game/songs.cc:198
msgid "sorted by edition"
msgstr "ordenadas por edición"
-#: ../game/songs.cc:196
+#: ../game/songs.cc:199
msgid "sorted by genre"
msgstr "ordenadas por género"
-#: ../game/songs.cc:197
+#: ../game/songs.cc:200
msgid "sorted by path"
msgstr "ordenadas por directorio"
-#: ../game/songs.cc:198
+#: ../game/songs.cc:201
msgid "sorted by language"
msgstr "ordenadas por idioma"
-#: ../game/screen_sing.cc:310
+#: ../game/screen_sing.cc:34
+msgid "Loading song..."
+msgstr "Cargando canción..."
+
+#: ../game/screen_sing.cc:42
+msgid "Song is broken!"
+msgstr "¡Canción defectuosa!"
+
+#: ../game/screen_sing.cc:47
+msgid "Song contains broken tracks!"
+msgstr "¡La canción contiene pistas defectuosas!"
+
+#: ../game/screen_sing.cc:326
msgid " ENTER to skip instrumental break"
-msgstr " \"ENTER\" para pasar la parte instrumental"
+msgstr " ENTER para pasar la parte instrumental"
-#: ../game/screen_sing.cc:311
+#: ../game/screen_sing.cc:327
msgid " Remember to wait for grading!"
msgstr " Recuerda esperar para ser evaluado!"
-#: ../game/screen_sing.cc:399
+#: ../game/screen_sing.cc:415
msgid "No player!"
msgstr "¡No se han encontrado jugadores!"
-#: ../game/screen_sing.cc:408
+#: ../game/screen_sing.cc:424
msgid "Hit singer"
msgstr "Superestrella"
-#: ../game/screen_sing.cc:409
+#: ../game/screen_sing.cc:425
msgid "Lead singer"
msgstr "Vocalista"
-#: ../game/screen_sing.cc:410
-#: ../game/screen_sing.cc:416
-#: ../game/screen_sing.cc:422
+#: ../game/screen_sing.cc:426
+#: ../game/screen_sing.cc:432
+#: ../game/screen_sing.cc:438
msgid "Rising star"
msgstr "Aficionado"
-#: ../game/screen_sing.cc:411
-#: ../game/screen_sing.cc:417
-#: ../game/screen_sing.cc:423
+#: ../game/screen_sing.cc:427
+#: ../game/screen_sing.cc:433
+#: ../game/screen_sing.cc:439
msgid "Amateur"
msgstr "Novato"
-#: ../game/screen_sing.cc:412
-#: ../game/screen_sing.cc:424
+#: ../game/screen_sing.cc:428
+#: ../game/screen_sing.cc:440
msgid "Tone deaf"
msgstr "Sin oÃdo"
-#: ../game/screen_sing.cc:414
+#: ../game/screen_sing.cc:430
msgid "Maniac"
msgstr "ManÃaco"
-#: ../game/screen_sing.cc:415
+#: ../game/screen_sing.cc:431
msgid "Hoofer"
msgstr "Artista"
-#: ../game/screen_sing.cc:418
+#: ../game/screen_sing.cc:434
msgid "Loser"
msgstr "Perdedor"
-#: ../game/screen_sing.cc:420
+#: ../game/screen_sing.cc:436
msgid "Virtuoso"
msgstr "Virtuoso"
-#: ../game/screen_sing.cc:421
+#: ../game/screen_sing.cc:437
msgid "Rocker"
msgstr "Rockero"
@@ -210,11 +222,11 @@ msgstr "¡Captura de pantalla exitosa!"
msgid "Screenshot failed!"
msgstr "¡Captura de pantalla fallida!"
-#: ../game/screen_songs.cc:186
+#: ../game/screen_songs.cc:187
msgid "No songs found!"
msgstr "¡No se encontraron canciones!"
-#: ../game/screen_songs.cc:187
+#: ../game/screen_songs.cc:188
msgid ""
"Visit performous.org\n"
"for free songs"
@@ -222,15 +234,15 @@ msgstr ""
"Visita performous.org\n"
"para descargar canciones gratuitas"
-#: ../game/screen_songs.cc:189
+#: ../game/screen_songs.cc:190
msgid "no songs match search"
msgstr "ninguna canción satisface el criterio de búsqueda"
-#: ../game/screen_songs.cc:197
+#: ../game/screen_songs.cc:198
msgid "(press END to view hiscores)"
msgstr "(presiona FIN para ver las mejores puntuaciones)"
-#: ../game/screen_songs.cc:198
+#: ../game/screen_songs.cc:199
msgid "<type in to search>"
msgstr "<escribe para buscar>"
|
|
From: Tapio V. <aa...@us...> - 2010-01-29 10:39:26
|
Module: performous
Branch: master
Commit: 2b186295bd06fbc631d7f91b3de89a1b29869040
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jan 29 12:34:38 2010 +0200
Drum fill and Big Rock Ending tweaks.
* Scoring
* Must hit a special note after a drum fill
* Must hit the final chord after BRE
---
game/guitargraph.cc | 64 ++++++++++++++++++++++++++++++++++++++++++--------
game/guitargraph.hh | 4 ++-
2 files changed, 56 insertions(+), 12 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 7838f83..d851043 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -81,6 +81,7 @@ GuitarGraph::GuitarGraph(Audio& audio, Song const& song, bool drums, int number)
m_bigStreak(),
m_jointime(getNaN()),
m_dead(),
+ m_drumfillHits(),
m_drumfillScore()
{
// Copy all tracks of supported types (either drums or non-drums) to m_track_map
@@ -335,17 +336,31 @@ void GuitarGraph::fail(double time, int fret) {
endStreak();
}
+/// Ends the Big Rock Ending and gives score if appropriate
+void GuitarGraph::endBRE() {
+ float l = m_dfIt->end - m_dfIt->begin;
+ // Completion requires ~ 6 hits per second
+ if (m_drumfillHits / l >= 6.0) {
+ m_score += m_drumfillScore; // Add score from overlapped notes if there were any
+ m_score += 50.0 * l; // Add score as if it were a single long hold
+ }
+ m_drumfillHits = 0;
+ m_drumfillScore = 0;
+ m_dfIt == m_drumfills.end();
+}
+
/// Calculates the start and end times for the next/current drum fill
/// Also activates GodMode if fill went well
void GuitarGraph::updateDrumFill(double time) {
// Check if fill is over
if (m_dfIt != m_drumfills.end()) {
- if (time > m_dfIt->end - past) {
- // Check if we can activate GodMode (drums) -> requires ~ 7 hits per second
- if (m_drums && m_drumfillScore >= 7.0 * (m_dfIt->end - m_dfIt->begin)
- && (!m_song.hasBRE || m_dfIt != (--m_drumfills.end()))) activateStarpower();
+ // Reset stuff for drum fills but not for BREs (handled elsewhere)
+ if (time > m_dfIt->end - past && (m_dfIt != (--m_drumfills.end()) || (m_drums && !m_song.hasBRE))) {
+ m_drumfillHits = 0;
m_drumfillScore = 0;
- } else return;
+ m_dfIt = m_drumfills.end();
+ }
+ return;
} else if (m_drums && canActivateStarpower()) {
// Search for the next drum fill
for (Durations::const_iterator it = m_drumfills.begin(); it != m_drumfills.end(); ++it) {
@@ -365,7 +380,18 @@ void GuitarGraph::drumHit(double time, int fret) {
// Handle drum fills
if (m_dfIt != m_drumfills.end() && time >= m_dfIt->begin - maxTolerance
&& time <= m_dfIt->end + maxTolerance) {
- m_drumfillScore += 1;
+ m_drumfillHits += 1;
+ // Check if we hit the final note in drum fill to activate starpower and get the points
+ if (fret == 4 && time >= m_dfIt->end - maxTolerance
+ && (!m_song.hasBRE || m_dfIt != (--m_drumfills.end()))) {
+ // GodMode and scores require ~ 6 hits per second
+ if (m_drumfillHits >= 6.0 * (m_dfIt->end - m_dfIt->begin)) {
+ activateStarpower();
+ m_score += m_drumfillScore;
+ }
+ m_drumfillScore = 0;
+ m_drumfillHits = 0;
+ }
m_flames[fret].push_back(AnimValue(0.0, flameSpd));
m_flames[fret].back().setTarget(1.0);
return;
@@ -404,6 +430,8 @@ void GuitarGraph::drumHit(double time, int fret) {
//m_score += m_chordIt->score;
m_streak += 1;
if (m_streak > m_longestStreak) m_longestStreak = m_streak;
+ // Handle Big Rock Ending scoring
+ if (m_drumfillScore > 0 && *best == m_chords.back()) endBRE();
}
m_correctness.setTarget(double(m_chordIt->status) / m_chordIt->polyphony, true);
}
@@ -416,7 +444,7 @@ void GuitarGraph::guitarPlay(double time, input::Event const& ev) {
if (m_dfIt != m_drumfills.end() && time >= m_dfIt->begin - maxTolerance
&& time <= m_dfIt->end + maxTolerance) {
if (!ev.type == input::Event::PRESS) return;
- m_drumfillScore += 1;
+ m_drumfillHits += 1;
m_flames[ev.button].push_back(AnimValue(0.0, flameSpd));
m_flames[ev.button].back().setTarget(1.0);
return;
@@ -489,6 +517,8 @@ void GuitarGraph::guitarPlay(double time, input::Event const& ev) {
m_flames[fret].back().setTarget(1.0);
}
}
+ // Handle Big Rock Ending scoring
+ if (m_drumfillScore > 0 && *best == m_chords.back()) endBRE();
}
}
@@ -611,6 +641,11 @@ void GuitarGraph::draw(double time) {
drawNote(fret, c, m_dfIt->begin - time, ((m_dfIt->end > time + future) ?
future : m_dfIt->end - time), 0, false, false, 0, 0);
}
+ // If it is a drum fill, draw the final note
+ if (m_drums && (!m_song.hasBRE || (m_dfIt != (--m_drumfills.end())))) {
+ glutil::Color c = colorize(color(4), m_dfIt->end);
+ drawNote(4, c, m_dfIt->end - time, m_dfIt->end - time, 0, false, false, 0, 0);
+ }
}
// Iterate chords
for (Chords::iterator it = m_chords.begin(); it != m_chords.end(); ++it) {
@@ -623,12 +658,12 @@ void GuitarGraph::draw(double time) {
}
// Don't show past chords when rewinding
if (it->status >= 100 || (tBeg > maxTolerance && it->status > 0)) continue;
- // Ignore notes during drum fills / BREs
+ // Handle notes during drum fills / BREs
if (drumfill && it->begin >= m_dfIt->begin - maxTolerance
&& it->begin <= m_dfIt->end + maxTolerance) {
if (it->status == 0) {
it->status = it->polyphony; // Mark as hit so that streak doesn't reset
- m_score += it->polyphony * 50.0 * 0.75; // Give 75% points from notes under drum fill
+ m_drumfillScore += it->polyphony * 50.0; // Count points from notes under drum fill
}
continue;
}
@@ -917,7 +952,6 @@ void GuitarGraph::updateChords() {
m_chords.push_back(c);
}
m_chordIt = m_chords.begin();
- m_scoreFactor = 10000.0 / m_scoreFactor; // Normalize maximum score factor
// Solos
NoteMap const& nm = m_track_index->second->nm;
@@ -925,6 +959,14 @@ void GuitarGraph::updateChords() {
if (it != nm.end()) m_solos = it->second;
// Drum fills
it = nm.find(124); // 124 = drum fills (actually 120-124, but one is enough)
- if (it != nm.end()) m_drumfills = it->second;
+ if (it != nm.end()) {
+ m_drumfills = it->second;
+ // Big Rock Ending scoring (single hold note)
+ if (!m_drums || m_song.hasBRE)
+ m_scoreFactor += 50.0 * (m_drumfills.back().end - m_drumfills.back().begin);
+ }
m_dfIt = m_drumfills.end();
+
+ // Normalize maximum score factor
+ m_scoreFactor = 10000.0 / m_scoreFactor;
}
diff --git a/game/guitargraph.hh b/game/guitargraph.hh
index c44091a..9f9c902 100644
--- a/game/guitargraph.hh
+++ b/game/guitargraph.hh
@@ -71,6 +71,7 @@ class GuitarGraph {
void activateStarpower();
void fail(double time, int fret);
void endHold(int fret, double time = 0.0);
+ void endBRE();
void endStreak() { m_streak = 0; m_bigStreak = 0; }
Audio& m_audio;
input::InputDev m_input; /// input device (guitar/drums/keyboard)
@@ -149,6 +150,7 @@ class GuitarGraph {
int m_bigStreak; /// next limit when a popup appears
double m_jointime; /// when the player joined
int m_dead; /// how many notes has been passed without hitting buttons
- double m_drumfillScore; /// keeps track that enough hits are scored
+ double m_drumfillHits; /// keeps track that enough hits are scored
+ double m_drumfillScore; /// max score for the notes under drum fill
};
|
|
From: Stefano A. <xa...@us...> - 2010-01-28 18:26:02
|
Module: performous
Branch: master
Commit: b61274c265ec128bab1a638f12b87b6fdcc834c5
Author: Xaldyz <xa...@us...>
Date: Thu Jan 28 19:25:05 2010 +0100
Fixed autodetection of default device (input and output) of Portaudio.
---
libs/libda/plugins/audio_dev_pa19.cpp | 4 ++--
libs/libda/plugins/portaudio.hh | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libs/libda/plugins/audio_dev_pa19.cpp b/libs/libda/plugins/audio_dev_pa19.cpp
index ffeb044..bf4f6d4 100644
--- a/libs/libda/plugins/audio_dev_pa19.cpp
+++ b/libs/libda/plugins/audio_dev_pa19.cpp
@@ -27,7 +27,7 @@ namespace {
public:
pa19_record(settings& s_orig):
s(s_orig),
- stream(*this, portaudio::Params().channelCount(s.channels()).device(s.subdev()), NULL, s.rate())
+ stream(*this, portaudio::Params().channelCount(s.channels()).device(s.subdev(), true), NULL, s.rate())
{
PaError err = Pa_StartStream(stream);
if( err != paNoError ) throw std::runtime_error("Cannot start PortAudio audio stream " + s.subdev() + ": " + Pa_GetErrorText(err));
@@ -53,7 +53,7 @@ namespace {
public:
pa19_playback(settings& s_orig):
s(s_orig),
- stream(*this, NULL, portaudio::Params().channelCount(s.channels()).device(s.subdev()), s.rate())
+ stream(*this, NULL, portaudio::Params().channelCount(s.channels()).device(s.subdev(), false), s.rate())
{
PaError err = Pa_StartStream(stream);
if( err != paNoError ) throw std::runtime_error("Cannot start PortAudio audio stream " + s.subdev() + ": " + Pa_GetErrorText(err));
diff --git a/libs/libda/plugins/portaudio.hh b/libs/libda/plugins/portaudio.hh
index 3ab49b4..347d9d5 100644
--- a/libs/libda/plugins/portaudio.hh
+++ b/libs/libda/plugins/portaudio.hh
@@ -37,8 +37,8 @@ namespace portaudio {
}
Params& channelCount(int val) { params.channelCount = val; return *this; }
Params& device(PaDeviceIndex val) { params.device = val; return *this; }
- Params& device(std::string const& name) {
- device(name.empty() ? 0 : std::atoi(name.c_str())); // TODO: Name matching and error handling
+ Params& device(std::string const& name, bool inputDevice) {
+ device(name.empty() ? ((inputDevice) ? Pa_GetDefaultInputDevice() : Pa_GetDefaultOutputDevice()) : std::atoi(name.c_str())); // TODO: Name matching and error handling
return *this;
}
Params& sampleFormat(PaSampleFormat val) { params.sampleFormat = val; return *this; }
|
|
From: Stefano A. <xa...@us...> - 2010-01-28 18:25:59
|
Module: performous Branch: master Commit: 972024bd5381c0ad1db8f2d2227e149c94527cd3 Author: Xaldyz <xa...@us...> Date: Thu Jan 28 19:25:49 2010 +0100 Merge branch 'master' of ssh://performous.git.sourceforge.net/gitroot/performous/performous --- |
|
From: Tapio V. <aa...@us...> - 2010-01-28 16:59:54
|
Module: performous
Branch: master
Commit: 6930a4282e9cb6c6959a570b9867a24131e5bcc4
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 28 18:58:52 2010 +0200
Big Rock Endings for drums, proper scoring still missing.
---
game/guitargraph.cc | 7 ++++---
game/midifile.cc | 7 ++++---
game/midifile.hh | 4 ++--
game/song.cc | 1 +
game/song.hh | 5 +++--
game/songparser-ini.cc | 5 +++++
6 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index af5db25..7838f83 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -342,7 +342,8 @@ void GuitarGraph::updateDrumFill(double time) {
if (m_dfIt != m_drumfills.end()) {
if (time > m_dfIt->end - past) {
// Check if we can activate GodMode (drums) -> requires ~ 7 hits per second
- if (m_drums && m_drumfillScore >= 7.0 * (m_dfIt->end - m_dfIt->begin)) activateStarpower();
+ if (m_drums && m_drumfillScore >= 7.0 * (m_dfIt->end - m_dfIt->begin)
+ && (!m_song.hasBRE || m_dfIt != (--m_drumfills.end()))) activateStarpower();
m_drumfillScore = 0;
} else return;
} else if (m_drums && canActivateStarpower()) {
@@ -352,6 +353,8 @@ void GuitarGraph::updateDrumFill(double time) {
}
} else if (!m_drums && m_drumfills.back().begin >= time + future) {
m_dfIt = (--m_drumfills.end()); return; // Guitar Big Rock Ending
+ } else if (m_drums && m_song.hasBRE && m_drumfills.back().begin <= time + future) {
+ m_dfIt = (--m_drumfills.end()); return; // Drum Big Rock Ending
}
m_dfIt = m_drumfills.end(); // Reset iterator
}
@@ -363,8 +366,6 @@ void GuitarGraph::drumHit(double time, int fret) {
if (m_dfIt != m_drumfills.end() && time >= m_dfIt->begin - maxTolerance
&& time <= m_dfIt->end + maxTolerance) {
m_drumfillScore += 1;
- Duration const* dur = &(*m_dfIt);
- m_events.push_back(Event(time, 1, fret, dur));
m_flames[fret].push_back(AnimValue(0.0, flameSpd));
m_flames[fret].back().setTarget(1.0);
return;
diff --git a/game/midifile.cc b/game/midifile.cc
index 7141d91..fc4d54d 100644
--- a/game/midifile.cc
+++ b/game/midifile.cc
@@ -169,8 +169,9 @@ MidiFileParser::Track MidiFileParser::read_track(MidiStream& stream) {
std::string data = riff.read_bytes(riff.read_varlen());
switch (type) {
case 0x01:
- // Lyrics are hidden here, only [text] are orders
- if( data[0] != '[' ) m_lyric = data;
+ // Lyrics are hidden here, only [text] are orders
+ if (data[0] != '[') m_lyric = data;
+ else cmdevents.push_back(std::string(data));
#if MIDI_DEBUG_LEVEL > 2
std::cout << "Text: " << data << std::endl;
#endif
@@ -232,7 +233,7 @@ void MidiFileParser::cout_midi_event(uint8_t t, uint8_t arg1, uint8_t arg2, uint
std::cout << "Midi event:" << std::setw(12) << miditime << std::fixed << std::setprecision(2) << std::setw(12) << get_seconds(miditime) << " ";
switch (t) {
case 0x8: std::cout << "note off pitch=" << int(arg1) << " velocity=" << int(arg2); break;
- case 0x9: std::cout << "note on pitch=" << int(arg1) << " velocity=" << int(arg2); break;
+ case 0x9: std::cout << "note on pitch=" << int(arg1) << " velocity=" << int(arg2); break;
case 0xA: std::cout << "aftertouch pitch=" << int(arg1) << " value=" << int(arg2); break;
case 0xB: std::cout << "controller num=" << int(arg1) << " value=" << int(arg2); break;
case 0xC: std::cout << "program change num=" << int(arg1); break;
diff --git a/game/midifile.hh b/game/midifile.hh
index 086f999..33dcfe2 100644
--- a/game/midifile.hh
+++ b/game/midifile.hh
@@ -45,8 +45,6 @@ class MidiFileParser{
*/
MidiFileParser(std::string name);
-// private:
-
struct TempoChange {
uint32_t miditime;
uint32_t value;
@@ -86,6 +84,8 @@ class MidiFileParser{
double get_seconds(uint32_t miditime) { return 1e-6 * get_us(miditime); }
void add_tempo_change(uint32_t miditime, uint32_t tempo);
uint16_t format;
+ typedef std::vector<std::string> CommandEvents;
+ CommandEvents cmdevents;
/** Ticks per beat == number of divisions per every quarter note **/
uint16_t division;
diff --git a/game/song.cc b/game/song.cc
index 0d2af5b..5b08d93 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;
+ hasBRE = false;
b0rkedTracks = false;
try { SongParser(*this); } catch (...) { if (!errorIgnore) throw; }
collateUpdate();
diff --git a/game/song.hh b/game/song.hh
index 9718265..1a950a4 100644
--- a/game/song.hh
+++ b/game/song.hh
@@ -87,10 +87,11 @@ class Song: boost::noncopyable {
std::vector<double> volumePitchGraph; ///< volume of pitch graph
std::vector<bool> drawPitchGraph; ///< if pitch graph should be drawn
double beginTime, endTime; ///< the period where there are notes
- double m_scoreFactor; ///< Normalization factor for the scoring system
+ double m_scoreFactor; ///< normalization factor for the scoring system
typedef std::vector<std::pair<double,double> > Stops;
Stops stops;
- bool b0rkedTracks;
+ bool hasBRE; ///< is there a Big Rock Ending? (used for drums only)
+ bool b0rkedTracks; ///< are some tracks broken? (so that user can be notified)
};
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 9faa435..46fa715 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -233,6 +233,11 @@ void SongParser::iniParse() {
}
if (!s.notes.empty()) break;
}
+ // Figure out if we have BRE in the song
+ for (MidiFileParser::CommandEvents::const_iterator it = midi.cmdevents.begin(); it != midi.cmdevents.end(); ++it) {
+ if (*it == "[section big_rock_ending]") s.hasBRE = true;
+ }
+ // Output some warning
if (reversedNoteCount > 0) {
std::ostringstream oss;
oss << "WARNING: Skipping " << reversedNoteCount << " reversed note(s) in ";
|
|
From: Stefano A. <xa...@us...> - 2010-01-28 16:28:45
|
Module: performous Branch: master Commit: 4073b1d1c941bdbb2ec39ca373537bccdab7aa4d Author: Xaldyz <xa...@us...> Date: Thu Jan 28 17:28:35 2010 +0100 Added alpha support for setup with NSIS script for Windows --- win32/setup.nsi | 468 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 468 insertions(+), 0 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-01-27 20:13:27
|
Module: performous
Branch: master
Commit: 30f07d2f1a30c54e2a70a28d11f3490687e17eed
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jan 27 22:12:33 2010 +0200
Initial Big Rock Ending support for guitars.
---
game/guitargraph.cc | 33 ++++++++++++++++++++++-----------
1 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 1c9e459..af5db25 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -185,7 +185,7 @@ void GuitarGraph::engine() {
if (m_input.pressed(i)) m_hit[i + 1].setValue(1.0);
}
}
- if (m_drums && !m_drumfills.empty()) updateDrumFill(time); // Drum Fills
+ if (!m_drumfills.empty()) updateDrumFill(time); // Drum Fills / BREs
if (m_starpower.get() > 0.001) m_correctness.setTarget(1.0, true);
double whammy = 0;
bool difficulty_changed = false;
@@ -341,15 +341,17 @@ void GuitarGraph::updateDrumFill(double time) {
// Check if fill is over
if (m_dfIt != m_drumfills.end()) {
if (time > m_dfIt->end - past) {
- // Check if we can activate GodMode -> requires ~ 7 hits per second
- if (m_drumfillScore >= 7.0 * (m_dfIt->end - m_dfIt->begin)) activateStarpower();
+ // Check if we can activate GodMode (drums) -> requires ~ 7 hits per second
+ if (m_drums && m_drumfillScore >= 7.0 * (m_dfIt->end - m_dfIt->begin)) activateStarpower();
m_drumfillScore = 0;
} else return;
- } else if (canActivateStarpower()) {
+ } else if (m_drums && canActivateStarpower()) {
// Search for the next drum fill
for (Durations::const_iterator it = m_drumfills.begin(); it != m_drumfills.end(); ++it) {
if (it->begin >= time + future) { m_dfIt = it; return; }
}
+ } else if (!m_drums && m_drumfills.back().begin >= time + future) {
+ m_dfIt = (--m_drumfills.end()); return; // Guitar Big Rock Ending
}
m_dfIt = m_drumfills.end(); // Reset iterator
}
@@ -409,6 +411,15 @@ void GuitarGraph::drumHit(double time, int fret) {
/// Handle guitar events and scoring
void GuitarGraph::guitarPlay(double time, input::Event const& ev) {
bool picked = (ev.type == input::Event::PICK);
+ // Handle Big Rock Ending
+ if (m_dfIt != m_drumfills.end() && time >= m_dfIt->begin - maxTolerance
+ && time <= m_dfIt->end + maxTolerance) {
+ if (!ev.type == input::Event::PRESS) return;
+ m_drumfillScore += 1;
+ m_flames[ev.button].push_back(AnimValue(0.0, flameSpd));
+ m_flames[ev.button].back().setTarget(1.0);
+ return;
+ }
bool frets[5] = {}; // The combination about to be played
if (picked) {
for (int fret = 0; fret < 5; ++fret) {
@@ -590,12 +601,12 @@ void GuitarGraph::draw(double time) {
// Draw the notes
{ glutil::UseLighting lighting(m_use3d);
- // Draw drum fills
- bool drumfill = m_drums && m_dfIt != m_drumfills.end();
+ // Draw drum fills / Big Rock Endings
+ bool drumfill = m_dfIt != m_drumfills.end();
if (drumfill) {
- for (int fret = 1; fret < 5; ++fret) { // Loop through the frets
+ for (int fret = m_drums; fret < 5; ++fret) { // Loop through the frets
glutil::Color c = color(fret);
- // Draw long notes to mark drum fills
+ // Visualize as long notes
drawNote(fret, c, m_dfIt->begin - time, ((m_dfIt->end > time + future) ?
future : m_dfIt->end - time), 0, false, false, 0, 0);
}
@@ -611,7 +622,7 @@ void GuitarGraph::draw(double time) {
}
// Don't show past chords when rewinding
if (it->status >= 100 || (tBeg > maxTolerance && it->status > 0)) continue;
- // Ignore notes inside drum fills when GodMode can be activated
+ // Ignore notes during drum fills / BREs
if (drumfill && it->begin >= m_dfIt->begin - maxTolerance
&& it->begin <= m_dfIt->end + maxTolerance) {
if (it->status == 0) {
@@ -803,7 +814,7 @@ void GuitarGraph::drawInfo(double time, double offsetX, Dimensions dimensions) {
if (canActivateStarpower()) {
float a = std::abs(std::fmod(time, 1.0) - 0.5f) * 2.0f;
m_text.dimensions.screenBottom(-0.02).middle(-0.12 + offsetX);
- if (m_dfIt != m_drumfills.end() && time >= m_dfIt->begin && time <= m_dfIt->end)
+ if (m_drums && m_dfIt != m_drumfills.end() && time >= m_dfIt->begin && time <= m_dfIt->end)
m_text.draw(" Drum Fill! ", a);
else m_text.draw("God Mode Ready!", a);
} else {
@@ -811,7 +822,7 @@ void GuitarGraph::drawInfo(double time, double offsetX, Dimensions dimensions) {
for (Durations::const_iterator it = m_solos.begin(); it != m_solos.end(); ++it) {
if (time >= it->begin && time <= it->end) {
float a = std::abs(std::fmod(time, 1.0) - 0.5f) * 2.0f;
- m_text.dimensions.screenBottom(-0.02).middle(-0.05 + offsetX);
+ m_text.dimensions.screenBottom(-0.02).middle(-0.03 + offsetX);
m_text.draw("Solo!", a);
}
}
|