package it.paspiz85.nanobot.game; import it.paspiz85.nanobot.util.Area; import it.paspiz85.nanobot.util.Point; import java.awt.image.BufferedImage; /** * Main mode screen. * * @author paspiz85 * */ public final class ManageTroopsScreen extends Screen { private static final Area AREA_EROES = getArea("area.eroes"); private static final Area AREA_TROOPS = getArea("area.troops"); private static final Point BUTTON_TRAIN_NEXT = getPoint("point.button.train.next"); private static final Area AREA_BUTTON_TRAIN_CLOSE = getArea("area.button.train.close"); private static final Area AREA_ICON_CAMP_FULL = getArea("area.icon.camp.full"); private Point buttonTrainClose; ManageTroopsScreen() { } public Boolean areCampsFull() { return isDisplayedByImageSearch(this::searchIconCampFull); } public Point getButtonTrainClose() { if (buttonTrainClose == null) { searchButtonTrainClose(true); } return buttonTrainClose; } public Point getButtonTrainNext() { return BUTTON_TRAIN_NEXT; } @Override public boolean isDisplayed() { return isDisplayedByImageSearch(this::searchButtonTrainClose); } public TroopsInfo parseTroopsInfo() { final BufferedImage image = platform.screenshot(); final BufferedImage imageTroops = platform.getSubimage(image, AREA_TROOPS); Point start = new Point(9, 4); // start = new Point(28, 4); // start = new Point(28+63, 4); // start = new Point(28+63+62, 4); final TroopsInfo troopsInfo = new TroopsInfo(); while (true) { final Integer n = parseNumber(imageTroops, 3, start, 46); if (n == null) { break; } troopsInfo.add(Troop.BARB, n); start = new Point(start.x() + 62, start.y()); } final BufferedImage imageEroes = platform.getSubimage(image, AREA_EROES); if (searchImageCenter(imageEroes, getClass().getResource("king.png")) != null) { troopsInfo.add(Troop.BARBARIAN_KING, 1); } if (searchImageCenter(imageEroes, getClass().getResource("queen.png")) != null) { troopsInfo.add(Troop.ARCHER_QUEEN, 1); } return troopsInfo; } private void searchButtonTrainClose(boolean debug) { buttonTrainClose = searchImage(getClass().getResource("button_train_close.png"), AREA_BUTTON_TRAIN_CLOSE, debug); } private void searchIconCampFull(boolean debug) { searchImage(getClass().getResource("icon_camp_full.png"), AREA_ICON_CAMP_FULL, debug); } }