/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.petah.spring.bai.tasks.standard;
import org.petah.common.option.Option;
import org.petah.common.option.OptionsManager;
import java.util.List;
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.map.target.TargetType;
import org.petah.spring.bai.map.target.TargetZone;
import org.petah.spring.bai.tasks.Task;
import org.petah.spring.bai.util.CommandUtil;
/**
*
* @author Petah
*/
public class DefaultBomber extends Task {
// Options
private static Option<Integer> updateTime = OptionsManager.getOption(
new Option<Integer>("DefaultBomber.updateTime", 300));
// Class properties
private float nextUpdate = 0;
public DefaultBomber(AIDelegate aiDelegate) {
super(aiDelegate);
}
@Override
public boolean update(UnitGroup group, int frame) {
if (nextUpdate <= frame) {
nextUpdate = frame + updateTime.getValue();
List<TargetZone> zones = aiDelegate.getTeamDelegate().getTargetMap().getTargetZones(TargetType.Factory);
if (zones == null) {
zones = aiDelegate.getTeamDelegate().getTargetMap().getTargetZones(TargetType.Commander);
}
if (zones == null) {
zones = aiDelegate.getTeamDelegate().getTargetMap().getTargetZones(TargetType.Energy);
}
if (zones == null) {
zones = aiDelegate.getTeamDelegate().getTargetMap().getTargetZones();
}
if (zones != null) {
for (final CachedUnit unit : group) {
// if (unit.getCurrentCommands().size() == 0) {
if (zones.size() > 0) {
TargetZone targetZone = zones.get((int) (zones.size() * Math.random()));
for (CachedUnit zoneUnit : targetZone.getUnits()) {
unit.attack(zoneUnit.getUnit(), true);
}
}
// }
}
}
}
return false;
}
}