Skip to content

Commit d80ebe8

Browse files
author
Jasper Geurtz
committed
Make UnitSelf and PlayerSelf latency compensation lazily allocated on write
1 parent 2340f05 commit d80ebe8

3 files changed

Lines changed: 131 additions & 69 deletions

File tree

‎src/main/java/bwapi/Player.java‎

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,18 @@ public class Player implements Comparable<Player> {
2828
private final Color color;
2929
private final UnitListCache units;
3030
private PlayerSelf self = null;
31+
3132
PlayerSelf self() {
3233
if (self == null) {
3334
self = new PlayerSelf();
3435
}
3536
return self;
3637
}
3738

39+
boolean hasLatCom() {
40+
return self != null && game.isLatComEnabled();
41+
}
42+
3843
Player(final PlayerData playerData, final int id, final Game game) {
3944
this.playerData = playerData;
4045
this.game = game;
@@ -206,8 +211,8 @@ public boolean leftGame() {
206211
*/
207212
public int minerals() {
208213
int minerals = playerData.getMinerals();
209-
if (game.isLatComEnabled() && self().minerals.valid(game.getFrameCount())) {
210-
return minerals + self().minerals.get();
214+
if (hasLatCom() && self.minerals.valid(game.getFrameCount())) {
215+
return minerals + self.minerals.get();
211216
}
212217
return minerals;
213218
}
@@ -221,8 +226,8 @@ public int minerals() {
221226
*/
222227
public int gas() {
223228
int gas = playerData.getGas();
224-
if (game.isLatComEnabled() && self().gas.valid(game.getFrameCount())) {
225-
return gas + self().gas.get();
229+
if (hasLatCom() && self.gas.valid(game.getFrameCount())) {
230+
return gas + self.gas.get();
226231
}
227232
return gas;
228233
}
@@ -365,8 +370,8 @@ public int supplyUsed(Race race) {
365370
return 0;
366371
}
367372
int supplyUsed = playerData.getSupplyUsed(race.id);
368-
if (game.isLatComEnabled() && self().supplyUsed[race.id].valid(game.getFrameCount())) {
369-
return supplyUsed + self().supplyUsed[race.id].get();
373+
if (hasLatCom() && self.supplyUsed[race.id].valid(game.getFrameCount())) {
374+
return supplyUsed + self.supplyUsed[race.id].get();
370375
}
371376
return supplyUsed;
372377
}
@@ -517,8 +522,8 @@ public boolean hasResearched(final TechType tech) {
517522
* @see #hasResearched
518523
*/
519524
public boolean isResearching(final TechType tech) {
520-
if (game.isLatComEnabled() && self().isResearching[tech.id].valid(game.getFrameCount())) {
521-
return self().isResearching[tech.id].get();
525+
if (hasLatCom() && self.isResearching[tech.id].valid(game.getFrameCount())) {
526+
return self.isResearching[tech.id].get();
522527
}
523528
return playerData.isResearching(tech.id);
524529
}
@@ -531,8 +536,8 @@ public boolean isResearching(final TechType tech) {
531536
* @see Unit#upgrade
532537
*/
533538
public boolean isUpgrading(final UpgradeType upgrade) {
534-
if (game.isLatComEnabled() && self().isUpgrading[upgrade.id].valid(game.getFrameCount())) {
535-
return self().isUpgrading[upgrade.id].get();
539+
if (hasLatCom() && self.isUpgrading[upgrade.id].valid(game.getFrameCount())) {
540+
return self.isUpgrading[upgrade.id].get();
536541
}
537542
return playerData.isUpgrading(upgrade.id);
538543
}

0 commit comments

Comments
 (0)