Example #1
0
  /** recursively renders a network of spaces */
  protected void renderNetworkRecursive(
      Graphics g, AbstractCollection<Tile> finished, Tile origin, int x, int y, Color hilight) {
    int dummyHeight = 0;

    if (x >= 0 && x < boardWidth && y >= 0 && y < boardHeight) {
      dummyHeight = spaceHeights[x][y];
    }
    renderSpace(g, origin, dummyHeight, x, y);
    g.setColor(hilight);
    g.fillRect((x + 1) * TILE_WIDTH, (y + 1) * TILE_HEIGHT, TILE_WIDTH, TILE_HEIGHT);
    if (x >= 0 && x < boardWidth && y >= 0 && y < boardHeight) {
      renderText(
          g,
          Integer.toString(spaceHeights[x][y]),
          (x + 1) * TILE_WIDTH,
          (y + 1) * TILE_HEIGHT + g.getFont().getSize());
    }
    if (origin.getJoined(Grid.LEFT) != null && !finished.contains(origin.getJoined(Grid.LEFT))) {
      finished.add(origin.getJoined(Grid.LEFT));
      renderNetworkRecursive(g, finished, origin.getJoined(Grid.LEFT), x - 1, y, hilight);
    }
    if (origin.getJoined(Grid.RIGHT) != null && !finished.contains(origin.getJoined(Grid.RIGHT))) {
      finished.add(origin.getJoined(Grid.RIGHT));
      renderNetworkRecursive(g, finished, origin.getJoined(Grid.RIGHT), x + 1, y, hilight);
    }
    if (origin.getJoined(Grid.TOP) != null && !finished.contains(origin.getJoined(Grid.TOP))) {
      finished.add(origin.getJoined(Grid.TOP));
      renderNetworkRecursive(g, finished, origin.getJoined(Grid.TOP), x, y - 1, hilight);
    }
    if (origin.getJoined(Grid.BOTTOM) != null
        && !finished.contains(origin.getJoined(Grid.BOTTOM))) {
      finished.add(origin.getJoined(Grid.BOTTOM));
      renderNetworkRecursive(g, finished, origin.getJoined(Grid.BOTTOM), x, y + 1, hilight);
    }
  }
Example #2
0
 private void renderFullBoardRecursive(
     Graphics g, AbstractList<Space> finished, Space origin, int x, int y, Board b) {
   renderSpace(g, origin, x, y);
   Board.Coordinates coord = b.new Coordinates(x, y);
   Developer dev = b.getDeveloper(coord);
   if (dev != null) {
     renderDeveloper(dev, x, y);
   }
   if (origin.getTop() != null && !finished.contains(origin.getTop())) {
     finished.add(origin.getTop());
     renderFullBoardRecursive(g, finished, origin.getTop(), x, y - 1, b);
   }
   if (origin.getLeft() != null && !finished.contains(origin.getLeft())) {
     finished.add(origin.getLeft());
     renderFullBoardRecursive(g, finished, origin.getLeft(), x - 1, y, b);
   }
   if (origin.getRight() != null && !finished.contains(origin.getRight())) {
     finished.add(origin.getRight());
     renderFullBoardRecursive(g, finished, origin.getRight(), x + 1, y, b);
   }
   if (origin.getBottom() != null && !finished.contains(origin.getBottom())) {
     finished.add(origin.getBottom());
     renderFullBoardRecursive(g, finished, origin.getBottom(), x, y + 1, b);
   }
   int givenHeight = origin.getHeight();
   if (origin.getHeight() > 0 && origin.getTile().getType() == TileType.PALACE) {
     givenHeight = ((PalaceTile) origin.getTile()).getLevel();
   }
   spaceHeights[x][y] = givenHeight;
   renderText(
       g, "" + givenHeight, (x + 1) * TILE_WIDTH, (y + 1) * TILE_HEIGHT + g.getFont().getSize());
 }
Example #3
0
 /** Renders a space at the given x & y board coordinates. Obeys LOD */
 protected void renderSpace(Graphics g, Space s, int x, int y) {
   renderSpace(g, s.getTile(), s.getHeight(), x, y);
 }
Example #4
0
 /**
  * renders a single space. To render a network of connected spaces, use renderNetwork. Obeys LOD
  */
 public void renderSpace(Space s, int x, int y) {
   renderSpace(cachedGraphics, s, x, y);
 }