/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.petah.spring.bai.tasks.porc;
import org.petah.common.option.Option;
import org.petah.common.option.OptionsManager;
import org.petah.spring.bai.cache.CachedUnit;
import org.petah.spring.bai.delegate.AIDelegate;
import org.petah.spring.bai.group.UnitGroup;
import org.petah.spring.bai.tasks.Task;
/**
*
* @author Petah
*/
public class PorcT1BaseBuilder extends Task {
// Options
private static Option<Integer> updateTime = OptionsManager.getOption(
new Option<Integer>("PorcT1BaseBuilder.updateTime", 20));
private static Option<Integer> maxEnergyAmount = OptionsManager.getOption(
new Option<Integer>("PorcT1BaseBuilder.maxEnergyAmount", 14));
private static Option<Integer> nanoMinEnergyAmount = OptionsManager.getOption(
new Option<Integer>("PorcT1BaseBuilder.nanoMinEnergyAmount", 9));
private static Option<Integer> maxNanoAmount = OptionsManager.getOption(
new Option<Integer>("PorcT1BaseBuilder.maxNanoAmount", 12));
// Class properties
private int nextUpdate = 0;
public PorcT1BaseBuilder(AIDelegate aiDelegate) {
super(aiDelegate);
}
@Override
public boolean update(UnitGroup group, int frame) {
if (nextUpdate <= frame) {
nextUpdate = frame + updateTime.getValue();
if (group.size() > 0) {
CachedUnit builder = group.getUnit(0);
if (builder.getCurrentCommands().size() == 0) {
int energyAmount = aiDelegate.getGroupManager().getGroup("energyGenerators").size();
int nanoAmount = aiDelegate.getGroupManager().getGroup("nanos").size();
if ((energyAmount - 6 <= nanoAmount || nanoAmount >= maxNanoAmount.getValue()) &&
energyAmount < maxEnergyAmount.getValue()) {
if (energyAmount >= nanoMinEnergyAmount.getValue()) {
aiDelegate.getGroupManager().getGroup("nanos").clearTasks();
aiDelegate.getGroupManager().getGroup("nanos").addTask(new PorcNano(aiDelegate));
// aiDelegate.getGroupManager().getGroup("factorys").clearTasks();
// aiDelegate.getGroupManager().getGroup("factorys").addTask(new DefaultFactory(aiDelegate));
}
PorcCommands.queueAdvSolar(aiDelegate, builder);
} else if (nanoAmount < maxNanoAmount.getValue()) {
PorcCommands.queueNano(aiDelegate, builder);
}
// else {
// if (aiDelegate.getGroupManager().getGroup("t2Factorys").size() == 0) {
//// queueT2Factory(aiDelegate, builder);
//// aiDelegate.getGroupManager().getGroup("expansionBuilders").clearTasks();
//// aiDelegate.getGroupManager().getGroup("expansionBuilders").addTask(new PorcExpansionBuilderStage2(aiDelegate));
// }
// }
}
}
}
return false;
}
}