From: <th...@us...> - 2008-06-09 22:07:26
|
Revision: 6515 http://pcgen.svn.sourceforge.net/pcgen/?rev=6515&view=rev Author: thpr Date: 2008-06-09 15:07:33 -0700 (Mon, 09 Jun 2008) Log Message: ----------- Fix load bug introduced in 6506 Add some Ability tokens Some general warning cleanup (unused imports, @Override) Modified Paths: -------------- Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPanel.java Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPluginsPanel.java Trunk/pcgen/code/src/java/gmgen/io/VectorTable.java Trunk/pcgen/code/src/java/gmgen/plugin/Combatant.java Trunk/pcgen/code/src/java/gmgen/plugin/Dice.java Trunk/pcgen/code/src/java/gmgen/plugin/DiceFudge.java Trunk/pcgen/code/src/java/gmgen/plugin/DiceSuccess.java Trunk/pcgen/code/src/java/gmgen/plugin/Die.java Trunk/pcgen/code/src/java/gmgen/plugin/DieEx.java Trunk/pcgen/code/src/java/gmgen/plugin/PcgCombatant.java Trunk/pcgen/code/src/java/gmgen/plugin/SystemDie.java Trunk/pcgen/code/src/java/gmgen/pluginmgr/GMBMessage.java Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMap.java Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMapToList.java Trunk/pcgen/code/src/java/pcgen/base/util/MapCollection.java Trunk/pcgen/code/src/java/pcgen/base/util/WeightedList.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/SkillCost.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/CDOMDirectSingleRef.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java Trunk/pcgen/code/src/java/pcgen/cdom/util/ListKeyMapToList.java Trunk/pcgen/code/src/java/pcgen/core/Ability.java Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java Trunk/pcgen/code/src/java/pcgen/core/BioSet.java Trunk/pcgen/code/src/java/pcgen/core/CharacterDomain.java Trunk/pcgen/code/src/java/pcgen/core/Description.java Trunk/pcgen/code/src/java/pcgen/core/Domain.java Trunk/pcgen/code/src/java/pcgen/core/Equipment.java Trunk/pcgen/code/src/java/pcgen/core/EquipmentChoice.java Trunk/pcgen/code/src/java/pcgen/core/EquipmentModifier.java Trunk/pcgen/code/src/java/pcgen/core/FeatMultipleChoice.java Trunk/pcgen/code/src/java/pcgen/core/Globals.java Trunk/pcgen/code/src/java/pcgen/core/LevelInfo.java Trunk/pcgen/code/src/java/pcgen/core/NoteItem.java Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/PCTemplate.java Trunk/pcgen/code/src/java/pcgen/core/PObject.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/PointBuyMethod.java Trunk/pcgen/code/src/java/pcgen/core/RollInfo.java Trunk/pcgen/code/src/java/pcgen/core/SizeAdjustment.java Trunk/pcgen/code/src/java/pcgen/core/Skill.java Trunk/pcgen/code/src/java/pcgen/core/SpellFilter.java Trunk/pcgen/code/src/java/pcgen/core/VariableProcessorPC.java Trunk/pcgen/code/src/java/pcgen/core/WeaponProf.java Trunk/pcgen/code/src/java/pcgen/core/bonus/Bonus.java Trunk/pcgen/code/src/java/pcgen/core/bonus/BonusObj.java Trunk/pcgen/code/src/java/pcgen/core/character/CharacterSpell.java Trunk/pcgen/code/src/java/pcgen/core/character/EquipSlot.java Trunk/pcgen/code/src/java/pcgen/core/character/SpellInfo.java Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractBasicChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/chooser/ChooserUtilities.java Trunk/pcgen/code/src/java/pcgen/core/chooser/FeatAddChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/chooser/FeatSelectChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/chooser/WeaponFocusChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitBio.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitLevelAbility.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSkill.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpellBook.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpellBookEntry.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbility.java Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbilityAbility.java Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbilityFeat.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassDataParser.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/EquipmentItem.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/EquipmentTableParser.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/NPCGenerator.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/Table.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/TableEntry.java Trunk/pcgen/code/src/java/pcgen/core/pclevelinfo/PCLevelInfoStat.java Trunk/pcgen/code/src/java/pcgen/core/prereq/PrerequisiteOperator.java Trunk/pcgen/code/src/java/pcgen/core/prereq/PrerequisiteUtilities.java Trunk/pcgen/code/src/java/pcgen/core/spell/Spell.java Trunk/pcgen/code/src/java/pcgen/core/system/GameModeRollMethod.java Trunk/pcgen/code/src/java/pcgen/core/utils/ChoiceList.java Trunk/pcgen/code/src/java/pcgen/core/utils/CoreUtility.java Trunk/pcgen/code/src/java/pcgen/core/utils/MessageType.java Trunk/pcgen/code/src/java/pcgen/gui/ChooseSpellDialog.java Trunk/pcgen/code/src/java/pcgen/gui/DataInstaller.java Trunk/pcgen/code/src/java/pcgen/gui/EqBuilder.java Trunk/pcgen/code/src/java/pcgen/gui/LstConverter.java Trunk/pcgen/code/src/java/pcgen/gui/NameElement.java Trunk/pcgen/code/src/java/pcgen/gui/NewWeaponInfoDialog.java Trunk/pcgen/code/src/java/pcgen/gui/PCCCreator.java Trunk/pcgen/code/src/java/pcgen/gui/PCGenMenuBar.java Trunk/pcgen/code/src/java/pcgen/gui/PCGenPopup.java Trunk/pcgen/code/src/java/pcgen/gui/PToolBar.java Trunk/pcgen/code/src/java/pcgen/gui/TreasureGeneratorDlg.java Trunk/pcgen/code/src/java/pcgen/gui/UIFactory.java Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassBasePanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/EditUtil.java Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java Trunk/pcgen/code/src/java/pcgen/gui/editor/FeatBasePanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/RaceBasePanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/SkillBasePanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/TemplateBasePanel.java Trunk/pcgen/code/src/java/pcgen/gui/filter/CompoundFilter.java Trunk/pcgen/code/src/java/pcgen/gui/filter/FilterFactory.java Trunk/pcgen/code/src/java/pcgen/gui/filter/InverseFilter.java Trunk/pcgen/code/src/java/pcgen/gui/filter/NamedFilter.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbility.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDescription.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoEquipping.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoRaces.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSpecialAbilities.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityInfoPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityPoolPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AvailableAbilityPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/SelectedAbilityPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoPreparedSpells.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/SpellModel.java Trunk/pcgen/code/src/java/pcgen/gui/utils/JOpenRecentMenu.java Trunk/pcgen/code/src/java/pcgen/gui/utils/PObjectNode.java Trunk/pcgen/code/src/java/pcgen/gui/utils/SwingChooserUserInput.java Trunk/pcgen/code/src/java/pcgen/gui/utils/chooser/TextAndToolTip.java Trunk/pcgen/code/src/java/pcgen/io/ExportHandler.java Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer0Parser.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityToken.java Trunk/pcgen/code/src/java/pcgen/io/filters/CharacterFilter.java Trunk/pcgen/code/src/java/pcgen/io/filters/PatternFilter.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/EquipmentLoader.java Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedObjectCommitStrategy.java Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectCommitStrategy.java Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectContext.java Trunk/pcgen/code/src/java/pcgen/rules/context/SimpleReferenceContext.java Trunk/pcgen/code/src/java/pcgen/util/ParameterTree.java Trunk/pcgen/code/src/java/pcgen/util/chooser/RandomChooser.java Trunk/pcgen/code/src/java/plugin/bonustokens/SpellPointCosts.java Trunk/pcgen/code/src/java/plugin/charactersheet/gui/NotesPanel.java Trunk/pcgen/code/src/java/plugin/charactersheet/gui/PreferencesDisplayPanel.java Trunk/pcgen/code/src/java/plugin/charactersheet/gui/TurnPane.java Trunk/pcgen/code/src/java/plugin/doomsdaybook/util/Operation.java Trunk/pcgen/code/src/java/plugin/doomsdaybook/util/Rule.java Trunk/pcgen/code/src/java/plugin/doomsdaybook/util/RuleSet.java Trunk/pcgen/code/src/java/plugin/encounter/EncounterPlugin.java Trunk/pcgen/code/src/java/plugin/experience/ExperienceListItem.java Trunk/pcgen/code/src/java/plugin/experience/gui/PreferencesExperiencePanel.java Trunk/pcgen/code/src/java/plugin/initiative/AttackModel.java Trunk/pcgen/code/src/java/plugin/initiative/CheckModel.java Trunk/pcgen/code/src/java/plugin/initiative/PObjectModel.java Trunk/pcgen/code/src/java/plugin/initiative/SkillModel.java Trunk/pcgen/code/src/java/plugin/initiative/gui/PreferencesDamagePanel.java Trunk/pcgen/code/src/java/plugin/initiative/gui/PreferencesInitiativePanel.java Trunk/pcgen/code/src/java/plugin/initiative/gui/PreferencesMassiveDamagePanel.java Trunk/pcgen/code/src/java/plugin/initiative/gui/PreferencesMiscPanel.java Trunk/pcgen/code/src/java/plugin/initiative/gui/PreferencesPerformancePanel.java Trunk/pcgen/code/src/java/plugin/initiative/gui/PreferencesTrackingPanel.java Trunk/pcgen/code/src/java/plugin/jepcommands/CountCommand.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/AddspelllevelToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/CostToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/MultToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/StackToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/VisibleToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/choose/StringToken.java Trunk/pcgen/code/src/java/plugin/network/gui/PreferencesNetworkingPanel.java Trunk/pcgen/code/src/java/plugin/notes/gui/NotesTreeNode.java Trunk/pcgen/code/src/java/plugin/notes/gui/PreferencesNotesPanel.java Trunk/pcgen/code/src/java/plugin/pcgtracker/PCGTrackerModel.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreClassTester.java Trunk/pcgen/code/src/test/pcgen/core/AbilityTest.java Trunk/pcgen/code/src/test/pcgen/core/DescriptionTest.java Trunk/pcgen/code/src/test/pcgen/core/PlayerCharacterTest.java Trunk/pcgen/code/src/test/pcgen/core/chooser/ArmorTypeChoiceManagerTest.java Trunk/pcgen/code/src/test/pcgen/core/chooser/ClassSkillsChoiceManagerTest.java Trunk/pcgen/code/src/test/pcgen/core/chooser/WeaponProfChoiceManagerTest.java Trunk/pcgen/code/src/test/pcgen/core/levelability/LevelAbilityAbilityTest.java Trunk/pcgen/code/src/test/pcgen/core/levelability/LevelAbilityClassSkillsTest.java Trunk/pcgen/code/src/test/pcgen/core/levelability/LevelAbilityTest.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreAbilityTest.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreFeatTest.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreVarTest.java Trunk/pcgen/code/src/test/pcgen/io/exporttoken/AbilityListTokenTest.java Trunk/pcgen/code/src/test/pcgen/io/exporttoken/WeaponTokenTest.java Trunk/pcgen/code/src/test/pcgen/util/TestHelper.java Trunk/pcgen/code/src/test/plugin/jepcommands/CountCommandTest.java Added Paths: ----------- Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/ Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/AddspelllevelTokenTest.java Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/CostTokenTest.java Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/MultTokenTest.java Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/StackTokenTest.java Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/VisibleTokenTest.java Removed Paths: ------------- Trunk/pcgen/code/src/java/pcgen/core/HasCost.java Trunk/pcgen/code/src/java/pcgen/rules/context/ReferenceSupport.java Modified: Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPanel.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPanel.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPanel.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -39,5 +39,6 @@ /** Initialise Preferences */ public abstract void initPreferences(); + @Override public abstract String toString(); } Modified: Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPluginsPanel.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPluginsPanel.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/gui/PreferencesPluginsPanel.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -64,6 +64,7 @@ } } + @Override public String toString() { return "Plugin Launch"; } Modified: Trunk/pcgen/code/src/java/gmgen/io/VectorTable.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/io/VectorTable.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/io/VectorTable.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -264,6 +264,7 @@ * @param o the <code>Object</code> that needs to be compared. * @return <b>true if the two <code>Strings</code> are equal. */ + @Override public boolean equals(Object o) { /* @@ -311,6 +312,7 @@ * Gets the <code>hashCode</code> value for the <code>Vector</code>. * @return the hash code. */ + @Override public int hashCode() { return rows.hashCode(); @@ -418,6 +420,7 @@ * Gets the <code>name</code> of the table that this class is holding. * @return the <code>name</code>. */ + @Override public String toString() { return this.name; Modified: Trunk/pcgen/code/src/java/gmgen/plugin/Combatant.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/Combatant.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/Combatant.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -384,6 +384,7 @@ * Returns a String representation of this combatant. * @return String */ + @Override public String toString() { return getName(); Modified: Trunk/pcgen/code/src/java/gmgen/plugin/Dice.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/Dice.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/Dice.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -80,6 +80,7 @@ /** Name of the die in the nds+m format * @return Name of the die */ + @Override public String toString() { if (aModifier == 0) Modified: Trunk/pcgen/code/src/java/gmgen/plugin/DiceFudge.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/DiceFudge.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/DiceFudge.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -90,6 +90,7 @@ /** The name of the die in the ndF format * @return ndF */ + @Override public String toString() { return num + "dF"; Modified: Trunk/pcgen/code/src/java/gmgen/plugin/DiceSuccess.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/DiceSuccess.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/DiceSuccess.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -86,6 +86,7 @@ /** Name of the dice in the nds format * @return Name of the die pool */ + @Override public String toString() { return num + "d" + sides; Modified: Trunk/pcgen/code/src/java/gmgen/plugin/Die.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/Die.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/Die.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -59,6 +59,7 @@ /** Writes out the die name (like 2d6+1) * @return Die name */ + @Override public abstract String toString(); /** Sets the random Die object. Allows you to put in a seeded random for better randomness. Modified: Trunk/pcgen/code/src/java/gmgen/plugin/DieEx.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/DieEx.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/DieEx.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -129,6 +129,7 @@ /** Creates a <code>String</code> representation of this class * @return This class as a <code>String</code>. */ + @Override public String toString() { return num + "d" + sides; Modified: Trunk/pcgen/code/src/java/gmgen/plugin/PcgCombatant.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/PcgCombatant.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/PcgCombatant.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -1049,7 +1049,6 @@ protected void statBlockLineSpellBook(PlayerCharacter aPC, StringBuffer statBuf, ArrayList<PObject> classList, String spellBookName) { - boolean printedFirst = false; Set<PObject> classes = new HashSet<PObject>(); classes.addAll(classList); Modified: Trunk/pcgen/code/src/java/gmgen/plugin/SystemDie.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/plugin/SystemDie.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/plugin/SystemDie.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -65,6 +65,7 @@ /** Name of the die in nds+m form * @return Name of the die */ + @Override public String toString() { if (aModifier == 0) Modified: Trunk/pcgen/code/src/java/gmgen/pluginmgr/GMBMessage.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/pluginmgr/GMBMessage.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/gmgen/pluginmgr/GMBMessage.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -84,6 +84,7 @@ *@return Description of the Return Value *@since GMGen 3.3 */ + @Override public String toString() { return getClass().getName() + "[" + paramString() + "]"; Modified: Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMap.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMap.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMap.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -394,7 +394,7 @@ Object val = get(key1, key2); if (val instanceof Collection) { - size += ((Collection) val).size(); + size += ((Collection<?>) val).size(); } else { Modified: Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMapToList.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMapToList.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/base/util/DoubleKeyMapToList.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -360,7 +360,7 @@ } @Override - public DoubleKeyMapToList clone() throws CloneNotSupportedException + public DoubleKeyMapToList<K1, K2, V> clone() throws CloneNotSupportedException { DoubleKeyMapToList<K1, K2, V> dkm = (DoubleKeyMapToList<K1, K2, V>) super .clone(); Modified: Trunk/pcgen/code/src/java/pcgen/base/util/MapCollection.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/base/util/MapCollection.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/base/util/MapCollection.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -261,7 +261,7 @@ private boolean returnedKey = false; - private final Iterator hashIterator; + private final Iterator<?> hashIterator; MapCollectionIterator(Map<?, ?> m) { Modified: Trunk/pcgen/code/src/java/pcgen/base/util/WeightedList.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/base/util/WeightedList.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/base/util/WeightedList.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -246,7 +246,7 @@ { if (element instanceof List) { - if (((List) element).contains(o)) + if (((List<?>) element).contains(o)) { return true; } @@ -327,22 +327,27 @@ @SuppressWarnings("unchecked") public <T> T[] toArray(T[] a) { + T[] returnArray; if (a.length < theData.size()) { // Allocate a new array - a = + returnArray = (T[]) Array.newInstance(a.getClass().getComponentType(), theData.size()); } - for (int i = 0; i < a.length; i++) + else { - a[i] = (T) theData.get(i).getElement(); + returnArray = a; } - if (a.length > theData.size()) + for (int i = 0; i < returnArray.length; i++) { - a[theData.size()] = null; + returnArray[i] = (T) theData.get(i).getElement(); } - return a; + if (returnArray.length > theData.size()) + { + returnArray[theData.size()] = null; + } + return returnArray; } /** Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -37,6 +37,7 @@ import pcgen.cdom.reference.CDOMSingleRef; import pcgen.core.Ability; import pcgen.core.Deity; +import pcgen.core.Description; import pcgen.core.Domain; import pcgen.core.Equipment; import pcgen.core.EquipmentModifier; @@ -189,6 +190,7 @@ public static final ListKey<KnownSpellIdentifier> KNOWN_SPELLS = new ListKey<KnownSpellIdentifier>(); public static final ListKey<SpellProhibitor> SPELL_PROHIBITOR = new ListKey<SpellProhibitor>(); public static final ListKey<Quality> QUALITY = new ListKey<Quality>(); + public static final ListKey<Description> BENEFIT = new ListKey<Description>(); /** Private constructor to prevent instantiation of this class */ private ListKey() { Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -171,6 +171,12 @@ public static final ObjectKey<TransitionChoice<ClassSkillList>> SKILLLIST_CHOICE = new ObjectKey<TransitionChoice<ClassSkillList>>(null); + public static final ObjectKey<Boolean> STACKS = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Boolean> MULTIPLE_ALLOWED = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<BigDecimal> SELECTION_COST = new ObjectKey<BigDecimal>(BigDecimal.ONE);; + private static CaseInsensitiveMap<ObjectKey<?>> map = null; private final T defaultValue; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/SkillCost.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/SkillCost.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/SkillCost.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -17,7 +17,6 @@ */ package pcgen.cdom.enumeration; -import pcgen.core.Globals; import pcgen.core.SettingsHandler; public enum SkillCost Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -1,15 +1,25 @@ package pcgen.cdom.reference; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeMap; import java.util.Map.Entry; +import pcgen.base.lang.CaseInsensitiveString; +import pcgen.base.util.HashMapToInstanceList; import pcgen.cdom.base.CDOMObject; -import pcgen.rules.context.ReferenceSupport; +import pcgen.cdom.enumeration.StringKey; +import pcgen.core.PCClass; import pcgen.util.Logging; -public class AbstractReferenceManufacturer<T extends CDOMObject> +public abstract class AbstractReferenceManufacturer<T extends CDOMObject, RT extends CDOMSingleRef<T>> + implements ReferenceManufacturer<T, RT> { private final Class<T> refClass; @@ -90,9 +100,9 @@ return refClass; } - public void resolveReferences(ReferenceSupport<T, ? extends CDOMSingleRef<T>> rs) + public void resolveReferences() { - for (T obj : rs.getAllConstructedCDOMObjects()) + for (T obj : getAllConstructedCDOMObjects()) { if (allRef != null) { @@ -127,5 +137,402 @@ { ref.clearResolution(); } + for (RT ref : referenced.values()) + { + ref.clearResolution(); + } } + + private HashMapToInstanceList<CaseInsensitiveString, T> duplicates = new HashMapToInstanceList<CaseInsensitiveString, T>(); + + private Map<String, T> active = new TreeMap<String, T>(String.CASE_INSENSITIVE_ORDER); + + private List<String> deferred = new ArrayList<String>(); + + private Map<String, RT> referenced = new TreeMap<String, RT>(String.CASE_INSENSITIVE_ORDER); + + public void registerWithKey(T obj, String key) + { + if (!refClass.isInstance(obj)) + { + Logging.errorPrint("Attempted to register a " + + obj.getClass().getName() + " in " + refClass.getName() + + " ReferenceSupport"); + return; + } + if (active.containsKey(key)) + { + duplicates.addToListFor(new CaseInsensitiveString(key), obj); + } + else + { + active.put(key, obj); + } + } + + public T silentlyGetConstructedCDOMObject(String val) + { + T po = active.get(val); + if (po != null) + { + if (duplicates.containsListFor(new CaseInsensitiveString(val))) + { + Logging.errorPrint("Reference to Constructed " + + refClass.getSimpleName() + " " + val + + " is ambiguous"); + } + return po; + } + return null; + } + + public T getConstructedCDOMObject(String val) + { + T obj = silentlyGetConstructedCDOMObject(val); + if (obj == null) + { + Logging.errorPrint("Someone expected " + refClass.getSimpleName() + + " " + val + " to exist."); + } + return obj; + } + + public T constructCDOMObject(String val) + { + if (val.equals("")) + { + throw new IllegalArgumentException("Cannot build empty name"); + } + try + { + T obj = refClass.newInstance(); + obj.setName(val); + registerWithKey(obj, val); + return obj; + } + catch (InstantiationException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + catch (IllegalAccessException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + throw new IllegalArgumentException(refClass + " " + val); + } + + public void reassociateKey(String value, T obj) + { + String oldKey = obj.getKeyName(); + if (oldKey.equalsIgnoreCase(value)) + { + Logging.debugPrint("Worthless Key change encountered: " + + obj.getDisplayName() + " " + oldKey); + } + forgetObject(obj); + registerWithKey(obj, value); + } + + public boolean forgetObject(T obj) throws InternalError + { + if (!refClass.isInstance(obj)) + { + // TODO Error + } + /* + * TODO This is a bug - the key name is not necessarily loaded into the + * object, it may have been consumed by the object context... :P + */ + String key = obj.getKeyName(); + CaseInsensitiveString ocik = new CaseInsensitiveString(key); + CDOMObject act = active.get(key); + if (act == null) + { + throw new InternalError("Did not find " + obj + " under " + key); + } + if (act.equals(obj)) + { + List<T> list = duplicates.getListFor(ocik); + if (list == null) + { + // No replacement + active.remove(key); + } + else + { + T newActive = duplicates.getElementInList(ocik, 0); + duplicates.removeFromListFor(ocik, newActive); + active.put(key, newActive); + } + } + else + { + duplicates.removeFromListFor(ocik, obj); + } + return true; + } + + public boolean containsConstructedCDOMObject(String key) + { + return active.containsKey(key); + } + + public CDOMSingleRef<T> getCDOMReference(String val) + { + // TODO Auto-generated method stub + // TODO This is incorrect, but a hack for now :) + if (val == null) + { + throw new IllegalArgumentException(val); + } + if (val.equals("")) + { + throw new IllegalArgumentException(val); + } + try + { + Integer.parseInt(val); + throw new IllegalArgumentException(val); + } + catch (NumberFormatException nfe) + { + // ok + } + if (val.startsWith("TYPE")) + { + throw new IllegalArgumentException(val); + } + if (val.equalsIgnoreCase("ANY")) + { + throw new IllegalArgumentException(val); + } + if (val.equalsIgnoreCase("ALL")) + { + throw new IllegalArgumentException(val); + } + if (val.startsWith("PRE")) + { + throw new IllegalArgumentException(val); + } + if (val.startsWith("CHOOSE")) + { + throw new IllegalArgumentException(val); + } + if (val.startsWith("TIMES=")) + { + throw new IllegalArgumentException(val); + } + if (refClass.equals(PCClass.class)) + { + if (val.startsWith("CLASS")) + { + throw new IllegalArgumentException(val); + } + else if (val.startsWith("SUB")) + { + throw new IllegalArgumentException(val); + } + else + { + try + { + Integer.parseInt(val); + throw new IllegalArgumentException(val); + } + catch (NumberFormatException nfe) + { + // Want this! + } + } + } + + RT ref = referenced.get(val); + if (ref == null) + { + ref = getReference(val); + referenced.put(val, ref); + } + return ref; + } + + public boolean validate() + { + boolean returnGood = true; +// for (CaseInsensitiveString second : duplicates.getKeySet()) +// { +// if (SettingsHandler.isAllowOverride()) +// { +// List<T> list = duplicates.getListFor(second); +// T good = active.get(second); +// for (int i = 0; i < list.size(); i++) +// { +// T dupe = list.get(i); +// // If the new object is more recent than the current +// // one, use the new object +// final Date origDate = good.getSourceEntry().getSourceBook() +// .getDate(); +// final Date dupeDate = dupe.getSourceEntry().getSourceBook() +// .getDate(); +// if ((dupeDate != null) +// && ((origDate == null) || ((dupeDate +// .compareTo(origDate) > 0)))) +// { +// duplicates.removeFromListFor(second, good); +// good = dupe; +// } +// else +// { +// duplicates.removeFromListFor(second, dupe); +// } +// } +// if (!good.equals(active.get(second))) +// { +// active.put(second, good); +// } +// } +// else +// { +// Logging.errorPrint("More than one " + baseClass.getSimpleName() +// + " with key/name " + second + " was built"); +// returnGood = false; +// } +// } + for (Object second : active.keySet()) + { + T activeObj = active.get(second); + String keyName = activeObj.getKeyName(); + if (keyName == null) + { + System.err.println(activeObj.getClass() + " " + + activeObj.get(StringKey.NAME)); + } + else if (!keyName.equalsIgnoreCase(second.toString())) + { + Logging.errorPrint("Magical Key Change: " + second + " to " + + keyName); + returnGood = false; + } + } + for (Object s : referenced.keySet()) + { + if (!active.containsKey(s) && !deferred.contains(s)) + { + if (!s.toString().startsWith("*")) + { + Logging.errorPrint("Unconstructed Reference: " + + refClass.getSimpleName() + " " + s); + returnGood = false; + } + constructCDOMObject(s.toString()); + } + } + return returnGood; + } + + public void constructIfNecessary(String value) + { + /* + * TODO FIXME Need to ensure that items that are built here are tagged + * as manufactured, so that they are not written out to LST files + */ + deferred.add(value); + } + + public void clear() + { + duplicates.clear(); + active.clear(); + deferred.clear(); + referenced.clear(); + } + + public Collection<T> getAllConstructedCDOMObjects() + { + Set<T> set = new HashSet<T>(); + set.addAll(active.values()); + return set; + } + + public void fillReferences() + { + for (Entry<String, RT> me : referenced.entrySet()) + { + T activeObj = active.get(me.getKey()); + if (activeObj != null) + { + me.getValue().addResolution(activeObj); + } + else + { + System.err.println("Unable to Resolve: " + refClass + " " + me.getKey()); + } + } + } + + public void buildDeferredObjects() + { + for (Object cis : deferred) + { + if (!active.containsKey(cis)) + { + constructCDOMObject(cis.toString()); + } + } + } + + @Override + protected Object clone() throws CloneNotSupportedException + { + /* + * FUTURE This makes a strong (and limiting) assumption - that any Game + * Mode (and thus any instance of SimpleReferenceContext) will only be + * active at one time. This means that there cannot be two sets of + * campaigns loaded that both reference the same game mode. This is not + * limiting in 5.15/5.16 (at this time, anyway), but it does limit + * future expandability of PCGen. There is a significant reason for this + * limitation that I'm unsure how to work around without some really + * serious deep inspection of CDOMObjects. The problem is that + * references may be built in the game mode that reference objects NOT + * in the Game Mode. (Global tokens can be used in the Game Mode). The + * challenge with that is that the *resolution is already built* and we + * don't want to have to know everywhere a reference could be within a + * Game Mode PObject (e.g. a PCStat) in order to update all of those + * references each time a set of Campaigns is uploaded. Therefore, we + * keep one set of references, and allow the content of those references + * to be cleared/updated for each set of campaigns loaded. It is likely + * that the the solution to get around this limitation in the long term + * is to reload the Game Mode files once for each GameMode/Campaign Set + * that is loaded at the same time. + */ + AbstractReferenceManufacturer<T, RT> arm = (AbstractReferenceManufacturer<T, RT>) super.clone(); + if (arm.allRef != null) + { + arm.allRef.clearResolution(); + } + arm.typeReferences = new HashMap<String[], CDOMTypeRef<T>>(); + for (Map.Entry<String[], CDOMTypeRef<T>> me : typeReferences.entrySet()) + { + CDOMTypeRef<T> ref = me.getValue(); + ref.clearResolution(); + arm.typeReferences.put(me.getKey(), ref); + } + arm.referenced = new TreeMap<String, RT>(String.CASE_INSENSITIVE_ORDER); + for (Map.Entry<String, RT> me : referenced.entrySet()) + { + RT ref = me.getValue(); + ref.clearResolution(); + arm.referenced.put(me.getKey(), ref); + } + arm.duplicates = new HashMapToInstanceList<CaseInsensitiveString, T>(); + arm.duplicates.addAllLists(duplicates); + arm.active = new TreeMap<String, T>(String.CASE_INSENSITIVE_ORDER); + arm.active.putAll(active); + arm.deferred = new ArrayList<String>(); + arm.deferred.addAll(deferred); + return arm; + } + + } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/CDOMDirectSingleRef.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/CDOMDirectSingleRef.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/CDOMDirectSingleRef.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -63,7 +63,7 @@ { return o instanceof CDOMDirectSingleRef && referencedObject.equals( - ((CDOMDirectSingleRef) o).referencedObject); + ((CDOMDirectSingleRef<?>) o).referencedObject); } @Override Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -7,8 +7,8 @@ import pcgen.core.PCClass; public class SimpleReferenceManufacturer<T extends CDOMObject> extends - AbstractReferenceManufacturer<T> implements - ReferenceManufacturer<T, CDOMSimpleSingleRef<T>> + AbstractReferenceManufacturer<T, CDOMSimpleSingleRef<T>> implements + ReferenceManufacturer<T, CDOMSimpleSingleRef<T>>, Cloneable { public SimpleReferenceManufacturer(Class<T> cl) { @@ -90,4 +90,12 @@ return new CDOMSimpleSingleRef<T>(getCDOMClass(), val); } + + @Override + public SimpleReferenceManufacturer<T> clone() throws CloneNotSupportedException + { + return (SimpleReferenceManufacturer<T>) super.clone(); + } + + } \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/cdom/util/ListKeyMapToList.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/util/ListKeyMapToList.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/cdom/util/ListKeyMapToList.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -180,7 +180,7 @@ * @return true if this ListKeyMapToList contains a List for the given key; * false otherwise. */ - public boolean containsListFor(ListKey key) + public boolean containsListFor(ListKey<?> key) { return map.containsListFor(key); } @@ -289,7 +289,7 @@ * The key being tested. * @return the number of objects in the List for the given key */ - public int sizeOfListFor(ListKey key) + public int sizeOfListFor(ListKey<?>key) { return map.sizeOfListFor(key); } Modified: Trunk/pcgen/code/src/java/pcgen/core/Ability.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Ability.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/Ability.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -19,8 +19,12 @@ */ package pcgen.core; +import java.util.ArrayList; +import java.util.List; + import pcgen.cdom.base.Constants; -import pcgen.cdom.enumeration.IntegerKey; +import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.StringKey; import pcgen.core.chooser.ChooserUtilities; import pcgen.core.levelability.LevelAbility; @@ -32,20 +36,13 @@ import pcgen.util.chooser.ChooserInterface; import pcgen.util.enumeration.Tab; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - /** * Definition and games rules for an Ability. * * @author ??? * @version $Revision$ */ -public final class Ability extends PObject implements HasCost, Categorisable +public final class Ability extends PObject implements Categorisable { /** An enum for the various types of ability options. */ public enum Nature { @@ -59,17 +56,13 @@ ANY } - private boolean multiples = false; private boolean needsSaving = false; - private boolean stacks = false; private Nature theNature = Nature.NORMAL; // ///////////////////////////////////// // Fields - Associations - private List<Description> theBenefits = null; - // ///////////////////////////////////// // Constructor /* default constructor only */ @@ -99,57 +92,6 @@ } /** - * Adds a description for this object. Multiple descriptions are allowed - * and will be concatonated on output. - * - * <p>The format of the description tag - * @param aDesc a description of what this object provides - */ - public void addBenefit( final Description aDesc ) - { - if ( theBenefits == null ) - { - theBenefits = new ArrayList<Description>(); - } - aDesc.setOwner( this ); - theBenefits.add( aDesc ); - } - - /** - * Clears all current benefits for the object. - */ - public void removeAllBenefits() - { - theBenefits.clear(); - theBenefits = null; - } - - /** - * Removes benefit <tt>Description</tt>s who's PCC Text matches the pattern - * specified. - * - * @param aDescPattern The regular expression to search for. - */ - public void removeBenefit( final String aDescPattern ) - { - if ( theBenefits == null ) - { - return; - } - final Pattern pattern = Pattern.compile(aDescPattern); - - for ( final Iterator<Description> i = theBenefits.iterator(); i.hasNext(); ) - { - final String descText = i.next().getPCCText(); - final Matcher matcher = pattern.matcher(descText); - if ( matcher.find() ) - { - i.remove(); - } - } - } - - /** * Get the benefits of this object * * @param aPC The PlayerCharacter this object is associated to. @@ -157,6 +99,7 @@ */ public String getBenefits(final PlayerCharacter aPC) { + List<Description> theBenefits = getListFor(ListKey.BENEFIT); if ( theBenefits == null ) { return Constants.EMPTY_STRING; @@ -165,7 +108,7 @@ boolean wrote = false; for ( final Description desc : theBenefits ) { - final String str = desc.getDescription(aPC); + final String str = desc.getDescription(aPC, this); if ( str.length() > 0 ) { if ( wrote ) @@ -179,26 +122,6 @@ return buf.toString(); } - public List<Description> getBenefitList() - { - if ( theBenefits == null ) - { - return Collections.emptyList(); - } - return Collections.unmodifiableList(theBenefits); - } - - // TODO - Remove this once a decision is made about descriptions. - public String getBenefitDescription() - { - if (SettingsHandler.useFeatBenefits() && getBenefits(null).length() > 1) - { - return getBenefits(null); - } - - return getDescription(); - } - /** * Get a description of what this ability does * @@ -247,50 +170,6 @@ } /** - * Set how many "points" this ability costs - * - * @param cost the cost of the ability - */ - public void setCost(final String cost) - { - stringChar.put(StringKey.COST, cost); - } - - /** - * Get the cost of this ability - * - * @return a double representing the cost of the ability - */ - public double getCost() - { - return Double.parseDouble(getCostString()); - } - - /** - * Get the cost of this ability - * - * @return a String representing the cost of the ability - */ - public String getCostString() - { - final String characteristic = stringChar.get(StringKey.COST); - return characteristic == null ? "1" : characteristic; - } - - /** - * This version of getCost treats the thing stored in cost as the name of a - * variable which it looks up in the PlayerCharacter object passed in. - * - * @param pc a PlayerCharacter object to look up the cost in - * - * @return the cost of the ability - */ - public double getCost(final PlayerCharacter pc) - { - return pc.getVariableValue(getCostString(), "").doubleValue(); - } - - /** * Set the AbilityType property of this Ability * * @param type The type of this ability (normal, automatic, virtual (see @@ -330,35 +209,6 @@ } /** - * Set whether or not a character may have multiple instances of this - * ability - * - * @param aString If this begins with Y the property will be set true - */ - public void setMultiples(final String aString) - { - if (aString.length() == 0) - { - multiples = false; - } - else - { - final char firstChar = aString.charAt(0); - multiples = firstChar == 'y' || firstChar == 'Y'; - } - } - - /** - * Whether or not we can have multiples of this ability - * - * @return whether there can be multiples. - */ - public boolean isMultiples() - { - return multiples; - } - - /** * If this is a "virtual Ability", this property controls whether it will be * saved with the character * @@ -381,26 +231,6 @@ } /** - * Whether this ability may be taken multiple times for enhanced effect - * - * @param aString To allow stacking, pass a string beginning with Y - */ - public void setStacks(final String aString) - { - stacks = (aString.length() > 0) && (aString.charAt(0) == 'Y'); - } - - /** - * Does this ability stack for enhanced effect? - * - * @return Whether this ability stacks for enhanced effect. - */ - public boolean isStacks() - { - return stacks; - } - - /** * Whether we can add newAssociation to the associated list of this * Ability * @@ -409,7 +239,7 @@ */ public boolean canAddAssociation(final String newAssociation) { - return this.isStacks() || (this.isMultiples() && !this.containsAssociated(newAssociation)); + return this.getSafe(ObjectKey.STACKS) || (this.getSafe(ObjectKey.MULTIPLE_ALLOWED) && !this.containsAssociated(newAssociation)); } /** @@ -422,19 +252,7 @@ { try { - final Ability ret = (Ability)super.clone(); - - if ( theBenefits != null ) - { - ret.theBenefits = new ArrayList<Description>(); - for ( final Description desc : theBenefits ) - { - desc.setOwner(ret); - ret.theBenefits.add(desc); - } - } - - return ret; + return (Ability) super.clone(); } catch (CloneNotSupportedException e) { @@ -455,50 +273,12 @@ final StringBuffer txt = new StringBuffer(200); txt.append(getDisplayName()); txt.append("\tCATEGORY:").append(getCategory()); - txt.append("\tCOST:").append(String.valueOf(getCost())); - if (isMultiples()) - { - txt.append("\tMULT:Y"); - } - - if (isStacks()) - { - txt.append("\tSTACK:Y"); - } - - if (getSafe(IntegerKey.ADD_SPELL_LEVEL) != 0) - { - txt.append("\tADDSPELLLEVEL:").append(getSafe(IntegerKey.ADD_SPELL_LEVEL)); - } - if (getAddString().length() != 0) { txt.append("\tADD:").append(getAddString()); } - txt.append("\tVISIBLE:"); - - switch (getVisibility()) - { - case HIDDEN: - txt.append("EXPORT"); - break; - - case OUTPUT_ONLY: - txt.append("EXPORT"); - break; - - case DISPLAY_ONLY: - txt.append("DISPLAY"); - break; - - case DEFAULT: - default: - txt.append("YES"); - break; - } - if (getChoiceToModify().length() != 0) { txt.append("\tMODIFYABILITYCHOICE:").append(getChoiceToModify()); @@ -535,13 +315,13 @@ && !getKeyName().startsWith("Armor Proficiency") ) { - if ((getChoiceString().length() == 0) || (multiples && stacks)) + if ((getChoiceString().length() == 0) || (getSafe(ObjectKey.MULTIPLE_ALLOWED) && getSafe(ObjectKey.STACKS))) { if (getAssociatedCount() > 1) { // number of items only (ie stacking), e.g. " (1x)" aStrBuf.append(" ("); - aStrBuf.append((int) (getAssociatedCount() * getCost())); + aStrBuf.append((int) (getAssociatedCount() * getSafe(ObjectKey.SELECTION_COST).doubleValue())); aStrBuf.append("x)"); } } @@ -832,7 +612,7 @@ // // Ability doesn't allow choices, so we cannot modify // - if (!anAbility.isMultiples()) + if (!anAbility.getSafe(ObjectKey.MULTIPLE_ALLOWED)) { Logging.debugPrint("MULT:NO for: " + abilityName); Modified: Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -25,6 +25,7 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.pclevelinfo.PCLevelInfo; import pcgen.core.utils.CoreUtility; import pcgen.util.Logging; @@ -82,7 +83,7 @@ { Ability newAbility = null; - if (anAbility != null && (anAbility.isMultiples() || getAbilityFromList(addList, anAbility) == null)) + if (anAbility != null && (anAbility.getSafe(ObjectKey.MULTIPLE_ALLOWED) || getAbilityFromList(addList, anAbility) == null)) { newAbility = anAbility.clone(); @@ -382,12 +383,12 @@ final AbilityCategory category) { // how many sub-choices to make - double abilityCount = (ability.getAssociatedCount() * ability.getCost(aPC)); + double abilityCount = (ability.getAssociatedCount() * ability.getSafe(ObjectKey.SELECTION_COST).doubleValue()); boolean adjustedAbilityPool = false; // adjust the associated List - if (singleChoice && (addIt || ability.isMultiples())) + if (singleChoice && (addIt || ability.getSafe(ObjectKey.MULTIPLE_ALLOWED))) { if ("".equals(choice) || choice == null) { @@ -427,7 +428,7 @@ // if no sub choices made (i.e. all of them removed in Chooser box), // then remove the Feat boolean removed = false; - boolean result = (ability.isMultiples() && singleChoice) ? (ability.getAssociatedCount() > 0) : addIt ; + boolean result = (ability.getSafe(ObjectKey.MULTIPLE_ALLOWED) && singleChoice) ? (ability.getAssociatedCount() > 0) : addIt ; if (! result) { @@ -443,17 +444,17 @@ if (singleChoice && !adjustedAbilityPool) { - if (!addIt && !ability.isMultiples() && removed) + if (!addIt && !ability.getSafe(ObjectKey.MULTIPLE_ALLOWED) && removed) { // We don't need to adjust the pool for abilities here as it is recalculated each time it is queried. if (category == AbilityCategory.FEAT) { - abilityCount += ability.getCost(aPC); + abilityCount += ability.getSafe(ObjectKey.SELECTION_COST).doubleValue(); } } - else if (addIt && !ability.isMultiples()) + else if (addIt && !ability.getSafe(ObjectKey.MULTIPLE_ALLOWED)) { - abilityCount -= ability.getCost(aPC); + abilityCount -= ability.getSafe(ObjectKey.SELECTION_COST).doubleValue(); } else if (category == AbilityCategory.FEAT) { @@ -467,7 +468,7 @@ } } - abilityCount -= (listSize * ability.getCost(aPC)); + abilityCount -= (listSize * ability.getSafe(ObjectKey.SELECTION_COST).doubleValue()); } @@ -574,7 +575,7 @@ { if (aCatObj instanceof Ability) { - return ((Ability) aCatObj).isMultiples(); + return ((Ability) aCatObj).getSafe(ObjectKey.MULTIPLE_ALLOWED); } else if (aCatObj instanceof AbilityInfo) { @@ -583,7 +584,7 @@ { return false; } - return ability.isMultiples(); + return ability.getSafe(ObjectKey.MULTIPLE_ALLOWED); } return false; } @@ -871,15 +872,15 @@ } else { - if (!all && !anAbility.isMultiples()) + if (!all && !anAbility.getSafe(ObjectKey.MULTIPLE_ALLOWED)) { if (addIt) { - aPC.adjustFeats(anAbility.getCost(aPC)); + aPC.adjustFeats(anAbility.getSafe(ObjectKey.SELECTION_COST).doubleValue()); } else { - aPC.adjustFeats(-anAbility.getCost(aPC)); + aPC.adjustFeats(-anAbility.getSafe(ObjectKey.SELECTION_COST).doubleValue()); } } Modified: Trunk/pcgen/code/src/java/pcgen/core/BioSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/BioSet.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/BioSet.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -445,6 +445,7 @@ userMap.remove(key); } + @Override public String toString() { final StringBuffer sb = new StringBuffer(100); Modified: Trunk/pcgen/code/src/java/pcgen/core/CharacterDomain.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/CharacterDomain.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/CharacterDomain.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -198,6 +198,7 @@ * </ul> * @return String */ + @Override public String toString() { String string = ""; Modified: Trunk/pcgen/code/src/java/pcgen/core/Description.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Description.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/Description.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -50,7 +50,6 @@ { private List<String> theComponents = new ArrayList<String>(); private List<String> theVariables = null; - private PObject theOwner = null; private static final String VAR_NAME = "%NAME"; //$NON-NLS-1$ private static final String VAR_CHOICE = "%CHOICE"; //$NON-NLS-1$ @@ -152,26 +151,6 @@ } /** - * Sets the owner of this description. - * - * @param anOwner The <tt>PObject</tt> this description is associated with. - */ - public void setOwner( final PObject anOwner ) - { - theOwner = anOwner; - } - - /** - * Gets the owner of this description. - * - * @return The <tt>PObject</tt> this description is associated with. - */ - public PObject getOwner() - { - return theOwner; - } - - /** * Gets the description string after having tested all prereqs and * substituting all variables. * @@ -179,7 +158,7 @@ * * @return The fully substituted description string. */ - public String getDescription( final PlayerCharacter aPC ) + public String getDescription( final PlayerCharacter aPC, PObject theOwner ) { final StringBuffer buf = new StringBuffer(); @@ -315,4 +294,10 @@ buf.append(super.getPCCText()); return buf.toString(); } + + @Override + public String toString() + { + return getPCCText(); + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/Domain.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Domain.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/Domain.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -228,6 +228,7 @@ * @return TRUE if equals, else FALSE * @see Object#equals */ + @Override public boolean equals(final Object obj) { if (obj != null) @@ -246,6 +247,7 @@ * * @return a hashcode for this Domain object */ + @Override public int hashCode() { final int result; Modified: Trunk/pcgen/code/src/java/pcgen/core/Equipment.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Equipment.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/Equipment.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -226,8 +226,6 @@ // player added note private String noteString = ""; - private String profName = ""; - // How fast the weapon can be fired. private String size = ""; @@ -1160,7 +1158,7 @@ for (Iterator<EquipmentModifier> it = modList.iterator(); it.hasNext();) { EquipmentModifier eqMod = it.next(); - if (eqMod.getVisibility().equals(Visibility.HIDDEN)) { + if (eqMod.getSafe(ObjectKey.VISIBILITY).equals(Visibility.HIDDEN)) { it.remove(); } } @@ -2125,7 +2123,7 @@ * @return The visible value */ public boolean isVisible(final EquipmentModifier eqMod) { - Visibility vis = eqMod.getVisibility(); + Visibility vis = eqMod.getSafe(ObjectKey.VISIBILITY); if (Visibility.QUALIFY.equals(vis)) { bonusPrimary = true; @@ -2842,6 +2840,7 @@ * Description of the Parameter * @return Description of the Return Value */ + @Override public boolean equals(final Object o) { return (o != null) && (o instanceof Equipment) && ((o == this) || getName().equals(((Equipment) o).getName())); @@ -3436,6 +3435,7 @@ * * @return the Equipment as a String */ + @Override public String toString() { return toString(true); } @@ -3586,6 +3586,7 @@ containerContentsString = tempStringBuffer.toString(); } + @Override protected void doGlobalTypeUpdate(final String aString) { s_equipmentTypes.add(aString); } Modified: Trunk/pcgen/code/src/java/pcgen/core/EquipmentChoice.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/EquipmentChoice.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/EquipmentChoice.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -23,6 +23,7 @@ */ package pcgen.core; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.util.Delta; import pcgen.util.Logging; import pcgen.util.enumeration.Visibility; @@ -338,7 +339,7 @@ anAbility.isType(typeString) ); - if ((anAbility.getVisibility() == Visibility.DEFAULT) + if ((anAbility.getSafe(ObjectKey.VISIBILITY) == Visibility.DEFAULT) && !this.getAvailableList().contains(anAbility.getKeyName())) { if (matchesType && (anAbility.getChoiceString().length() == 0)) Modified: Trunk/pcgen/code/src/java/pcgen/core/EquipmentModifier.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/EquipmentModifier.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/EquipmentModifier.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -33,7 +33,6 @@ import java.util.StringTokenizer; import pcgen.cdom.base.Constants; -import pcgen.cdom.enumeration.EqModNameOpt; import pcgen.cdom.enumeration.IntegerKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; Modified: Trunk/pcgen/code/src/java/pcgen/core/FeatMultipleChoice.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/FeatMultipleChoice.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/FeatMultipleChoice.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -72,6 +72,7 @@ * * @return String */ + @Override public String toString() { final StringBuffer sb = new StringBuffer(50); Modified: Trunk/pcgen/code/src/java/pcgen/core/Globals.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2008-06-09 22:00:32 UTC (rev 6514) +++ Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2008-06-09 22:07:33 UTC (rev 6515) @@ -53,6 +53,7 @@ import pcgen.base.util.MapToList; import pcgen.cdom.base.Constants; import pcgen.cdom.base.MasterListInterface; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.Pantheon; import pcgen.cdom.enumeration.RaceType; import pcgen.core.character.CompanionMod; @@ -3036,7 +3037,7 @@ ArrayList<T> aList = new ArrayList<T>(); ... [truncated message content] |