|
From: Yoda-JM <yo...@us...> - 2009-07-11 10:20:50
|
Module: performous
Branch: master
Commit: dd75dc2146bcf4b964b17b8ccf6aa3d65775a4c6
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Jul 11 12:20:14 2009 +0200
Removed PERFORMOUS_CONFIG_SCHEMA and add getDataPath
---
CMakeLists.txt | 1 -
cmake/performous.sh.cmake | 2 +-
game/configuration.cc | 10 +++++++---
game/fs.cc | 11 +++++++++++
game/fs.hh | 2 ++
game/joystick.cc | 15 +++++++--------
game/main.cc | 2 +-
7 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c07a37a..e07f9c4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,7 +63,6 @@ if(LAUNCHER_SCRIPT)
if(UNIX AND NOT "${FULL_PREFIX}" MATCHES "^/")
set(FULL_PREFIX "${CMAKE_BINARY_DIR}/${FULL_PREFIX}")
endif(UNIX AND NOT "${FULL_PREFIX}" MATCHES "^/")
- set(PERFORMOUS_CONFIG_SCHEMA "${FULL_PREFIX}/${SHARE_INSTALL}/config/performous.xml")
set(PERFORMOUS_PLUGIN_PATH "${FULL_PREFIX}/lib${LIB_SUFFIX}/libda")
set(PERFORMOUS_EXECUTABLE "${FULL_PREFIX}/bin/performous")
configure_file("${PROJECT_SOURCE_DIR}/cmake/performous.sh.cmake" "${PROJECT_BINARY_DIR}/performous.sh" ESCAPE_QUOTES @ONLY)
diff --git a/cmake/performous.sh.cmake b/cmake/performous.sh.cmake
index c2f790f..fa386cc 100644
--- a/cmake/performous.sh.cmake
+++ b/cmake/performous.sh.cmake
@@ -1,4 +1,4 @@
#!/bin/sh
-env PERFORMOUS_DATA_DIR='@CMAKE_INSTALL_PREFIX@/@SHARE_INSTALL@' PERFORMOUS_CONFIG_SCHEMA='@PERFORMOUS_CONFIG_SCHEMA@' PLUGIN_PATH='@PERFORMOUS_PLUGIN_PATH@' '@PERFORMOUS_EXECUTABLE@' $@
+env PERFORMOUS_DATA_DIR='@CMAKE_INSTALL_PREFIX@/@SHARE_INSTALL@' PLUGIN_PATH='@PERFORMOUS_PLUGIN_PATH@' '@PERFORMOUS_EXECUTABLE@' $@
diff --git a/game/configuration.cc b/game/configuration.cc
index 7e8aa2f..87e20ca 100644
--- a/game/configuration.cc
+++ b/game/configuration.cc
@@ -281,8 +281,12 @@ void readConfig() {
{
typedef std::vector<std::string> ConfigList;
ConfigList config_list;
- char const* env_config = getenv("PERFORMOUS_CONFIG_SCHEMA");
- if (env_config) config_list.push_back(env_config);
+ char const* env_data_dir = getenv("PERFORMOUS_DATA_DIR");
+ if (env_data_dir) {
+ std::string config_file(env_data_dir);
+ config_file.append("/config/performous.xml");
+ config_list.push_back(config_file);
+ }
config_list.push_back("/usr/local/share/games/performous/config/performous.xml");
config_list.push_back("/usr/local/share/performous/config/performous.xml");
config_list.push_back("/usr/share/games/performous/config/performous.xml");
@@ -293,7 +297,7 @@ void readConfig() {
std::ostringstream oss;
oss << "No config schema file found. The following locations were tried:\n";
std::copy(config_list.begin(), config_list.end(), std::ostream_iterator<std::string>(oss, "\n"));
- oss << "Install the file or define environment variable PERFORMOUS_CONFIG_SCHEMA\n";
+ oss << "Install the file or define environment variable PERFORMOUS_DATA_DIR\n";
throw std::runtime_error(oss.str());
}
schemafile = *it;
diff --git a/game/fs.cc b/game/fs.cc
index 77a1713..f504fc1 100644
--- a/game/fs.cc
+++ b/game/fs.cc
@@ -43,3 +43,14 @@ std::string getThemePath(std::string const& filename) {
return theme + "/" + filename;
}
+std::string getDataPath(std::string const& filename) {
+ // Figure out theme folder (if theme name rather than path was given)
+ std::string data_dir;
+ ConfigItem::StringList sd = config["system/path_data"].sl();
+ for (std::vector<std::string>::const_iterator it = sd.begin(); it != sd.end(); ++it) {
+ fs::path p = *it;
+ if (fs::is_directory(p)) { data_dir = p.string(); break; }
+ }
+ return data_dir + "/" + filename;
+}
+
diff --git a/game/fs.hh b/game/fs.hh
index 9758ee6..ea02bbe 100644
--- a/game/fs.hh
+++ b/game/fs.hh
@@ -14,3 +14,5 @@ fs::path pathMangle(fs::path const& dir);
/** Get full path to a file from the current theme **/
std::string getThemePath(std::string const& filename);
+/** Get full path to a data file **/
+std::string getDataPath(std::string const& filename);
diff --git a/game/joystick.cc b/game/joystick.cc
index d26e8a8..8c888e6 100644
--- a/game/joystick.cc
+++ b/game/joystick.cc
@@ -1,4 +1,5 @@
#include "joystick.hh"
+#include "fs.hh"
#include <iostream>
#include <cstdlib>
@@ -9,8 +10,6 @@
#define PS3_DRUM_CONTROLLER_XXX 4
#define PS3_DRUM_CONTROLLER_ORANGE 5
-#define PERFORMOUS_DATA_DIR "/tmp/tmp/share/games/performous/sounds/"
-
void check_joystick_event(SDL_Event event, Audio &audio) {
switch( event.type ) {
case SDL_JOYAXISMOTION:
@@ -26,22 +25,22 @@ void check_joystick_event(SDL_Event event, Audio &audio) {
std::cout << "Received a button down on " << (int)event.jbutton.which << " on " << (int)event.jbutton.button << std::endl;
switch( event.jbutton.button ) {
case PS3_DRUM_CONTROLLER_RED: // Snare drum
- audio.playSample(PERFORMOUS_DATA_DIR "drum_snare.ogg");
+ audio.playSample(getDataPath("sounds/drum_snare.ogg"));
break;
case PS3_DRUM_CONTROLLER_BLUE: // Tom 1
- audio.playSample(PERFORMOUS_DATA_DIR "drum_tom1.ogg");
+ audio.playSample(getDataPath("sounds/drum_tom1.ogg"));
break;
case PS3_DRUM_CONTROLLER_GREEN: // Tom 2
- audio.playSample(PERFORMOUS_DATA_DIR "drum_tom2.ogg");
+ audio.playSample(getDataPath("sounds/drum_tom2.ogg"));
break;
case PS3_DRUM_CONTROLLER_YELLOW: // Hi hat
- audio.playSample(PERFORMOUS_DATA_DIR "drum_hi-hat.ogg");
+ audio.playSample(getDataPath("sounds/drum_hi-hat.ogg"));
break;
case PS3_DRUM_CONTROLLER_ORANGE: // crash cymbal
- audio.playSample(PERFORMOUS_DATA_DIR "drum_cymbal.ogg");
+ audio.playSample(getDataPath("sounds/drum_cymbal.ogg"));
break;
case PS3_DRUM_CONTROLLER_XXX: // Drum bass
- audio.playSample(PERFORMOUS_DATA_DIR "drum_bass.ogg");
+ audio.playSample(getDataPath("sounds/drum_bass.ogg"));
break;
}
break;
diff --git a/game/main.cc b/game/main.cc
index c8580bd..29e4b36 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -265,7 +265,7 @@ int main(int argc, char** argv) {
try {
readConfig();
char const* env_data_dir = getenv("PERFORMOUS_DATA_DIR");
- if(env_data_dir) config["system/path_data"].sl().push_back(std::string(env_data_dir));
+ if(env_data_dir) config["system/path_data"].sl().insert(config["system/path_data"].sl().begin(),std::string(env_data_dir));
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
return EXIT_FAILURE;
|