/** * Test method for {@link jsettlers.common.map.shapes.MapRectangle#iterator()}. */ @Test public void testRectIterator() { MapRectangle rect = new MapRectangle((short) (TEST_WIDTH / 4), (short) (TEST_WIDTH / 4), (short) (TEST_WIDTH / 2), (short) (TEST_WIDTH / 2)); testShapeIterator(rect); MapRectangle rect2 = new MapRectangle((short) (TEST_WIDTH / 4 + 1), (short) (TEST_WIDTH / 4), (short) (TEST_WIDTH / 2), (short) (TEST_WIDTH / 2)); testShapeIterator(rect2); MapRectangle rect3 = new MapRectangle((short) (TEST_WIDTH / 4), (short) (TEST_WIDTH / 4 + 1), (short) (TEST_WIDTH / 2), (short) (TEST_WIDTH / 2)); testShapeIterator(rect3); }
/** * Gets a rectangle that is almost covered by the given int rectangle. * <p> * No assumptions can be made about the rect. * * @param screen * The screen positions * @return A MapRectangle */ public MapRectangle getMapForScreen(FloatRectangle screen) { float maxMountainHeight = HEIGHT_Y_DISPLACEMENT * Byte.MAX_VALUE; float minX = getExactMapXwithHeight(screen.getMinX(), screen.getMaxY(), 0); float maxX = getExactMapXwithHeight(screen.getMaxX(), screen.getMinY(), maxMountainHeight); float minY = getExactMapYwithHeight(screen.getMaxX(), screen.getMaxY(), 0); float maxY = getExactMapYwithHeight(screen.getMinX(), screen.getMinY(), maxMountainHeight); return new MapRectangle((short) minX, (short) minY, (short) (maxX - minX), (short) (maxY - minY)); }
@Test public void containsBorders() { MapRectangle mapRectangle = new MapRectangle(0, 0, 10, 10); assertTrue(mapRectangle.contains(0, 0)); assertTrue(mapRectangle.contains(9, 0)); assertTrue(mapRectangle.contains(4, 9)); assertTrue(mapRectangle.contains(13, 9)); }
@Test public void test() { boolean[][] blocked = { { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, true, false, false, false, false, false }, { false, false, false, false, false, false, true, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false }, { false, false, false, false, false, false, false, false, false, false, false, false } }; MapRectangle mapArea = new MapRectangle(-15, -15, 30, 30); BuildingAreaBitSet buildingSet = new BuildingAreaBitSet(EBuildingType.TOWER.getBuildingArea()); TestMap map = new TestMap(blocked); NewConstructionMarksAlgorithm algorithm = new NewConstructionMarksAlgorithm(map, (byte) 0); algorithm.calculateConstructMarks(mapArea, EBuildingType.TOWER); // print(map, blocked, buildingSet); for (int y = 0; y < map.height; y++) { for (int x = 0; x < map.width; x++) { assertEquals(x + "|" + y, canCostructAt(map, x, y, buildingSet), map.marksSet[x + y * map.width] > 0); } } }
@Test public void containsNotOutsideBorders() { MapRectangle mapRectangle = new MapRectangle(0, 0, 10, 10); assertFalse(mapRectangle.contains(0 - 1, 0)); assertFalse(mapRectangle.contains(0, -1)); assertFalse(mapRectangle.contains(-1, -1)); assertFalse(mapRectangle.contains(10, 0)); assertFalse(mapRectangle.contains(9, -1)); assertFalse(mapRectangle.contains(10, -1)); assertFalse(mapRectangle.contains(4 - 1, 9)); assertFalse(mapRectangle.contains(4, 9 + 1)); assertFalse(mapRectangle.contains(4 - 1, 9 + 1)); assertFalse(mapRectangle.contains(13 + 1, 9)); assertFalse(mapRectangle.contains(13, 9 + 1)); assertFalse(mapRectangle.contains(13 + 1, 9 + 1)); } }