Adapt MapValidator script to Gridarta changes.

git-svn-id: svn://svn.code.sf.net/p/crossfire/code/maps/trunk@9676 282e977c-c81d-0410-88c4-b93c2d0d6712
master
akirschbaum 2008-07-23 21:09:00 +00:00
parent 1889aab0d8
commit d6838ee7b2
1 changed files with 102 additions and 97 deletions

View File

@ -1,103 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<script> <script>
<name>MapValidator</name> <name>MapValidator</name>
<code><![CDATA[import java.io.BufferedWriter; <code><![CDATA[import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.util.Iterator; import java.util.Iterator;
import net.sf.gridarta.gameobject.GameObject; import net.sf.gridarta.gameobject.GameObject;
import net.sf.gridarta.io.RecursiveFileIterator; import net.sf.gridarta.io.RecursiveFileIterator;
import net.sf.gridarta.map.validation.ErrorCollector; import net.sf.gridarta.map.validation.ErrorCollector;
import net.sf.gridarta.map.validation.ValidationError; import net.sf.gridarta.map.validation.ValidationError;
void log(String message) { void log(String message) {
print(message); print(message);
if (logFile != null) { if (logFile != null) {
logFile.write(message); logFile.write(message);
logFile.write('\n'); logFile.write('\n');
} }
} }
void checkMap(File mapFile, String mapPath) { void checkMap(File mapFile, String mapPath) {
map = mainControl.getMapManager().openMapFile(mapFile, false); map = mainControl.getMapManager().openMapFile(mapFile, false);
if (map == null) { if (map == null) {
log(mapPath + ":"); log(mapPath + ":");
log("- cannot load map file"); log("- cannot load map file");
return; return;
} }
ErrorCollector errorCollector; ErrorCollector errorCollector;
try { try {
mainControl.validateMap(map.getMapModel()); mainControl.validateMap(map.getMapModel());
} finally { } finally {
errorCollector = map.getMapModel().getErrors(); errorCollector = map.getMapModel().getErrors();
if (map.nViews() <= 0) { if (map.nViews() <= 0) {
mainControl.getMapManager().closeLevel(map); mainControl.getMapManager().closeLevel(map);
} }
} }
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
int numberOfErrors = 0; int numberOfErrors = 0;
Iterator it = errorCollector.iterator(); Iterator it = errorCollector.iterator();
while (it.hasNext()) { while (it.hasNext()) {
ValidationError validationError = it.next(); ValidationError validationError = it.next();
if (errorLimit > 0 && numberOfErrors >= errorLimit) { if (errorLimit > 0 && numberOfErrors >= errorLimit) {
log("- <skipping more errors>"); log("- <skipping more errors>");
break; break;
} }
if (numberOfErrors == 0) { if (numberOfErrors == 0) {
log(mapPath + ":"); log(mapPath + ":");
} }
numberOfErrors++; numberOfErrors++;
sb.setLength(0); sb.setLength(0);
sb.append("- "); sb.append("- ");
sb.append(validationError); sb.append(validationError);
GameObject gameObject = validationError.getGameObject(); GameObject gameObject = validationError.getGameObject();
if (gameObject != null) { if (gameObject != null) {
sb.append(" [").append(gameObject.getBestName()).append(']'); sb.append(" [").append(gameObject.getBestName()).append(']');
} }
String parameter = validationError.getParameter(); String parameter0 = validationError.getParameter(0);
if (parameter != null) { if (parameter0 != null) {
sb.append(" [").append(parameter).append(']'); sb.append(" [").append(parameter0);
} String parameter1 = validationError.getParameter(1);
if (parameter1 != null) {
log(sb.toString()); sb.append(", ").append(parameter1);
} }
} sb.append(']');
}
Writer logFile = logFilename.length() <= 0 ? null : new BufferedWriter(new FileWriter(logFilename));
try { log(sb.toString());
if (baseDirectory == null || baseDirectory.length() <= 0) { }
baseDirectory = "/"; }
}
log("Checking maps below " + baseDirectory + "..."); Writer logFile = logFilename.length() <= 0 ? null : new BufferedWriter(new FileWriter(logFilename));
if (baseDirectory.endsWith("/")) { try {
baseDirectory = baseDirectory.substring(0, baseDirectory.length() - 1); if (baseDirectory == null || baseDirectory.length() <= 0) {
} baseDirectory = "/";
}
String mapDefaultFolder = mainControl.getGlobalSettings().getMapDefaultFolder(); log("Checking maps below " + baseDirectory + "...");
String rootDirectory = mapDefaultFolder + baseDirectory; if (baseDirectory.endsWith("/")) {
Iterator it = new RecursiveFileIterator(new File(rootDirectory)); baseDirectory = baseDirectory.substring(0, baseDirectory.length() - 1);
while (it.hasNext()) { }
File file = it.next();
if (file.isFile() String mapDefaultFolder = mainControl.getGlobalSettings().getMapDefaultFolder();
&& file.getPath().startsWith(rootDirectory) String rootDirectory = mapDefaultFolder + baseDirectory;
&& !file.getName().equalsIgnoreCase("README") Iterator it = new RecursiveFileIterator(new File(rootDirectory));
&& !file.getName().endsWith(".msg")) { while (it.hasNext()) {
checkMap(file, file.getPath().substring(mapDefaultFolder.length())); File file = it.next();
} if (file.isFile()
} && file.getPath().startsWith(rootDirectory)
&& !file.getName().equalsIgnoreCase("README")
log("Done."); && !file.getName().endsWith(".msg")) {
} finally { checkMap(file, file.getPath().substring(mapDefaultFolder.length()));
if (logFile != null) { }
logFile.close(); }
}
log("Done.");
} finally {
if (logFile != null) {
logFile.close();
}
}]]></code> }]]></code>
<mode> <mode>
<autoboot>false</autoboot> <autoboot>false</autoboot>