/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.petah.spring.bai.tasks.porc;
import com.springrts.ai.oo.AIFloat3;
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.delegate.GlobalDelegate;
import org.petah.spring.bai.group.UnitGroup;
import org.petah.spring.bai.tasks.Task;
import org.petah.spring.bai.unit.UnitInfo;
import org.petah.spring.bai.unit.UnitType;
/**
*
* @author Petah
*/
public class PorcFactory extends Task {
// Options
private static Option<Integer> updateTime = OptionsManager.getOption(
new Option<Integer>("PorcFactory.updateTime", 20));
private static Option<Integer> maxBuilders = OptionsManager.getOption(
new Option<Integer>("PorcFactory.updateTime", 4));
// Class properties
private int nextUpdate = 0;
public PorcFactory(AIDelegate aiDelegate) {
super(aiDelegate);
}
public void build(String name, CachedUnit factory) {
factory.build(GlobalDelegate.getUnitDef(name, factory.getFaction()).getUnitDef(), new AIFloat3());
}
@Override
public boolean update(UnitGroup group, int frame) {
if (nextUpdate <= frame) {
nextUpdate = frame + updateTime.getValue();
for (CachedUnit unit : group) {
UnitInfo info = UnitInfo.getUnitInfo(unit.getDef());
if (info.isType(UnitType.Factory)) {
if (unit.getCurrentCommands().size() == 0) {
if (info.getName().equals("KbotFactory")) {
if (aiDelegate.getGroupManager().getGroup("builders").size() < maxBuilders.getValue()) {
build("KT1Builder", unit);
}
} else if (info.getName().equals("T2KbotFactory")) {
if (aiDelegate.getGroupManager().getGroup("t2Builders").size() < maxBuilders.getValue()) {
build("KT2Builder", unit);
}
} else if (info.getName().equals("AircraftFactory")) {
if (aiDelegate.getGroupManager().getGroup("builders").size() < maxBuilders.getValue()) {
build("AT1Builder", unit);
}
} else if (info.getName().equals("T2AircraftFactory")) {
if (aiDelegate.getGroupManager().getGroup("t2Builders").size() < maxBuilders.getValue()) {
build("AT2Builder", unit);
}
}
}
}
}
}
return false;
}
}