@Override public Void call() throws Exception { if (continueExercise) { missedTargets += shootTargets.size(); if (shootTargets.size() == 1) { TextToSpeech.say(String.format("You missed %d target.", shootTargets.size())); } else if (shootTargets.size() > 1) { TextToSpeech.say(String.format("You missed %d targets.", shootTargets.size())); } thisSuper.showTextOnFeed( String.format("missed targets: %d%nbad hits: %d", missedTargets, badHits)); for (Target target : shootTargets) thisSuper.removeTarget(target); shootTargets.clear(); for (Target target : dontShootTargets) thisSuper.removeTarget(target); dontShootTargets.clear(); addTargets(shootTargets, "targets/shoot_dont_shoot/shoot.target"); addTargets(dontShootTargets, "targets/shoot_dont_shoot/dont_shoot.target"); thisSuper.clearShots(); if (continueExercise) executorService.schedule(new NewRound(), ROUND_DURATION, TimeUnit.SECONDS); } return null; }
@Override public void shotListener(Shot shot, Optional<TargetRegion> hitRegion) { if (hitRegion.isPresent()) { if (hitRegion.get().tagExists("subtarget")) { switch (hitRegion.get().getTag("subtarget")) { case "shoot": { removeTarget(shootTargets, hitRegion.get()); super.setShotTimerColumnText(TARGET_COL_NAME, "shoot"); } break; case "dont_shoot": { removeTarget(dontShootTargets, hitRegion.get()); badHits++; super.setShotTimerColumnText(TARGET_COL_NAME, "dont_shoot"); TextToSpeech.say("Bad shoot!"); } break; } } } }