Skip to content

Commit 3dbaeb9

Browse files
committed
revert making getPosition lazy
1 parent 7ce448e commit 3dbaeb9

File tree

3 files changed

+34
-24
lines changed

3 files changed

+34
-24
lines changed

src/main/java/bwapi/EventHandler.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ class EventHandler implements Client.EventHandler {
55
private final BWEventListener eventListener;
66
private final Game game;
77
private final Client client;
8+
private int frames;
89

910
public EventHandler(final BWEventListener eventListener, final Client client) {
1011
this.eventListener = eventListener;
@@ -17,6 +18,7 @@ public void operation(final ClientData.Event event) {
1718
final Unit u;
1819
switch (event.getType()) {
1920
case MatchStart:
21+
frames = 0;
2022
game.init();
2123
game.setLatCom(false);
2224
eventListener.onStart();
@@ -25,10 +27,11 @@ public void operation(final ClientData.Event event) {
2527
eventListener.onEnd(event.getV1() != 0);
2628
break;
2729
case MatchFrame:
28-
game.onFrame();
30+
game.onFrame(frames);
2931
eventListener.onFrame();
32+
frames += 1;
3033
break;
31-
//case MenuFrame:
34+
//case 3: //MenuFrame
3235
case SendText:
3336
eventListener.onSendText(client.eventString(event.getV1()));
3437
break;
@@ -47,19 +50,22 @@ public void operation(final ClientData.Event event) {
4750
case UnitDiscover:
4851
game.unitCreate(event.getV1());
4952
u = game.getUnit(event.getV1());
50-
u.updateType();
51-
u.updatePlayer();
53+
u.updatePosition(frames);
54+
u.updateType(frames);
55+
u.updatePlayer(frames);
5256
eventListener.onUnitDiscover(u);
5357
break;
5458
case UnitEvade:
5559
u = game.getUnit(event.getV1());
60+
u.updatePosition(frames);
5661
eventListener.onUnitEvade(u);
5762
break;
5863
case UnitShow:
5964
game.unitShow(event.getV1());
6065
u = game.getUnit(event.getV1());
61-
u.updateType();
62-
u.updatePlayer();
66+
u.updatePosition(frames);
67+
u.updateType(frames);
68+
u.updatePlayer(frames);
6369
eventListener.onUnitShow(u);
6470
break;
6571
case UnitHide:
@@ -70,8 +76,9 @@ public void operation(final ClientData.Event event) {
7076
case UnitCreate:
7177
game.unitCreate(event.getV1());
7278
u = game.getUnit(event.getV1());
73-
u.updateType();
74-
u.updatePlayer();
79+
u.updatePosition(frames);
80+
u.updateType(frames);
81+
u.updatePlayer(frames);
7582
eventListener.onUnitCreate(u);
7683
break;
7784
case UnitDestroy:
@@ -81,18 +88,19 @@ public void operation(final ClientData.Event event) {
8188
break;
8289
case UnitMorph:
8390
u = game.getUnit(event.getV1());
84-
u.updateType();
91+
u.updatePosition(frames);
92+
u.updateType(frames);
8593
eventListener.onUnitMorph(u);
8694
break;
8795
case UnitRenegade:
8896
u = game.getUnit(event.getV1());
89-
u.updatePlayer();
97+
u.updatePlayer(frames);
9098
eventListener.onUnitRenegade(u);
9199
break;
92100
case UnitComplete:
93101
game.unitCreate(event.getV1());
94102
u = game.getUnit(event.getV1());
95-
u.updatePlayer();
103+
u.updatePlayer(frames);
96104
eventListener.onUnitComplete(u);
97105
break;
98106
}

src/main/java/bwapi/Game.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,13 @@ void unitHide(final int id) {
262262
visibleUnits.remove(id);
263263
}
264264

265-
void onFrame() {
266-
if (getFrameCount() > 0) {
265+
void onFrame(final int frame) {
266+
if (frame > 0) {
267267
allUnits = Collections.unmodifiableList(visibleUnits.stream()
268268
.map(i -> units[i])
269269
.collect(Collectors.toList()));
270270
}
271+
getAllUnits().forEach(u -> u.updatePosition(frame));
271272
}
272273

273274
void addUnitCommand(final int type, final int unit, final int target, final int x, final int y, final int extra) {

src/main/java/bwapi/Unit.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ public class Unit {
4242
this.unitData = unitData;
4343
this.game = game;
4444

45-
updateType();
46-
updatePlayer();
45+
updateType(0);
46+
updatePlayer(0);
47+
updatePosition(0);
4748

4849
initialType = getType();
4950
initialResources = getResources();
@@ -86,11 +87,6 @@ public UnitType getType() {
8687
}
8788

8889
public Position getPosition() {
89-
final int frame = game.getFrameCount();
90-
if (frame > lastPositionUpdate) {
91-
lastPositionUpdate = frame;
92-
position = new Position(unitData.getPositionX(), unitData.getPositionY());
93-
}
9490
return position;
9591
}
9692

@@ -4130,20 +4126,25 @@ public int hashCode() {
41304126
return getID();
41314127
}
41324128

4133-
void updateType() {
4134-
final int frame = game.getFrameCount();
4129+
void updateType(final int frame) {
41354130
if (frame > lastTypeUpdate) {
41364131
lastTypeUpdate = frame;
41374132
position = new Position(unitData.getPositionX(), unitData.getPositionY());
41384133
}
41394134
unitType = UnitType.idToEnum[unitData.getType()];
41404135
}
41414136

4142-
void updatePlayer() {
4143-
final int frame = game.getFrameCount();
4137+
void updatePlayer(final int frame) {
41444138
if (frame > lastPlayerUpdate) {
41454139
lastPlayerUpdate = frame;
41464140
player = game.getPlayer(unitData.getPlayer());
41474141
}
41484142
}
4143+
4144+
void updatePosition(final int frame) {
4145+
if (frame > lastPositionUpdate) {
4146+
lastPositionUpdate = frame;
4147+
position = new Position(unitData.getPositionX(), unitData.getPositionY());
4148+
}
4149+
}
41494150
}

0 commit comments

Comments
 (0)