From: <nu...@us...> - 2006-03-30 16:10:37
|
Revision: 526 Author: nuance Date: 2006-03-30 08:10:21 -0800 (Thu, 30 Mar 2006) ViewCVS: http://svn.sourceforge.net/pcgen/?rev=526&view=rev Log Message: ----------- Extract applychoices up to the superclass AbstractComplexChoiceManager.java. Extract three methods (cleanUpAssociated, associateChoice and adjustFeats) out of applychoices to allow the individual Choice managers to override as appropriate. Removed a useless parameter from the interface. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractCategorisableChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractComplexChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractSimpleChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/chooser/ArmorTypeChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/chooser/ChoiceManagerList.java Trunk/pcgen/code/src/java/pcgen/core/chooser/ClassSkillsChoiceManager.java Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractCategorisableChoiceManager.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractCategorisableChoiceManager.java 2006-03-30 16:02:48 UTC (rev 525) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractCategorisableChoiceManager.java 2006-03-30 16:10:21 UTC (rev 526) @@ -86,14 +86,12 @@ * @param aPc * @param availableList * @param selectedList - * @param selectedBonusList * @return an empty list */ public List doChooser ( PlayerCharacter aPc, final List availableList, - final List selectedList, - final List selectedBonusList) + final List selectedList) { Logging.errorPrint("Wrong doChooser called, there is a bug somewhere" ); return Collections.EMPTY_LIST; Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractComplexChoiceManager.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractComplexChoiceManager.java 2006-03-30 16:02:48 UTC (rev 525) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractComplexChoiceManager.java 2006-03-30 16:10:21 UTC (rev 526) @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.Collections; +import java.util.Iterator; import java.util.List; /** @@ -171,8 +172,7 @@ final List newSelections = doChooser ( aPC, availableList, - selectedList, - selectedBonusList); + selectedList); applyChoices(aPC, newSelections); @@ -180,18 +180,16 @@ } /** - * Do chooser. SelectedBonusList is unused, it's only here so the interface is the - * same as AbstractSimpleChoiceManager + * Do chooser. + * * @param aPc * @param availableList * @param selectedList - * @param selectedBonusList */ public List doChooser ( PlayerCharacter aPc, final List availableList, - final List selectedList, - final List selectedBonusList) + final List selectedList) { if (requestedSelections < 0) @@ -279,4 +277,100 @@ public String typeHandled() { return chooserHandled; } + + /** + * Apply the choices selected to the associated PObject (the one passed + * to the constructor) + * @param aPC + * @param selected + * + */ + public void applyChoices( + PlayerCharacter aPC, + List selected) + { + cleanUpAssociated(aPC, selected.size()); + + String objPrefix = (pobject instanceof Domain) + ? chooserHandled + '?' + : ""; + + if (pobject instanceof Ability) + { + ((Ability)pobject).clearSelectedWeaponProfBonus(); //Cleans up the feat + } + + Iterator it = selected.iterator(); + while (it.hasNext()) + { + associateChoice(aPC, (String) it.next(), objPrefix); + } + + adjustFeats(aPC, selected); + + if (objPrefix.length() != 0) + { + aPC.setAutomaticFeatsStable(false); + } + } + + /** + * Perform any necessary clean up of the associated property of pobject. + * + * @param aPc + * @param size + */ + protected void cleanUpAssociated( + PlayerCharacter aPc, + int size) + { + pobject.clearAssociated(); + } + + /** + * Associate a choice with the pobject. + * + * @param aPc + * @param item the choice to associate + * @param prefix + */ + protected void associateChoice( + final PlayerCharacter aPc, + final String item, + final String prefix) + { + final String name = prefix + item; + + if (multiples && !dupsAllowed) + { + if (!pobject.containsAssociated(name)) + { + pobject.addAssociated(name); + } + } + else + { + pobject.addAssociated(name); + } + } + + /** + * Adjust the number of feats the PC has available to take account of this choice + * + * @param aPC + * @param selected + */ + protected void adjustFeats(PlayerCharacter aPC, List selected) { + double featCount = aPC.getFeats(); + + if (cost > 0) + { + featCount = (numberOfChoices > 0) + ? featCount - cost + : ((maxSelections - selected.size()) * cost); + } + + aPC.adjustFeats(featCount - aPC.getFeats()); + } + } Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractSimpleChoiceManager.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractSimpleChoiceManager.java 2006-03-30 16:02:48 UTC (rev 525) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractSimpleChoiceManager.java 2006-03-30 16:10:21 UTC (rev 526) @@ -128,14 +128,12 @@ * @param aPc * @param availableList * @param selectedList - * @param selectedBonusList * @return list */ public List doChooser ( PlayerCharacter aPc, final List availableList, - final List selectedList, - final List selectedBonusList) + final List selectedList) { final ChooserInterface chooser = ChooserFactory.getChooserInstance(); chooser.setAllowsDups(dupsAllowed); Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/ArmorTypeChoiceManager.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/ArmorTypeChoiceManager.java 2006-03-30 16:02:48 UTC (rev 525) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/ArmorTypeChoiceManager.java 2006-03-30 16:10:21 UTC (rev 526) @@ -24,7 +24,6 @@ package pcgen.core.chooser; import pcgen.core.Ability; -import pcgen.core.Domain; import pcgen.core.Globals; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; @@ -93,57 +92,31 @@ } /** - * Apply the choices selected to the associated PObject (the one passed - * to the constructor). I took out all the code that was't doing anything - * I really can't see what this is doing at all. I've checked back through - * the old code in CVS and it wasn't my refactorings that made this do - * nothing. + * Associate a choice with the pobject. * - * @param aPC - * @param selected + * @param aPc + * @param item the choice to associate + * @param prefix */ - public void applyChoices( - PlayerCharacter aPC, - List selected) + protected void associateChoice( + final PlayerCharacter aPc, + final String item, + final String prefix) { - - pobject.clearAssociated(); - - String objPrefix = ""; - - if (pobject instanceof Domain) - { - objPrefix = chooserHandled + '?'; - } - - if (pobject instanceof Ability) { - ((Ability)pobject).clearSelectedWeaponProfBonus(); //Cleans up the feat - } - - double featCount = aPC.getFeats(); - if (numberOfChoices > 0) - { - if (cost > 0) - { - featCount -= cost; - } - } - else - { - if (cost > 0) - { - featCount = ((maxSelections - selected.size()) * cost); - } - } - - aPC.adjustFeats(featCount - aPC.getFeats()); - - // This will get assigned by autofeat (if a feat) - - if (objPrefix.length() != 0) - { - aPC.setAutomaticFeatsStable(false); - } + /* this code was originally added to a class called Utility.java + * in August 2002. As far as I can see there was no mechanism then + * which allowed aBonusList to be populated. There has not been + * any such mechanism in the code ever. I believe that this + * ChoiceManager is replacing a chooser which has never worked. + * It is currently unused in the data repository. + * Andrew Wilson 30 March 2006 + */ + // for (Iterator e = aBonusList.iterator(); e.hasNext();) + // { + // final String bString = (String) e.next(); + // pobject.addAssociated(prefix + item); + // pobject.applyBonus("ARMORPROF=" + bString, item, aPc); + // } } } Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/ChoiceManagerList.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/ChoiceManagerList.java 2006-03-30 16:02:48 UTC (rev 525) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/ChoiceManagerList.java 2006-03-30 16:10:21 UTC (rev 526) @@ -54,14 +54,12 @@ * @param aPc * @param availableList * @param selectedList - * @param selectedBonusList * @return the list of selected items */ public abstract List doChooser( PlayerCharacter aPc, final List availableList, - final List selectedList, - final List selectedBonusList); + final List selectedList); /** Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/ClassSkillsChoiceManager.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/ClassSkillsChoiceManager.java 2006-03-30 16:02:48 UTC (rev 525) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/ClassSkillsChoiceManager.java 2006-03-30 16:10:21 UTC (rev 526) @@ -29,6 +29,7 @@ import pcgen.core.PObject; import pcgen.core.PlayerCharacter; import pcgen.core.Skill; +import pcgen.util.Logging; import java.util.Iterator; import java.util.List; @@ -79,7 +80,9 @@ { aSkill = (Skill) iter.next(); - if (aSkill.costForPCClassList(aPc.getClassList(), aPc) == Globals.getGameModeSkillCost_Class()) + int sCost = aSkill.costForPCClassList(aPc.getClassList(), aPc); + + if (sCost == Globals.getGameModeSkillCost_Class()) { availableList.add(aSkill.getName()); } @@ -87,71 +90,5 @@ pobject.addAssociatedTo(selectedList); } - - /** - * Apply the choices selected to the associated PObject (the one passed - * to the constructor) - * @param aPC - * @param selected - * - */ - public void applyChoices( - PlayerCharacter aPC, - List selected) - { - String objPrefix = ""; - if (pobject instanceof Domain) - { - objPrefix = chooserHandled + '?'; - } - - if (pobject instanceof Ability) { - ((Ability)pobject).clearSelectedWeaponProfBonus(); //Cleans up the feat - } - - for (int i = 0; i < selected.size(); ++i) - { - final String chosenItem = (String) selected.get(i); - - if (multiples && !dupsAllowed) - { - if (!pobject.containsAssociated(objPrefix + chosenItem)) - { - pobject.addAssociated(objPrefix + chosenItem); - } - } - else - { - pobject.addAssociated(objPrefix + chosenItem); - } - - } - - double featCount = aPC.getFeats(); - if (numberOfChoices > 0) - { - if (cost > 0) - { - featCount -= cost; - } - } - else - { - if (cost > 0) - { - featCount = ((maxSelections - selected.size()) * cost); - } - } - - aPC.adjustFeats(featCount - aPC.getFeats()); - - // This will get assigned by autofeat (if a feat) - - if (objPrefix.length() != 0) - { - aPC.setAutomaticFeatsStable(false); - } - } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |