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