package main;
import java.io.BufferedReader;
import java.util.Vector;
class MorphMap {
private Integer[] morphValues = new Integer[4];
private Vector morphParams = null;
private PatchData patchData = null;
MorphMap (PatchData patchData){
morphValues = new Integer[4];
morphParams = new Vector();
this.patchData = patchData;
}
// Setters
public void addMorphs(String params) {
Morph morph;
String[] paramArray = new String[6];
int newSectionIndex, newModuleIndex, newParamIndex, newMorphIndex, newMorphRange;
do {
paramArray = params.split(" ", 6);
newSectionIndex = Integer.parseInt(paramArray[0]);
newModuleIndex = Integer.parseInt(paramArray[1]);
newParamIndex = Integer.parseInt(paramArray[2]);
newMorphIndex = Integer.parseInt(paramArray[3]);
newMorphRange = Integer.parseInt(paramArray[4]);
params = paramArray[5];
morph = new Morph(newSectionIndex, newModuleIndex, newParamIndex, newMorphIndex, newMorphRange);
morphParams.add(morph);
} while (params.trim().length() > 0); // trim, omdat en nog een ' ' achter komt.
}
// Getters
public int getMorphMapParamsSize() {
return morphParams.size();
}
public Morph getMorphParam(int index) {
// Morph morph;
return (Morph) morphParams.get(index);
}
public int getMorphValue(int index) {
return morphValues[index].intValue();
}
// Inlezen patch gegevens.
public void readMorphMapDump(BufferedReader pchFile) {
// String params;
String[] valueArray = new String[4];
try {
valueArray = pchFile.readLine().split(" ");
morphValues[0] = new Integer(valueArray[0]);
morphValues[1] = new Integer(valueArray[1]);
morphValues[2] = new Integer(valueArray[2]);
morphValues[3] = new Integer(valueArray[3]);
addMorphs(pchFile.readLine());
}
catch(Exception e) {
System.out.println(e + " in readMorphMapDump");
}
}
// Creeren patch gegevens
public StringBuffer createMorphMapDump(StringBuffer result) {
int i = 0;
Morph morph = null;
if (getMorphMapParamsSize() > 0) {
result.append("[MorphMapDump]\r\n");
// Geen gebruik van getMorphValue() ipv morphValues[], want dat levert alleen maar meer stack op...
result.append("" + morphValues[0] + " "+ morphValues[1] + " "+ morphValues[2] + " "+ morphValues[3] + "\r\n");
for (i=0; i < getMorphMapParamsSize(); i++) {
morph = getMorphParam(i);
result.append("" + morph.getSectionIndex() + " " + morph.getModuleIndex() + " " + morph.getParamIndex() + " " + morph.getMorphIndex() + " " + morph.getMorphRange() + " ");
}
result.append("\r\n[/MorphMapDump]\r\n");
}
return result;
}
}