Skip to content

Commit f3d84d5

Browse files
committed
cache player & unittype
1 parent 178b3c8 commit f3d84d5

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/main/java/bwapi/EventHandler.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public void operation(Client.GameData.Event event) {
4848
eventListener.onUnitEvade(game.getUnit(event.v1()));
4949
break;
5050
case 10: // UnitShow
51+
game.getUnit(event.v1()).updateType();
52+
game.getUnit(event.v1()).updatePlayer();
5153
game.unitShow(event.v1());
5254
eventListener.onUnitShow(game.getUnit(event.v1()));
5355
break;
@@ -64,10 +66,12 @@ public void operation(Client.GameData.Event event) {
6466
eventListener.onUnitDestroy(game.getUnit(event.v1()));
6567
break;
6668
case 14: //UnitMorph
69+
game.getUnit(event.v1()).updateType();
6770
eventListener.onUnitMorph(game.getUnit(event.v1()));
6871
break;
6972
case 15: //UnitRenegade
70-
eventListener.onUnitRenegade(game.getUnit((event.v1())));
73+
game.getUnit(event.v1()).updatePlayer();
74+
eventListener.onUnitRenegade(game.getUnit(event.v1()));
7175
break;
7276
case 16: //SaveGame
7377
eventListener.onSaveGame(data.eventString(event.v1()));

src/main/java/bwapi/Unit.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,18 @@ public class Unit {
3232
private final int replayID;
3333

3434
// variable
35+
private Player player;
36+
private UnitType unitType;
3537
private int lastCommandFrame = 0;
3638
private UnitCommand lastCommand;
3739

3840
Unit(final UnitData unitData, final Game game) {
3941
this.unitData = unitData;
4042
this.game = game;
4143

44+
updateType();
45+
updatePlayer();
46+
4247
initialType = getType();
4348
initialResources = getResources();
4449
initialHitPoints = getHitPoints();
@@ -63,11 +68,11 @@ public int getReplayID() {
6368
}
6469

6570
public Player getPlayer() {
66-
return game.getPlayer(unitData.player());
71+
return player;
6772
}
6873

6974
public UnitType getType() {
70-
return UnitType.unitTypes[unitData.type()];
75+
return unitType;
7176
}
7277

7378
public Position getPosition() {
@@ -3928,4 +3933,11 @@ public int hashCode(){
39283933
return getID();
39293934
}
39303935

3936+
void updateType() {
3937+
unitType = UnitType.unitTypes[unitData.type()];
3938+
}
3939+
3940+
void updatePlayer() {
3941+
player = game.getPlayer(unitData.player());
3942+
}
39313943
}

0 commit comments

Comments
 (0)