Skip to content

Commit b9eafa5

Browse files
committed
Add bwapi filters
1 parent 1e14606 commit b9eafa5

File tree

4 files changed

+384
-15
lines changed

4 files changed

+384
-15
lines changed

src/main/java/bwapi/Filter.java

Lines changed: 334 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,334 @@
1+
package bwapi;
2+
3+
public class Filter {
4+
public static final UnitFilter IsTransPort = (u -> u.getType().spaceProvided() > 0 && u.getType() != UnitType.Terran_Bunker);
5+
public static final UnitFilter CanProduce = (u) -> u.getType().canProduce();
6+
public static final UnitFilter CanAttack = (u) -> u.getType().canAttack();
7+
public static final UnitFilter CanMove = (u) -> u.getType().canMove();
8+
public static final UnitFilter IsFlyer = (u) -> u.getType().isFlyer();
9+
public static final UnitFilter IsFlying = (u) -> u.isFlying();
10+
public static final UnitFilter RegeneratesHP = (u) -> u.getType().regeneratesHP();
11+
public static final UnitFilter IsSpellcaster = (u) -> u.getType().isSpellcaster();
12+
public static final UnitFilter HasPermanentCloak = (u) -> u.getType().hasPermanentCloak();
13+
public static final UnitFilter IsOrganic = (u) -> u.getType().isOrganic();
14+
public static final UnitFilter IsMechanical = (u) -> u.getType().isMechanical();
15+
public static final UnitFilter IsRobotic = (u) -> u.getType().isRobotic();
16+
public static final UnitFilter IsDetector = (u) -> u.getType().isDetector();
17+
public static final UnitFilter IsResourceContainer = (u) -> u.getType().isResourceContainer();
18+
public static final UnitFilter IsResourceDepot = (u) -> u.getType().isResourceDepot();
19+
public static final UnitFilter IsRefinery = (u) -> u.getType().isRefinery();
20+
public static final UnitFilter IsWorker = (u) -> u.getType().isWorker();
21+
public static final UnitFilter RequiresPsi = (u) -> u.getType().requiresPsi();
22+
public static final UnitFilter RequiresCreep = (u) -> u.getType().requiresCreep();
23+
public static final UnitFilter IsBurrowable = (u) -> u.getType().isBurrowable();
24+
public static final UnitFilter IsCloakable = (u) -> u.getType().isCloakable();
25+
public static final UnitFilter IsBuilding = (u) -> u.getType().isBuilding();
26+
public static final UnitFilter IsAddon = (u) -> u.getType().isAddon();
27+
public static final UnitFilter IsFlyingBuilding = (u) -> u.getType().isFlyingBuilding();
28+
public static final UnitFilter IsNeutral = (u) -> u.getType().isNeutral();
29+
public static final UnitFilter IsHero = (u) -> u.getType().isHero();
30+
public static final UnitFilter IsPowerup = (u) -> u.getType().isPowerup();
31+
public static final UnitFilter IsBeacon = (u) -> u.getType().isBeacon();
32+
public static final UnitFilter IsFlagBeacon = (u) -> u.getType().isFlagBeacon();
33+
public static final UnitFilter IsSpecialBuilding = (u) -> u.getType().isSpecialBuilding();
34+
public static final UnitFilter IsSpell = (u) -> u.getType().isSpell();
35+
public static final UnitFilter ProducesLarva = (u) -> u.getType().producesLarva();
36+
public static final UnitFilter IsMineralField = (u) -> u.getType().isMineralField();
37+
public static final UnitFilter IsCritter = (u) -> u.getType().isCritter();
38+
public static final UnitFilter CanBuildAddon = (u) -> u.getType().canBuildAddon();
39+
40+
public interface Condition<T> {
41+
boolean apply(T t);
42+
}
43+
44+
// static UnitFilter example = HP((x) -> x > 40);
45+
public static UnitFilter HP(Condition<Integer> c) {
46+
return u -> c.apply(u.getHitPoints());
47+
}
48+
49+
public static UnitFilter MaxHP(Condition<Integer> c) {
50+
return u -> c.apply(u.getType().maxHitPoints());
51+
}
52+
53+
public static UnitFilter HP_Percent(Condition<Integer> c) {
54+
return u -> c.apply((u.getType().maxHitPoints() != 0) ? ((u.getHitPoints() * 100) / u.getType().maxHitPoints()) : 0);
55+
}
56+
57+
public static UnitFilter Shields(Condition<Integer> c) {
58+
return u -> c.apply(u.getShields());
59+
}
60+
61+
public static UnitFilter MaxShields(Condition<Integer> c) {
62+
return u -> c.apply(u.getType().maxShields());
63+
}
64+
65+
public static UnitFilter Shields_Percent(Condition<Integer> c) {
66+
return u -> c.apply((u.getType().maxShields() != 0) ? ((u.getShields() * 100) / u.getType().maxShields()) : 0);
67+
}
68+
69+
public static UnitFilter Energy(Condition<Integer> c) {
70+
return u -> c.apply(u.getEnergy());
71+
}
72+
73+
public static UnitFilter MaxEnergy(Condition<Integer> c) {
74+
return u -> c.apply(u.getPlayer().maxEnergy(u.getType()));
75+
}
76+
77+
public static UnitFilter Energy_Percent(Condition<Integer> c) {
78+
return u -> c.apply((u.getPlayer().maxEnergy(u.getType()) != 0) ? ((u.getEnergy() * 100) / u.getPlayer().maxEnergy(u.getType())) : 0);
79+
}
80+
81+
public static UnitFilter Armor(Condition<Integer> c) {
82+
return u -> c.apply(u.getPlayer().armor(u.getType()));
83+
}
84+
85+
public static UnitFilter ArmorUpgrade(Condition<UpgradeType> c) {
86+
return u -> c.apply(u.getType().armorUpgrade());
87+
}
88+
89+
public static UnitFilter MineralPrice(Condition<Integer> c) {
90+
return u -> c.apply(u.getType().mineralPrice());
91+
}
92+
93+
public static UnitFilter GasPrice(Condition<Integer> c) {
94+
return u -> c.apply(u.getType().gasPrice());
95+
}
96+
97+
public static UnitFilter BuildTime(Condition<Integer> c) {
98+
return u -> c.apply(u.getType().buildTime());
99+
}
100+
101+
public static UnitFilter SupplyRequired(Condition<Integer> c) {
102+
return u -> c.apply(u.getType().supplyRequired());
103+
}
104+
105+
public static UnitFilter SupplyProvided(Condition<Integer> c) {
106+
return u -> c.apply(u.getType().supplyProvided());
107+
}
108+
109+
public static UnitFilter SpaceRequired(Condition<Integer> c) {
110+
return u -> c.apply(u.getType().spaceRequired());
111+
}
112+
113+
public static UnitFilter SpaceRemaining(Condition<Integer> c) {
114+
return u -> c.apply(u.getSpaceRemaining());
115+
}
116+
117+
public static UnitFilter SpaceProvided(Condition<Integer> c) {
118+
return u -> c.apply(u.getType().spaceProvided());
119+
}
120+
121+
public static UnitFilter BuildScore(Condition<Integer> c) {
122+
return u -> c.apply(u.getType().buildScore());
123+
}
124+
125+
public static UnitFilter DestroyScore(Condition<Integer> c) {
126+
return u -> c.apply(u.getType().destroyScore());
127+
}
128+
129+
public static UnitFilter TopSpeed(Condition<Double> c) {
130+
return u -> c.apply(u.getPlayer().topSpeed(u.getType()));
131+
}
132+
133+
public static UnitFilter SightRange(Condition<Integer> c) {
134+
return u -> c.apply(u.getPlayer().sightRange(u.getType()));
135+
}
136+
137+
public static UnitFilter MaxWeaponCooldown(Condition<Integer> c) {
138+
return u -> c.apply(u.getPlayer().weaponDamageCooldown(u.getType()));
139+
}
140+
141+
public static UnitFilter SizeType(Condition<UnitSizeType> c) {
142+
return u -> c.apply(u.getType().size());
143+
}
144+
145+
public static UnitFilter GroundWeapon(Condition<WeaponType> c) {
146+
return u -> c.apply(u.getType().groundWeapon());
147+
}
148+
149+
public static UnitFilter AirWeapon(Condition<WeaponType> c) {
150+
return u -> c.apply(u.getType().airWeapon());
151+
}
152+
153+
public static UnitFilter GetType(Condition<UnitType> c) {
154+
return u -> c.apply(u.getType());
155+
}
156+
157+
public static UnitFilter GetRace(Condition<Race> c) {
158+
return u -> c.apply(u.getType().getRace());
159+
}
160+
161+
public static UnitFilter GetPlayer(Condition<Player> c) {
162+
return u -> c.apply(u.getPlayer());
163+
}
164+
165+
public static UnitFilter Resources(Condition<Integer> c) {
166+
return u -> c.apply(u.getResources());
167+
}
168+
169+
public static UnitFilter ResourceGroup(Condition<Integer> c) {
170+
return u -> c.apply(u.getResourceGroup());
171+
}
172+
173+
public static UnitFilter AcidSporeCount(Condition<Integer> c) {
174+
return u -> c.apply(u.getAcidSporeCount());
175+
}
176+
177+
public static UnitFilter InterceptorCount(Condition<Integer> c) {
178+
return u -> c.apply(u.getInterceptorCount());
179+
}
180+
181+
public static UnitFilter ScarabCount(Condition<Integer> c) {
182+
return u -> c.apply(u.getScarabCount());
183+
}
184+
185+
public static UnitFilter SpiderMineCount(Condition<Integer> c) {
186+
return u -> c.apply(u.getSpiderMineCount());
187+
}
188+
189+
public static UnitFilter WeaponCooldown(Condition<Integer> c) {
190+
return u -> c.apply(u.getGroundWeaponCooldown());
191+
}
192+
193+
public static UnitFilter SpellCooldown(Condition<Integer> c) {
194+
return u -> c.apply(u.getSpellCooldown());
195+
}
196+
197+
public static UnitFilter DefenseMatrixPoints(Condition<Integer> c) {
198+
return u -> c.apply(u.getDefenseMatrixPoints());
199+
}
200+
201+
public static UnitFilter DefenseMatrixTime(Condition<Integer> c) {
202+
return u -> c.apply(u.getDefenseMatrixTimer());
203+
}
204+
205+
public static UnitFilter EnsnareTime(Condition<Integer> c) {
206+
return u -> c.apply(u.getEnsnareTimer());
207+
}
208+
209+
public static UnitFilter IrradiateTime(Condition<Integer> c) {
210+
return u -> c.apply(u.getIrradiateTimer());
211+
}
212+
213+
public static UnitFilter LockdownTime(Condition<Integer> c) {
214+
return u -> c.apply(u.getLockdownTimer());
215+
}
216+
217+
public static UnitFilter MaelstromTime(Condition<Integer> c) {
218+
return u -> c.apply(u.getMaelstromTimer());
219+
}
220+
221+
public static UnitFilter OrderTime(Condition<Integer> c) {
222+
return u -> c.apply(u.getOrderTimer());
223+
}
224+
225+
public static UnitFilter PlagueTimer(Condition<Integer> c) {
226+
return u -> c.apply(u.getPlagueTimer());
227+
}
228+
229+
public static UnitFilter RemoveTime(Condition<Integer> c) {
230+
return u -> c.apply(u.getRemoveTimer());
231+
}
232+
233+
public static UnitFilter StasisTime(Condition<Integer> c) {
234+
return u -> c.apply(u.getStasisTimer());
235+
}
236+
237+
public static UnitFilter StimTime(Condition<Integer> c) {
238+
return u -> c.apply(u.getStimTimer());
239+
}
240+
241+
public static UnitFilter BuildType(Condition<UnitType> c) {
242+
return u -> c.apply(u.getBuildType());
243+
}
244+
245+
public static UnitFilter RemainingBuildTime(Condition<Integer> c) {
246+
return u -> c.apply(u.getRemainingBuildTime());
247+
}
248+
249+
public static UnitFilter RemainingTrainTime(Condition<Integer> c) {
250+
return u -> c.apply(u.getRemainingTrainTime());
251+
}
252+
253+
public static UnitFilter Target(Condition<Unit> c) {
254+
return u -> c.apply(u.getTarget());
255+
}
256+
257+
public static UnitFilter CurrentOrder(Condition<Order> c) {
258+
return u -> c.apply(u.getOrder());
259+
}
260+
261+
public static UnitFilter SecondaryOrder(Condition<Order> c) {
262+
return u -> c.apply(u.getSecondaryOrder());
263+
}
264+
265+
public static UnitFilter OrderTarget(Condition<Unit> c) {
266+
return u -> c.apply(u.getOrderTarget());
267+
}
268+
269+
public static UnitFilter GetLeft(Condition<Integer> c) {
270+
return u -> c.apply(u.getLeft());
271+
}
272+
273+
public static UnitFilter GetTop(Condition<Integer> c) {
274+
return u -> c.apply(u.getTop());
275+
}
276+
277+
public static UnitFilter GetRight(Condition<Integer> c) {
278+
return u -> c.apply(u.getRight());
279+
}
280+
281+
public static UnitFilter GetBottom(Condition<Integer> c) {
282+
return u -> c.apply(u.getBottom());
283+
}
284+
285+
public static final UnitFilter Exists = (u) -> u.exists();
286+
public static final UnitFilter IsAttacking = (u) -> u.isAttacking();
287+
public static final UnitFilter IsBeingConstructed = (u) -> u.isBeingConstructed();
288+
public static final UnitFilter IsBeingGathered = (u) -> u.isBeingGathered();
289+
public static final UnitFilter IsBeingHealed = (u) -> u.isBeingHealed();
290+
public static final UnitFilter IsBlind = (u) -> u.isBlind();
291+
public static final UnitFilter IsBraking = (u) -> u.isBraking();
292+
public static final UnitFilter IsBurrowed = (u) -> u.isBurrowed();
293+
public static final UnitFilter IsCarryingGas = (u) -> u.isCarryingGas();
294+
public static final UnitFilter IsCarryingMinerals = (u) -> u.isCarryingMinerals();
295+
public static final UnitFilter IsCarryingSomething = (u) -> u.isCarryingMinerals() || u.isCarryingGas();
296+
public static final UnitFilter IsCloaked = (u) -> u.isCloaked();
297+
public static final UnitFilter IsCompleted = (u) -> u.isCompleted();
298+
public static final UnitFilter IsConstructing = (u) -> u.isConstructing();
299+
public static final UnitFilter IsDefenseMatrixed = (u) -> u.isDefenseMatrixed();
300+
public static final UnitFilter IsDetected = (u) -> u.isDetected();
301+
public static final UnitFilter IsEnsnared = (u) -> u.isEnsnared();
302+
public static final UnitFilter IsFollowing = (u) -> u.isFollowing();
303+
public static final UnitFilter IsGatheringGas = (u) -> u.isGatheringGas();
304+
public static final UnitFilter IsGatheringMinerals = (u) -> u.isGatheringMinerals();
305+
public static final UnitFilter IsHallucination = (u) -> u.isHallucination();
306+
public static final UnitFilter IsHoldingPosition = (u) -> u.isHoldingPosition();
307+
public static final UnitFilter IsIdle = (u) -> u.isIdle();
308+
public static final UnitFilter IsInterruptible = (u) -> u.isInterruptible();
309+
public static final UnitFilter IsInvincible = (u) -> u.isInvincible();
310+
public static final UnitFilter IsIrradiated = (u) -> u.isIrradiated();
311+
public static final UnitFilter IsLifted = (u) -> u.isLifted();
312+
public static final UnitFilter IsLoaded = (u) -> u.isLoaded();
313+
public static final UnitFilter IsLockedDown = (u) -> u.isLockedDown();
314+
public static final UnitFilter IsMaelstrommed = (u) -> u.isMaelstrommed();
315+
public static final UnitFilter IsMorphing = (u) -> u.isMorphing();
316+
public static final UnitFilter IsMoving = (u) -> u.isMoving();
317+
public static final UnitFilter IsParasited = (u) -> u.isParasited();
318+
public static final UnitFilter IsPatrolling = (u) -> u.isPatrolling();
319+
public static final UnitFilter IsPlagued = (u) -> u.isPlagued();
320+
public static final UnitFilter IsRepairing = (u) -> u.isRepairing();
321+
public static final UnitFilter IsResearching = (u) -> u.isResearching();
322+
public static final UnitFilter IsSieged = (u) -> u.isSieged();
323+
public static final UnitFilter IsStartingAttack = (u) -> u.isStartingAttack();
324+
public static final UnitFilter IsStasised = (u) -> u.isStasised();
325+
public static final UnitFilter IsStimmed = (u) -> u.isStimmed();
326+
public static final UnitFilter IsStuck = (u) -> u.isStuck();
327+
public static final UnitFilter IsTraining = (u) -> u.isTraining();
328+
public static final UnitFilter IsUnderAttack = (u) -> u.isUnderAttack();
329+
public static final UnitFilter IsUnderDarkSwarm = (u) -> u.isUnderDarkSwarm();
330+
public static final UnitFilter IsUnderDisruptionWeb = (u) -> u.isUnderDisruptionWeb();
331+
public static final UnitFilter IsUnderStorm = (u) -> u.isUnderStorm();
332+
public static final UnitFilter IsPowered = (u) -> u.isPowered();
333+
public static final UnitFilter IsVisible = (u) -> u.isVisible();
334+
}

0 commit comments

Comments
 (0)