- updates to commondata handling. From now on commondata tag specified the commondata folder under a techtree making it easier to share data and portable since you just need to copy the techtree and its contents, this means no sharing data between techtrees (which is good since we don't want such dependencies)
This commit is contained in:
parent
9c992ed353
commit
449e3f25c8
|
@ -32,7 +32,6 @@ find glest.ini \( -name "*" \) -exec cp -p "{}" $RELEASEDIR/glest_linux.ini ';'
|
||||||
find glestkeys.ini \( -name "*" \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
find glestkeys.ini \( -name "*" \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
||||||
find configuration.xml \( -name "*" \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
find configuration.xml \( -name "*" \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
||||||
|
|
||||||
find commondata/ \( -name "*" \) -not \( -name .svn -prune \) -not \( -name "*~" -prune \) -not \( -name "*.bak" -prune \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
|
||||||
find data/ \( -name "*" \) -not \( -name .svn -prune \) -not \( -name "*~" -prune \) -not \( -name "*.bak" -prune \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
find data/ \( -name "*" \) -not \( -name .svn -prune \) -not \( -name "*~" -prune \) -not \( -name "*.bak" -prune \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
||||||
find docs/ \( -name "*" \) -not \( -name .svn -prune \) -not \( -name "*~" -prune \) -not \( -name "*.bak" -prune \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
find docs/ \( -name "*" \) -not \( -name .svn -prune \) -not \( -name "*~" -prune \) -not \( -name "*.bak" -prune \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
||||||
find maps/ \( -name "*" \) -not \( -name .svn -prune \) -not \( -name "*~" -prune \) -not \( -name "*.bak" -prune \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
find maps/ \( -name "*" \) -not \( -name .svn -prune \) -not \( -name "*~" -prune \) -not \( -name "*.bak" -prune \) -exec cp -p --parents "{}" $RELEASEDIR ';'
|
||||||
|
|
|
@ -201,7 +201,6 @@ Section "${APNAME} (required)"
|
||||||
File "..\..\..\source\tools\glexemel\g3d_logo.png"
|
File "..\..\..\source\tools\glexemel\g3d_logo.png"
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
|
|
||||||
File /r /x .svn /x mydata "..\..\..\data\glest_game\commondata"
|
|
||||||
File /r /x .svn /x mydata "..\..\..\data\glest_game\data"
|
File /r /x .svn /x mydata "..\..\..\data\glest_game\data"
|
||||||
File /r /x .svn /x mydata "..\..\..\data\glest_game\docs"
|
File /r /x .svn /x mydata "..\..\..\data\glest_game\docs"
|
||||||
File /r /x .svn /x mydata "..\..\..\data\glest_game\maps"
|
File /r /x .svn /x mydata "..\..\..\data\glest_game\maps"
|
||||||
|
@ -279,7 +278,6 @@ Section "Uninstall"
|
||||||
Delete $INSTDIR\xerces-c_3_0.dll
|
Delete $INSTDIR\xerces-c_3_0.dll
|
||||||
Delete $INSTDIR\*.log
|
Delete $INSTDIR\*.log
|
||||||
|
|
||||||
Delete $INSTDIR\commondata\*.*
|
|
||||||
Delete $INSTDIR\data\*.*
|
Delete $INSTDIR\data\*.*
|
||||||
Delete $INSTDIR\docs\*.*
|
Delete $INSTDIR\docs\*.*
|
||||||
Delete $INSTDIR\maps\*.*
|
Delete $INSTDIR\maps\*.*
|
||||||
|
@ -289,7 +287,6 @@ Section "Uninstall"
|
||||||
Delete $INSTDIR\tilesets\*.*
|
Delete $INSTDIR\tilesets\*.*
|
||||||
Delete $INSTDIR\tutorials\*.*
|
Delete $INSTDIR\tutorials\*.*
|
||||||
|
|
||||||
RMDir /r $INSTDIR\commondata
|
|
||||||
RMDir /r $INSTDIR\data
|
RMDir /r $INSTDIR\data
|
||||||
RMDir /r $INSTDIR\docs
|
RMDir /r $INSTDIR\docs
|
||||||
RMDir /r $INSTDIR\maps
|
RMDir /r $INSTDIR\maps
|
||||||
|
|
|
@ -43,7 +43,7 @@ void Configuration::load(const string &path){
|
||||||
void Configuration::loadStructure(const string &path){
|
void Configuration::loadStructure(const string &path){
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
xmlTree.load(path,Properties::getTagReplacementValues());
|
||||||
|
|
||||||
const XmlNode *configurationNode= xmlTree.getRootNode();
|
const XmlNode *configurationNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
|
|
|
@ -931,7 +931,7 @@ void MainWindow::loadUnit(string path, string skillName) {
|
||||||
|
|
||||||
if(fileExists(unitXML) == true) {
|
if(fileExists(unitXML) == true) {
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(unitXML);
|
xmlTree.load(unitXML,Properties::getTagReplacementValues());
|
||||||
const XmlNode *unitNode= xmlTree.getRootNode();
|
const XmlNode *unitNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
bool foundSkillName = false;
|
bool foundSkillName = false;
|
||||||
|
@ -1102,7 +1102,7 @@ void MainWindow::loadParticle(string path) {
|
||||||
|
|
||||||
if(fileExists(unitXML) == true) {
|
if(fileExists(unitXML) == true) {
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(unitXML);
|
xmlTree.load(unitXML,Properties::getTagReplacementValues());
|
||||||
const XmlNode *unitNode= xmlTree.getRootNode();
|
const XmlNode *unitNode= xmlTree.getRootNode();
|
||||||
const XmlNode *parametersNode= unitNode->getChild("parameters");
|
const XmlNode *parametersNode= unitNode->getChild("parameters");
|
||||||
//size
|
//size
|
||||||
|
@ -1116,7 +1116,7 @@ void MainWindow::loadParticle(string path) {
|
||||||
std::map<string,vector<pair<string, string> > > loadedFileList;
|
std::map<string,vector<pair<string, string> > > loadedFileList;
|
||||||
UnitParticleSystemType *unitParticleSystemType = new UnitParticleSystemType();
|
UnitParticleSystemType *unitParticleSystemType = new UnitParticleSystemType();
|
||||||
unitParticleSystemType->load(dir, dir + folderDelimiter + particlePath,
|
unitParticleSystemType->load(dir, dir + folderDelimiter + particlePath,
|
||||||
renderer,loadedFileList,"g3dviewer");
|
renderer,loadedFileList,"g3dviewer","");
|
||||||
unitParticleSystemTypes.push_back(unitParticleSystemType);
|
unitParticleSystemTypes.push_back(unitParticleSystemType);
|
||||||
|
|
||||||
for(std::vector<UnitParticleSystemType *>::const_iterator it= unitParticleSystemTypes.begin(); it != unitParticleSystemTypes.end(); ++it) {
|
for(std::vector<UnitParticleSystemType *>::const_iterator it= unitParticleSystemTypes.begin(); it != unitParticleSystemTypes.end(); ++it) {
|
||||||
|
@ -1193,7 +1193,7 @@ void MainWindow::loadProjectileParticle(string path) {
|
||||||
|
|
||||||
if(fileExists(unitXML) == true) {
|
if(fileExists(unitXML) == true) {
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(unitXML);
|
xmlTree.load(unitXML,Properties::getTagReplacementValues());
|
||||||
const XmlNode *unitNode= xmlTree.getRootNode();
|
const XmlNode *unitNode= xmlTree.getRootNode();
|
||||||
const XmlNode *parametersNode= unitNode->getChild("parameters");
|
const XmlNode *parametersNode= unitNode->getChild("parameters");
|
||||||
//size
|
//size
|
||||||
|
@ -1205,7 +1205,7 @@ void MainWindow::loadProjectileParticle(string path) {
|
||||||
// std::cout << "About to load [" << particlePath << "] from [" << dir << "] unit [" << unitXML << "]" << std::endl;
|
// std::cout << "About to load [" << particlePath << "] from [" << dir << "] unit [" << unitXML << "]" << std::endl;
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(dir + folderDelimiter + particlePath);
|
xmlTree.load(dir + folderDelimiter + particlePath,Properties::getTagReplacementValues());
|
||||||
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
// std::cout << "Loaded successfully, loading values..." << std::endl;
|
// std::cout << "Loaded successfully, loading values..." << std::endl;
|
||||||
|
@ -1214,7 +1214,7 @@ void MainWindow::loadProjectileParticle(string path) {
|
||||||
ParticleSystemTypeProjectile *projectileParticleSystemType= new ParticleSystemTypeProjectile();
|
ParticleSystemTypeProjectile *projectileParticleSystemType= new ParticleSystemTypeProjectile();
|
||||||
projectileParticleSystemType->load(dir,
|
projectileParticleSystemType->load(dir,
|
||||||
dir + folderDelimiter + particlePath,renderer, loadedFileList,
|
dir + folderDelimiter + particlePath,renderer, loadedFileList,
|
||||||
"g3dviewer");
|
"g3dviewer","");
|
||||||
|
|
||||||
// std::cout << "Values loaded, about to read..." << std::endl;
|
// std::cout << "Values loaded, about to read..." << std::endl;
|
||||||
|
|
||||||
|
@ -1296,7 +1296,7 @@ void MainWindow::loadSplashParticle(string path) { // uses ParticleSystemTypeSp
|
||||||
|
|
||||||
if(fileExists(unitXML) == true) {
|
if(fileExists(unitXML) == true) {
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(unitXML);
|
xmlTree.load(unitXML,Properties::getTagReplacementValues());
|
||||||
const XmlNode *unitNode= xmlTree.getRootNode();
|
const XmlNode *unitNode= xmlTree.getRootNode();
|
||||||
const XmlNode *parametersNode= unitNode->getChild("parameters");
|
const XmlNode *parametersNode= unitNode->getChild("parameters");
|
||||||
//size
|
//size
|
||||||
|
@ -1308,7 +1308,7 @@ void MainWindow::loadSplashParticle(string path) { // uses ParticleSystemTypeSp
|
||||||
// std::cout << "About to load [" << particlePath << "] from [" << dir << "] unit [" << unitXML << "]" << std::endl;
|
// std::cout << "About to load [" << particlePath << "] from [" << dir << "] unit [" << unitXML << "]" << std::endl;
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(dir + folderDelimiter + particlePath);
|
xmlTree.load(dir + folderDelimiter + particlePath,Properties::getTagReplacementValues());
|
||||||
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
// std::cout << "Loaded successfully, loading values..." << std::endl;
|
// std::cout << "Loaded successfully, loading values..." << std::endl;
|
||||||
|
@ -1316,7 +1316,7 @@ void MainWindow::loadSplashParticle(string path) { // uses ParticleSystemTypeSp
|
||||||
std::map<string,vector<pair<string, string> > > loadedFileList;
|
std::map<string,vector<pair<string, string> > > loadedFileList;
|
||||||
ParticleSystemTypeSplash *splashParticleSystemType= new ParticleSystemTypeSplash();
|
ParticleSystemTypeSplash *splashParticleSystemType= new ParticleSystemTypeSplash();
|
||||||
splashParticleSystemType->load(dir, dir + folderDelimiter + particlePath,renderer,
|
splashParticleSystemType->load(dir, dir + folderDelimiter + particlePath,renderer,
|
||||||
loadedFileList,"g3dviewer"); // <---- only that must be splash...
|
loadedFileList,"g3dviewer",""); // <---- only that must be splash...
|
||||||
|
|
||||||
// std::cout << "Values loaded, about to read..." << std::endl;
|
// std::cout << "Values loaded, about to read..." << std::endl;
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ ParticleSystemType::ParticleSystemType() {
|
||||||
|
|
||||||
void ParticleSystemType::load(const XmlNode *particleSystemNode, const string &dir,
|
void ParticleSystemType::load(const XmlNode *particleSystemNode, const string &dir,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader) {
|
string parentLoader, string techtreePath) {
|
||||||
//texture
|
//texture
|
||||||
const XmlNode *textureNode= particleSystemNode->getChild("texture");
|
const XmlNode *textureNode= particleSystemNode->getChild("texture");
|
||||||
bool textureEnabled= textureNode->getAttribute("value")->getBoolValue();
|
bool textureEnabled= textureNode->getAttribute("value")->getBoolValue();
|
||||||
|
@ -188,16 +188,19 @@ void ParticleSystemType::setValues(AttackParticleSystem *ats){
|
||||||
|
|
||||||
void ParticleSystemTypeProjectile::load(const string &dir, const string &path,
|
void ParticleSystemTypeProjectile::load(const string &dir, const string &path,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader) {
|
string parentLoader, string techtreePath) {
|
||||||
|
|
||||||
try{
|
try{
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
|
||||||
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techtreePath + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(parentLoader,parentLoader));
|
loadedFileList[path].push_back(make_pair(parentLoader,parentLoader));
|
||||||
|
|
||||||
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
ParticleSystemType::load(particleSystemNode, dir, renderer, loadedFileList,parentLoader);
|
ParticleSystemType::load(particleSystemNode, dir, renderer, loadedFileList,parentLoader, techtreePath);
|
||||||
|
|
||||||
//trajectory values
|
//trajectory values
|
||||||
const XmlNode *tajectoryNode= particleSystemNode->getChild("trajectory");
|
const XmlNode *tajectoryNode= particleSystemNode->getChild("trajectory");
|
||||||
|
@ -250,16 +253,19 @@ ProjectileParticleSystem *ParticleSystemTypeProjectile::create() {
|
||||||
|
|
||||||
void ParticleSystemTypeSplash::load(const string &dir, const string &path,
|
void ParticleSystemTypeSplash::load(const string &dir, const string &path,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader) {
|
string parentLoader, string techtreePath) {
|
||||||
|
|
||||||
try{
|
try{
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
|
||||||
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techtreePath + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(parentLoader,parentLoader));
|
loadedFileList[path].push_back(make_pair(parentLoader,parentLoader));
|
||||||
|
|
||||||
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
ParticleSystemType::load(particleSystemNode, dir, renderer, loadedFileList, parentLoader);
|
ParticleSystemType::load(particleSystemNode, dir, renderer, loadedFileList, parentLoader, techtreePath);
|
||||||
|
|
||||||
//emission rate fade
|
//emission rate fade
|
||||||
const XmlNode *emissionRateFadeNode= particleSystemNode->getChild("emission-rate-fade");
|
const XmlNode *emissionRateFadeNode= particleSystemNode->getChild("emission-rate-fade");
|
||||||
|
|
|
@ -69,7 +69,7 @@ public:
|
||||||
ParticleSystemType();
|
ParticleSystemType();
|
||||||
void load(const XmlNode *particleSystemNode, const string &dir,
|
void load(const XmlNode *particleSystemNode, const string &dir,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader);
|
string parentLoader, string techtreePath);
|
||||||
void setValues(AttackParticleSystem *ats);
|
void setValues(AttackParticleSystem *ats);
|
||||||
bool hasTexture() const { return(texture != NULL); }
|
bool hasTexture() const { return(texture != NULL); }
|
||||||
bool hasModel() const { return(model != NULL); }
|
bool hasModel() const { return(model != NULL); }
|
||||||
|
@ -92,7 +92,7 @@ private:
|
||||||
public:
|
public:
|
||||||
void load(const string &dir, const string &path,
|
void load(const string &dir, const string &path,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader);
|
string parentLoader, string techtreePath);
|
||||||
ProjectileParticleSystem *create();
|
ProjectileParticleSystem *create();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -105,7 +105,7 @@ class ParticleSystemTypeSplash: public ParticleSystemType {
|
||||||
public:
|
public:
|
||||||
void load(const string &dir, const string &path,
|
void load(const string &dir, const string &path,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader);
|
string parentLoader, string techtreePath);
|
||||||
SplashParticleSystem *create();
|
SplashParticleSystem *create();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -31,8 +31,9 @@ namespace Glest{ namespace Game{
|
||||||
|
|
||||||
void UnitParticleSystemType::load(const XmlNode *particleSystemNode, const string &dir,
|
void UnitParticleSystemType::load(const XmlNode *particleSystemNode, const string &dir,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader) {
|
string parentLoader, string techtreePath) {
|
||||||
ParticleSystemType::load(particleSystemNode, dir, renderer, loadedFileList, parentLoader);
|
ParticleSystemType::load(particleSystemNode, dir, renderer, loadedFileList,
|
||||||
|
parentLoader,techtreePath);
|
||||||
//radius
|
//radius
|
||||||
const XmlNode *radiusNode= particleSystemNode->getChild("radius");
|
const XmlNode *radiusNode= particleSystemNode->getChild("radius");
|
||||||
radius= radiusNode->getAttribute("value")->getFloatValue();
|
radius= radiusNode->getAttribute("value")->getFloatValue();
|
||||||
|
@ -138,16 +139,19 @@ const void UnitParticleSystemType::setValues(UnitParticleSystem *ups){
|
||||||
|
|
||||||
void UnitParticleSystemType::load(const string &dir, const string &path,
|
void UnitParticleSystemType::load(const string &dir, const string &path,
|
||||||
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *renderer, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader) {
|
string parentLoader, string techtreePath) {
|
||||||
|
|
||||||
try{
|
try{
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
|
||||||
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techtreePath + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(parentLoader,parentLoader));
|
loadedFileList[path].push_back(make_pair(parentLoader,parentLoader));
|
||||||
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
const XmlNode *particleSystemNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
UnitParticleSystemType::load(particleSystemNode, dir, renderer,
|
UnitParticleSystemType::load(particleSystemNode, dir, renderer,
|
||||||
loadedFileList, parentLoader);
|
loadedFileList, parentLoader, techtreePath);
|
||||||
}
|
}
|
||||||
catch(const exception &e){
|
catch(const exception &e){
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what());
|
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what());
|
||||||
|
|
|
@ -58,9 +58,10 @@ protected:
|
||||||
public:
|
public:
|
||||||
void load(const XmlNode *particleSystemNode, const string &dir,
|
void load(const XmlNode *particleSystemNode, const string &dir,
|
||||||
RendererInterface *newTexture, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
RendererInterface *newTexture, std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
string parentLoader);
|
string parentLoader, string techtreePath);
|
||||||
void load(const string &dir, const string &path, RendererInterface *newTexture,
|
void load(const string &dir, const string &path, RendererInterface *newTexture,
|
||||||
std::map<string,vector<pair<string, string> > > &loadedFileList,string parentLoader);
|
std::map<string,vector<pair<string, string> > > &loadedFileList,string parentLoader,
|
||||||
|
string techtreePath);
|
||||||
const void setValues (UnitParticleSystem *uts);
|
const void setValues (UnitParticleSystem *uts);
|
||||||
bool hasTexture() const { return(texture != NULL); }
|
bool hasTexture() const { return(texture != NULL); }
|
||||||
};
|
};
|
||||||
|
|
|
@ -969,11 +969,13 @@ void printParameterHelp(const char *argv0, bool foundInvalidArgs) {
|
||||||
printf("\n%s\t\t\tdisplays your SDL version information.",GAME_ARGS[GAME_ARG_SDL_INFO]);
|
printf("\n%s\t\t\tdisplays your SDL version information.",GAME_ARGS[GAME_ARG_SDL_INFO]);
|
||||||
printf("\n%s\t\t\tdisplays your LUA version information.",GAME_ARGS[GAME_ARG_LUA_INFO]);
|
printf("\n%s\t\t\tdisplays your LUA version information.",GAME_ARGS[GAME_ARG_LUA_INFO]);
|
||||||
printf("\n%s\t\t\tdisplays your CURL version information.",GAME_ARGS[GAME_ARG_CURL_INFO]);
|
printf("\n%s\t\t\tdisplays your CURL version information.",GAME_ARGS[GAME_ARG_CURL_INFO]);
|
||||||
printf("\n%s=x=purgeunused=purgeduplicates\t\tdisplays a report detailing any known problems related",GAME_ARGS[GAME_ARG_VALIDATE_TECHTREES]);
|
printf("\n%s=x=purgeunused=purgeduplicates=svndelete\t\tdisplays a report detailing any known problems related",GAME_ARGS[GAME_ARG_VALIDATE_TECHTREES]);
|
||||||
printf("\n \t\tto your selected techtrees game data.");
|
printf("\n \t\tto your selected techtrees game data.");
|
||||||
printf("\n \t\tWhere x is a comma-delimited list of techtrees to validate.");
|
printf("\n \t\tWhere x is a comma-delimited list of techtrees to validate.");
|
||||||
printf("\n \t\tWhere purgeunused is an optional parameter telling the validation to delete extra files in the techtree that are not used.");
|
printf("\n \t\tWhere purgeunused is an optional parameter telling the validation to delete extra files in the techtree that are not used.");
|
||||||
printf("\n \t\tWhere purgeduplicates is an optional parameter telling the validation to merge duplicate files in the techtree.");
|
printf("\n \t\tWhere purgeduplicates is an optional parameter telling the validation to merge duplicate files in the techtree.");
|
||||||
|
printf("\n \t\tWhere svndelete is an optional parameter telling the validation to call svn delete on duplicate / unused files in the techtree.");
|
||||||
|
printf("\n \t\t*NOTE: This only applies when files are purged due to the above flags being set.");
|
||||||
printf("\n \t\texample: %s %s=megapack,vbros_pack_5",argv0,GAME_ARGS[GAME_ARG_VALIDATE_TECHTREES]);
|
printf("\n \t\texample: %s %s=megapack,vbros_pack_5",argv0,GAME_ARGS[GAME_ARG_VALIDATE_TECHTREES]);
|
||||||
printf("\n%s=x=purgeunused=purgeduplicates\t\tdisplays a report detailing any known problems related",GAME_ARGS[GAME_ARG_VALIDATE_FACTIONS]);
|
printf("\n%s=x=purgeunused=purgeduplicates\t\tdisplays a report detailing any known problems related",GAME_ARGS[GAME_ARG_VALIDATE_FACTIONS]);
|
||||||
printf("\n \t\tto your selected factions game data.");
|
printf("\n \t\tto your selected factions game data.");
|
||||||
|
@ -984,7 +986,7 @@ void printParameterHelp(const char *argv0, bool foundInvalidArgs) {
|
||||||
printf("\n \t\t%s",GAME_ARGS[GAME_ARG_VALIDATE_TECHTREES]);
|
printf("\n \t\t%s",GAME_ARGS[GAME_ARG_VALIDATE_TECHTREES]);
|
||||||
printf("\n \t\texample: %s %s=tech,egypt",argv0,GAME_ARGS[GAME_ARG_VALIDATE_FACTIONS]);
|
printf("\n \t\texample: %s %s=tech,egypt",argv0,GAME_ARGS[GAME_ARG_VALIDATE_FACTIONS]);
|
||||||
|
|
||||||
printf("\n%s=x=purgeunused\t\tdisplays a report detailing any known problems related",GAME_ARGS[GAME_ARG_VALIDATE_SCENARIO]);
|
printf("\n%s=x=purgeunused=svndelete\t\tdisplays a report detailing any known problems related",GAME_ARGS[GAME_ARG_VALIDATE_SCENARIO]);
|
||||||
printf("\n \t\tto your selected scenario game data.");
|
printf("\n \t\tto your selected scenario game data.");
|
||||||
printf("\n \t\tWhere x is a single scenario to validate.");
|
printf("\n \t\tWhere x is a single scenario to validate.");
|
||||||
printf("\n \t\tWhere purgeunused is an optional parameter telling the validation to delete extra files in the scenario that are not used.");
|
printf("\n \t\tWhere purgeunused is an optional parameter telling the validation to delete extra files in the scenario that are not used.");
|
||||||
|
@ -1271,7 +1273,8 @@ void setupLogging(Config &config, bool haveSpecialOutputCommandLineOption) {
|
||||||
|
|
||||||
void runTechValidationForPath(string techPath, string techName,
|
void runTechValidationForPath(string techPath, string techName,
|
||||||
const std::vector<string> filteredFactionList, World &world,
|
const std::vector<string> filteredFactionList, World &world,
|
||||||
bool purgeUnusedFiles,bool purgeDuplicateFiles, double &purgedMegaBytes) {
|
bool purgeUnusedFiles,bool purgeDuplicateFiles, bool svnPurgeFiles,
|
||||||
|
double &purgedMegaBytes) {
|
||||||
Config &config = Config::getInstance();
|
Config &config = Config::getInstance();
|
||||||
vector<string> factionsList;
|
vector<string> factionsList;
|
||||||
findDirs(techPath + techName + "/factions/", factionsList, false, false);
|
findDirs(techPath + techName + "/factions/", factionsList, false, false);
|
||||||
|
@ -1437,7 +1440,17 @@ void runTechValidationForPath(string techPath, string techName,
|
||||||
purgedMegaBytes += ((double)fileSize / 1048576.0);
|
purgedMegaBytes += ((double)fileSize / 1048576.0);
|
||||||
purgeCount++;
|
purgeCount++;
|
||||||
|
|
||||||
removeFile(foundFile);
|
if(svnPurgeFiles == true) {
|
||||||
|
char szBuf[4096]="";
|
||||||
|
sprintf(szBuf,"svn delete \"%s\"",foundFile.c_str());
|
||||||
|
bool svnOk = executeShellCommand(szBuf,0);
|
||||||
|
if(svnOk == false) {
|
||||||
|
throw runtime_error("Call to command failed [" + string(szBuf) + "]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
removeFile(foundFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1525,22 +1538,51 @@ void runTechValidationForPath(string techPath, string techName,
|
||||||
newCommonFileName = "$COMMONDATAPATH/sounds/" + extractFileFromDirectoryPath(duplicateFile);
|
newCommonFileName = "$COMMONDATAPATH/sounds/" + extractFileFromDirectoryPath(duplicateFile);
|
||||||
|
|
||||||
string expandedNewCommonFileName = newCommonFileName;
|
string expandedNewCommonFileName = newCommonFileName;
|
||||||
Properties::applyTagsToValue(expandedNewCommonFileName);
|
|
||||||
|
|
||||||
//int result = 0;
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
int result = rename(duplicateFile.c_str(),expandedNewCommonFileName.c_str());
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techPath + techName + "/commondata/";
|
||||||
if(result != 0) {
|
mapExtraTagReplacementValues = Properties::getTagReplacementValues(&mapExtraTagReplacementValues);
|
||||||
|
Properties::applyTagsToValue(expandedNewCommonFileName,&mapExtraTagReplacementValues);
|
||||||
|
createDirectoryPaths(extractDirectoryPathFromFile(expandedNewCommonFileName));
|
||||||
|
|
||||||
|
if(svnPurgeFiles == true) {
|
||||||
|
copyFileTo(duplicateFile, expandedNewCommonFileName);
|
||||||
|
|
||||||
char szBuf[4096]="";
|
char szBuf[4096]="";
|
||||||
char *errmsg = strerror(errno);
|
sprintf(szBuf,"svn delete \"%s\"",duplicateFile.c_str());
|
||||||
sprintf(szBuf,"!!! Error [%s] Could not rename [%s] to [%s]!",errmsg,duplicateFile.c_str(),expandedNewCommonFileName.c_str());
|
bool svnOk = executeShellCommand(szBuf,0);
|
||||||
throw runtime_error(szBuf);
|
if(svnOk == false) {
|
||||||
|
throw runtime_error("Call to command failed [" + string(szBuf) + "]");
|
||||||
|
}
|
||||||
|
printf("*** Duplicate file:\n[%s]\nwas svn deleted and copied to:\n[%s]\n",duplicateFile.c_str(),expandedNewCommonFileName.c_str());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf("*** Duplicate file:\n[%s]\nwas renamed to:\n[%s]\n",duplicateFile.c_str(),expandedNewCommonFileName.c_str());
|
//int result = 0;
|
||||||
|
int result = rename(duplicateFile.c_str(),expandedNewCommonFileName.c_str());
|
||||||
|
if(result != 0) {
|
||||||
|
char szBuf[4096]="";
|
||||||
|
char *errmsg = strerror(errno);
|
||||||
|
sprintf(szBuf,"!!! Error [%s] Could not rename [%s] to [%s]!",errmsg,duplicateFile.c_str(),expandedNewCommonFileName.c_str());
|
||||||
|
throw runtime_error(szBuf);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("*** Duplicate file:\n[%s]\nwas renamed to:\n[%s]\n",duplicateFile.c_str(),expandedNewCommonFileName.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
removeFile(duplicateFile);
|
if(svnPurgeFiles == true) {
|
||||||
|
char szBuf[4096]="";
|
||||||
|
sprintf(szBuf,"svn delete \"%s\"",duplicateFile.c_str());
|
||||||
|
bool svnOk = executeShellCommand(szBuf,0);
|
||||||
|
if(svnOk == false) {
|
||||||
|
throw runtime_error("Call to command failed [" + string(szBuf) + "]");
|
||||||
|
}
|
||||||
|
printf("*** Duplicate file:\n[%s]\nwas svn deleted\n",duplicateFile.c_str());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
removeFile(duplicateFile);
|
||||||
|
}
|
||||||
printf("*** Duplicate file:\n[%s]\nwas removed\n",duplicateFile.c_str());
|
printf("*** Duplicate file:\n[%s]\nwas removed\n",duplicateFile.c_str());
|
||||||
|
|
||||||
// convert to MB
|
// convert to MB
|
||||||
|
@ -1640,6 +1682,8 @@ void runTechValidationReport(int argc, char** argv) {
|
||||||
|
|
||||||
bool purgeDuplicateFiles = false;
|
bool purgeDuplicateFiles = false;
|
||||||
bool purgeUnusedFiles = false;
|
bool purgeUnusedFiles = false;
|
||||||
|
bool svnPurgeFiles = false;
|
||||||
|
|
||||||
double purgedMegaBytes=0;
|
double purgedMegaBytes=0;
|
||||||
Config &config = Config::getInstance();
|
Config &config = Config::getInstance();
|
||||||
|
|
||||||
|
@ -1691,7 +1735,7 @@ void runTechValidationReport(int argc, char** argv) {
|
||||||
string file = scenarioPath + scenarioName + "/" + scenarioName + ".xml";
|
string file = scenarioPath + scenarioName + "/" + scenarioName + ".xml";
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(file);
|
xmlTree.load(file,Properties::getTagReplacementValues());
|
||||||
const XmlNode *scenarioNode= xmlTree.getRootNode();
|
const XmlNode *scenarioNode= xmlTree.getRootNode();
|
||||||
string techName = scenarioNode->getChild("tech-tree")->getAttribute("value")->getValue();
|
string techName = scenarioNode->getChild("tech-tree")->getAttribute("value")->getValue();
|
||||||
|
|
||||||
|
@ -1702,7 +1746,7 @@ void runTechValidationReport(int argc, char** argv) {
|
||||||
|
|
||||||
printf("Found Scenario [%s] with custom techtree [%s] validating...\n",scenarioName.c_str(),techName.c_str());
|
printf("Found Scenario [%s] with custom techtree [%s] validating...\n",scenarioName.c_str(),techName.c_str());
|
||||||
runTechValidationForPath(techPath, techName, filteredFactionList,
|
runTechValidationForPath(techPath, techName, filteredFactionList,
|
||||||
world, purgeUnusedFiles, false, purgedMegaBytes);
|
world, purgeUnusedFiles, false, false, purgedMegaBytes);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
@ -1785,6 +1829,10 @@ void runTechValidationReport(int argc, char** argv) {
|
||||||
purgeDuplicateFiles = true;
|
purgeDuplicateFiles = true;
|
||||||
printf("*NOTE All duplicate techtree files will be merged!\n");
|
printf("*NOTE All duplicate techtree files will be merged!\n");
|
||||||
}
|
}
|
||||||
|
else if(paramPartTokens[2] == "svndelete") {
|
||||||
|
svnPurgeFiles = true;
|
||||||
|
printf("*NOTE All unused / duplicate techtree files will be removed from svn!\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(paramPartTokens.size() >= 4) {
|
if(paramPartTokens.size() >= 4) {
|
||||||
if(paramPartTokens[3] == "purgeunused") {
|
if(paramPartTokens[3] == "purgeunused") {
|
||||||
|
@ -1795,12 +1843,29 @@ void runTechValidationReport(int argc, char** argv) {
|
||||||
purgeDuplicateFiles = true;
|
purgeDuplicateFiles = true;
|
||||||
printf("*NOTE All duplicate techtree files will be merged!\n");
|
printf("*NOTE All duplicate techtree files will be merged!\n");
|
||||||
}
|
}
|
||||||
|
else if(paramPartTokens[3] == "svndelete") {
|
||||||
|
svnPurgeFiles = true;
|
||||||
|
printf("*NOTE All unused / duplicate techtree files will be removed from svn!\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(paramPartTokens.size() >= 5) {
|
||||||
|
if(paramPartTokens[4] == "purgeunused") {
|
||||||
|
purgeUnusedFiles = true;
|
||||||
|
printf("*NOTE All unused techtree files will be deleted!\n");
|
||||||
|
}
|
||||||
|
else if(paramPartTokens[4] == "purgeduplicates") {
|
||||||
|
purgeDuplicateFiles = true;
|
||||||
|
printf("*NOTE All duplicate techtree files will be merged!\n");
|
||||||
|
}
|
||||||
|
else if(paramPartTokens[4] == "svndelete") {
|
||||||
|
svnPurgeFiles = true;
|
||||||
|
printf("*NOTE All unused / duplicate techtree files will be removed from svn!\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
printf("\n---------------- Loading factions inside world ----------------");
|
printf("\n---------------- Loading factions inside world ----------------");
|
||||||
World world;
|
World world;
|
||||||
|
@ -1819,7 +1884,7 @@ void runTechValidationReport(int argc, char** argv) {
|
||||||
std::find(filteredTechTreeList.begin(),filteredTechTreeList.end(),techName) != filteredTechTreeList.end()) {
|
std::find(filteredTechTreeList.begin(),filteredTechTreeList.end(),techName) != filteredTechTreeList.end()) {
|
||||||
|
|
||||||
runTechValidationForPath(techPath, techName, filteredFactionList,
|
runTechValidationForPath(techPath, techName, filteredFactionList,
|
||||||
world, purgeUnusedFiles,purgeDuplicateFiles,purgedMegaBytes);
|
world, purgeUnusedFiles,purgeDuplicateFiles,svnPurgeFiles,purgedMegaBytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -221,7 +221,7 @@ MenuState::MenuState(Program *program, MainMenu *mainMenu, const string &stateNa
|
||||||
|
|
||||||
//camera
|
//camera
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(data_path + "data/core/menu/menu.xml");
|
xmlTree.load(data_path + "data/core/menu/menu.xml",Properties::getTagReplacementValues());
|
||||||
const XmlNode *menuNode= xmlTree.getRootNode();
|
const XmlNode *menuNode= xmlTree.getRootNode();
|
||||||
const XmlNode *cameraNode= menuNode->getChild("camera");
|
const XmlNode *cameraNode= menuNode->getChild("camera");
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// ==============================================================
|
// ==============================================================
|
||||||
// This file is part of Glest (www.glest.org)
|
// This file is part of Glest (www.glest.org)
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001-2008 Martiño Figueroa
|
// Copyright (C) 2001-2008 Marti<EFBFBD>o Figueroa
|
||||||
//
|
//
|
||||||
// You can redistribute this code and/or modify it under
|
// You can redistribute this code and/or modify it under
|
||||||
// the terms of the GNU General Public License as published
|
// the terms of the GNU General Public License as published
|
||||||
|
@ -40,7 +40,7 @@ MenuBackground::MenuBackground(){
|
||||||
string data_path = getGameReadWritePath(GameConstants::path_data_CacheLookupKey);
|
string data_path = getGameReadWritePath(GameConstants::path_data_CacheLookupKey);
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(data_path + "data/core/menu/menu.xml");
|
xmlTree.load(data_path + "data/core/menu/menu.xml",Properties::getTagReplacementValues());
|
||||||
const XmlNode *menuNode= xmlTree.getRootNode();
|
const XmlNode *menuNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
//water
|
//water
|
||||||
|
|
|
@ -245,7 +245,7 @@ void MenuStateScenario::loadScenarioInfo(string file, ScenarioInfo *scenarioInfo
|
||||||
Lang &lang= Lang::getInstance();
|
Lang &lang= Lang::getInstance();
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(file);
|
xmlTree.load(file,Properties::getTagReplacementValues());
|
||||||
|
|
||||||
const XmlNode *scenarioNode= xmlTree.getRootNode();
|
const XmlNode *scenarioNode= xmlTree.getRootNode();
|
||||||
const XmlNode *difficultyNode= scenarioNode->getChild("difficulty");
|
const XmlNode *difficultyNode= scenarioNode->getChild("difficulty");
|
||||||
|
|
|
@ -118,7 +118,9 @@ void FactionType::load(const string &dir, const TechTree *techTree, Checksum* ch
|
||||||
techtreeChecksum->addFile(path);
|
techtreeChecksum->addFile(path);
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techTree->getPath() + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
||||||
|
|
||||||
const XmlNode *factionNode= xmlTree.getRootNode();
|
const XmlNode *factionNode= xmlTree.getRootNode();
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "renderer.h"
|
#include "renderer.h"
|
||||||
#include "xml_parser.h"
|
#include "xml_parser.h"
|
||||||
#include "game_util.h"
|
#include "game_util.h"
|
||||||
|
#include "properties.h"
|
||||||
#include "leak_dumper.h"
|
#include "leak_dumper.h"
|
||||||
|
|
||||||
using namespace Shared::Util;
|
using namespace Shared::Util;
|
||||||
|
@ -46,7 +47,7 @@ ResourceType::~ResourceType(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceType::load(const string &dir, Checksum* checksum, Checksum *techtreeChecksum,
|
void ResourceType::load(const string &dir, Checksum* checksum, Checksum *techtreeChecksum,
|
||||||
std::map<string,vector<pair<string, string> > > &loadedFileList) {
|
std::map<string,vector<pair<string, string> > > &loadedFileList, string techtreePath) {
|
||||||
|
|
||||||
string path, str;
|
string path, str;
|
||||||
Renderer &renderer= Renderer::getInstance();
|
Renderer &renderer= Renderer::getInstance();
|
||||||
|
@ -67,7 +68,9 @@ void ResourceType::load(const string &dir, Checksum* checksum, Checksum *techtre
|
||||||
|
|
||||||
//tree
|
//tree
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techtreePath + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
||||||
|
|
||||||
const XmlNode *resourceNode= xmlTree.getRootNode();
|
const XmlNode *resourceNode= xmlTree.getRootNode();
|
||||||
|
@ -104,7 +107,7 @@ void ResourceType::load(const string &dir, Checksum* checksum, Checksum *techtre
|
||||||
|
|
||||||
ObjectParticleSystemType *objectParticleSystemType= new ObjectParticleSystemType();
|
ObjectParticleSystemType *objectParticleSystemType= new ObjectParticleSystemType();
|
||||||
objectParticleSystemType->load(dir, currentPath + particlePath,
|
objectParticleSystemType->load(dir, currentPath + particlePath,
|
||||||
&Renderer::getInstance(), loadedFileList, sourceXMLFile);
|
&Renderer::getInstance(), loadedFileList, sourceXMLFile, techtreePath);
|
||||||
loadedFileList[currentPath + particlePath].push_back(make_pair(sourceXMLFile,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
loadedFileList[currentPath + particlePath].push_back(make_pair(sourceXMLFile,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
||||||
|
|
||||||
particleTypes.push_back(objectParticleSystemType);
|
particleTypes.push_back(objectParticleSystemType);
|
||||||
|
|
|
@ -54,7 +54,8 @@ public:
|
||||||
ResourceType();
|
ResourceType();
|
||||||
~ResourceType();
|
~ResourceType();
|
||||||
void load(const string &dir, Checksum* checksum,Checksum *techtreeChecksum,
|
void load(const string &dir, Checksum* checksum,Checksum *techtreeChecksum,
|
||||||
std::map<string,vector<pair<string, string> > > &loadedFileList);
|
std::map<string,vector<pair<string, string> > > &loadedFileList,
|
||||||
|
string techtreePath);
|
||||||
|
|
||||||
//get
|
//get
|
||||||
int getClass() const {return resourceClass;}
|
int getClass() const {return resourceClass;}
|
||||||
|
|
|
@ -81,7 +81,7 @@ void SkillType::load(const XmlNode *sn, const string &dir, const TechTree *tt,
|
||||||
string path= particleFileNode->getAttribute("path")->getRestrictedValue();
|
string path= particleFileNode->getAttribute("path")->getRestrictedValue();
|
||||||
UnitParticleSystemType *unitParticleSystemType= new UnitParticleSystemType();
|
UnitParticleSystemType *unitParticleSystemType= new UnitParticleSystemType();
|
||||||
unitParticleSystemType->load(dir, currentPath + path, &Renderer::getInstance(),
|
unitParticleSystemType->load(dir, currentPath + path, &Renderer::getInstance(),
|
||||||
loadedFileList,parentLoader);
|
loadedFileList,parentLoader,tt->getPath());
|
||||||
loadedFileList[currentPath + path].push_back(make_pair(parentLoader,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
loadedFileList[currentPath + path].push_back(make_pair(parentLoader,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
||||||
unitParticleSystemTypes.push_back(unitParticleSystemType);
|
unitParticleSystemTypes.push_back(unitParticleSystemType);
|
||||||
}
|
}
|
||||||
|
@ -251,7 +251,8 @@ void AttackSkillType::load(const XmlNode *sn, const string &dir, const TechTree
|
||||||
string path= particleNode->getAttribute("path")->getRestrictedValue();
|
string path= particleNode->getAttribute("path")->getRestrictedValue();
|
||||||
projectileParticleSystemType= new ParticleSystemTypeProjectile();
|
projectileParticleSystemType= new ParticleSystemTypeProjectile();
|
||||||
projectileParticleSystemType->load(dir, currentPath + path,
|
projectileParticleSystemType->load(dir, currentPath + path,
|
||||||
&Renderer::getInstance(), loadedFileList, parentLoader);
|
&Renderer::getInstance(), loadedFileList, parentLoader,
|
||||||
|
tt->getPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
//proj sounds
|
//proj sounds
|
||||||
|
@ -286,7 +287,8 @@ void AttackSkillType::load(const XmlNode *sn, const string &dir, const TechTree
|
||||||
string path= particleNode->getAttribute("path")->getRestrictedValue();
|
string path= particleNode->getAttribute("path")->getRestrictedValue();
|
||||||
splashParticleSystemType= new ParticleSystemTypeSplash();
|
splashParticleSystemType= new ParticleSystemTypeSplash();
|
||||||
splashParticleSystemType->load(dir, currentPath + path,
|
splashParticleSystemType->load(dir, currentPath + path,
|
||||||
&Renderer::getInstance(),loadedFileList, parentLoader);
|
&Renderer::getInstance(),loadedFileList, parentLoader,
|
||||||
|
tt->getPath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ namespace Glest{ namespace Game{
|
||||||
|
|
||||||
Checksum TechTree::loadTech(const vector<string> pathList, const string &techName,
|
Checksum TechTree::loadTech(const vector<string> pathList, const string &techName,
|
||||||
set<string> &factions, Checksum* checksum, std::map<string,vector<pair<string, string> > > &loadedFileList) {
|
set<string> &factions, Checksum* checksum, std::map<string,vector<pair<string, string> > > &loadedFileList) {
|
||||||
|
name = "";
|
||||||
Checksum techtreeChecksum;
|
Checksum techtreeChecksum;
|
||||||
for(int idx = 0; idx < pathList.size(); idx++) {
|
for(int idx = 0; idx < pathList.size(); idx++) {
|
||||||
string currentPath = pathList[idx];
|
string currentPath = pathList[idx];
|
||||||
|
@ -54,10 +55,10 @@ void TechTree::load(const string &dir, set<string> &factions, Checksum* checksum
|
||||||
|
|
||||||
string currentPath = dir;
|
string currentPath = dir;
|
||||||
endPathWithSlash(currentPath);
|
endPathWithSlash(currentPath);
|
||||||
|
treePath = currentPath;
|
||||||
|
name= lastDir(currentPath);
|
||||||
|
|
||||||
vector<string> filenames;
|
vector<string> filenames;
|
||||||
string name= lastDir(currentPath);
|
|
||||||
|
|
||||||
Logger::getInstance().add("TechTree: "+ formatString(name), true);
|
Logger::getInstance().add("TechTree: "+ formatString(name), true);
|
||||||
|
|
||||||
//load resources
|
//load resources
|
||||||
|
@ -69,7 +70,8 @@ void TechTree::load(const string &dir, set<string> &factions, Checksum* checksum
|
||||||
|
|
||||||
for(int i=0; i<filenames.size(); ++i){
|
for(int i=0; i<filenames.size(); ++i){
|
||||||
str= currentPath + "resources/" + filenames[i];
|
str= currentPath + "resources/" + filenames[i];
|
||||||
resourceTypes[i].load(str, checksum, &checksumValue, loadedFileList);
|
resourceTypes[i].load(str, checksum, &checksumValue, loadedFileList,
|
||||||
|
treePath);
|
||||||
Window::handleEvent();
|
Window::handleEvent();
|
||||||
SDL_PumpEvents();
|
SDL_PumpEvents();
|
||||||
}
|
}
|
||||||
|
@ -99,7 +101,9 @@ void TechTree::load(const string &dir, set<string> &factions, Checksum* checksum
|
||||||
checksum->addFile(path);
|
checksum->addFile(path);
|
||||||
checksumValue.addFile(path);
|
checksumValue.addFile(path);
|
||||||
|
|
||||||
xmlTree.load(path);
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = currentPath + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
||||||
|
|
||||||
const XmlNode *techTreeNode= xmlTree.getRootNode();
|
const XmlNode *techTreeNode= xmlTree.getRootNode();
|
||||||
|
|
|
@ -36,7 +36,11 @@ private:
|
||||||
typedef vector<AttackType> AttackTypes;
|
typedef vector<AttackType> AttackTypes;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
string desc;
|
|
||||||
|
string name;
|
||||||
|
//string desc;
|
||||||
|
string treePath;
|
||||||
|
|
||||||
ResourceTypes resourceTypes;
|
ResourceTypes resourceTypes;
|
||||||
FactionTypes factionTypes;
|
FactionTypes factionTypes;
|
||||||
ArmorTypes armorTypes;
|
ArmorTypes armorTypes;
|
||||||
|
@ -57,7 +61,11 @@ public:
|
||||||
int getTypeCount() const {return factionTypes.size();}
|
int getTypeCount() const {return factionTypes.size();}
|
||||||
const FactionType *getType(int i) const {return &factionTypes[i];}
|
const FactionType *getType(int i) const {return &factionTypes[i];}
|
||||||
const ResourceType *getResourceType(int i) const {return &resourceTypes[i];}
|
const ResourceType *getResourceType(int i) const {return &resourceTypes[i];}
|
||||||
const string &getDesc() const {return desc;}
|
const string getName() const {return name;}
|
||||||
|
//const string &getDesc() const {return desc;}
|
||||||
|
|
||||||
|
const string getPath() const {return treePath;}
|
||||||
|
|
||||||
const FactionType *getType(const string &name) const;
|
const FactionType *getType(const string &name) const;
|
||||||
FactionType *getTypeByName(const string &name);
|
FactionType *getTypeByName(const string &name);
|
||||||
const ResourceType *getResourceType(const string &name) const;
|
const ResourceType *getResourceType(const string &name) const;
|
||||||
|
|
|
@ -130,8 +130,7 @@ void UnitType::load(int id,const string &dir, const TechTree *techTree,
|
||||||
|
|
||||||
this->id= id;
|
this->id= id;
|
||||||
|
|
||||||
try{
|
try {
|
||||||
|
|
||||||
Logger::getInstance().add("Unit type: " + formatString(name), true);
|
Logger::getInstance().add("Unit type: " + formatString(name), true);
|
||||||
|
|
||||||
//file load
|
//file load
|
||||||
|
@ -139,7 +138,9 @@ void UnitType::load(int id,const string &dir, const TechTree *techTree,
|
||||||
techtreeChecksum->addFile(path);
|
techtreeChecksum->addFile(path);
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techTree->getPath() + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(dir,dir));
|
loadedFileList[path].push_back(make_pair(dir,dir));
|
||||||
|
|
||||||
const XmlNode *unitNode= xmlTree.getRootNode();
|
const XmlNode *unitNode= xmlTree.getRootNode();
|
||||||
|
@ -295,7 +296,8 @@ void UnitType::load(int id,const string &dir, const TechTree *techTree,
|
||||||
Texture2D *newTexture = NULL;
|
Texture2D *newTexture = NULL;
|
||||||
|
|
||||||
unitParticleSystemType->load(dir, currentPath + path,
|
unitParticleSystemType->load(dir, currentPath + path,
|
||||||
&Renderer::getInstance(),loadedFileList, sourceXMLFile);
|
&Renderer::getInstance(),loadedFileList, sourceXMLFile,
|
||||||
|
techTree->getPath());
|
||||||
loadedFileList[currentPath + path].push_back(make_pair(sourceXMLFile,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
loadedFileList[currentPath + path].push_back(make_pair(sourceXMLFile,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
||||||
|
|
||||||
//if(unitParticleSystemType->hasTexture() == false) {
|
//if(unitParticleSystemType->hasTexture() == false) {
|
||||||
|
|
|
@ -59,12 +59,14 @@ void UpgradeType::load(const string &dir, const TechTree *techTree,
|
||||||
string path = currentPath + name + ".xml";
|
string path = currentPath + name + ".xml";
|
||||||
string sourceXMLFile = path;
|
string sourceXMLFile = path;
|
||||||
|
|
||||||
try{
|
try {
|
||||||
checksum->addFile(path);
|
checksum->addFile(path);
|
||||||
techtreeChecksum->addFile(path);
|
techtreeChecksum->addFile(path);
|
||||||
|
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
std::map<string,string> mapExtraTagReplacementValues;
|
||||||
|
mapExtraTagReplacementValues["$COMMONDATAPATH"] = techTree->getPath() + "/commondata/";
|
||||||
|
xmlTree.load(path, Properties::getTagReplacementValues(&mapExtraTagReplacementValues));
|
||||||
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
||||||
const XmlNode *upgradeNode= xmlTree.getRootNode();
|
const XmlNode *upgradeNode= xmlTree.getRootNode();
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "game_util.h"
|
#include "game_util.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "platform_common.h"
|
#include "platform_common.h"
|
||||||
|
#include "properties.h"
|
||||||
#include "leak_dumper.h"
|
#include "leak_dumper.h"
|
||||||
|
|
||||||
using namespace Shared::Xml;
|
using namespace Shared::Xml;
|
||||||
|
@ -47,7 +48,7 @@ Checksum Scenario::load(const string &path) {
|
||||||
|
|
||||||
//parse xml
|
//parse xml
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
xmlTree.load(path,Properties::getTagReplacementValues());
|
||||||
const XmlNode *scenarioNode= xmlTree.getRootNode();
|
const XmlNode *scenarioNode= xmlTree.getRootNode();
|
||||||
const XmlNode *scriptsNode= scenarioNode->getChild("scripts");
|
const XmlNode *scriptsNode= scenarioNode->getChild("scripts");
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "renderer.h"
|
#include "renderer.h"
|
||||||
#include "game_util.h"
|
#include "game_util.h"
|
||||||
#include "leak_dumper.h"
|
#include "leak_dumper.h"
|
||||||
|
#include "properties.h"
|
||||||
#include "platform_util.h"
|
#include "platform_util.h"
|
||||||
|
|
||||||
using namespace Shared::Util;
|
using namespace Shared::Util;
|
||||||
|
@ -158,7 +159,7 @@ void Tileset::load(const string &dir, Checksum *checksum, Checksum *tilesetCheck
|
||||||
|
|
||||||
//parse xml
|
//parse xml
|
||||||
XmlTree xmlTree;
|
XmlTree xmlTree;
|
||||||
xmlTree.load(path);
|
xmlTree.load(path,Properties::getTagReplacementValues());
|
||||||
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
loadedFileList[path].push_back(make_pair(currentPath,currentPath));
|
||||||
|
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
@ -226,7 +227,7 @@ void Tileset::load(const string &dir, Checksum *checksum, Checksum *tilesetCheck
|
||||||
string path= particleFileNode->getAttribute("path")->getRestrictedValue();
|
string path= particleFileNode->getAttribute("path")->getRestrictedValue();
|
||||||
ObjectParticleSystemType *objectParticleSystemType= new ObjectParticleSystemType();
|
ObjectParticleSystemType *objectParticleSystemType= new ObjectParticleSystemType();
|
||||||
objectParticleSystemType->load(dir, currentPath + path,
|
objectParticleSystemType->load(dir, currentPath + path,
|
||||||
&Renderer::getInstance(), loadedFileList, sourceXMLFile);
|
&Renderer::getInstance(), loadedFileList, sourceXMLFile,"");
|
||||||
loadedFileList[currentPath + path].push_back(make_pair(sourceXMLFile,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
loadedFileList[currentPath + path].push_back(make_pair(sourceXMLFile,particleFileNode->getAttribute("path")->getRestrictedValue()));
|
||||||
|
|
||||||
objectTypes[i].addParticleSystem((objectParticleSystemType));
|
objectTypes[i].addParticleSystem((objectParticleSystemType));
|
||||||
|
|
|
@ -175,6 +175,7 @@ bool renameFile(string oldFile, string newFile);
|
||||||
void removeFolder(const string path);
|
void removeFolder(const string path);
|
||||||
off_t getFileSize(string filename);
|
off_t getFileSize(string filename);
|
||||||
bool searchAndReplaceTextInFile(string fileName, string findText, string replaceText, bool simulateOnly);
|
bool searchAndReplaceTextInFile(string fileName, string findText, string replaceText, bool simulateOnly);
|
||||||
|
void copyFileTo(string fromFileName, string toFileName);
|
||||||
|
|
||||||
int getScreenW();
|
int getScreenW();
|
||||||
int getScreenH();
|
int getScreenH();
|
||||||
|
|
|
@ -75,7 +75,8 @@ public:
|
||||||
void setFloat(const string &key, float value);
|
void setFloat(const string &key, float value);
|
||||||
void setString(const string &key, const string &value);
|
void setString(const string &key, const string &value);
|
||||||
|
|
||||||
static bool applyTagsToValue(string &value);
|
static bool applyTagsToValue(string &value, std::map<string,string> *mapTagReplacementValues=NULL);
|
||||||
|
static std::map<string,string> getTagReplacementValues(std::map<string,string> *mapExtraTagReplacementValues=NULL);
|
||||||
|
|
||||||
string getpath() const { return path;}
|
string getpath() const { return path;}
|
||||||
|
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <xercesc/util/XercesDefs.hpp>
|
#include <xercesc/util/XercesDefs.hpp>
|
||||||
|
#include <map>
|
||||||
#include "leak_dumper.h"
|
#include "leak_dumper.h"
|
||||||
|
|
||||||
using std::string;
|
using namespace std;
|
||||||
using std::vector;
|
|
||||||
|
|
||||||
namespace XERCES_CPP_NAMESPACE{
|
namespace XERCES_CPP_NAMESPACE{
|
||||||
class DOMImplementation;
|
class DOMImplementation;
|
||||||
|
@ -29,7 +29,7 @@ namespace XERCES_CPP_NAMESPACE{
|
||||||
|
|
||||||
namespace Shared{ namespace Xml{
|
namespace Shared{ namespace Xml{
|
||||||
|
|
||||||
const int strSize= 256;
|
const int strSize= 4096;
|
||||||
|
|
||||||
class XmlIo;
|
class XmlIo;
|
||||||
class XmlTree;
|
class XmlTree;
|
||||||
|
@ -53,7 +53,7 @@ private:
|
||||||
public:
|
public:
|
||||||
static XmlIo &getInstance();
|
static XmlIo &getInstance();
|
||||||
~XmlIo();
|
~XmlIo();
|
||||||
XmlNode *load(const string &path);
|
XmlNode *load(const string &path, std::map<string,string> mapTagReplacementValues);
|
||||||
void save(const string &path, const XmlNode *node);
|
void save(const string &path, const XmlNode *node);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ public:
|
||||||
~XmlTree();
|
~XmlTree();
|
||||||
|
|
||||||
void init(const string &name);
|
void init(const string &name);
|
||||||
void load(const string &path);
|
void load(const string &path, std::map<string,string> mapTagReplacementValues);
|
||||||
void save(const string &path);
|
void save(const string &path);
|
||||||
|
|
||||||
XmlNode *getRootNode() const {return rootNode;}
|
XmlNode *getRootNode() const {return rootNode;}
|
||||||
|
@ -84,7 +84,7 @@ public:
|
||||||
// class XmlNode
|
// class XmlNode
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
||||||
class XmlNode{
|
class XmlNode {
|
||||||
private:
|
private:
|
||||||
string name;
|
string name;
|
||||||
string text;
|
string text;
|
||||||
|
@ -96,7 +96,7 @@ private:
|
||||||
void operator =(XmlNode&);
|
void operator =(XmlNode&);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
XmlNode(XERCES_CPP_NAMESPACE::DOMNode *node);
|
XmlNode(XERCES_CPP_NAMESPACE::DOMNode *node, std::map<string,string> mapTagReplacementValues);
|
||||||
XmlNode(const string &name);
|
XmlNode(const string &name);
|
||||||
~XmlNode();
|
~XmlNode();
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
XmlNode *addChild(const string &name);
|
XmlNode *addChild(const string &name);
|
||||||
XmlAttribute *addAttribute(const string &name, const string &value);
|
XmlAttribute *addAttribute(const string &name, const string &value, std::map<string,string> mapTagReplacementValues);
|
||||||
|
|
||||||
XERCES_CPP_NAMESPACE::DOMElement *buildElement(XERCES_CPP_NAMESPACE::DOMDocument *document) const;
|
XERCES_CPP_NAMESPACE::DOMElement *buildElement(XERCES_CPP_NAMESPACE::DOMDocument *document) const;
|
||||||
|
|
||||||
|
@ -133,14 +133,15 @@ private:
|
||||||
string name;
|
string name;
|
||||||
bool skipRestrictionCheck;
|
bool skipRestrictionCheck;
|
||||||
bool usesCommondata;
|
bool usesCommondata;
|
||||||
|
std::map<string,string> mapTagReplacementValues;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XmlAttribute(XmlAttribute&);
|
XmlAttribute(XmlAttribute&);
|
||||||
void operator =(XmlAttribute&);
|
void operator =(XmlAttribute&);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
XmlAttribute(XERCES_CPP_NAMESPACE::DOMNode *attribute);
|
XmlAttribute(XERCES_CPP_NAMESPACE::DOMNode *attribute, std::map<string,string> mapTagReplacementValues);
|
||||||
XmlAttribute(const string &name, const string &value);
|
XmlAttribute(const string &name, const string &value, std::map<string,string> mapTagReplacementValues);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const string getName() const {return name;}
|
const string getName() const {return name;}
|
||||||
|
|
|
@ -1807,16 +1807,18 @@ bool searchAndReplaceTextInFile(string fileName, string findText, string replace
|
||||||
|
|
||||||
while(fgets(buffer,MAX_LEN_SINGLE_LINE + 2,fp1)) {
|
while(fgets(buffer,MAX_LEN_SINGLE_LINE + 2,fp1)) {
|
||||||
buff_ptr = buffer;
|
buff_ptr = buffer;
|
||||||
while ((find_ptr = strstr(buff_ptr,findText.c_str()))) {
|
if(findText != "") {
|
||||||
//printf("Replacing text [%s] with [%s] in file [%s]\n",findText.c_str(),replaceText.c_str(),fileName.c_str());
|
while ((find_ptr = strstr(buff_ptr,findText.c_str()))) {
|
||||||
|
//printf("Replacing text [%s] with [%s] in file [%s]\n",findText.c_str(),replaceText.c_str(),fileName.c_str());
|
||||||
|
|
||||||
while(buff_ptr < find_ptr) {
|
while(buff_ptr < find_ptr) {
|
||||||
fputc((int)*buff_ptr++,fp2);
|
fputc((int)*buff_ptr++,fp2);
|
||||||
|
}
|
||||||
|
fputs(replaceText.c_str(),fp2);
|
||||||
|
|
||||||
|
buff_ptr += find_len;
|
||||||
|
replacedText = true;
|
||||||
}
|
}
|
||||||
fputs(replaceText.c_str(),fp2);
|
|
||||||
|
|
||||||
buff_ptr += find_len;
|
|
||||||
replacedText = true;
|
|
||||||
}
|
}
|
||||||
fputs(buff_ptr,fp2);
|
fputs(buff_ptr,fp2);
|
||||||
}
|
}
|
||||||
|
@ -1835,6 +1837,24 @@ bool searchAndReplaceTextInFile(string fileName, string findText, string replace
|
||||||
return replacedText;
|
return replacedText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void copyFileTo(string fromFileName, string toFileName) {
|
||||||
|
const int MAX_LEN_SINGLE_LINE = 4096;
|
||||||
|
char buffer[MAX_LEN_SINGLE_LINE+2];
|
||||||
|
char *buff_ptr, *find_ptr;
|
||||||
|
FILE *fp1, *fp2;
|
||||||
|
|
||||||
|
fp1 = fopen(fromFileName.c_str(),"r");
|
||||||
|
fp2 = fopen(toFileName.c_str(),"w");
|
||||||
|
|
||||||
|
while(fgets(buffer,MAX_LEN_SINGLE_LINE + 2,fp1)) {
|
||||||
|
buff_ptr = buffer;
|
||||||
|
fputs(buff_ptr,fp2);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(fp2);
|
||||||
|
fclose(fp1);
|
||||||
|
}
|
||||||
|
|
||||||
// =====================================
|
// =====================================
|
||||||
// ModeInfo
|
// ModeInfo
|
||||||
// =====================================
|
// =====================================
|
||||||
|
|
|
@ -104,8 +104,87 @@ void Properties::load(const string &path, bool clearCurrentProperties) {
|
||||||
fileStream.close();
|
fileStream.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Properties::applyTagsToValue(string &value) {
|
std::map<string,string> Properties::getTagReplacementValues(std::map<string,string> *mapExtraTagReplacementValues) {
|
||||||
|
std::map<string,string> mapTagReplacementValues;
|
||||||
|
|
||||||
|
//
|
||||||
|
// #1
|
||||||
|
// First add the standard tags
|
||||||
|
//
|
||||||
|
char *homeDir = NULL;
|
||||||
|
#ifdef WIN32
|
||||||
|
homeDir = getenv("USERPROFILE");
|
||||||
|
#else
|
||||||
|
homeDir = getenv("HOME");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
mapTagReplacementValues["~/"] = (homeDir != NULL ? homeDir : "");
|
||||||
|
mapTagReplacementValues["$HOME"] = (homeDir != NULL ? homeDir : "");
|
||||||
|
mapTagReplacementValues["%%HOME%%"] = (homeDir != NULL ? homeDir : "");
|
||||||
|
mapTagReplacementValues["%%USERPROFILE%%"] = (homeDir != NULL ? homeDir : "");
|
||||||
|
mapTagReplacementValues["%%HOMEPATH%%"] = (homeDir != NULL ? homeDir : "");
|
||||||
|
|
||||||
|
// For win32 we allow use of the appdata variable since that is the recommended
|
||||||
|
// place for application data in windows platform
|
||||||
|
#ifdef WIN32
|
||||||
|
TCHAR szPath[MAX_PATH]="";
|
||||||
|
// Get path for each computer, non-user specific and non-roaming data.
|
||||||
|
if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_APPDATA,
|
||||||
|
NULL, 0, szPath))) {
|
||||||
|
string appPath = szPath;
|
||||||
|
mapTagReplacementValues["$APPDATA"] = appPath;
|
||||||
|
mapTagReplacementValues["%%APPDATA%%"] = appPath;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *username = NULL;
|
||||||
|
username = getenv("USERNAME");
|
||||||
|
|
||||||
|
mapTagReplacementValues["$USERNAME"] = (username != NULL ? username : "");
|
||||||
|
mapTagReplacementValues["%%USERNAME%%"] = (username != NULL ? username : "");
|
||||||
|
|
||||||
|
mapTagReplacementValues["$APPLICATIONPATH"] = Properties::applicationPath;
|
||||||
|
mapTagReplacementValues["%%APPLICATIONPATH%%"] = Properties::applicationPath;
|
||||||
|
|
||||||
|
#if defined(CUSTOM_DATA_INSTALL_PATH)
|
||||||
|
mapTagReplacementValues["$APPLICATIONDATAPATH"] = CUSTOM_DATA_INSTALL_PATH;
|
||||||
|
mapTagReplacementValues["%%APPLICATIONDATAPATH%%"] = CUSTOM_DATA_INSTALL_PATH;
|
||||||
|
|
||||||
|
//mapTagReplacementValues["$COMMONDATAPATH", string(CUSTOM_DATA_INSTALL_PATH) + "/commondata/");
|
||||||
|
//mapTagReplacementValues["%%COMMONDATAPATH%%", string(CUSTOM_DATA_INSTALL_PATH) + "/commondata/");
|
||||||
|
|
||||||
|
#else
|
||||||
|
mapTagReplacementValues["$APPLICATIONDATAPATH"] = Properties::applicationPath;
|
||||||
|
mapTagReplacementValues["%%APPLICATIONDATAPATH%%"] = Properties::applicationPath;
|
||||||
|
|
||||||
|
//mapTagReplacementValues["$COMMONDATAPATH", Properties::applicationPath + "/commondata/");
|
||||||
|
//mapTagReplacementValues["%%COMMONDATAPATH%%", Properties::applicationPath + "/commondata/");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// #2
|
||||||
|
// Next add the extra tags if passed in
|
||||||
|
//
|
||||||
|
if(mapExtraTagReplacementValues != NULL) {
|
||||||
|
for(std::map<string,string>::iterator iterMap = mapExtraTagReplacementValues->begin();
|
||||||
|
iterMap != mapExtraTagReplacementValues->end(); ++iterMap) {
|
||||||
|
mapTagReplacementValues[iterMap->first] = iterMap->second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapTagReplacementValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Properties::applyTagsToValue(string &value, std::map<string,string> *mapTagReplacementValues) {
|
||||||
string originalValue = value;
|
string originalValue = value;
|
||||||
|
|
||||||
|
if(mapTagReplacementValues != NULL) {
|
||||||
|
for(std::map<string,string>::iterator iterMap = mapTagReplacementValues->begin();
|
||||||
|
iterMap != mapTagReplacementValues->end(); ++iterMap) {
|
||||||
|
replaceAll(value, iterMap->first, iterMap->second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
char *homeDir = NULL;
|
char *homeDir = NULL;
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
homeDir = getenv("USERPROFILE");
|
homeDir = getenv("USERPROFILE");
|
||||||
|
@ -144,17 +223,19 @@ bool Properties::applyTagsToValue(string &value) {
|
||||||
replaceAll(value, "$APPLICATIONDATAPATH", CUSTOM_DATA_INSTALL_PATH);
|
replaceAll(value, "$APPLICATIONDATAPATH", CUSTOM_DATA_INSTALL_PATH);
|
||||||
replaceAll(value, "%%APPLICATIONDATAPATH%%", CUSTOM_DATA_INSTALL_PATH);
|
replaceAll(value, "%%APPLICATIONDATAPATH%%", CUSTOM_DATA_INSTALL_PATH);
|
||||||
|
|
||||||
replaceAll(value, "$COMMONDATAPATH", string(CUSTOM_DATA_INSTALL_PATH) + "/commondata/");
|
//replaceAll(value, "$COMMONDATAPATH", string(CUSTOM_DATA_INSTALL_PATH) + "/commondata/");
|
||||||
replaceAll(value, "%%COMMONDATAPATH%%", string(CUSTOM_DATA_INSTALL_PATH) + "/commondata/");
|
//replaceAll(value, "%%COMMONDATAPATH%%", string(CUSTOM_DATA_INSTALL_PATH) + "/commondata/");
|
||||||
|
|
||||||
#else
|
#else
|
||||||
replaceAll(value, "$APPLICATIONDATAPATH", Properties::applicationPath);
|
replaceAll(value, "$APPLICATIONDATAPATH", Properties::applicationPath);
|
||||||
replaceAll(value, "%%APPLICATIONDATAPATH%%", Properties::applicationPath);
|
replaceAll(value, "%%APPLICATIONDATAPATH%%", Properties::applicationPath);
|
||||||
|
|
||||||
replaceAll(value, "$COMMONDATAPATH", Properties::applicationPath + "/commondata/");
|
//replaceAll(value, "$COMMONDATAPATH", Properties::applicationPath + "/commondata/");
|
||||||
replaceAll(value, "%%COMMONDATAPATH%%", Properties::applicationPath + "/commondata/");
|
//replaceAll(value, "%%COMMONDATAPATH%%", Properties::applicationPath + "/commondata/");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//printf("\nBEFORE SUBSTITUTE [%s] AFTER [%s]\n",originalValue.c_str(),value.c_str());
|
//printf("\nBEFORE SUBSTITUTE [%s] AFTER [%s]\n",originalValue.c_str(),value.c_str());
|
||||||
return (originalValue != value);
|
return (originalValue != value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ XmlIo::~XmlIo(){
|
||||||
XMLPlatformUtils::Terminate();
|
XMLPlatformUtils::Terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlNode *XmlIo::load(const string &path){
|
XmlNode *XmlIo::load(const string &path, std::map<string,string> mapTagReplacementValues) {
|
||||||
|
|
||||||
try{
|
try{
|
||||||
ErrorHandler errorHandler;
|
ErrorHandler errorHandler;
|
||||||
|
@ -111,7 +111,7 @@ XmlNode *XmlIo::load(const string &path){
|
||||||
throw runtime_error("Can not parse URL: " + path);
|
throw runtime_error("Can not parse URL: " + path);
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlNode *rootNode= new XmlNode(document->getDocumentElement());
|
XmlNode *rootNode= new XmlNode(document->getDocumentElement(),mapTagReplacementValues);
|
||||||
parser->release();
|
parser->release();
|
||||||
return rootNode;
|
return rootNode;
|
||||||
}
|
}
|
||||||
|
@ -167,8 +167,8 @@ void XmlTree::init(const string &name){
|
||||||
this->rootNode= new XmlNode(name);
|
this->rootNode= new XmlNode(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void XmlTree::load(const string &path){
|
void XmlTree::load(const string &path, std::map<string,string> mapTagReplacementValues) {
|
||||||
this->rootNode= XmlIo::getInstance().load(path);
|
this->rootNode= XmlIo::getInstance().load(path, mapTagReplacementValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
void XmlTree::save(const string &path){
|
void XmlTree::save(const string &path){
|
||||||
|
@ -183,7 +183,7 @@ XmlTree::~XmlTree(){
|
||||||
// class XmlNode
|
// class XmlNode
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
||||||
XmlNode::XmlNode(DOMNode *node) {
|
XmlNode::XmlNode(DOMNode *node, std::map<string,string> mapTagReplacementValues) {
|
||||||
if(node == NULL || node->getNodeName() == NULL) {
|
if(node == NULL || node->getNodeName() == NULL) {
|
||||||
throw runtime_error("XML structure seems to be corrupt!");
|
throw runtime_error("XML structure seems to be corrupt!");
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ XmlNode::XmlNode(DOMNode *node) {
|
||||||
for(unsigned int i = 0; i < node->getChildNodes()->getLength(); ++i) {
|
for(unsigned int i = 0; i < node->getChildNodes()->getLength(); ++i) {
|
||||||
DOMNode *currentNode= node->getChildNodes()->item(i);
|
DOMNode *currentNode= node->getChildNodes()->item(i);
|
||||||
if(currentNode != NULL && currentNode->getNodeType()==DOMNode::ELEMENT_NODE){
|
if(currentNode != NULL && currentNode->getNodeType()==DOMNode::ELEMENT_NODE){
|
||||||
XmlNode *xmlNode= new XmlNode(currentNode);
|
XmlNode *xmlNode= new XmlNode(currentNode, mapTagReplacementValues);
|
||||||
children.push_back(xmlNode);
|
children.push_back(xmlNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ XmlNode::XmlNode(DOMNode *node) {
|
||||||
for(unsigned int i = 0; i < domAttributes->getLength(); ++i) {
|
for(unsigned int i = 0; i < domAttributes->getLength(); ++i) {
|
||||||
DOMNode *currentNode= domAttributes->item(i);
|
DOMNode *currentNode= domAttributes->item(i);
|
||||||
if(currentNode->getNodeType() == DOMNode::ATTRIBUTE_NODE) {
|
if(currentNode->getNodeType() == DOMNode::ATTRIBUTE_NODE) {
|
||||||
XmlAttribute *xmlAttribute= new XmlAttribute(domAttributes->item(i));
|
XmlAttribute *xmlAttribute= new XmlAttribute(domAttributes->item(i), mapTagReplacementValues);
|
||||||
attributes.push_back(xmlAttribute);
|
attributes.push_back(xmlAttribute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -321,8 +321,8 @@ XmlNode *XmlNode::addChild(const string &name){
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlAttribute *XmlNode::addAttribute(const string &name, const string &value) {
|
XmlAttribute *XmlNode::addAttribute(const string &name, const string &value, std::map<string,string> mapTagReplacementValues) {
|
||||||
XmlAttribute *attr= new XmlAttribute(name, value);
|
XmlAttribute *attr= new XmlAttribute(name, value, mapTagReplacementValues);
|
||||||
attributes.push_back(attr);
|
attributes.push_back(attr);
|
||||||
return attr;
|
return attr;
|
||||||
}
|
}
|
||||||
|
@ -371,27 +371,30 @@ string XmlNode::getTreeString() const {
|
||||||
// class XmlAttribute
|
// class XmlAttribute
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
||||||
XmlAttribute::XmlAttribute(DOMNode *attribute) {
|
XmlAttribute::XmlAttribute(DOMNode *attribute, std::map<string,string> mapTagReplacementValues) {
|
||||||
skipRestrictionCheck = false;
|
skipRestrictionCheck = false;
|
||||||
usesCommondata = false;
|
usesCommondata = false;
|
||||||
char str[strSize]="";
|
this->mapTagReplacementValues = mapTagReplacementValues;
|
||||||
|
char str[strSize] = "";
|
||||||
|
|
||||||
XMLString::transcode(attribute->getNodeValue(), str, strSize-1);
|
XMLString::transcode(attribute->getNodeValue(), str, strSize-1);
|
||||||
value= str;
|
value= str;
|
||||||
usesCommondata = ((value.find("$COMMONDATAPATH") != string::npos) || (value.find("%%COMMONDATAPATH%%") != string::npos));
|
usesCommondata = ((value.find("$COMMONDATAPATH") != string::npos) || (value.find("%%COMMONDATAPATH%%") != string::npos));
|
||||||
skipRestrictionCheck = Properties::applyTagsToValue(this->value);
|
skipRestrictionCheck = Properties::applyTagsToValue(this->value,&this->mapTagReplacementValues);
|
||||||
|
|
||||||
XMLString::transcode(attribute->getNodeName(), str, strSize-1);
|
XMLString::transcode(attribute->getNodeName(), str, strSize-1);
|
||||||
name= str;
|
name= str;
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlAttribute::XmlAttribute(const string &name, const string &value) {
|
XmlAttribute::XmlAttribute(const string &name, const string &value, std::map<string,string> mapTagReplacementValues) {
|
||||||
skipRestrictionCheck = false;
|
skipRestrictionCheck = false;
|
||||||
usesCommondata = false;
|
usesCommondata = false;
|
||||||
this->name= name;
|
this->mapTagReplacementValues = mapTagReplacementValues;
|
||||||
this->value= value;
|
this->name = name;
|
||||||
|
this->value = value;
|
||||||
|
|
||||||
usesCommondata = ((value.find("$COMMONDATAPATH") != string::npos) || (value.find("%%COMMONDATAPATH%%") != string::npos));
|
usesCommondata = ((value.find("$COMMONDATAPATH") != string::npos) || (value.find("%%COMMONDATAPATH%%") != string::npos));
|
||||||
skipRestrictionCheck = Properties::applyTagsToValue(this->value);
|
skipRestrictionCheck = Properties::applyTagsToValue(this->value,&this->mapTagReplacementValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool XmlAttribute::getBoolValue() const {
|
bool XmlAttribute::getBoolValue() const {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user