Skip to content

Commit cb01dd0

Browse files
committed
add Point conversion and copy contructors
1 parent adcf8df commit cb01dd0

File tree

5 files changed

+59
-2
lines changed

5 files changed

+59
-2
lines changed

src/main/java/bwapi/Position.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ public Position(final int x, final int y) {
1313
super(x, y, SIZE_IN_PIXELS);
1414
}
1515

16+
public Position(final Position p) {
17+
super(p.x, p.y, SIZE_IN_PIXELS);
18+
}
19+
20+
public Position(final WalkPosition wp) {
21+
super(wp.x * WalkPosition.SIZE_IN_PIXELS, wp.y * WalkPosition.SIZE_IN_PIXELS, SIZE_IN_PIXELS);
22+
}
23+
24+
public Position(final TilePosition tp) {
25+
super(tp.x * TilePosition.SIZE_IN_PIXELS, tp.y * TilePosition.SIZE_IN_PIXELS, SIZE_IN_PIXELS);
26+
}
27+
1628
Position(ClientData.Position position) {
1729
this(position.getX(), position.getY());
1830
}

src/main/java/bwapi/TilePosition.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ public TilePosition(final int x, final int y) {
1212
super(x, y, SIZE_IN_PIXELS);
1313
}
1414

15+
public TilePosition(final Position p) {
16+
super(p.x / SIZE_IN_PIXELS, p.y / SIZE_IN_PIXELS, SIZE_IN_PIXELS);
17+
}
18+
19+
public TilePosition(final WalkPosition wp) {
20+
super(wp.x / WalkPosition.TILE_WALK_FACTOR, wp.y / WalkPosition.TILE_WALK_FACTOR, SIZE_IN_PIXELS);
21+
}
22+
23+
public TilePosition(final TilePosition tp) {
24+
super(tp.x, tp.y, SIZE_IN_PIXELS);
25+
}
26+
1527
TilePosition(ClientData.Position position) {
1628
this(position.getX(), position.getY());
1729
}

src/main/java/bwapi/WalkPosition.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ public WalkPosition(final int x, final int y) {
1212
super(x, y, SIZE_IN_PIXELS);
1313
}
1414

15+
public WalkPosition(final Position p) {
16+
super(p.x / SIZE_IN_PIXELS, p.y / SIZE_IN_PIXELS, SIZE_IN_PIXELS);
17+
}
18+
19+
public WalkPosition(final WalkPosition wp) {
20+
super(wp.x, wp.y, SIZE_IN_PIXELS);
21+
}
22+
23+
public WalkPosition(final TilePosition tp) {
24+
super(tp.x * TILE_WALK_FACTOR, tp.y * TILE_WALK_FACTOR, SIZE_IN_PIXELS);
25+
}
26+
1527
public Position toPosition() {
1628
return new Position(x * SIZE_IN_PIXELS, y * SIZE_IN_PIXELS);
1729
}

src/test/java/bwapi/GameTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package bwapi;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.Assert.assertNull;
45
import static org.mockito.BDDMockito.given;
56
import static org.mockito.Mockito.mock;
67

@@ -97,8 +98,8 @@ public void ifReplaySelfAndEnemyShouldBeNull() throws IOException {
9798
Game game = GameBuilder.createGame(client);
9899

99100
assertThat(game.isReplay());
100-
assertThat(game.self() == null);
101-
assertThat(game.enemy() == null);
101+
assertNull(game.self());
102+
assertNull(game.enemy());
102103
assertThat(game.enemies().isEmpty());
103104
assertThat(game.allies().isEmpty());
104105
}

src/test/java/bwapi/PointTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,24 @@ public void pointDistanceAccesibleTest() {
2929
assertEquals(0, tp.getDistance(tp), 0.001);
3030
assertEquals(0 , tp.getLength(), 0.001);
3131
}
32+
33+
@Test
34+
public void alternativeConstructorTest() {
35+
TilePosition tp = new TilePosition(23, 7);
36+
37+
assertEquals(tp, new TilePosition(new Position(tp)));
38+
assertEquals(tp, new TilePosition(new WalkPosition(tp)));
39+
assertEquals(tp, new TilePosition(tp));
40+
41+
Position p = new Position(97, 43);
42+
assertEquals(p.toTilePosition(), new TilePosition(p)); // P -> TP loses precision
43+
assertEquals(p.toWalkPosition(), new WalkPosition(p));
44+
assertEquals(p, new Position(p));
45+
46+
WalkPosition wp = new WalkPosition(41, 22);
47+
assertEquals(wp, new WalkPosition(new Position(wp)));
48+
assertEquals(wp.toTilePosition(), new TilePosition(wp));
49+
assertEquals(wp, new WalkPosition(wp));
50+
51+
}
3252
}

0 commit comments

Comments
 (0)