private FiringPlan getBestFiringPlanUnderHeat(final Targetable target, final Entity shooter, final FiringPlan[] allPlans) { // Determine the best plan taking into account our heat tolerance. FiringPlan bestPlan = new FiringPlan(target); final boolean isAero = shooter.isAero(); final int heatTolerance = calcHeatTolerance(shooter, isAero); calculateUtility(bestPlan, heatTolerance, isAero); for (final FiringPlan firingPlan : allPlans) { calculateUtility(firingPlan, heatTolerance, isAero); if ((bestPlan.getUtility() < firingPlan.getUtility())) { bestPlan = firingPlan; } } return bestPlan; }
Mockito.when(mockBoard.contains(Mockito.eq(mockShooterCoords))).thenReturn(true); Mockito.when(mockBoard.contains(Mockito.eq(mockTargetCoords))).thenReturn(true); Mockito.doNothing().when(testFireControl).calculateUtility(Mockito.any(FiringPlan.class), Mockito.anyInt(), Mockito.anyBoolean());
Mockito.when(mockBoard.contains(Mockito.eq(mockShooterCoords))).thenReturn(true); Mockito.when(mockBoard.contains(Mockito.eq(mockTargetCoords))).thenReturn(true); Mockito.doNothing().when(testFireControl).calculateUtility(Mockito.any(FiringPlan.class), Mockito.anyInt(), Mockito.anyBoolean());
Mockito.when(mockBoard.contains(Mockito.eq(mockShooterCoords))).thenReturn(true); Mockito.when(mockBoard.contains(Mockito.eq(mockTargetCoords))).thenReturn(true); Mockito.doNothing().when(testFireControl).calculateUtility(Mockito.any(FiringPlan.class), Mockito.anyInt(), Mockito.anyBoolean());
calculateUtility(myPlan, calcHeatTolerance(shooter, null), shooter.isAero()); calculateUtility(bombingPlan, DOES_NOT_TRACK_HEAT, true); // bomb drops never cause heat
calculateUtility(bestPlans[0], heatTolerance, isAero); calculateUtility(swarmAttack, heatTolerance, isAero); calculateUtility(legAttack, heatTolerance, isAero); calculateUtility(fieldGuns, heatTolerance, isAero); calculateUtility(bestPlans[heatLevel], heatTolerance, isAero); testPlan.addAll(bestPlans[heatLevel - weaponFireInfo.getHeat()]); testPlan.add(weaponFireInfo); calculateUtility(testPlan, heatTolerance, isAero); shooter.getGame(), shooter.passedOver(target), false); calculateUtility(diveBombPlan, DOES_NOT_TRACK_HEAT, true); if(diveBombPlan.getUtility() > bestPlans[0].getUtility()) { bestPlans[0] = diveBombPlan;
getFireControl(hitter).calculateUtility(right_punch); if (0 < right_punch.getUtility()) { if ((null == best_attack) || this, false); getFireControl(hitter).calculateUtility(left_punch); if (0 < left_punch.getUtility()) { if ((null == best_attack) this, false); getFireControl(hitter).calculateUtility(right_kick); if (0 < right_kick.getUtility()) { if ((null == best_attack) this, false); getFireControl(hitter).calculateUtility(left_kick); if (0 < left_kick.getUtility()) { if ((null == best_attack)
Mockito.doReturn(0).when(testFiringPlan).getHeat(); Mockito.doReturn(0.0).when(testFireControl).calcDamageAllocationUtility(Mockito.any(Targetable.class), Mockito.anyDouble()); testFireControl.calculateUtility(testFiringPlan, overheatTolerance, false); Assert.assertEquals(baseUtility, testFiringPlan.getUtility(), TOLERANCE); Mockito.doReturn(0).when(testFiringPlan).getHeat(); Mockito.doReturn(0.0).when(testFireControl).calcDamageAllocationUtility(Mockito.any(Targetable.class), Mockito.anyDouble()); testFireControl.calculateUtility(testFiringPlan, overheatTolerance, false); Assert.assertEquals(baseUtility * (1 + FireControl.COMMANDER_UTILITY), testFiringPlan.getUtility(), TOLERANCE); Mockito.when(mockTarget.isCommander()).thenReturn(false); Mockito.doReturn(0).when(testFiringPlan).getHeat(); Mockito.doReturn(0.0).when(testFireControl).calcDamageAllocationUtility(Mockito.any(Targetable.class), Mockito.anyDouble()); testFireControl.calculateUtility(testFiringPlan, overheatTolerance, false); Assert.assertEquals(baseUtility * (1 + FireControl.SUB_COMMANDER_UTILITY), testFiringPlan.getUtility(), TOLERANCE); Mockito.doReturn(0).when(testFiringPlan).getHeat(); Mockito.doReturn(0.0).when(testFireControl).calcDamageAllocationUtility(Mockito.any(Targetable.class), Mockito.anyDouble()); testFireControl.calculateUtility(testFiringPlan, overheatTolerance, false); Assert.assertEquals(baseUtility * (1 + FireControl.STRATEGIC_TARGET_UTILITY), testFiringPlan.getUtility(), TOLERANCE); Mockito.doReturn(0).when(testFiringPlan).getHeat(); Mockito.doReturn(0.0).when(testFireControl).calcDamageAllocationUtility(Mockito.any(Targetable.class), Mockito.anyDouble()); testFireControl.calculateUtility(testFiringPlan, overheatTolerance, false); Assert.assertEquals(baseUtility, testFiringPlan.getUtility(), TOLERANCE); Mockito.doReturn(0).when(testFiringPlan).getHeat();
calculateUtility(bombPlan, DOES_NOT_TRACK_HEAT, shooter.isAero()); // bombs don't generate heat so don't bother with this calculation calculateUtility(myPlan, calcHeatTolerance(shooter, null), shooter.isAero());
calculateUtility(myPlan, calcHeatTolerance(shooter, null), shooterState.isAero()); calculateUtility(bombingPlan, DOES_NOT_TRACK_HEAT, true); // bomb drops never cause heat