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: Tapio V. <aa...@us...> - 2010-09-14 14:08:20
|
Module: performous Branch: master Commit: afe574b41eba53239270e21e5328deab236745ff Author: Tapio Vierros <tap...@gm...> Date: Tue Sep 14 16:57:05 2010 +0300 Continued work on the audio device configuration screen. * Incompatible existing config detection. * Check/warn about errors after opening the new devices. * Icon for playback device. * Possibility to reset back to defaults. * Refactoring. --- game/screen_audiodevices.cc | 137 ++++++++++++++++++++++++++++-------------- game/screen_audiodevices.hh | 4 +- themes/default/icon_pdev.svg | 85 ++++++++++++++++++++++++++ 3 files changed, 179 insertions(+), 47 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-09-14 06:00:33
|
Module: performous Branch: master Commit: 0da33e8197d74e541a0d32b0eaa9a653cc5e3187 Author: Tapio Vierros <tap...@gm...> Date: Tue Sep 14 08:52:51 2010 +0300 Experimental audio device screen for simple & easy config. * Detects and shows what devices are actually in use. * Saving immediately loads the new settings into use. * Quite a few of TODOs/FIXMEs left. --- game/audio.cc | 69 +++---- game/audio.hh | 29 +++ game/glutil.hh | 20 ++ game/libda/portaudio.hpp | 46 ++++- game/main.cc | 2 + game/pitch.cc | 3 +- game/pitch.hh | 4 +- game/screen_audiodevices.cc | 159 ++++++++++++++ game/screen_audiodevices.hh | 41 ++++ game/screen_intro.cc | 11 +- game/theme.cc | 8 + game/theme.hh | 14 ++ themes/default/audiodevices_bg.svg | 356 ++++++++++++++++++++++++++++++++ themes/default/audiodevices_dev_bg.svg | 124 +++++++++++ 14 files changed, 838 insertions(+), 48 deletions(-) |
|
From: Yoda-JM <yo...@us...> - 2010-09-12 12:17:43
|
Module: performous
Branch: master
Commit: ec94c0f808052f95afbe619c8096a7808eb83a12
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Sep 12 14:17:21 2010 +0200
Moved whammy bar to button mapping
---
game/guitargraph.cc | 13 ++++++++++++-
game/joystick.cc | 26 +++++++++++++++++++-------
game/joystick.hh | 3 ++-
3 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index dc4d9f2..5905161 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -334,8 +334,19 @@ void GuitarGraph::engine() {
if (ev.type == input::Event::PRESS) activateStarpower();
continue;
}
+ if (ev.button == input::WHAMMY_BUTTON) {
+ switch(ev.type) {
+ case input::Event::RELEASE:
+ m_whammy = (1.0 + 0.0 + 2.0*(rand()/double(RAND_MAX))) / 4.0;
+ break;
+ case input::Event::PRESS:
+ m_whammy = (1.0 + 1.0 + 2.0*(rand()/double(RAND_MAX))) / 4.0;
+ break;
+ default:
+ break;
+ }
+ }
if (ev.type == input::Event::RELEASE) endHold(ev.button, time);
- if (ev.type == input::Event::WHAMMY) m_whammy = (1.0 + ev.button + 2.0*(rand()/double(RAND_MAX))) / 4.0;
} else {
// Handle drum lefty-mode
if (m_leftymode.b() && ev.button > 0 && !menuOpen()) ev.button = m_pads - ev.button;
diff --git a/game/joystick.cc b/game/joystick.cc
index e408dd4..2691ae0 100644
--- a/game/joystick.cc
+++ b/game/joystick.cc
@@ -476,8 +476,8 @@ bool input::SDL::pushEvent(SDL_Event _e) {
break;
case SDLK_BACKSPACE:
if(!guitar) return false;
- event.type = input::Event::WHAMMY;
- button = 1;
+ event.type = input::Event::PRESS;
+ button = input::WHAMMY_BUTTON;
is_guitar_event = true;
break;
case SDLK_F6: case SDLK_6:
@@ -617,8 +617,8 @@ bool input::SDL::pushEvent(SDL_Event _e) {
return true;
case SDLK_BACKSPACE:
if(!guitar) return false;
- event.type = input::Event::WHAMMY;
- button = 0;
+ event.type = input::Event::RELEASE;
+ button = WHAMMY_BUTTON;
is_guitar_event = true;
break;
case SDLK_F6: case SDLK_6:
@@ -738,9 +738,10 @@ bool input::SDL::pushEvent(SDL_Event _e) {
if(!devices.find(joy_id)->second.assigned()) return false;
if (_e.jaxis.axis == 5 || _e.jaxis.axis == 6 || _e.jaxis.axis == 1) {
event.type = input::Event::PICK;
- } else if (_e.jaxis.axis == 2 || (devices.find(joy_id)->second.name() == "GUITAR_ROCKBAND_XB360"
- && _e.jaxis.axis == 4)) {
- event.type = input::Event::WHAMMY;
+ } else if (_e.jaxis.axis == 2 || (devices.find(joy_id)->second.name() == "GUITAR_ROCKBAND_XB360" && _e.jaxis.axis == 4)) {
+ // nothing to do here
+ } else if (devices.find(joy_id)->second.name() == "DRUMS_ROCKBAND_XB360" && _e.jaxis.axis == 3) { // <= WTF HERE !!!
+ // nothing to do here
} else {
return false;
}
@@ -759,6 +760,17 @@ bool input::SDL::pushEvent(SDL_Event _e) {
}
devices.find(joy_id)->second.addEvent(event);
break;
+ } else if (_e.jaxis.axis == 2 || (devices.find(joy_id)->second.name() == "GUITAR_ROCKBAND_XB360" && _e.jaxis.axis == 4)) {
+ event.button = input::WHAMMY_BUTTON;
+ if (_e.jaxis.value > 0) {
+ event.type = input::Event::PRESS;
+ event.pressed[event.button] = true;
+ } else {
+ event.type = input::Event::RELEASE;
+ event.pressed[event.button] = false;
+ }
+ devices.find(joy_id)->second.addEvent(event);
+ break;
}
// Direction
if(_e.jaxis.value > 0 ) { // down
diff --git a/game/joystick.hh b/game/joystick.hh
index a64ba72..9da0e0c 100644
--- a/game/joystick.hh
+++ b/game/joystick.hh
@@ -29,6 +29,7 @@ namespace input {
static const int BLUE_FRET_BUTTON = 3;
static const int ORANGE_FRET_BUTTON = 4;
static const int GODMODE_BUTTON = 5;
+ static const int WHAMMY_BUTTON = 6;
// Drums buttons
static const int KICK_BUTTON = 0;
static const int RED_TOM_BUTTON = 1;
@@ -50,7 +51,7 @@ namespace input {
static const int START_BUTTON = 9;
struct Event {
- enum Type { PRESS, RELEASE, PICK, WHAMMY };
+ enum Type { PRESS, RELEASE, PICK };
Type type;
int button; // Translated button number for press/release events. 0 for pick down, 1 for pick up (NOTE: these are NOT pick press/release events but rather different directions)
bool pressed[BUTTONS]; // All events tell the button state right after the event happened
|
|
From: Yoda-JM <yo...@us...> - 2010-09-12 11:14:00
|
Module: performous Branch: master Commit: 172d32b8aca7308f9cafe6e627c410c788906a82 Author: Vincent Le Ligeour <yo...@us...> Date: Sun Sep 12 13:13:15 2010 +0200 Used defined variables for button mapping --- data/controllers.xml | 16 ++++---- game/guitargraph.cc | 18 +++++----- game/joystick.cc | 90 +++++++++++++++++++++++++------------------------- game/joystick.hh | 27 ++++++++++++++- 4 files changed, 88 insertions(+), 63 deletions(-) |
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-09-11 23:10:56
|
Module: performous
Branch: master
Commit: 0bbcb5457e5d730cb86239428f15a93e610f5fca
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Sep 12 01:54:32 2010 +0300
Cleanup and more comments for pitch.hh/cc.
Added postfix operator++ for sample step_iterator.
---
game/libda/sample.hpp | 1 +
game/pitch.cc | 24 ++++++++++++++----------
game/pitch.hh | 44 +++++++++++++++++++++++---------------------
3 files changed, 38 insertions(+), 31 deletions(-)
diff --git a/game/libda/sample.hpp b/game/libda/sample.hpp
index f785347..5d53b6e 100644
--- a/game/libda/sample.hpp
+++ b/game/libda/sample.hpp
@@ -55,6 +55,7 @@ namespace da {
ValueType& operator*() { return *m_pos; }
step_iterator operator+(std::ptrdiff_t rhs) { return step_iterator(m_pos + m_step * rhs, m_step); }
step_iterator& operator++() { m_pos += m_step; return *this; }
+ step_iterator operator++(int) { step_iterator ret = *this; ++*this; return ret; }
bool operator!=(step_iterator const& rhs) const { return m_pos != rhs.m_pos; }
std::ptrdiff_t operator-(step_iterator const& rhs) const { return (m_pos - rhs.m_pos) / m_step; }
// TODO: more operators
diff --git a/game/pitch.cc b/game/pitch.cc
index 773183a..614860d 100644
--- a/game/pitch.cc
+++ b/game/pitch.cc
@@ -76,10 +76,10 @@ namespace {
bool Analyzer::calcFFT() {
float pcm[FFT_N];
size_t r = m_bufRead;
+ // Test if there is enough audio available
if ((BUF_N + m_bufWrite - r) % BUF_N <= FFT_N) return false;
- for (size_t i = 0; i < FFT_N; ++i) {
- pcm[i] = m_buf[(r + i) % BUF_N];
- }
+ // Copy audio to local buffer
+ for (size_t i = 0; i < FFT_N; ++i) pcm[i] = m_buf[(r + i) % BUF_N];
m_bufRead = (r + m_step) % BUF_N;
// Calculate FFT
m_fft = da::fft<FFT_P>(pcm, m_window);
@@ -172,23 +172,27 @@ void Analyzer::calcTones() {
void Analyzer::mergeWithOld(tones_t& tones) const {
tones.sort();
tones_t::iterator it = tones.begin();
+ // Iterate over old tones
for (tones_t::const_iterator oldit = m_tones.begin(); oldit != m_tones.end(); ++oldit) {
+ // Try to find a matching new tone
while (it != tones.end() && *it < *oldit) ++it;
- if (it == tones.end() || *it != *oldit) {
- if (oldit->db > -80.0) {
- Tone& t = *tones.insert(it, *oldit);
- t.db -= 5.0;
- t.stabledb -= 0.1;
- }
- } else if (*it == *oldit) {
+ // If match found
+ if (it != tones.end() && *it == *oldit) {
+ // Merge the old tone into the new tone
it->age = oldit->age + 1;
it->stabledb = 0.8 * oldit->stabledb + 0.2 * it->db;
it->freq = 0.5 * oldit->freq + 0.5 * it->freq;
+ } else if (oldit->db > -80.0) {
+ // Insert a decayed version of the old tone into new tones
+ Tone& t = *tones.insert(it, *oldit);
+ t.db -= 5.0;
+ t.stabledb -= 0.1;
}
}
}
void Analyzer::process() {
+ // Try calculating FFT and calculate tones until no more data in input buffer
while (calcFFT()) calcTones();
}
diff --git a/game/pitch.hh b/game/pitch.hh
index 0fa159d..d39cc46 100644
--- a/game/pitch.hh
+++ b/game/pitch.hh
@@ -8,18 +8,17 @@
/// struct to represent tones
struct Tone {
- static const std::size_t MAXHARM = 48; ///< maximum harmonics
- static const std::size_t MINAGE = 2; ///< minimum age
- double freq; ///< frequency
- double db; ///< dezibels
- double stabledb; ///< stable decibels
- double harmonics[MAXHARM]; ///< harmonics array
- std::size_t age; ///< age
+ static const std::size_t MAXHARM = 48; ///< The maximum number of harmonics tracked
+ static const std::size_t MINAGE = 2; ///< The minimum age required for a tone to be output
+ double freq; ///< Frequency (Hz)
+ double db; ///< Level (dB)
+ double stabledb; ///< Stable level, useful for graphics rendering
+ double harmonics[MAXHARM]; ///< Harmonics' levels
+ std::size_t age; ///< How many times the tone has been detected in row
Tone();
- void print() const; ///< prints Tone
- bool operator==(double f) const; ///< equality operator
- void update(Tone const& t); ///< update Tone
- /// compares left and right volume
+ void print() const; ///< Prints Tone to std::cout
+ bool operator==(double f) const; ///< Compare for rough frequency match
+ /// Less-than compare by levels (instead of frequencies like operator< does)
static bool dbCompare(Tone const& l, Tone const& r) { return l.db < r.db; }
};
@@ -47,19 +46,22 @@ class Analyzer {
Analyzer(double rate, std::size_t step = 200);
/** Add input data to buffer. This is thread-safe (against other functions). **/
template <typename InIt> void input(InIt begin, InIt end) {
+ size_t r = m_bufRead; // The read position
+ size_t w = m_bufWrite; // The write position
+ size_t wNext; // The next write position
+ bool overflow = false;
while (begin != end) {
- float s = *begin;
- ++begin;
- m_peak *= 0.999;
+ float s = *begin++; // Read input sample
+ // Peak level calculation
float p = s * s;
- if (p > m_peak) m_peak = p;
- size_t w = m_bufWrite;
- size_t w2 = (m_bufWrite + 1) % BUF_N;
- size_t r = m_bufRead;
- if (w2 == r) m_bufRead = (r + 1) % BUF_N;
- m_buf[w] = s;
- m_bufWrite = w2;
+ if (p > m_peak) m_peak = p; else m_peak *= 0.999;
+ // Cursor updates
+ wNext = (w + 1) % BUF_N;
+ if (wNext == r) overflow = true;
+ w = wNext;
}
+ m_bufWrite = w;
+ if (overflow) m_bufRead = wNext; // Reset read pointer on overflow
}
/** Call this to process all data input so far. **/
void process();
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-09-06 15:02:19
|
Module: performous
Branch: songtreebrowser
Commit: 1e40c9dfb390362d64b341378e098975b7c4677a
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Sep 6 17:59:42 2010 +0300
A quick hack to prototype z-layered rendering
---
game/screen_songs.cc | 48 +++++++++++++++++++++++++++++-------------------
1 files changed, 29 insertions(+), 19 deletions(-)
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index fad69b3..1265be6 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -241,25 +241,35 @@ void ScreenSongs::draw() {
void ScreenSongs::drawCovers() {
double spos = m_songs.currentPosition(); // This needs to be polled to run the animation
std::size_t ss = m_songs.size();
- int baseidx = spos + 1.5; --baseidx; // Round correctly
- double shift = spos - baseidx;
- for (int i = -2; i < 5; ++i) {
- if (baseidx + i < 0 || baseidx + i >= int(ss)) continue;
- Song& song = m_songs[baseidx + i];
- Surface& s = getCover(song);
- // Calculate dimensions for cover and instrument markers
- double diff = (i == 0 ? (0.5 - fabs(shift)) * 0.07 : 0.0);
- double y = 0.27 + 0.5 * diff;
- s.dimensions.middle(-0.2 + 0.17 * (i - shift)).bottom(y - 0.2 * diff).fitInside(0.14 + diff, 0.14 + diff);
- // Draw the cover normally
- s.draw();
- // Draw the reflection
- glutil::PushMatrix m;
- glTranslatef(0.0f, 2.0 * y, 0.0f);
- glScalef(1.0f, -1.0f, 1.0f);
- glColor4f(1.0f, 1.0f, 1.0f, 0.4f);
- s.draw();
- glColor3f(1.0f, 1.0f, 1.0f);
+ glutil::PushMatrix m0;
+ glTranslatef(0.0f, 0.0f, -1.5f);
+ // A quick hack to prototype z-layered rendering
+ for (int z = 0; z < 3; ++z) {
+ float fudge = (z + 1) * 0.33334;
+ double fudgedpos = spos;
+ for (int i = z; i < 2; ++i) fudgedpos = 2.5 + fudgedpos / ss;
+ int baseidx = int(fudgedpos + 1.5) - 1; // Round correctly
+ double shift = fudgedpos - baseidx;
+ for (int i = -5; i < 8; ++i) {
+ if (baseidx + i < 0 || baseidx + i >= int(ss)) continue;
+ Song& song = m_songs[baseidx + i];
+ Surface& s = getCover(song);
+ // Calculate dimensions for cover and instrument markers
+ double diff = (fudge >= 1.0 && i == 0 ? (0.5 - fabs(shift)) * 0.07 : 0.0);
+ double y = 0.27 + 0.5 * diff;
+ s.dimensions.middle(-0.2 + 0.17 * (i - shift)).bottom(y - 0.2 * diff).fitInside(0.14 + diff, 0.14 + diff);
+ // Draw the cover normally
+ glColor4f(1.0f * fudge, 1.0f * fudge, 1.0f * fudge, fudge);
+ s.draw();
+ // Draw the reflection
+ glutil::PushMatrix m;
+ glTranslatef(0.0f, 2.0 * y, 0.0f);
+ glScalef(1.0f, -1.0f, 1.0f);
+ glColor4f(1.0f * fudge, 1.0f * fudge, 1.0f * fudge, 0.4f * fudge);
+ s.draw();
+ glColor3f(1.0f, 1.0f, 1.0f);
+ }
+ glTranslatef(0.0f, 0.0f, 0.5f);
}
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-09-06 14:30:59
|
Module: performous
Branch: master
Commit: 8258ae1f182df8fec6a194df2bdd0bff60b03f0b
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Sep 6 16:58:30 2010 +0300
Refactoring/cleanup for song browser draw function.
---
game/screen_songs.cc | 86 ++++++++++++++++++++++++++------------------------
game/screen_songs.hh | 2 +
2 files changed, 47 insertions(+), 41 deletions(-)
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index 69b95c1..fad69b3 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -214,47 +214,7 @@ void ScreenSongs::draw() {
// Get hiscores from database
m_database.queryPerSongHiscore_HiscoreDisplay(oss_order, m_songs.currentPtr(), hiscore_start_pos, 5);
}
- double spos = m_songs.currentPosition(); // This needs to be polled to run the animation
- if (!m_jukebox) {
- // Draw the covers
- std::size_t ss = m_songs.size();
- int baseidx = spos + 1.5; --baseidx; // Round correctly
- double shift = spos - baseidx;
- for (int i = -2; i < 5; ++i) {
- if (baseidx + i < 0 || baseidx + i >= int(ss)) continue;
- Song& song_display = m_songs[baseidx + i];
- Surface* cover = NULL;
- // Fetch cover image from cache or try loading it
- if (!song_display.cover.empty()) try { cover = &m_covers[song_display.path + song_display.cover]; } catch (std::exception const&) {cover = NULL;}
- if (!cover) {
- if(song_display.hasDance()) {
- cover = m_danceCover.get();
- } else if(song_display.hasDrums()) {
- cover = m_bandCover.get();
- } else {
- size_t tracks = song_display.instrumentTracks.size();
- if (tracks == 0) cover = m_singCover.get();
- else cover = m_instrumentCover.get();
- }
- }
- Surface& s = *cover;
- // Calculate dimensions for cover and instrument markers
- double diff = (i == 0 ? (0.5 - fabs(shift)) * 0.07 : 0.0);
- double y = 0.27 + 0.5 * diff;
- s.dimensions.middle(-0.2 + 0.17 * (i - shift)).bottom(y - 0.2 * diff).fitInside(0.14 + diff, 0.14 + diff);
- // Draw the cover normally
- s.draw();
- // Draw the reflection
- {
- glutil::PushMatrix m;
- glTranslatef(0.0f, 2.0 * y, 0.0f);
- glScalef(1.0f, -1.0f, 1.0f);
- glColor4f(1.0f, 1.0f, 1.0f, 0.4f);
- s.draw();
- glColor3f(1.0f, 1.0f, 1.0f);
- }
- }
- }
+ if (!m_jukebox) drawCovers();
updateMultimedia(song, info);
}
if (m_jukebox) drawJukebox();
@@ -278,6 +238,50 @@ void ScreenSongs::draw() {
} else if (!m_audio.isPaused() && m_playTimer.get() > IDLE_TIMEOUT) m_songs.advance(1); // Switch if song hasn't changed for IDLE_TIMEOUT seconds
}
+void ScreenSongs::drawCovers() {
+ double spos = m_songs.currentPosition(); // This needs to be polled to run the animation
+ std::size_t ss = m_songs.size();
+ int baseidx = spos + 1.5; --baseidx; // Round correctly
+ double shift = spos - baseidx;
+ for (int i = -2; i < 5; ++i) {
+ if (baseidx + i < 0 || baseidx + i >= int(ss)) continue;
+ Song& song = m_songs[baseidx + i];
+ Surface& s = getCover(song);
+ // Calculate dimensions for cover and instrument markers
+ double diff = (i == 0 ? (0.5 - fabs(shift)) * 0.07 : 0.0);
+ double y = 0.27 + 0.5 * diff;
+ s.dimensions.middle(-0.2 + 0.17 * (i - shift)).bottom(y - 0.2 * diff).fitInside(0.14 + diff, 0.14 + diff);
+ // Draw the cover normally
+ s.draw();
+ // Draw the reflection
+ glutil::PushMatrix m;
+ glTranslatef(0.0f, 2.0 * y, 0.0f);
+ glScalef(1.0f, -1.0f, 1.0f);
+ glColor4f(1.0f, 1.0f, 1.0f, 0.4f);
+ s.draw();
+ glColor3f(1.0f, 1.0f, 1.0f);
+ }
+}
+
+Surface& ScreenSongs::getCover(Song const& song) {
+ Surface* cover = NULL;
+ // Fetch cover image from cache or try loading it
+ if (!song.cover.empty()) try { cover = &m_covers[song.path + song.cover]; } catch (std::exception const&) {cover = NULL;}
+ // Use empty cover
+ if (!cover) {
+ if(song.hasDance()) {
+ cover = m_danceCover.get();
+ } else if(song.hasDrums()) {
+ cover = m_bandCover.get();
+ } else {
+ size_t tracks = song.instrumentTracks.size();
+ if (tracks == 0) cover = m_singCover.get();
+ else cover = m_instrumentCover.get();
+ }
+ }
+ return *cover;
+}
+
void ScreenSongs::drawInstruments(Dimensions const& dim, float alpha) const {
bool have_vocals = false;
diff --git a/game/screen_songs.hh b/game/screen_songs.hh
index ed00a63..7a4a0e5 100644
--- a/game/screen_songs.hh
+++ b/game/screen_songs.hh
@@ -33,6 +33,8 @@ public:
void manageSharedKey(input::NavButton nav); ///< same behaviour for jukebox and normal mode
void manageEvent(SDL_Event event);
void draw();
+ void drawCovers(); ///< draw the cover browser
+ Surface& getCover(Song const& song); ///< get appropriate cover image for the song (incl. no cover)
void drawJukebox(); ///< draw the songbrowser in jukebox mode (fullscreen, full previews, ...)
protected:
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-09-06 01:12:29
|
Module: performous
Branch: master
Commit: 78844c587320c5085be52dcb1568aa8cb2cdf20c
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Sep 6 04:12:14 2010 +0300
Yet another song browser idea (this time no mockup but actually in use)
---
themes/default/songs_bg.svg | 18 +++++++-----------
1 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/themes/default/songs_bg.svg b/themes/default/songs_bg.svg
index 3fa2e2b..1c201c7 100644
--- a/themes/default/songs_bg.svg
+++ b/themes/default/songs_bg.svg
@@ -17,7 +17,7 @@
height="800"
id="svg559"
sodipodi:version="0.32"
- inkscape:version="0.47pre4 r22446"
+ inkscape:version="0.47 r22583"
sodipodi:docname="songs_bg.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<metadata
@@ -32,8 +32,8 @@
</rdf:RDF>
</metadata>
<sodipodi:namedview
- inkscape:window-height="726"
- inkscape:window-width="1280"
+ inkscape:window-height="992"
+ inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
@@ -47,7 +47,7 @@
inkscape:cx="445.08607"
inkscape:cy="383.70921"
inkscape:window-x="0"
- inkscape:window-y="25"
+ inkscape:window-y="29"
inkscape:current-layer="svg559"
showgrid="false"
inkscape:window-maximized="1" />
@@ -115,15 +115,11 @@
id="feGaussianBlur3871" />
</filter>
</defs>
- <rect
+ <path
style="fill:#ffffff;fill-opacity:0.2739131"
+ d="M 49.884998,210 950.115,210 C 966.67129,210 980,223.3225 980,239.87109 l 0,230.25782 C 980,486.6775 966.67129,500 950.115,500 l -533.01146,0 c 0,0 -119.40515,68.26767 -119.40515,68.26767 0,0 -101.15081,-68.26767 -101.15081,-68.26767 0,0 -146.662582,0 -146.662582,0 C 33.328709,500 20,486.6775 20,470.12891 L 20,239.87109 C 20,223.3225 33.328709,210 49.884998,210 z"
id="rect3394"
- width="960"
- height="290"
- x="20"
- y="210"
- ry="29.871086"
- rx="29.884998" />
+ sodipodi:nodetypes="cccccccccccc" />
<text
xml:space="preserve"
style="font-size:24.89476013px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
|
From: Yoda-JM <yo...@us...> - 2010-09-05 23:54:58
|
Module: performous Branch: master Commit: 6832b541af75d09bcd982172a53b64dd8967a225 Author: Vincent Le Ligeour <yo...@us...> Date: Mon Sep 6 01:54:38 2010 +0200 Added a song browser mockup --- docs/song_browser_idea_yoda.svg | 2488 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 2488 insertions(+), 0 deletions(-) |
|
From: Fredrik K. <sci...@us...> - 2010-09-05 13:02:45
|
Module: performous Branch: master Commit: bcfdf8e043760e12cfb92e92ed08b216c5bc28d6 Author: Fredrik Klasson <sci...@gm...> Date: Sun Sep 5 15:02:12 2010 +0200 [ ] Idea for now song browser look, now with top-3 highscores included. --- docs/song_browser_with_highscore_idea.svg | 2751 +++++++++++++++++++++++++++++ 1 files changed, 2751 insertions(+), 0 deletions(-) |
|
From: Fredrik K. <sci...@us...> - 2010-09-04 13:44:35
|
Module: performous Branch: master Commit: 228f70316003d7c513e0da60e5fcd9f8d4f321fe Author: Fredrik Klasson <sci...@gm...> Date: Sat Sep 4 15:43:54 2010 +0200 [ ] Idea for now song browser look. --- docs/song_browser_idea.svg | 3234 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 3234 insertions(+), 0 deletions(-) |
|
From: Fredrik K. <sci...@us...> - 2010-09-03 16:12:40
|
Module: performous Branch: master Commit: 347eeeebda1dff04515137892f7b557d83bbcf73 Author: Fredrik Klasson <sci...@gm...> Date: Fri Sep 3 18:12:07 2010 +0200 [ ] Make xml_gettext.sh use the propper temp dir in the system (see --tmpdir in mktemp(1) for details) --- tools/scripts/xml_gettext.sh | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/tools/scripts/xml_gettext.sh b/tools/scripts/xml_gettext.sh index d7ff320..012ac8a 100755 --- a/tools/scripts/xml_gettext.sh +++ b/tools/scripts/xml_gettext.sh @@ -98,7 +98,7 @@ shift shift # create the temporary file securely. -TEMP_SRC=$(mktemp xml2gettext.XXXXXXXXXX.c) +TEMP_SRC=$(mktemp --tmpdir xml2gettext.XXXXXXXXXX.c) append_temp_src "/* This is a automatically generated temp file, it's safe to remove*/" # Start the dirty work |
|
From: Fredrik K. <sci...@us...> - 2010-09-01 15:05:38
|
Module: performous Branch: master Commit: ac7bb2d18e1a79f2500e398923e6587ec3ebdc95 Author: Fredrik Klasson <fr...@li...> Date: Wed Sep 1 17:05:01 2010 +0200 [ ] Updating translations. --- lang/de.po | 592 +++++++++++++++++++++++++++++++++++++++++++++---------- lang/es.po | 615 +++++++++++++++++++++++++++++++++++++++----------------- lang/fi.po | 649 +++++++++++++++++++++++++++++++++++++++-------------------- lang/fr.po | 615 ++++++++++++++++++++++++++++++++++++++++----------------- lang/hu.po | 592 +++++++++++++++++++++++++++++++++++++++++++++---------- lang/it.po | 607 +++++++++++++++++++++++++++++++++++++++++++++------------ lang/nl.po | 623 ++++++++++++++++++++++++++++++++++++++++++++++----------- 7 files changed, 3260 insertions(+), 1033 deletions(-) |
|
From: Fredrik K. <sci...@us...> - 2010-09-01 14:12:51
|
Module: performous Branch: master Commit: 393e8f974b619013fd479442776d6d753e4ca12e Author: Fredrik Klasson <fr...@li...> Date: Wed Sep 1 16:12:14 2010 +0200 [ ] Updating swedish translation. --- lang/sv.po | 148 ++++++++++++++++++++++++++++++------------------------------ 1 files changed, 74 insertions(+), 74 deletions(-) |
|
From: Fredrik K. <sci...@us...> - 2010-09-01 14:12:48
|
Module: performous
Branch: master
Commit: 6590dcde0b654486c1a08a9d27032e027d956762
Author: Fredrik Klasson <fr...@li...>
Date: Wed Sep 1 16:11:57 2010 +0200
[ ] Allow translation to lanugages with different word order for "Hiscore for %1%".
---
game/screen_songs.cc | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index 8b2c3d2..69b95c1 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -9,6 +9,7 @@
#include "i18n.hh"
#include <iostream>
#include <sstream>
+#include <boost/format.hpp>
static const double IDLE_TIMEOUT = 45.0; // seconds
@@ -209,7 +210,7 @@ void ScreenSongs::draw() {
oss_order << "(" << m_songs.currentId() + 1 << "/" << m_songs.size() << ")";
} else {
// Format the song information text
- oss_song << _("Hiscore for ") << song.title << "\n";
+ oss_song << boost::format(_("Hisccore for %1%\n")) % song.title;
// Get hiscores from database
m_database.queryPerSongHiscore_HiscoreDisplay(oss_order, m_songs.currentPtr(), hiscore_start_pos, 5);
}
|
|
From: Fredrik K. <sci...@us...> - 2010-08-29 20:03:21
|
Module: performous Branch: master Commit: 5621d5528f222c77bad262e4c3569a25ac4ae891 Author: Fredrik Klasson <fr...@li...> Date: Sun Aug 29 22:02:37 2010 +0200 [ ] More swedish translations. --- lang/sv.po | 104 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 56 insertions(+), 48 deletions(-) diff --git a/lang/sv.po b/lang/sv.po index f75bed8..4bc4caf 100644 --- a/lang/sv.po +++ b/lang/sv.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Performous\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-08-29 21:26+0100\n" -"PO-Revision-Date: 2010-08-29 21:40+0100\n" +"PO-Revision-Date: 2010-08-29 21:59+0100\n" "Last-Translator: Fredrik Klasson <sci...@gm...>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -33,14 +33,15 @@ msgstr "Skärmdump tagen!" msgid "Screenshot failed!" msgstr "Misslyckades ta skärmdump!" -# Uppträd? +# ... #: ../game/screen_intro.cc:17 msgid "Perform" -msgstr "" +msgstr "Uppträd" +# ... #: ../game/screen_intro.cc:17 msgid "Start performing!" -msgstr "" +msgstr "Börja uppträd!" #: ../game/screen_intro.cc:18 msgid "Practice" @@ -97,9 +98,10 @@ msgstr "Låten/Sången innehåller trasiga spår!" msgid "Resume" msgstr "à terupta" +# ... #: ../game/screen_sing.cc:114 msgid "Back to performing!" -msgstr "" +msgstr "Tillbaks till uppträdande" #: ../game/screen_sing.cc:115 msgid "Restart" @@ -387,9 +389,8 @@ msgid "STOP!" msgstr "STANNA!" #: xml2gettext.phNc9WvrlU.c:2 -#, fuzzy msgid "Game" -msgstr "Namn:" +msgstr "Spel" #: xml2gettext.phNc9WvrlU.c:3 msgid "Gameplay settings." @@ -397,27 +398,27 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:4 msgid "Graphic" -msgstr "" +msgstr "Grafik" #: xml2gettext.phNc9WvrlU.c:5 msgid "Video and rendering settings." -msgstr "" +msgstr "Video och renderings inställningar" #: xml2gettext.phNc9WvrlU.c:6 msgid "Audio" -msgstr "" +msgstr "Ljud" #: xml2gettext.phNc9WvrlU.c:7 msgid "Audio-related settings." -msgstr "" +msgstr "Ljud relaterade inställningar" #: xml2gettext.phNc9WvrlU.c:8 msgid "System" -msgstr "" +msgstr "System" #: xml2gettext.phNc9WvrlU.c:9 msgid "System paths." -msgstr "" +msgstr "System sökvägar" #: xml2gettext.phNc9WvrlU.c:10 msgid "Karaoke mode" @@ -429,79 +430,85 @@ msgstr "Döljer tonhöjdsvågorna, noterna och poängräkningen" #: xml2gettext.phNc9WvrlU.c:12 msgid "Pitch waves" -msgstr "" +msgstr "Tonhöjdsvågor" #: xml2gettext.phNc9WvrlU.c:13 msgid "Enable singing pitch display (when not in karaoke mode)." -msgstr "" +msgstr "Aktivera tonhöjds visning (när ej i karaoke läge)" #: xml2gettext.phNc9WvrlU.c:14 msgid "Theme" -msgstr "" +msgstr "Tema" #: xml2gettext.phNc9WvrlU.c:15 msgid "Name of the theme to use or absolute path to theme folder." -msgstr "" +msgstr "Namnet på temat att använda eller absolut sökväg till tema katalogen" #: xml2gettext.phNc9WvrlU.c:16 msgid "Keyboard as guitar" -msgstr "" +msgstr "Tangentbord som gitarr" +# ... +# Enable -> Use? #: xml2gettext.phNc9WvrlU.c:17 msgid "Enable keyboard as guitar (Frets on Fire mode)." -msgstr "" +msgstr "Använd tangentbordet som gitarr (Frets on Fire läge)" #: xml2gettext.phNc9WvrlU.c:18 msgid "Keyboard as drumkit" -msgstr "" +msgstr "Tangentbord som trummkit" +# ... +# Enable -> Use? #: xml2gettext.phNc9WvrlU.c:19 msgid "Enable keyboard as drumkit." -msgstr "" +msgstr "Använd tangetbordet som trummkit " #: xml2gettext.phNc9WvrlU.c:20 msgid "Keyboard as dance pad" -msgstr "" +msgstr "Tangentbord som dansmatta" +# ... +# Enable -> Use? #: xml2gettext.phNc9WvrlU.c:21 msgid "Enable keyboard as dance pad." -msgstr "" +msgstr "Använd tangentbord som dansmatta" #: xml2gettext.phNc9WvrlU.c:22 msgid "Joystick configuration" -msgstr "" +msgstr "Joystick konfiguration" #: xml2gettext.phNc9WvrlU.c:23 msgid "Force joystick to some kind of instrument." -msgstr "" +msgstr "Tvinga joysticken till något instrument" #: xml2gettext.phNc9WvrlU.c:24 msgid "Windowed width" -msgstr "" +msgstr "Fönsterbredd" #: xml2gettext.phNc9WvrlU.c:25 msgid "The width of the window." -msgstr "" +msgstr "Fönstrets bredd i fönsterläge" #: xml2gettext.phNc9WvrlU.c:26 msgid "Windowed height" -msgstr "" +msgstr "Fönsterhöjd" #: xml2gettext.phNc9WvrlU.c:27 msgid "The height of the window." -msgstr "" +msgstr "Fönstrets höjd i fönsterläge" #: xml2gettext.phNc9WvrlU.c:28 msgid "Fullscreen mode" -msgstr "" +msgstr "Helskärmsläge" #: xml2gettext.phNc9WvrlU.c:29 msgid "Enable fullscreen mode on startup." -msgstr "" +msgstr "Aktivera helskärmsläge vid uppstart" #: xml2gettext.phNc9WvrlU.c:30 msgid "Video playback" -msgstr "" +msgstr "Video uppspelning" #: xml2gettext.phNc9WvrlU.c:31 msgid "Allows completely disabling background videos. It is recommended to leave this enabled as Performous will still smoothly fade out the video if your computer is not fast enough." @@ -509,7 +516,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:32 msgid "Webcam background" -msgstr "" +msgstr "Webkamera bakgrund" #: xml2gettext.phNc9WvrlU.c:33 msgid "Performous can try to use webcam as a background video. You can disable it if it annoys you." @@ -517,7 +524,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:34 msgid "Webcam id" -msgstr "" +msgstr "Webkamera id" #: xml2gettext.phNc9WvrlU.c:35 msgid "Use -1 to autodetect or a number starting from 0 to choose specific device." @@ -525,7 +532,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:36 msgid "3D notes" -msgstr "" +msgstr "3D Noter" #: xml2gettext.phNc9WvrlU.c:37 msgid "Draw instrument notes as 3-dimensional objects. May hurt performance on older hardware." @@ -533,7 +540,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:38 msgid "SVG quality" -msgstr "" +msgstr "SVG kvalitet" #: xml2gettext.phNc9WvrlU.c:39 msgid "Larger numbers cause vector graphics to be rendered in higher resolution. Decrease this to make navigating in menus faster." @@ -541,7 +548,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:40 msgid "Text quality" -msgstr "" +msgstr "Text kvalitet" #: xml2gettext.phNc9WvrlU.c:41 msgid "Larger numbers cause text to be rendered in higher resolution. Decrease this to make everything a little faster." @@ -549,7 +556,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:42 msgid "Benchmark mode" -msgstr "" +msgstr "Prestandamätnings läge" #: xml2gettext.phNc9WvrlU.c:43 msgid "Framerate limit of 100 FPS is removed and the game instead renders at full speed. FPS values are printed to console. Please note that the display drivers may still limit the rendering speed to the screen refresh rate." @@ -557,7 +564,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:44 msgid "Suggested latency" -msgstr "" +msgstr "Föreslagen fördröjning" #: xml2gettext.phNc9WvrlU.c:45 msgid "This is a hint for the audio engine about the desired latency. Set this as low as possible while retaining clear audio playback. Requires restart." @@ -565,7 +572,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:46 msgid "Audio/video latency" -msgstr "" +msgstr "Ljud/video fördröjning" #: xml2gettext.phNc9WvrlU.c:47 msgid "Affects all modes. Use negative value if your display input lag is greater than the sound card output latency, positive values in the opposite case and zero if they are equal. This should be set so that the notes pass the cursor at the same time the audio is heard. Use Ctrl+F1/F2 to adjust this while performing." @@ -581,7 +588,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:50 msgid "Audio/controller latency" -msgstr "" +msgstr "Ljud/kontroll fördröjning" #: xml2gettext.phNc9WvrlU.c:51 msgid "Affects instruments and dancing only. The total of USB (guitar or dance pad) latency combined with audio output latency. Adjust so that you can hit the notes best when playing by ear (not looking on screen). Use Ctrl+F5/F6 to adjust while performing." @@ -589,7 +596,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:52 msgid "Audio devices" -msgstr "" +msgstr "Ljudenheter" #: xml2gettext.phNc9WvrlU.c:53 msgid "Press Enter to configure (TODO: implement)" @@ -597,7 +604,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:54 msgid "Menu volume" -msgstr "" +msgstr "Meny volym" #: xml2gettext.phNc9WvrlU.c:55 msgid "The volume level of menus, song previews and jukebox mode." @@ -605,7 +612,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:56 msgid "Music volume" -msgstr "" +msgstr "Musik volym" #: xml2gettext.phNc9WvrlU.c:57 msgid "The ingame music volume. Values above 90 are not recommended as distortion may occur." @@ -613,7 +620,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:58 msgid "Failure volume" -msgstr "" +msgstr "Misslyckande volym" #: xml2gettext.phNc9WvrlU.c:59 msgid "The ingame fail sound volume. Values above 90 are not recommended as distortion may occur. 11 is louder than 10, but these go to 100. 89 louder!" @@ -621,15 +628,16 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:60 msgid "Hardware MIDI input device" -msgstr "" +msgstr "Hårdvaru MIDI indataenhet" #: xml2gettext.phNc9WvrlU.c:61 msgid "Part of sound card name or its number or empty to use the first available device. Used currently for MIDI drum controllers." msgstr "" +# Låt/Sång #: xml2gettext.phNc9WvrlU.c:62 msgid "Song folders" -msgstr "" +msgstr "Låt kataloger" #: xml2gettext.phNc9WvrlU.c:63 msgid "Where to recursively look for songs. DATADIR at the beginning means all Performous data folders." @@ -637,7 +645,7 @@ msgstr "" #: xml2gettext.phNc9WvrlU.c:64 msgid "Base folders for data" -msgstr "" +msgstr "Baskatalog för data" #: xml2gettext.phNc9WvrlU.c:65 msgid "System defaults are included automatically. Additional paths can be added here." |
|
From: Fredrik K. <sci...@us...> - 2010-08-29 19:45:18
|
Module: performous
Branch: master
Commit: 3b72a0ac1423298b64b872f53d69f972ae216ea5
Author: Fredrik Klasson <fr...@li...>
Date: Sun Aug 29 21:44:49 2010 +0200
[+] Oops, missed adding the script doing the work on XML files.
---
tools/scripts/xml_gettext.sh | 116 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 116 insertions(+), 0 deletions(-)
diff --git a/tools/scripts/xml_gettext.sh b/tools/scripts/xml_gettext.sh
new file mode 100755
index 0000000..d7ff320
--- /dev/null
+++ b/tools/scripts/xml_gettext.sh
@@ -0,0 +1,116 @@
+#!/bin/bash
+#
+# This script is intended to be executed from Poedit
+# See instructions in lang/README.
+#
+# As long as the xml files are well-formed XML documents with
+# locale blocks like the following one (from scheme.xml) this
+# script should have no problems extracting the strings.
+# <locale name="C">
+# <short>Karaoke mode</short>
+# <long>Hide pitch wave, notes and scoring.</long>
+# </locale>
+
+# adds a line to the temporary source file
+append_temp_src(){
+ echo "$*" >> "$TEMP_SRC"
+}
+
+# match <locale name="C">, ignoring allowed whitespace.
+match_locale_start(){
+ echo "$1" | grep -qE '^[[:space:]]*<[[:space:]]*locale[[:space:]]+name="C"[[:space:]]*>[[:space:]]*$'
+ return $?
+}
+
+# match </locale>, ignoring allowed whitespace.
+match_locale_end(){
+ echo "$1" | grep -qE '^[[:space:]]*<[[:space:]]*/[[:space:]]*locale>[[:space:]]*$'
+ return $?
+}
+
+# matches lines with <$1>...</$1>, ignoring allowed whitespace.
+match_simple_tag(){
+ echo "$2" | grep -qE "^[[:space:]]*<[[:space:]]*$1[[:space:]]*>.*</[[:space:]]*$1[[:space:]]*>[[:space:]]*$"
+ return $?
+}
+
+# <abc>def</abc> -> _("def")
+# Note: every " is automatically replaced by \". This is what you want, not
+# invalid C code.
+transform_simple_tag_to_keyworded_string(){
+ echo "$1" | sed -re 's:\":\\\":g' -e 's:^[[:space:]]*<[[:space:]]*([a-z]+)[[:space:]]*>(.*)<[[:space:]]*/[[:space:]]*\1[[:space:]]*>[[:space:]]*$:_("\2"):'
+}
+
+transform_and_add_string(){
+ append_temp_src "$(transform_simple_tag_to_keyworded_string "$1")"
+}
+
+# transform <short/> and <long/> lines to _() lines
+process_locale_block_line(){
+ match_simple_tag "short" "$1" && transform_and_add_string "$1"
+ match_simple_tag "long" "$1" && transform_and_add_string "$1"
+}
+
+process_xml(){
+ IN_BLOCK=0
+ line_no=0
+ cat "$1" | while read line
+ do
+ line_no=$(($line_no + 1))
+
+ # A simple 2-state automata, either we're in a <locale/>-block
+ # or we're not. Limited detection and bail-out on malformed XML
+ if [[ $IN_BLOCK -eq 1 ]] ; then
+ match_locale_end "$line"
+ if [[ $? -eq 0 ]] ; then
+ IN_BLOCK=0
+ else
+ process_locale_block_line "$line"
+ fi
+
+ # <locale...> with out </locale> found:
+ match_locale_start "$line" && (echo "Malformed XML $file:$line_no: Opening locale-tag found while already inside a locale block." >&2 ;exit -1)
+
+ else
+ # </locale> with out <locale> found:
+ match_locale_end "$line" && (echo "Malformed XML $file:$line_no:: Closing locale-tag without prior opening tag." >&2 ;exit -1)
+
+ match_locale_start "$line"
+ if [[ $? -eq 0 ]] ; then
+ IN_BLOCK=1
+ fi
+ fi
+ done
+}
+
+
+if [[ $# -lt 2 ]] ; then
+ echo "USAGE: $0 <output file> <input encoding> [files...]"
+ exit -1
+elif [[ $# -eq 2 ]] ; then
+ # no input files nothing to do
+ exit 0
+fi
+
+POEDIT_FILE="$1"
+ENC="$2"
+shift
+shift
+
+# create the temporary file securely.
+TEMP_SRC=$(mktemp xml2gettext.XXXXXXXXXX.c)
+append_temp_src "/* This is a automatically generated temp file, it's safe to remove*/"
+
+# Start the dirty work
+for file in $* ; do
+ process_xml "$file"
+done
+
+# Invoke xgettext, poedit will merge this with the rest of the strings
+xgettext --force-po -L C -o "$POEDIT_FILE" --from-code="$ENC" -k_ "$TEMP_SRC"
+RV=$?
+
+# clean up
+rm "$TEMP_SRC"
+
+exit $RV
\ No newline at end of file
|
|
From: Fredrik K. <sci...@us...> - 2010-08-29 19:41:52
|
Module: performous Branch: master Commit: 9a4f2b7d630f0d82b743806e856821ead63e558c Author: Fredrik Klasson <fr...@li...> Date: Sun Aug 29 21:41:24 2010 +0200 [ ] Update the swedish translation to show an example of the XML translations. --- lang/sv.po | 268 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 266 insertions(+), 2 deletions(-) diff --git a/lang/sv.po b/lang/sv.po index 1c532b8..f75bed8 100644 --- a/lang/sv.po +++ b/lang/sv.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Performous\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-28 20:55+0100\n" -"PO-Revision-Date: 2010-08-29 12:13+0100\n" +"POT-Creation-Date: 2010-08-29 21:26+0100\n" +"PO-Revision-Date: 2010-08-29 21:40+0100\n" "Last-Translator: Fredrik Klasson <sci...@gm...>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,6 +15,7 @@ msgstr "" "X-Poedit-Country: SWEDEN\n" "X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SearchPath-0: ../game\n" +"X-Poedit-SearchPath-1: ../data\n" #: ../game/main.cc:114 msgid "Miscellaneous..." @@ -32,6 +33,7 @@ msgstr "Skärmdump tagen!" msgid "Screenshot failed!" msgstr "Misslyckades ta skärmdump!" +# Uppträd? #: ../game/screen_intro.cc:17 msgid "Perform" msgstr "" @@ -356,6 +358,11 @@ msgstr "<börja skriva för att söka>" msgid "Hiscore for " msgstr "Highscore för " +# add "ESC returns" to it? +#: ../game/screen_configuration.cc:59 +msgid "Ctrl + S to save, Ctrl + R to reset defaults" +msgstr "Ctrl + S sparar, Ctrl + R återställer ursprungsvärden" + #: ../game/instrumentgraph.cc:41 msgid "Rejoin" msgstr "" @@ -379,3 +386,260 @@ msgstr "Utmaning" msgid "STOP!" msgstr "STANNA!" +#: xml2gettext.phNc9WvrlU.c:2 +#, fuzzy +msgid "Game" +msgstr "Namn:" + +#: xml2gettext.phNc9WvrlU.c:3 +msgid "Gameplay settings." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:4 +msgid "Graphic" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:5 +msgid "Video and rendering settings." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:6 +msgid "Audio" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:7 +msgid "Audio-related settings." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:8 +msgid "System" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:9 +msgid "System paths." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:10 +msgid "Karaoke mode" +msgstr "Karaoke läge" + +#: xml2gettext.phNc9WvrlU.c:11 +msgid "Hide pitch wave, notes and scoring." +msgstr "Döljer tonhöjdsvågorna, noterna och poängräkningen" + +#: xml2gettext.phNc9WvrlU.c:12 +msgid "Pitch waves" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:13 +msgid "Enable singing pitch display (when not in karaoke mode)." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:14 +msgid "Theme" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:15 +msgid "Name of the theme to use or absolute path to theme folder." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:16 +msgid "Keyboard as guitar" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:17 +msgid "Enable keyboard as guitar (Frets on Fire mode)." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:18 +msgid "Keyboard as drumkit" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:19 +msgid "Enable keyboard as drumkit." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:20 +msgid "Keyboard as dance pad" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:21 +msgid "Enable keyboard as dance pad." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:22 +msgid "Joystick configuration" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:23 +msgid "Force joystick to some kind of instrument." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:24 +msgid "Windowed width" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:25 +msgid "The width of the window." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:26 +msgid "Windowed height" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:27 +msgid "The height of the window." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:28 +msgid "Fullscreen mode" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:29 +msgid "Enable fullscreen mode on startup." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:30 +msgid "Video playback" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:31 +msgid "Allows completely disabling background videos. It is recommended to leave this enabled as Performous will still smoothly fade out the video if your computer is not fast enough." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:32 +msgid "Webcam background" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:33 +msgid "Performous can try to use webcam as a background video. You can disable it if it annoys you." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:34 +msgid "Webcam id" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:35 +msgid "Use -1 to autodetect or a number starting from 0 to choose specific device." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:36 +msgid "3D notes" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:37 +msgid "Draw instrument notes as 3-dimensional objects. May hurt performance on older hardware." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:38 +msgid "SVG quality" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:39 +msgid "Larger numbers cause vector graphics to be rendered in higher resolution. Decrease this to make navigating in menus faster." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:40 +msgid "Text quality" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:41 +msgid "Larger numbers cause text to be rendered in higher resolution. Decrease this to make everything a little faster." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:42 +msgid "Benchmark mode" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:43 +msgid "Framerate limit of 100 FPS is removed and the game instead renders at full speed. FPS values are printed to console. Please note that the display drivers may still limit the rendering speed to the screen refresh rate." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:44 +msgid "Suggested latency" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:45 +msgid "This is a hint for the audio engine about the desired latency. Set this as low as possible while retaining clear audio playback. Requires restart." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:46 +msgid "Audio/video latency" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:47 +msgid "Affects all modes. Use negative value if your display input lag is greater than the sound card output latency, positive values in the opposite case and zero if they are equal. This should be set so that the notes pass the cursor at the same time the audio is heard. Use Ctrl+F1/F2 to adjust this while performing." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:48 +msgid "Audio round-trip latency" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:49 +msgid "Affects singing only. The time it takes for Performous playback to reach your speakers, fly to the microphone and all the way back until Performous captures and analyzes it. While performing, press Ctrl+S for synth mode and adjust with Ctrl+F3/F4." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:50 +msgid "Audio/controller latency" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:51 +msgid "Affects instruments and dancing only. The total of USB (guitar or dance pad) latency combined with audio output latency. Adjust so that you can hit the notes best when playing by ear (not looking on screen). Use Ctrl+F5/F6 to adjust while performing." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:52 +msgid "Audio devices" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:53 +msgid "Press Enter to configure (TODO: implement)" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:54 +msgid "Menu volume" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:55 +msgid "The volume level of menus, song previews and jukebox mode." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:56 +msgid "Music volume" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:57 +msgid "The ingame music volume. Values above 90 are not recommended as distortion may occur." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:58 +msgid "Failure volume" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:59 +msgid "The ingame fail sound volume. Values above 90 are not recommended as distortion may occur. 11 is louder than 10, but these go to 100. 89 louder!" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:60 +msgid "Hardware MIDI input device" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:61 +msgid "Part of sound card name or its number or empty to use the first available device. Used currently for MIDI drum controllers." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:62 +msgid "Song folders" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:63 +msgid "Where to recursively look for songs. DATADIR at the beginning means all Performous data folders." +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:64 +msgid "Base folders for data" +msgstr "" + +#: xml2gettext.phNc9WvrlU.c:65 +msgid "System defaults are included automatically. Additional paths can be added here." +msgstr "" + |
|
From: Fredrik K. <sci...@us...> - 2010-08-29 19:39:17
|
Module: performous
Branch: master
Commit: dda8d2b20c17edd548ef5d2ef1a585d83e0ee015
Author: Fredrik Klasson <fr...@li...>
Date: Sun Aug 29 21:38:43 2010 +0200
[+] I18N of XML locale blocks. Now the configuration UI should be translatable
---
game/screen_configuration.cc | 7 ++++---
lang/README | 26 +++++++++++++++++++++++---
2 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/game/screen_configuration.cc b/game/screen_configuration.cc
index e61ecf3..e9fc8ac 100644
--- a/game/screen_configuration.cc
+++ b/game/screen_configuration.cc
@@ -4,6 +4,7 @@
#include "joystick.hh"
#include "theme.hh"
#include "audio.hh"
+#include "i18n.hh"
ScreenConfiguration::ScreenConfiguration(std::string const& name, Audio& audio): Screen(name), m_audio(audio), selected() {
@@ -48,19 +49,19 @@ void ScreenConfiguration::draw() {
theme->bg.draw();
if (!configuration.empty()) {
ConfigItem const& ci = config[configuration[selected]];
- theme->item.draw(ci.getShortDesc());
+ theme->item.draw(_(ci.getShortDesc().c_str()));
theme->value.draw(ci.getValue());
// Key help
theme->short_comment_bg.dimensions.fixedHeight(0.025);
theme->short_comment_bg.dimensions.right(-0.04).screenBottom(-0.054);
theme->short_comment_bg.draw();
theme->short_comment.dimensions.left(-0.48).screenBottom(-0.067);
- theme->short_comment.draw("Ctrl + S to save, Ctrl + R to reset defaults");
+ theme->short_comment.draw(_("Ctrl + S to save, Ctrl + R to reset defaults"));
// Long description
theme->comment_bg.dimensions.middle().screenBottom(-0.01);
theme->comment_bg.draw();
theme->comment.dimensions.left(-0.48).screenBottom(-0.028);
- theme->comment.draw(ci.getLongDesc());
+ theme->comment.draw(_(ci.getLongDesc().c_str()));
}
}
diff --git a/lang/README b/lang/README
index 87652ad..7916afc 100644
--- a/lang/README
+++ b/lang/README
@@ -1,21 +1,41 @@
To add new languages:
Download POEdit (http://www.poedit.net/)
+
+Creating the catalog
+--------------------
1. Start POEdit
2. Click File -> New Catalog
3. Enter a project name (performous)
4. Click the Paths tab at the top
5. Click the New Item icon (second one, looks like a little square)
- 6. Enter the path to the directory containing your plugin file ("." tells POEdit to scan the directory that you will save the file to, usually only need to include ../game), press enter
+ 6. Enter the path to the directory containing your plug-in file ("." tells POEdit to scan the directory that you will save the file to, usually only need to include ../game and ../data), press enter
7. Click the Keywords tab at the top
8. Click the New Item icon
9. Enter _ (that's underscore), press enter
12. Click Okay
13. Choose a name for your .po file (performous)
-
+
REMEMBER TO SAVE WITH YOU LOCALE NAME
Example for English:
en.po
-Thanks to guide at http://codex.wordpress.org/User:Skippy/Creating_POT_Files
\ No newline at end of file
+Configuring the performous XML parser
+-------------------------------------
+These steps enable translation of the XML locate bits.
+ 1. Click Edit -> Preferences
+ 2. Click the Parsers tab
+ 3. Click the New button and fill out the form like this:
+ Language: Performous XML
+ List of extensions: *.xml
+ Parser command: $SOURCE_ROOT/tools/scripts/xml_gettext.sh %o %C %F
+ An item in keywords list:
+ An item in input files list: %f
+ Source code charset: %c
+ Where $SOURCE_ROOT is the path to the performous sources root.
+ 4. Click Okay
+
+Acknowledgements
+--------------
+Thanks to guide at http://codex.wordpress.org/User:Skippy/Creating_POT_Files
|
|
From: Fredrik K. <sci...@us...> - 2010-08-29 10:15:31
|
Module: performous Branch: master Commit: 1afcd9b40897df65df0c81b5aac0348d28ada649 Author: Fredrik Klasson <fr...@li...> Date: Sun Aug 29 12:15:02 2010 +0200 [+] A little swedish translations (needs some love/proof checking) --- lang/sv.po | 381 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 381 insertions(+), 0 deletions(-) diff --git a/lang/sv.po b/lang/sv.po new file mode 100644 index 0000000..1c532b8 --- /dev/null +++ b/lang/sv.po @@ -0,0 +1,381 @@ +msgid "" +msgstr "" +"Project-Id-Version: Performous\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-08-28 20:55+0100\n" +"PO-Revision-Date: 2010-08-29 12:13+0100\n" +"Last-Translator: Fredrik Klasson <sci...@gm...>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Language: Swedish\n" +"X-Poedit-Country: SWEDEN\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-SearchPath-0: ../game\n" + +#: ../game/main.cc:114 +msgid "Miscellaneous..." +msgstr "Ãvrigt..." + +#: ../game/main.cc:142 +msgid "Main menu..." +msgstr "Huvudmeny..." + +#: ../game/main.cc:153 +msgid "Screenshot taken!" +msgstr "Skärmdump tagen!" + +#: ../game/main.cc:156 +msgid "Screenshot failed!" +msgstr "Misslyckades ta skärmdump!" + +#: ../game/screen_intro.cc:17 +msgid "Perform" +msgstr "" + +#: ../game/screen_intro.cc:17 +msgid "Start performing!" +msgstr "" + +#: ../game/screen_intro.cc:18 +msgid "Practice" +msgstr "Träna" + +#: ../game/screen_intro.cc:18 +msgid "Check your skills or test the microphones" +msgstr "Testa dina förmÃ¥gor eller dina mikrofoner" + +#: ../game/screen_intro.cc:19 +msgid "Configure" +msgstr "Konfigurera" + +#: ../game/screen_intro.cc:19 +msgid "Configure game options" +msgstr "Konfigurera spel alternativ" + +#: ../game/screen_intro.cc:20 +#: ../game/screen_sing.cc:116 +msgid "Quit" +msgstr "Avsluta" + +# Avsluta/Lämna +#: ../game/screen_intro.cc:20 +msgid "Leave the game" +msgstr "Avsluta spelet" + +#: ../game/screen_intro.cc:23 +msgid "No playback devices could be used.\n" +msgstr "Inga uppspelnings enheter kunde användas.\n" + +# ... +#: ../game/screen_intro.cc:24 +msgid "" +"\n" +"Please configure some before playing." +msgstr "" +"\n" +"Vänligen konfigurera nÃ¥got för spel." + +#: ../game/screen_sing.cc:36 +msgid "Loading song..." +msgstr "Laddar lÃ¥t/sÃ¥ng..." + +#: ../game/screen_sing.cc:45 +msgid "Song is broken!" +msgstr "LÃ¥ten/SÃ¥ngen Ã¥r trasig!" + +#: ../game/screen_sing.cc:50 +msgid "Song contains broken tracks!" +msgstr "LÃ¥ten/SÃ¥ngen innehÃ¥ller trasiga spÃ¥r!" + +#: ../game/screen_sing.cc:114 +msgid "Resume" +msgstr "à terupta" + +#: ../game/screen_sing.cc:114 +msgid "Back to performing!" +msgstr "" + +#: ../game/screen_sing.cc:115 +msgid "Restart" +msgstr "Börja om" + +#: ../game/screen_sing.cc:115 +msgid "" +"Start the song\n" +"from the beginning" +msgstr "" + +# lÃ¥t/sÃ¥ng +#: ../game/screen_sing.cc:116 +msgid "Exit to song browser" +msgstr "à tergÃ¥ till lÃ¥t bläddraren" + +# ... +#: ../game/screen_sing.cc:450 +msgid " ENTER to skip instrumental break" +msgstr " tryck ENTER för att skippa/hoppa över instrumentaliskt mellanspel" + +# gradering eller betygsättning? +#: ../game/screen_sing.cc:451 +msgid " Remember to wait for grading!" +msgstr " Kom ihÃ¥g att vänta pÃ¥ graderingen!" + +#: ../game/screen_sing.cc:587 +msgid "No player!" +msgstr "Ingen spelare!" + +#: ../game/screen_sing.cc:596 +msgid "Hit singer" +msgstr "" + +#: ../game/screen_sing.cc:597 +msgid "Lead singer" +msgstr "" + +#: ../game/screen_sing.cc:598 +#: ../game/screen_sing.cc:604 +#: ../game/screen_sing.cc:610 +msgid "Rising star" +msgstr "Stjärnskott" + +#: ../game/screen_sing.cc:599 +#: ../game/screen_sing.cc:605 +#: ../game/screen_sing.cc:611 +msgid "Amateur" +msgstr "Amatör" + +#: ../game/screen_sing.cc:600 +#: ../game/screen_sing.cc:612 +msgid "Tone deaf" +msgstr "Tondöv" + +#: ../game/screen_sing.cc:602 +msgid "Maniac" +msgstr "Galning" + +# ... +#: ../game/screen_sing.cc:603 +msgid "Hoofer" +msgstr "Dansare" + +#: ../game/screen_sing.cc:606 +msgid "Loser" +msgstr "Förlorare" + +#: ../game/screen_sing.cc:608 +msgid "Virtuoso" +msgstr "Virtuos" + +# ... +#: ../game/screen_sing.cc:609 +msgid "Rocker" +msgstr "Rockare" + +#: ../game/database.cc:107 +msgid "No Items up to now." +msgstr "" + +#: ../game/database.cc:108 +msgid "Be the first to be listed here!" +msgstr "Bli den första att bli listad här!" + +#: ../game/songs.cc:199 +msgid "random order" +msgstr "slumpmässig ordning" + +#: ../game/songs.cc:200 +msgid "sorted by song" +msgstr "sorterat efter lÃ¥t/sÃ¥ng" + +#: ../game/songs.cc:201 +msgid "sorted by artist" +msgstr "sorterat efter artist" + +#: ../game/songs.cc:202 +msgid "sorted by edition" +msgstr "sorterat efter utgÃ¥va" + +#: ../game/songs.cc:203 +msgid "sorted by genre" +msgstr "sorterat efter genre" + +#: ../game/songs.cc:204 +msgid "sorted by path" +msgstr "sorterat efter sökväg" + +#: ../game/songs.cc:205 +msgid "sorted by language" +msgstr "sorterat efter sprÃ¥k" + +#: ../game/guitargraph.cc:14 +msgid "Kids" +msgstr "Barn" + +# Lätt eller enkel +#: ../game/guitargraph.cc:14 +msgid "Easy" +msgstr "Lätt" + +# Medium eller mellan kanske +#: ../game/guitargraph.cc:14 +msgid "Medium" +msgstr "Medium" + +#: ../game/guitargraph.cc:14 +msgid "Hard" +msgstr "SvÃ¥rt" + +#: ../game/guitargraph.cc:14 +msgid "Expert" +msgstr "Expert" + +# Redo! eller klar! +#: ../game/guitargraph.cc:143 +msgid "Ready!" +msgstr "Redo!" + +#: ../game/guitargraph.cc:155 +msgid "Select track" +msgstr "Välj spÃ¥r" + +#: ../game/guitargraph.cc:170 +msgid "Select difficulty" +msgstr "Välj svÃ¥righetsgrad" + +#: ../game/guitargraph.cc:173 +msgid "Lefty-mode" +msgstr "Vänsterläge" + +#: ../game/guitargraph.cc:182 +msgid "ON" +msgstr "Pà " + +#: ../game/guitargraph.cc:182 +msgid "OFF" +msgstr "AV" + +#: ../game/guitargraph.cc:183 +msgid "Toggle lefty-mode" +msgstr "Växla vänsterläge" + +#: ../game/guitargraph.cc:453 +msgid "Streak!" +msgstr "" + +# ... +#: ../game/guitargraph.cc:470 +msgid "" +"God Mode\n" +"Activated!" +msgstr "" +"God Mode\n" +"Aktiverat!" + +#: ../game/guitargraph.cc:471 +msgid "Mistakes ignored!" +msgstr "Misstag ignorerade" + +#: ../game/guitargraph.cc:1104 +msgid "Drum Fill!" +msgstr "" + +# ... +#: ../game/guitargraph.cc:1105 +msgid "God Mode Ready!" +msgstr "God Mode Redo!" + +#: ../game/guitargraph.cc:1110 +msgid "Solo!" +msgstr "Solo!" + +#: ../game/screen_players.cc:110 +msgid "No players found!" +msgstr "Inga spelare funna!" + +#: ../game/screen_players.cc:111 +msgid "Enter a name to create a new player." +msgstr "Ange ett namn för att skapa spelare." + +#: ../game/screen_players.cc:113 +msgid "Press enter to create player!" +msgstr "Tryck pÃ¥ enter för att skapa spelaren!" + +# fick/klarade/tog/plockade +#: ../game/screen_players.cc:120 +msgid "You reached %1% points!" +msgstr "Du fick %1% poäng!" + +#: ../game/screen_players.cc:121 +msgid "Change player with arrow keys." +msgstr "Byt spelare med piltangenterna." + +#: ../game/screen_players.cc:122 +msgid "Name:" +msgstr "Namn:" + +#: ../game/screen_players.cc:125 +msgid "Type text to filter or create a new player." +msgstr "Skriv in en text för att filtrera eller skapa spelare" + +#: ../game/screen_players.cc:125 +msgid "Search Text:" +msgstr "Sök text:" + +#: ../game/screen_songs.cc:195 +msgid "No songs found!" +msgstr "Inga lÃ¥tar/sÃ¥nger funna" + +# gratis eller fria? +#: ../game/screen_songs.cc:196 +msgid "" +"Visit performous.org\n" +"for free songs" +msgstr "" +"Besök performous,org\n" +"för gratis/fria lÃ¥tar/sÃ¥nger" + +#: ../game/screen_songs.cc:198 +msgid "no songs match search" +msgstr "inga lÃ¥tar/sÃ¥nger matchar sökningen" + +# ... +#: ../game/screen_songs.cc:206 +msgid "(press END to view hiscores)" +msgstr "(tryck pÃ¥ END för att visa highscore tabellen)" + +#: ../game/screen_songs.cc:207 +msgid "<type in to search>" +msgstr "<börja skriva för att söka>" + +# ... +#: ../game/screen_songs.cc:212 +msgid "Hiscore for " +msgstr "Highscore för " + +#: ../game/instrumentgraph.cc:41 +msgid "Rejoin" +msgstr "" + +# ... +#: ../game/instrumentgraph.cc:41 +msgid "Change selections" +msgstr "Ãndra val" + +#: ../game/dancegraph.cc:18 +msgid "Beginner" +msgstr "Nybörjare" + +# ... +#: ../game/dancegraph.cc:18 +msgid "Challenge" +msgstr "Utmaning" + +# stanna eller sluta? +#: ../game/dancegraph.cc:260 +msgid "STOP!" +msgstr "STANNA!" + |
|
From: Fredrik K. <sci...@us...> - 2010-08-28 17:10:21
|
Module: performous
Branch: master
Commit: 4502574d87357279f2c84251515a2d35efe021b8
Author: Fredrik Klasson <fr...@li...>
Date: Sat Aug 28 19:09:47 2010 +0200
[ ] Updating comment about logger::teardown. More in sync with reality this way.
---
game/log.cc | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/game/log.cc b/game/log.cc
index 9029c52..375ece5 100644
--- a/game/log.cc
+++ b/game/log.cc
@@ -115,8 +115,7 @@ namespace logger {
std::clog << "logger/info: Log level is: " << level_regexp_str << std::endl;
}
- /* this function might not be called, it's ok not to call it at regular shutdown.
- * This is mainly for debugging purposes. */
+ // Note: not calling this at exit time introduces a use/dtor-race, which may cause a crash.
void teardown(){
if(__default_ClogBuf == 0) throw std::runtime_error("Internal logger error #2");
if(level_regex == 0) throw std::runtime_error("Internal logger error #3");
|
|
From: Fredrik K. <sci...@us...> - 2010-08-27 15:50:29
|
Module: performous
Branch: master
Commit: 6c8ed6fe9d4dcfc4b07ac7d848597a8855a421c7
Author: Fredrik Klasson <fr...@li...>
Date: Fri Aug 27 17:50:04 2010 +0200
[ ] Tear down the logger at exit and prevent a race. This should fix the reported crashes at exit. (needs verififaction from someone that got hit by the race cond.)
---
game/main.cc | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/game/main.cc b/game/main.cc
index 00cf98f..6af350f 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -338,6 +338,9 @@ int main(int argc, char** argv) try {
// Run the game init and main loop
mainLoop(songlist);
+
+ logger::teardown();
+
return EXIT_SUCCESS; // Do not remove. SDL_Main (which this function is called on some platforms) needs return statement.
} catch (std::exception& e) {
std::cerr << "FATAL ERROR: " << e.what() << std::endl;
|
|
From: Darkmagister <dar...@us...> - 2010-08-26 18:26:10
|
Module: performous
Branch: master
Commit: 99a061f00a58feaa3787837a365f25cf283dcc24
Author: Federico Pietta <f.p...@gm...>
Date: Thu Aug 26 20:26:44 2010 +0200
Update debian testing dependency
---
cmake/performous-packaging.cmake | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/cmake/performous-packaging.cmake b/cmake/performous-packaging.cmake
index d65dd92..b712693 100644
--- a/cmake/performous-packaging.cmake
+++ b/cmake/performous-packaging.cmake
@@ -58,7 +58,7 @@ if(UNIX)
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libsdl1.2debian, libcairo2, librsvg2-2, libboost-dev, libavcodec51, libavformat52, libswscale0, libmagick++10, libxml++2.6-2, libglew1.5")
endif("${LSB_DISTRIB}" MATCHES "Debian5.*")
if("${LSB_DISTRIB}" MATCHES "Debiantesting")
- set(CPACK_DEBIAN_PACKAGE_DEPENDS "libsdl1.2debian, libcairo2, librsvg2-2, libboost-dev, libavcodec52, libavformat52, libswscale0, libmagick++10, libxml++2.6-2, libglew1.5")
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libsdl1.2debian, libcairo2, librsvg2-2, libboost-dev, libavcodec52, libavformat52, libswscale0, libmagick++3, libxml++2.6-2, libglew1.5")
endif("${LSB_DISTRIB}" MATCHES "Debiantesting")
if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
message("WARNING: ${LSB_DISTRIB} not supported yet.\nPlease set deps in cmake/performous-packaging.cmake before packaging.")
|
|
From: Darkmagister <dar...@us...> - 2010-08-26 18:01:59
|
Module: performous
Branch: master
Commit: 2dc3a433538a7007675dda42b5af4d89f209e30f
Author: Federico Pietta <f.p...@gm...>
Date: Thu Aug 26 20:02:38 2010 +0200
Fix debian package name and debian testing recognition
---
cmake/performous-packaging.cmake | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/cmake/performous-packaging.cmake b/cmake/performous-packaging.cmake
index c527902..d65dd92 100644
--- a/cmake/performous-packaging.cmake
+++ b/cmake/performous-packaging.cmake
@@ -57,9 +57,13 @@ if(UNIX)
if("${LSB_DISTRIB}" MATCHES "Debian5.*")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libsdl1.2debian, libcairo2, librsvg2-2, libboost-dev, libavcodec51, libavformat52, libswscale0, libmagick++10, libxml++2.6-2, libglew1.5")
endif("${LSB_DISTRIB}" MATCHES "Debian5.*")
+ if("${LSB_DISTRIB}" MATCHES "Debiantesting")
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libsdl1.2debian, libcairo2, librsvg2-2, libboost-dev, libavcodec52, libavformat52, libswscale0, libmagick++10, libxml++2.6-2, libglew1.5")
+ endif("${LSB_DISTRIB}" MATCHES "Debiantesting")
if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
message("WARNING: ${LSB_DISTRIB} not supported yet.\nPlease set deps in cmake/performous-packaging.cmake before packaging.")
endif(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
+ string(TOLOWER "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-${LSB_DISTRIB}_${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_FILE_NAME)
endif("${LSB_DISTRIB}" MATCHES "Ubuntu|Debian")
# For Fedora-based distros we want to create RPM packages.
if("${LSB_DISTRIB}" MATCHES "Fedora")
|
|
From: Darkmagister <dar...@us...> - 2010-08-26 11:46:45
|
Module: performous
Branch: master
Commit: 0aaf29f0c240fb4786073e2f759d0596792213e8
Author: Darkmagister <f.p...@gm...>
Date: Thu Aug 26 13:38:40 2010 +0200
Removed kick as Start button
---
game/joystick.cc | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/game/joystick.cc b/game/joystick.cc
index a9f92a1..2296025 100644
--- a/game/joystick.cc
+++ b/game/joystick.cc
@@ -155,8 +155,7 @@ input::NavButton input::getNav(SDL_Event const &e) {
else return input::NONE;
} else if (devt.type_match(input::DRUMS)) {
// Drums can be used for navigation
- if (b == 0) return input::START;
- else if (b == 1) return input::LEFT;
+ if (b == 1) return input::LEFT;
else if (b == 2) return input::UP;
else if (b == 3) return input::DOWN;
else if (b == 4) return input::RIGHT;
|