- added code to rename duplicate maps and show a warning at game start

This commit is contained in:
Mark Vejvoda 2011-01-31 21:59:28 +00:00
parent 25da3ea34a
commit b8075eaf01
4 changed files with 54 additions and 4 deletions

View File

@ -67,6 +67,9 @@ Intro::Intro(Program *program):
int w= metrics.getVirtualW();
int h= metrics.getVirtualH();
timer=0;
mouseX = 0;
mouseY = 0;
mouse2d = 0;
texts.push_back(Text(coreData.getLogoTexture(), Vec2i(w/2-128, h/2-64), Vec2i(256, 128), 4000));
texts.push_back(Text(glestVersionString, Vec2i(w/2+45, h/2-45), 4000, coreData.getMenuFontNormal()));
@ -97,6 +100,8 @@ void Intro::update(){
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
}
mouse2d= (mouse2d+1) % Renderer::maxMouse2dAnim;
}
void Intro::render(){
@ -136,6 +141,8 @@ void Intro::render(){
if(program != NULL) program->renderProgramMsgBox();
if(this->forceMouseRender == true) renderer.renderMouse2d(mouseX, mouseY, mouse2d, 0.f);
renderer.swapBuffers();
}
@ -160,4 +167,9 @@ void Intro::mouseUpLeft(int x, int y){
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
}
void Intro::mouseMove(int x, int y, const MouseState *ms) {
mouseX = x;
mouseY = y;
}
}}//end namespace

View File

@ -71,6 +71,9 @@ private:
private:
vector<Text> texts;
int timer;
int mouseX;
int mouseY;
int mouse2d;
public:
Intro(Program *program);
@ -78,6 +81,7 @@ public:
virtual void render();
virtual void keyDown(char key);
virtual void mouseUpLeft(int x, int y);
void mouseMove(int x, int y, const MouseState *ms);
};
}}//end namespace

View File

@ -1314,6 +1314,7 @@ void CheckForDuplicateData() {
throw runtime_error("No maps were found!");
}
vector<string> duplicateMapsToRename;
for(int i = 0; i < maps.size(); ++i) {
string map1 = maps[i];
for(int j = 0; j < maps.size(); ++j) {
@ -1323,13 +1324,41 @@ void CheckForDuplicateData() {
//printf("i = %d map1 [%s] j = %d map2 [%s]\n",i,map1.c_str(),j,map2.c_str());
if(map1 == map2) {
char szBuf[4096]="";
sprintf(szBuf,"You have duplicate maps for map [%s] in [%s] and [%s]",map1.c_str(),mapPaths[0].c_str(),mapPaths[1].c_str());
throw runtime_error(szBuf);
if(std::find(duplicateMapsToRename.begin(),duplicateMapsToRename.end(),map1) == duplicateMapsToRename.end()) {
duplicateMapsToRename.push_back(map1);
}
}
}
}
}
if(duplicateMapsToRename.size() > 0) {
string errorMsg = "Warning duplicate maps were detected and renamed:\n";
for(int i = 0; i < duplicateMapsToRename.size(); ++i) {
string oldFile = mapPaths[1] + "/" + duplicateMapsToRename[i];
string newFile = mapPaths[1] + "/" + duplicateMapsToRename[i];
string ext = extractExtension(newFile);
newFile = newFile.substr( 0, newFile.length()-ext.length()-1);
newFile = newFile + "_custom." + ext;
char szBuf[4096]="";
int result = rename(oldFile.c_str(),newFile.c_str());
if(result != 0) {
char *errmsg = strerror(errno);
sprintf(szBuf,"Error [%s]\nCould not rename [%s] to [%s]!",errmsg,oldFile.c_str(),newFile.c_str());
throw runtime_error(szBuf);
}
else {
sprintf(szBuf,"map [%s] in [%s]\nwas renamed to [%s]",duplicateMapsToRename[i].c_str(),oldFile.c_str(),newFile.c_str());
}
errorMsg += szBuf;
}
//throw runtime_error(szBuf);
Program *program = Program::getInstance();
if(program) {
program->getState()->setForceMouseRender(true);
}
ExceptionHandler::DisplayMessage(errorMsg.c_str(), false);
}
//tilesets
std::vector<std::string> tileSets;

View File

@ -49,9 +49,13 @@ protected:
int startX;
int startY;
bool forceMouseRender;
public:
ProgramState(Program *program) {this->program= program;}
ProgramState(Program *program) {
this->program= program;
this->forceMouseRender = false;
}
virtual ~ProgramState(){};
virtual void render()=0;
@ -81,6 +85,7 @@ public:
virtual bool quitTriggered() { return false; }
virtual Stats quitAndToggleState() { return Stats(); };
virtual Program * getProgram() { return program; }
virtual void setForceMouseRender(bool value) { forceMouseRender=value;}
};
// ===============================