/*
** 2011 April 5
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
*/
package info.ata4.bspsrc;
import info.ata4.bsplib.app.SourceApp;
import info.ata4.bspsrc.modules.geom.BrushMode;
import info.ata4.bspsrc.util.SourceFormat;
import info.ata4.log.LogUtils;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Configuration class for BSPSource and its modules.
*
* @author Nico Bergemann <barracuda415 at yahoo.de>
*/
public final class BspSourceConfig implements Serializable {
// logger
private static final Logger L = LogUtils.getLogger();
public SourceApp defaultApp = SourceApp.UNKNOWN;
public BrushMode brushMode = BrushMode.BRUSHPLANES;
public SourceFormat sourceFormat = SourceFormat.AUTO;
public String backfaceTexture = "";
public String faceTexture = "";
public boolean fixCubemapTextures = true;
public boolean fixEntityRot = true;
public boolean fixToolTextures = true;
public boolean loadLumpFiles = true;
public boolean nullOutput = false;
public boolean skipProt = false;
public boolean unpackEmbedded = false;
public float backfaceDepth = 1;
public int maxCubemapSides = 8;
public int maxOverlaySides = 64;
public boolean detailMerge = true;
public float detailMergeThresh = 1;
public boolean writeAreaportals = true;
public boolean writeBrushEntities = true;
public boolean writeCameras = true;
public boolean writeCubemaps = true;
public boolean writeDetails = true;
public boolean writeDisp = true;
public boolean writeOccluders = true;
public boolean writeOverlays = true;
public boolean writePointEntities = true;
public boolean writeStaticProps = true;
public boolean writeVisgroups = true;
public boolean writeWorldBrushes = true;
public boolean writeLadders = true;
private boolean debug = false;
private Set<BspFileEntry> files = new HashSet<>();
private void updateLogger(boolean debug) {
LogUtils.configure(debug ? Level.ALL : Level.INFO);
if (debug) {
L.fine("Debug mode on, verbosity set to maximum");
}
}
public void dumpToLog() {
dumpToLog(L);
}
public void dumpToLog(Logger logger) {
Field[] fields = getClass().getDeclaredFields();
for (Field field : fields) {
// ignore static fields
if (Modifier.isStatic(field.getModifiers())) {
continue;
}
try {
logger.log(Level.CONFIG, "{0} = {1}", new Object[]{field.getName(), field.get(this)});
} catch (Exception ex) {
continue;
}
}
}
public Set<BspFileEntry> getFileSet() {
return files;
}
public boolean isWriteEntities() {
return writeBrushEntities || writePointEntities;
}
public void setWriteEntities(boolean writeEntities) {
writeBrushEntities = writePointEntities = writeEntities;
}
public boolean isDebug() {
return debug;
}
public void setDebug(boolean debug) {
updateLogger(debug);
this.debug = debug;
}
}