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"?>
|
<?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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue