* @param robID Der Roboter, dessen Automaten neu übersetzt werden sollen.
* @param level Der Level i, ab dem übersetzt werden soll.
*/
private void translationFuerRoboterAbLevel(final int robID, final int level, ParCollection params) {
EndlicherAutomat ea;
Translator trans;
if (this.automaten.get(robID) == null) {
this.automaten.put(robID, new ArrayList<EndlicherAutomat>(this.mutationsarten.size()));
}
// Oberste Hierarchiestufe initialisieren.
if (this.getAutomat(robID, this.levelAnzahl - 1) == null) {
if (params.getParValueBoolean("UseTranslatorWITHCompletingTransitions")) {
if (this.levelAnzahl <= 2) {
this.setAutomat(robID, ConstantsTranslator.getStdTranslatorBE(params), this.levelAnzahl - 1);
} else {
this.setAutomat(robID, ConstantsTranslator.getStdTranslatorTR(params), this.levelAnzahl - 1);
}
} else {
if (this.levelAnzahl <= 2) {
this.setAutomat(robID, ConstantsTranslatorWOC.getStdTranslatorBE(params), this.levelAnzahl - 1);
} else {
this.setAutomat(robID, ConstantsTranslatorWOC.getStdTranslatorTR(params), this.levelAnzahl - 1);
}
}
}
if (level > 1) {
trans = new Translator("", this.scriptInterpreterTranslator, this.pars);
} else {
trans = new Translator("", this.scriptInterpreterVerhalten, this.pars);
}
// Konstanter Translator-Level.
if (level >= this.levelAnzahl - 1) {
throw new RuntimeException("Translator vom Level " + level + " ist konstant und kann nicht mutiert bzw. neu übersetzt werden.");
} else if (level > 0) { // (Mutierbarer oder unmutierbarer) Translator-Level.
this.setAutomat(robID, trans, level);
trans.generateFromSequence(StaticMethods.stringAusListSeq(this.getGenom(robID, level)), (Translator) this.getAutomat(robID, level + 1), false, params);
this.setAutomat(robID, trans, level);
params.logStage1(this.id().toUpperCase() + " -- Roboter " + robID
+ " / Level " + level + " (StdSeq übersetzt: \""
+ this.getAutomat(robID, level).erzeugeStringSeq() + "\")");