package it.paspiz85.nanobot.attack; import it.paspiz85.nanobot.game.TroopsInfo; import it.paspiz85.nanobot.util.Point; /** * Attack from all 4 side using a quarter of units for each side. * * @author paspiz85 * */ public final class Attack4Side extends Attack { Attack4Side() { } @Override protected void doDropUnits(final TroopsInfo troopsInfo) throws InterruptedException { final int[] attackGroup = troopsInfo.getTroopsCount(); for (int unitIdx = 0; unitIdx < attackGroup.length; unitIdx++) { final int unitCount = attackGroup[unitIdx]; // select unit platform.leftClick(getButtonAttackUnit(unitIdx + 1), true); platform.sleepRandom(100); // if count is less than 4, only first side will be used. final Point[] topToRightPoints = pointsBetweenFromToInclusive(TOP, RIGHT, unitCount / 4 + unitCount % 4); final Point[] rightToBottomPoints = pointsBetweenFromToInclusive(RIGHT, BOTTOM_RIGHT, unitCount / 4); final Point[] bottomToLeftPoints = pointsBetweenFromToInclusive(BOTTOM_LEFT, LEFT, unitCount / 4); final Point[] leftToTopPoints = pointsBetweenFromToInclusive(LEFT, TOP, unitCount / 4); // drop units for (final Point[] points : new Point[][] { topToRightPoints, rightToBottomPoints, bottomToLeftPoints, leftToTopPoints }) { for (final Point point : points) { platform.leftClick(point, false); platform.sleepRandom(PAUSE_BETWEEN_UNIT_DROP); } } } } @Override protected String getDescription() { return "Dropping units from 4 sides"; } }