public BehaviorSettings getCopy() throws PrincessException { final BehaviorSettings copy = new BehaviorSettings(); copy.setDestinationEdge(getDestinationEdge()); copy.setRetreatEdge(getRetreatEdge()); copy.setForcedWithdrawal(isForcedWithdrawal()); copy.setAutoFlee(shouldAutoFlee()); copy.setDescription(getDescription()); copy.setFallShameIndex(getFallShameIndex()); copy.setBraveryIndex(getBraveryIndex()); copy.setHerdMentalityIndex(getHerdMentalityIndex()); copy.setHyperAggressionIndex(getHyperAggressionIndex()); copy.setSelfPreservationIndex(getSelfPreservationIndex()); copy.setVerbosity(getVerbosity()); for (final String t : getStrategicBuildingTargets()) { copy.addStrategicTarget(t); } for (final Integer p : getPriorityUnitTargets()) { copy.addPriorityUnit(p); } return copy; }
/** * @return How much do I want to avoid failed Piloting Rolls? */ int getFallShameValue() { return getFallShameValue(getFallShameIndex()); }
private BehaviorSettings buildEscapeBehavior() { try { BehaviorSettings escapeBehavior = new BehaviorSettings(); escapeBehavior.setDescription(ESCAPE_BEHAVIOR_DESCRIPTION); escapeBehavior.setDestinationEdge(CardinalEdge.NEAREST_OR_NONE); escapeBehavior.setRetreatEdge(CardinalEdge.NEAREST_OR_NONE); escapeBehavior.setForcedWithdrawal(true); escapeBehavior.setAutoFlee(true); escapeBehavior.setFallShameIndex(7); escapeBehavior.setHyperAggressionIndex(3); escapeBehavior.setSelfPreservationIndex(10); escapeBehavior.setHerdMentalityIndex(5); escapeBehavior.setBraveryIndex(2); return escapeBehavior; } catch (Exception e) { getLogger().error(BehaviorSettingsFactory.class, "buildEscapeBehavior", e); return null; } }
/** * @return A string log of these behavior settings. */ public String toLog() { final StringBuilder out = new StringBuilder("Princess Behavior: ").append(getDescription()); out.append("\n\tDestination Edge: ").append(getDestinationEdge()); out.append("\n\tRetreat Edge: ").append(getRetreatEdge()); out.append("\n\tForced Withdrawal: ").append(isForcedWithdrawal()); out.append("\n\tSelf Preservation: ").append(getSelfPreservationIndex()); out.append("\n\tHyper Aggression: ").append(getHyperAggressionIndex()); out.append("\n\tFall Shame: ").append(getFallShameIndex()); out.append("\n\tBravery: ").append(getBraveryIndex()); out.append("\n\tHerd Mentality: ").append(getHerdMentalityIndex()); out.append("\n\tVerbosity: ").append(getVerbosity()); out.append("\n\tTargets:"); out.append("\n\t\tCoords: "); for (final String t : getStrategicBuildingTargets()) { out.append(" ").append(t); } out.append("\n\t\tUnits:"); for (final int id : getPriorityUnitTargets()) { out.append(" ").append(id); } return out.toString(); }
Set<Integer> expectedUnits = new HashSet<>(1); expectedUnits.add(BehaviorSettingsTestConstants.PRORITY_TARGET); BehaviorSettings behaviorSettings = new BehaviorSettings(); behaviorSettings.setLogger(new FakeLogger()); behaviorSettings.fromXml(testBehaviorElement); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_BEHAVIOR_NAME, behaviorSettings.getDescription()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_HOME_EDGE, behaviorSettings.getRetreatEdge()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_DESTINATION_EDGE, behaviorSettings.getDestinationEdge()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_FORCED_WITHDRAWAL, behaviorSettings.isForcedWithdrawal()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_AUTO_FLEE, behaviorSettings.shouldAutoFlee()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_FALL_SHAME_INDEX, behaviorSettings.getFallShameIndex()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_HYPER_AGGRESSION_INDEX, behaviorSettings.getHyperAggressionIndex()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_SELF_PRESERVATION_INDEX, behaviorSettings.getSelfPreservationIndex()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_HERD_MENTALITY_INDEX, behaviorSettings.getHerdMentalityIndex()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_BRAVERY_INDEX, behaviorSettings.getBraveryIndex()); Assert.assertEquals(expectedTargets, behaviorSettings.getStrategicBuildingTargets()); Assert.assertEquals(expectedUnits, behaviorSettings.getPriorityUnitTargets()); expectedTargets = new HashSet<>(0); expectedUnits = new HashSet<>(0); behaviorSettings = new BehaviorSettings(); behaviorSettings.setLogger(new FakeLogger()); behaviorSettings.fromXml(testBehaviorElement); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_BEHAVIOR_NAME, behaviorSettings.getDescription()); Assert.assertEquals(BehaviorSettingsTestConstants.GOOD_HOME_EDGE, behaviorSettings.getRetreatEdge());
protected void setPrincessFields() { verbosityCombo.setSelectedIndex(0); forcedWithdrawalCheck.setSelected(princessBehavior.isForcedWithdrawal()); autoFleeCheck.setSelected(princessBehavior.shouldAutoFlee()); selfPreservationSlidebar.setValue(princessBehavior.getSelfPreservationIndex()); aggressionSlidebar.setValue(princessBehavior.getHyperAggressionIndex()); fallShameSlidebar.setValue(princessBehavior.getFallShameIndex()); destinationEdgeCombo.setSelectedIndex(princessBehavior.getDestinationEdge().getIndex()); retreatEdgeCombo.setSelectedIndex(princessBehavior.getRetreatEdge().getIndex()); herdingSlidebar.setValue(princessBehavior.getHerdMentalityIndex()); braverySlidebar.setValue(princessBehavior.getBraveryIndex()); targetsListModel.clear(); for (String t : princessBehavior.getStrategicBuildingTargets()) { //noinspection unchecked targetsListModel.addElement(BUILDING_TARGET + ": " + t); } for (int id : princessBehavior.getPriorityUnitTargets()) { targetsListModel.addElement(UNIT_TARGET + ": " + id); } repaint(); }
public void writeToXml(PrintWriter pw1, int indent) { MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+1, "name", MekHqXmlUtil.escape(name)); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+1, "team", team); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+1, "start", start); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+1, "camoCategory", MekHqXmlUtil.escape(camoCategory)); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+1, "camoFileName", MekHqXmlUtil.escape(camoFileName)); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+1, "colorIndex", colorIndex); pw1.println(MekHqXmlUtil.indentStr(indent+1) + "<entities>"); for (Entity en : entityList) { if (en != null) { pw1.println(AtBScenario.writeEntityWithCrewToXmlString(en, indent + 2, entityList)); } } pw1.println(MekHqXmlUtil.indentStr(indent+1) + "</entities>"); pw1.println(MekHqXmlUtil.indentStr(indent+1) + "<behaviorSettings>"); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "verbosity", behaviorSettings.getVerbosity().toString()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "forcedWithdrawal", behaviorSettings.isForcedWithdrawal()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "autoFlee", behaviorSettings.shouldAutoFlee()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "selfPreservationIndex", behaviorSettings.getSelfPreservationIndex()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "fallShameIndex", behaviorSettings.getFallShameIndex()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "hyperAggressionIndex", behaviorSettings.getHyperAggressionIndex()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "destinationEdge", behaviorSettings.getDestinationEdge().ordinal()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "retreatEdge", behaviorSettings.getRetreatEdge().ordinal()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "herdMentalityIndex", behaviorSettings.getHerdMentalityIndex()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent+2, "braveryIndex", behaviorSettings.getBraveryIndex()); pw1.println(MekHqXmlUtil.indentStr(indent+1) + "</behaviorSettings>"); }
private void savePrincessProperties() { BehaviorSettings tempBehavior = new BehaviorSettings(); tempBehavior.setDescription((String) princessBehaviorNames.getSelectedItem()); } catch (PrincessException e) { handleError("savePrincessProperties", e); tempBehavior.setFallShameIndex(fallShameSlidebar.getValue()); tempBehavior.setForcedWithdrawal(forcedWithdrawalCheck.isSelected()); tempBehavior.setAutoFlee(autoFleeCheck.isSelected()); tempBehavior.setDestinationEdge(destinationEdgeCombo.getSelectedIndex()); tempBehavior.setRetreatEdge(retreatEdgeCombo.getSelectedIndex()); tempBehavior.setHyperAggressionIndex(aggressionSlidebar.getValue()); tempBehavior.setSelfPreservationIndex(selfPreservationSlidebar.getValue()); tempBehavior.setHerdMentalityIndex(herdingSlidebar.getValue()); tempBehavior.setBraveryIndex(braverySlidebar.getValue()); tempBehavior.setFallShameIndex(fallShameSlidebar.getValue()); for (int i = 0; i < targetsListModel.getSize(); i++) { String[] target = targetsListModel.get(i).split(":"); if (BUILDING_TARGET.equalsIgnoreCase(target[0].trim())) { tempBehavior.addStrategicTarget(target[1].trim()); } else { tempBehavior.addPriorityUnit(target[1].trim()); if (!tempBehavior.equals(princessBehavior)) { SavePrincessDialog dialog = new SavePrincessDialog(this); dialog.setVisible(true);
msg = "Current Behavior: " + princess.getBehaviorSettings().getDescription(); princess.sendChat(msg); princess.log(getClass(), METHOD_NAME, LogLevel.INFO, msg); msg = "Behavior changed to " + princess.getBehaviorSettings().getDescription(); princess.sendChat(msg); return; int currentFallShame = princess.getBehaviorSettings().getFallShameIndex(); int newFallShame = currentFallShame; newFallShame += princess.calculateAdjustment(adjustment); princess.getBehaviorSettings().setFallShameIndex(newFallShame); msg = "Piloting Caution changed from " + currentFallShame + " to " + princess.getBehaviorSettings().getFallShameIndex(); princess.sendChat(msg); int currentSelfPreservation = princess.getBehaviorSettings().getSelfPreservationIndex(); int newSelfPreservation = currentSelfPreservation; newSelfPreservation += princess.calculateAdjustment(adjustment); princess.getBehaviorSettings().setSelfPreservationIndex(newSelfPreservation); msg = "Self Preservation changed from " + currentSelfPreservation + " to " + princess.getBehaviorSettings().getSelfPreservationIndex(); princess.sendChat(msg); int currentAggression = princess.getBehaviorSettings().getHyperAggressionIndex(); int newAggression = currentAggression; newAggression += princess.calculateAdjustment(adjustment); princess.getBehaviorSettings().setHyperAggressionIndex(newAggression); msg = "Aggression changed from " + currentAggression + " to " +
Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString()); testChatProcessor.additionalPrincessCommands(mockChatEvent, mockPrincess); Assert.assertEquals(8, mockPrincess.getBehaviorSettings().getFallShameIndex()); Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString()); testChatProcessor.additionalPrincessCommands(mockChatEvent, mockPrincess); Assert.assertEquals(5, mockPrincess.getBehaviorSettings().getFallShameIndex()); Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString()); testChatProcessor.additionalPrincessCommands(mockChatEvent, mockPrincess); Assert.assertEquals(6, mockPrincess.getBehaviorSettings().getFallShameIndex()); Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString()); testChatProcessor.additionalPrincessCommands(mockChatEvent, mockPrincess); Assert.assertEquals(3, mockPrincess.getBehaviorSettings().getSelfPreservationIndex()); Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString()); testChatProcessor.additionalPrincessCommands(mockChatEvent, mockPrincess); Assert.assertEquals(5, mockPrincess.getBehaviorSettings().getSelfPreservationIndex()); Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString()); testChatProcessor.additionalPrincessCommands(mockChatEvent, mockPrincess); Assert.assertEquals(6, mockPrincess.getBehaviorSettings().getSelfPreservationIndex()); Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString()); testChatProcessor.additionalPrincessCommands(mockChatEvent, mockPrincess); Assert.assertEquals(7, mockPrincess.getBehaviorSettings().getHyperAggressionIndex()); Mockito.doNothing().when(mockPrincess).sendChat(Matchers.anyString());
@Override protected void checkMoral() { moralUtil.checkMoral(behaviorSettings.isForcedWithdrawal(), behaviorSettings.getBraveryIndex(), behaviorSettings.getSelfPreservationIndex(), getLocalPlayer(), game); }
CardinalEdge getHomeEdge(Entity entity) { // if I am crippled and using forced withdrawal rules, my home edge is the "retreat" edge if(entity.isCrippled(true) && getBehaviorSettings().isForcedWithdrawal()) { if(getBehaviorSettings().getRetreatEdge() == CardinalEdge.NEAREST_OR_NONE) { return BoardUtilities.getClosestEdge(entity); } else { return getBehaviorSettings().getRetreatEdge(); } } // otherwise, return the destination edge return getBehaviorSettings().getDestinationEdge(); }
LogLevel.INFO, "New behavior settings for " + getName() + "\n" + behaviorSettings.toLog()); try { this.behaviorSettings = behaviorSettings.getCopy(); } catch (final PrincessException e) { log(getClass(), setFallBack(behaviorSettings.shouldGoHome(), "Fall Back Configuration."); setFleeBoard(behaviorSettings.shouldAutoFlee(), "Flee Board Configuration."); if (getFallBack()) { for (final String targetCoords : behaviorSettings.getStrategicBuildingTargets()) { if (!StringUtil.isPositiveInteger(targetCoords) || (4 != targetCoords.length())) {
@Test public void testPreferredUnitTargets() { BehaviorSettings behaviorSettings = new BehaviorSettings(); behaviorSettings.setLogger(new FakeLogger()); final int goodUnitTarget = 1; final int goodUnitTarget2 = 4; behaviorSettings.addPriorityUnit(goodUnitTarget); Set<Integer> actualTargets = behaviorSettings.getPriorityUnitTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addPriorityUnit(goodUnitTarget); actualTargets = behaviorSettings.getPriorityUnitTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addPriorityUnit(goodUnitTarget2); actualTargets = behaviorSettings.getPriorityUnitTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addPriorityUnit(null); actualTargets = behaviorSettings.getPriorityUnitTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addPriorityUnit(""); actualTargets = behaviorSettings.getPriorityUnitTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.removePriorityUnit(goodUnitTarget2); actualTargets = behaviorSettings.getPriorityUnitTargets(); Assert.assertEquals(expectedTargets, actualTargets);
@Test public void testStrategicBuildingTargets() { BehaviorSettings behaviorSettings = new BehaviorSettings(); behaviorSettings.setLogger(new FakeLogger()); final String goodHexTarget = "1234"; final String goodHexTarget2 = "4567"; behaviorSettings.addStrategicTarget(goodHexTarget); Set<String> actualTargets = behaviorSettings.getStrategicBuildingTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addStrategicTarget(goodHexTarget); actualTargets = behaviorSettings.getStrategicBuildingTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addStrategicTarget(goodHexTarget2); actualTargets = behaviorSettings.getStrategicBuildingTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addStrategicTarget(null); actualTargets = behaviorSettings.getStrategicBuildingTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.addStrategicTarget(""); actualTargets = behaviorSettings.getStrategicBuildingTargets(); Assert.assertEquals(expectedTargets, actualTargets); behaviorSettings.removeStrategicTarget(goodHexTarget2); actualTargets = behaviorSettings.getStrategicBuildingTargets(); Assert.assertEquals(expectedTargets, actualTargets);
/** * Logic to determine if this entity is "falling back" for any reason * @param entity The entity to check. * @return Whether or not the entity is falling back. */ boolean isFallingBack(final Entity entity) { return (getBehaviorSettings().getDestinationEdge() != CardinalEdge.NEAREST_OR_NONE) || (getBehaviorSettings().isForcedWithdrawal() && entity.isCrippled(true)); }
getPathRanker(entity).initUnitTurn(entity, getGame()); final double fallTolerance = getBehaviorSettings().getFallShameIndex() / 10d; final int startingHomeDistance = getPathRanker(entity).distanceToHomeEdge( entity.getPosition(), getBehaviorSettings().getDestinationEdge(), getGame());
@Test public void testSetDescription() throws PrincessException { BehaviorSettings behaviorSettings = new BehaviorSettings(); behaviorSettings.setLogger(new FakeLogger()); // Test a normal description. String description = "Test behavior"; behaviorSettings.setDescription(description); Assert.assertTrue(true); // Test a null description. description = null; try { behaviorSettings.setDescription(description); Assert.fail("Should have thrown an error!"); } catch (PrincessException e) { Assert.assertTrue(true); } // Test an empty description. description = ""; try { behaviorSettings.setDescription(description); Assert.fail("Should have thrown an error!"); } catch (PrincessException e) { Assert.assertTrue(true); } }
Mockito.when(mockBehavior.getFallShameIndex()).thenReturn(5); Mockito.when(mockPrincess.getBehaviorSettings()).thenReturn(mockBehavior);
boolean getForcedWithdrawal() { return getBehaviorSettings().isForcedWithdrawal(); }