package bwapi;
import java.util.function.Predicate;
public interface UnitFilter extends Predicate {
UnitFilter IsTransPort = u -> u.getType().spaceProvided() > 0 && u.getType() != UnitType.Terran_Bunker;
UnitFilter CanProduce = u -> u.getType().canProduce();
UnitFilter CanAttack = u -> u.getType().canAttack();
UnitFilter CanMove = u -> u.getType().canMove();
UnitFilter IsFlyer = u -> u.getType().isFlyer();
UnitFilter IsFlying = Unit::isFlying;
UnitFilter RegeneratesHP = u -> u.getType().regeneratesHP();
UnitFilter IsSpellcaster = u -> u.getType().isSpellcaster();
UnitFilter HasPermanentCloak = u -> u.getType().hasPermanentCloak();
UnitFilter IsOrganic = u -> u.getType().isOrganic();
UnitFilter IsMechanical = u -> u.getType().isMechanical();
UnitFilter IsRobotic = u -> u.getType().isRobotic();
UnitFilter IsDetector = u -> u.getType().isDetector();
UnitFilter IsResourceContainer = u -> u.getType().isResourceContainer();
UnitFilter IsResourceDepot = u -> u.getType().isResourceDepot();
UnitFilter IsRefinery = u -> u.getType().isRefinery();
UnitFilter IsWorker = u -> u.getType().isWorker();
UnitFilter RequiresPsi = u -> u.getType().requiresPsi();
UnitFilter RequiresCreep = u -> u.getType().requiresCreep();
UnitFilter IsBurrowable = u -> u.getType().isBurrowable();
UnitFilter IsCloakable = u -> u.getType().isCloakable();
UnitFilter IsBuilding = u -> u.getType().isBuilding();
UnitFilter IsAddon = u -> u.getType().isAddon();
UnitFilter IsFlyingBuilding = u -> u.getType().isFlyingBuilding();
UnitFilter IsNeutral = u -> u.getType().isNeutral();
UnitFilter IsHero = u -> u.getType().isHero();
UnitFilter IsPowerup = u -> u.getType().isPowerup();
UnitFilter IsBeacon = u -> u.getType().isBeacon();
UnitFilter IsFlagBeacon = u -> u.getType().isFlagBeacon();
UnitFilter IsSpecialBuilding = u -> u.getType().isSpecialBuilding();
UnitFilter IsSpell = u -> u.getType().isSpell();
UnitFilter ProducesLarva = u -> u.getType().producesLarva();
UnitFilter IsMineralField = u -> u.getType().isMineralField();
UnitFilter IsCritter = u -> u.getType().isCritter();
UnitFilter CanBuildAddon = u -> u.getType().canBuildAddon();
// static UnitFilter example = HP(x -> x > 40);
static UnitFilter HP(Predicate c) {
return u -> c.test(u.getHitPoints());
}
static UnitFilter MaxHP(Predicate c) {
return u -> c.test(u.getType().maxHitPoints());
}
static UnitFilter HP_Percent(Predicate c) {
return u -> c.test((u.getType().maxHitPoints() != 0) ? ((u.getHitPoints() * 100) / u.getType().maxHitPoints()) : 0);
}
static UnitFilter Shields(Predicate c) {
return u -> c.test(u.getShields());
}
static UnitFilter MaxShields(Predicate c) {
return u -> c.test(u.getType().maxShields());
}
static UnitFilter Shields_Percent(Predicate c) {
return u -> c.test((u.getType().maxShields() != 0) ? ((u.getShields() * 100) / u.getType().maxShields()) : 0);
}
static UnitFilter Energy(Predicate c) {
return u -> c.test(u.getEnergy());
}
static UnitFilter MaxEnergy(Predicate c) {
return u -> c.test(u.getPlayer().maxEnergy(u.getType()));
}
static UnitFilter Energy_Percent(Predicate c) {
return u -> c.test((u.getPlayer().maxEnergy(u.getType()) != 0) ? ((u.getEnergy() * 100) / u.getPlayer().maxEnergy(u.getType())) : 0);
}
static UnitFilter Armor(Predicate c) {
return u -> c.test(u.getPlayer().armor(u.getType()));
}
static UnitFilter ArmorUpgrade(Predicate c) {
return u -> c.test(u.getType().armorUpgrade());
}
static UnitFilter MineralPrice(Predicate c) {
return u -> c.test(u.getType().mineralPrice());
}
static UnitFilter GasPrice(Predicate c) {
return u -> c.test(u.getType().gasPrice());
}
static UnitFilter BuildTime(Predicate c) {
return u -> c.test(u.getType().buildTime());
}
static UnitFilter SupplyRequired(Predicate c) {
return u -> c.test(u.getType().supplyRequired());
}
static UnitFilter SupplyProvided(Predicate c) {
return u -> c.test(u.getType().supplyProvided());
}
static UnitFilter SpaceRequired(Predicate c) {
return u -> c.test(u.getType().spaceRequired());
}
static UnitFilter SpaceRemaining(Predicate c) {
return u -> c.test(u.getSpaceRemaining());
}
static UnitFilter SpaceProvided(Predicate c) {
return u -> c.test(u.getType().spaceProvided());
}
static UnitFilter BuildScore(Predicate c) {
return u -> c.test(u.getType().buildScore());
}
static UnitFilter DestroyScore(Predicate c) {
return u -> c.test(u.getType().destroyScore());
}
static UnitFilter TopSpeed(Predicate c) {
return u -> c.test(u.getPlayer().topSpeed(u.getType()));
}
static UnitFilter SightRange(Predicate c) {
return u -> c.test(u.getPlayer().sightRange(u.getType()));
}
static UnitFilter MaxWeaponCooldown(Predicate c) {
return u -> c.test(u.getPlayer().weaponDamageCooldown(u.getType()));
}
static UnitFilter SizeType(Predicate c) {
return u -> c.test(u.getType().size());
}
static UnitFilter GroundWeapon(Predicate c) {
return u -> c.test(u.getType().groundWeapon());
}
static UnitFilter AirWeapon(Predicate c) {
return u -> c.test(u.getType().airWeapon());
}
static UnitFilter GetType(Predicate c) {
return u -> c.test(u.getType());
}
static UnitFilter GetRace(Predicate c) {
return u -> c.test(u.getType().getRace());
}
static UnitFilter GetPlayer(Predicate c) {
return u -> c.test(u.getPlayer());
}
static UnitFilter Resources(Predicate c) {
return u -> c.test(u.getResources());
}
static UnitFilter ResourceGroup(Predicate c) {
return u -> c.test(u.getResourceGroup());
}
static UnitFilter AcidSporeCount(Predicate c) {
return u -> c.test(u.getAcidSporeCount());
}
static UnitFilter InterceptorCount(Predicate c) {
return u -> c.test(u.getInterceptorCount());
}
static UnitFilter ScarabCount(Predicate c) {
return u -> c.test(u.getScarabCount());
}
static UnitFilter SpiderMineCount(Predicate c) {
return u -> c.test(u.getSpiderMineCount());
}
static UnitFilter WeaponCooldown(Predicate c) {
return u -> c.test(u.getGroundWeaponCooldown());
}
static UnitFilter SpellCooldown(Predicate c) {
return u -> c.test(u.getSpellCooldown());
}
static UnitFilter DefenseMatrixPoints(Predicate c) {
return u -> c.test(u.getDefenseMatrixPoints());
}
static UnitFilter DefenseMatrixTime(Predicate c) {
return u -> c.test(u.getDefenseMatrixTimer());
}
static UnitFilter EnsnareTime(Predicate c) {
return u -> c.test(u.getEnsnareTimer());
}
static UnitFilter IrradiateTime(Predicate c) {
return u -> c.test(u.getIrradiateTimer());
}
static UnitFilter LockdownTime(Predicate c) {
return u -> c.test(u.getLockdownTimer());
}
static UnitFilter MaelstromTime(Predicate c) {
return u -> c.test(u.getMaelstromTimer());
}
static UnitFilter OrderTime(Predicate c) {
return u -> c.test(u.getOrderTimer());
}
static UnitFilter PlagueTimer(Predicate c) {
return u -> c.test(u.getPlagueTimer());
}
static UnitFilter RemoveTime(Predicate c) {
return u -> c.test(u.getRemoveTimer());
}
static UnitFilter StasisTime(Predicate c) {
return u -> c.test(u.getStasisTimer());
}
static UnitFilter StimTime(Predicate c) {
return u -> c.test(u.getStimTimer());
}
static UnitFilter BuildType(Predicate c) {
return u -> c.test(u.getBuildType());
}
static UnitFilter RemainingBuildTime(Predicate c) {
return u -> c.test(u.getRemainingBuildTime());
}
static UnitFilter RemainingTrainTime(Predicate c) {
return u -> c.test(u.getRemainingTrainTime());
}
static UnitFilter Target(Predicate c) {
return u -> c.test(u.getTarget());
}
static UnitFilter CurrentOrder(Predicate c) {
return u -> c.test(u.getOrder());
}
static UnitFilter SecondaryOrder(Predicate c) {
return u -> c.test(u.getSecondaryOrder());
}
static UnitFilter OrderTarget(Predicate c) {
return u -> c.test(u.getOrderTarget());
}
static UnitFilter GetLeft(Predicate c) {
return u -> c.test(u.getLeft());
}
static UnitFilter GetTop(Predicate c) {
return u -> c.test(u.getTop());
}
static UnitFilter GetRight(Predicate c) {
return u -> c.test(u.getRight());
}
static UnitFilter GetBottom(Predicate c) {
return u -> c.test(u.getBottom());
}
UnitFilter Exists = Unit::exists;
UnitFilter IsAttacking = Unit::isAttacking;
UnitFilter IsBeingConstructed = Unit::isBeingConstructed;
UnitFilter IsBeingGathered = Unit::isBeingGathered;
UnitFilter IsBeingHealed = Unit::isBeingHealed;
UnitFilter IsBlind = Unit::isBlind;
UnitFilter IsBraking = Unit::isBraking;
UnitFilter IsBurrowed = Unit::isBurrowed;
UnitFilter IsCarryingGas = Unit::isCarryingGas;
UnitFilter IsCarryingMinerals = Unit::isCarryingMinerals;
UnitFilter IsCarryingSomething = u -> u.isCarryingMinerals() || u.isCarryingGas();
UnitFilter IsCloaked = Unit::isCloaked;
UnitFilter IsCompleted = Unit::isCompleted;
UnitFilter IsConstructing = Unit::isConstructing;
UnitFilter IsDefenseMatrixed = Unit::isDefenseMatrixed;
UnitFilter IsDetected = Unit::isDetected;
UnitFilter IsEnsnared = Unit::isEnsnared;
UnitFilter IsFollowing = Unit::isFollowing;
UnitFilter IsGatheringGas = Unit::isGatheringGas;
UnitFilter IsGatheringMinerals = Unit::isGatheringMinerals;
UnitFilter IsHallucination = Unit::isHallucination;
UnitFilter IsHoldingPosition = Unit::isHoldingPosition;
UnitFilter IsIdle = Unit::isIdle;
UnitFilter IsInterruptible = Unit::isInterruptible;
UnitFilter IsInvincible = Unit::isInvincible;
UnitFilter IsIrradiated = Unit::isIrradiated;
UnitFilter IsLifted = Unit::isLifted;
UnitFilter IsLoaded = Unit::isLoaded;
UnitFilter IsLockedDown = Unit::isLockedDown;
UnitFilter IsMaelstrommed = Unit::isMaelstrommed;
UnitFilter IsMorphing = Unit::isMorphing;
UnitFilter IsMoving = Unit::isMoving;
UnitFilter IsParasited = Unit::isParasited;
UnitFilter IsPatrolling = Unit::isPatrolling;
UnitFilter IsPlagued = Unit::isPlagued;
UnitFilter IsRepairing = Unit::isRepairing;
UnitFilter IsResearching = Unit::isResearching;
UnitFilter IsSieged = Unit::isSieged;
UnitFilter IsStartingAttack = Unit::isStartingAttack;
UnitFilter IsStasised = Unit::isStasised;
UnitFilter IsStimmed = Unit::isStimmed;
UnitFilter IsStuck = Unit::isStuck;
UnitFilter IsTraining = Unit::isTraining;
UnitFilter IsUnderAttack = Unit::isUnderAttack;
UnitFilter IsUnderDarkSwarm = Unit::isUnderDarkSwarm;
UnitFilter IsUnderDisruptionWeb = Unit::isUnderDisruptionWeb;
UnitFilter IsUnderStorm = Unit::isUnderStorm;
UnitFilter IsPowered = Unit::isPowered;
UnitFilter IsVisible = Unit::isVisible;
}