From: <th...@us...> - 2008-10-15 00:56:11
|
Revision: 8077 http://pcgen.svn.sourceforge.net/pcgen/?rev=8077&view=rev Author: thpr Date: 2008-10-15 00:56:00 +0000 (Wed, 15 Oct 2008) Log Message: ----------- MONCSKILL LIST (association) cleanup w/ new LIST code path Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java Trunk/pcgen/code/src/java/pcgen/core/Globals.java Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java Removed Paths: ------------- Trunk/pcgen/code/src/java/pcgen/cdom/reference/AssociationReference.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java 2008-10-14 23:25:43 UTC (rev 8076) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java 2008-10-15 00:56:00 UTC (rev 8077) @@ -32,6 +32,7 @@ import pcgen.base.util.NamedValue; import pcgen.cdom.base.CDOMListObject; import pcgen.cdom.list.ClassSkillList; +import pcgen.core.Skill; import pcgen.core.bonus.BonusObj; import pcgen.core.spell.Spell; @@ -65,6 +66,8 @@ public static final AssociationListKey<CDOMListObject<Spell>> CLASSSPELLLIST = new AssociationListKey<CDOMListObject<Spell>>(); + public static final AssociationListKey<Skill> MONCSKILL = new AssociationListKey<Skill>(); + public static final AssociationListKey<BonusObj> BONUS = new AssociationListKey<BonusObj>(); private static CaseInsensitiveMap<AssociationListKey<?>> map = null; Deleted: Trunk/pcgen/code/src/java/pcgen/cdom/reference/AssociationReference.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/AssociationReference.java 2008-10-14 23:25:43 UTC (rev 8076) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/AssociationReference.java 2008-10-15 00:56:00 UTC (rev 8077) @@ -1,253 +0,0 @@ -/* - * Copyright 2007, 2008 (C) Tom Parker <th...@us...> - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at your option) - * any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package pcgen.cdom.reference; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; -import pcgen.core.Globals; -import pcgen.core.PObject; -import pcgen.core.PlayerCharacter; - -/** - * An AssociationReference is a CDOMReference that points to associations on a - * PObject. - * - * Generally, a CDOMReference is used to contain objects that are referred - * (granted, allowed, referenced, etc.) by other objects. Many of these - * relationships are defined at LST load, but there are some cases, like - * AssociationReference, that are not. - * - * Some objects can use a CHOOSE: token to allow selections when a - * PlayerCharacter is created. One example would be CHOOSE:SKILLSNAMED|ALL, - * which presents a list of all Skills. Other tokens can reference these - * selected choices in order to "apply" the selection, such as the use of - * CSKILL:LIST - * - * This application of a CHOOSE selection involves the selection in a reference. - * (since tokens like CSKILL build lists of references during LST load). The - * resolution of the contents of the reference must be deferred to runtime - * (after the selections are made). An AssociationReference represents this - * case, and extracts the actual choice out of an AssociationStore in order to - * appropriately resolve the contents of the Reference. - * - * @param <T> - * The Class of the underlying objects contained by this - * AssociationReference - */ -public class AssociationReference<T extends CDOMObject> extends - CDOMReference<T> -{ - /** - * The CDOMGroupRef used to establish the potential objects that could be - * stored in associations of the given PObject - */ - private final CDOMGroupRef<T> all; - - /** - * The PObject from which identifiers should be extracted to establish which - * of the objects in the potential object CDOMGroupRef this - * AssociationReference actually references. - */ - private final PObject referenceObj; - - /** - * Constructs a new AssociationReference, which will reference the - * associations on the given object, with the association used as an - * identifier to extract objects from the given starting CDOMGroupRef of - * objects. - * - * This AssociationReference will reference the same Class of object as the - * Class of object referenced by the given CDOMGroupRef. - * - * @param start - * The starting CDOMGroupRef, which references the potential - * objects that could be stored in associations of the given - * PObject - * @param ref - * The PObject from which identifiers should be extracted to - * establish which of the objects in the given CDOMGroupRef this - * AssociationReference actually references. - * @throws NullPointerException - * if the starting reference provided is null - * @throws IllegalArgumentException - * if the given PObject is null - */ - public AssociationReference(CDOMGroupRef<T> start, PObject ref) - { - super(start.getReferenceClass(), "LIST"); - all = start; - if (ref == null) - { - throw new IllegalArgumentException( - "PObject in AssociationReference cannot be null"); - } - referenceObj = ref; - } - - /** - * Throws an exception. This method may not be called because a - * AssociationReference is resolved by association. - * - * @param obj - * ignored - * @throws IllegalStateException - * because a AssociationReference is resolved by association. - */ - @Override - public void addResolution(T obj) - { - throw new IllegalStateException( - "Cannot add resolution to AssociationReference"); - } - - /** - * Returns true if the given Object matches one of the objects to which this - * AssociationReference refers. - * - * @param obj - * The object to be tested to see if it matches one of the - * objects to which this AssociationReference refers. - * @return true if the given Object is one of the objects to which this - * AssociationReference refers; false otherwise. - */ - @Override - public boolean contains(T obj) - { - if (!all.contains(obj)) - { - return false; - } - // CONSIDER once getActiveEquivalent goes away, this should be - // AssocationStore - PlayerCharacter as = Globals.getCurrentPC(); - String key = obj.getKeyName(); - PObject active = referenceObj.getActiveEquivalent(as); - for (String assoc : as.getAssociationList(active)) - { - if (key.equalsIgnoreCase(assoc)) - { - return true; - } - } - return false; - } - - /** - * Returns a Collection containing the Objects to which this - * AssociationReference refers. - * - * This method is reference-semantic, meaning that ownership of the - * Collection returned by this method is transferred to the calling object. - * Modification of the returned Collection should not result in modifying - * the AssociationReference, and modifying the AssociationReference after - * the Collection is returned should not modify the Collection. - * - * @return A Collection containing the Objects to which this - * AssociationReference refers. - */ - @Override - public Collection<T> getContainedObjects() - { - List<T> list = new ArrayList<T>(); - PlayerCharacter as = Globals.getCurrentPC(); - PObject active = referenceObj.getActiveEquivalent(as); - List<String> associationList = as.getAssociationList(active); - for (T obj : all.getContainedObjects()) - { - String key = obj.getKeyName(); - for (String assoc : associationList) - { - if (key.equalsIgnoreCase(assoc)) - { - list.add(obj); - break; - } - } - } - return list; - } - - /** - * Returns a representation of this AssociationReference, suitable for - * storing in an LST file. - * - * @see pcgen.cdom.base.CDOMReference#getLSTformat() - */ - @Override - public String getLSTformat() - { - return getName(); - } - - /** - * Returns the count of the number of objects included in the Collection of - * Objects to which this AssociationReference refers. - * - * Note that the behavior of this class is undefined if the - * AssociationReference has not yet been resolved. - * - * @return The count of the number of objects included in the Collection of - * Objects to which this AssociationReference refers. - */ - @Override - public int getObjectCount() - { - PlayerCharacter as = Globals.getCurrentPC(); - PObject active = referenceObj.getActiveEquivalent(as); - return as.getDetailedAssociationCount(active); - } - - /** - * Returns true if this AssociationReference is equal to the given Object. - * Equality is defined as being another AssociationReference object with - * equal starting Reference Set and equal reference object. This is NOT a - * deep .equals, in that the actual contents of this AssociationReference - * are not tested. - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object o) - { - if (o instanceof AssociationReference) - { - AssociationReference<?> other = (AssociationReference<?>) o; - return getReferenceClass().equals(other.getReferenceClass()) - && getName().equals(other.getName()) - && all.equals(other.all) - && referenceObj.equals(other.referenceObj); - } - return false; - } - - /** - * Returns the consistent-with-equals hashCode for this AssociationReference - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() - { - return getReferenceClass().hashCode() ^ referenceObj.hashCode(); - } - -} Modified: Trunk/pcgen/code/src/java/pcgen/core/Globals.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2008-10-14 23:25:43 UTC (rev 8076) +++ Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2008-10-15 00:56:00 UTC (rev 8077) @@ -2955,15 +2955,4 @@ } return aList; } - - /* - * This is SOLELY for use in AssociationReference due to cloning issues. If - * you use it somewhere else, James will personally come by and beat you up - */ - @Deprecated - public static PlayerCharacter getCurrentPC() - { - return currentPC; - } - } Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java 2008-10-14 23:25:43 UTC (rev 8076) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java 2008-10-15 00:56:00 UTC (rev 8077) @@ -28,6 +28,7 @@ import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.enumeration.AssociationKey; +import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.SkillCost; @@ -80,7 +81,7 @@ if (aClass.isMonster()) { - if (hasMonsterClassSkill(aPC.getRace(), sk)) + if (hasMonsterClassSkill(aPC, aPC.getRace(), sk)) { return true; } @@ -336,8 +337,20 @@ return false; } - public static boolean hasMonsterClassSkill(Race r, Skill s) + public static boolean hasMonsterClassSkill(PlayerCharacter pc, Race r, Skill s) { + List<Skill> list = pc.getAssocList(r, AssociationListKey.MONCSKILL); + if (list != null) + { + for (Skill sk : list) + { + //Slow method + if (sk.getKeyName().equals(s.getKeyName())) + { + return true; + } + } + } CDOMReference<ClassSkillList> mList = PCClass.MONSTER_SKILL_LIST; Collection<CDOMReference<Skill>> mods = r.getListMods(mList); if (mods == null) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java 2008-10-14 23:25:43 UTC (rev 8076) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java 2008-10-15 00:56:00 UTC (rev 8077) @@ -8,17 +8,23 @@ import pcgen.base.util.MapToList; import pcgen.cdom.base.AssociatedPrereqObject; +import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.ChooseResultActor; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.AssociationKey; +import pcgen.cdom.enumeration.AssociationListKey; +import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.SkillCost; -import pcgen.cdom.reference.AssociationReference; import pcgen.cdom.reference.PatternMatchingReference; import pcgen.cdom.reference.ReferenceUtilities; +import pcgen.core.Globals; import pcgen.core.PCClass; +import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.Skill; import pcgen.rules.context.AssociatedChanges; +import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.TokenUtilities; import pcgen.rules.persistence.token.AbstractToken; @@ -29,7 +35,7 @@ * Class deals with MONCSKILL Token */ public class MoncskillToken extends AbstractToken implements - CDOMPrimaryToken<Race> + CDOMPrimaryToken<Race>, ChooseResultActor { private static final Class<Skill> SKILL_CLASS = Skill.class; @@ -70,7 +76,7 @@ } else if (tokText.startsWith(Constants.LST_DOT_CLEAR_DOT)) { - CDOMReference<Skill> skill; + CDOMReference<Skill> skill = null; String clearText = tokText.substring(7); if (Constants.LST_ALL.equals(clearText)) { @@ -78,16 +84,28 @@ } else { - skill = getSkillReference(context, race, clearText); + if (Constants.LST_LIST.equals(clearText)) + { + context.getObjectContext().removeFromList(race, + ListKey.CHOOSE_ACTOR, this); + } + else + { + skill = getSkillReference(context, clearText); + if (skill == null) + { + Logging + .errorPrint(" Error was encountered while parsing " + + getTokenName()); + return false; + } + } } - if (skill == null) + if (skill != null) { - Logging.errorPrint(" Error was encountered while parsing " - + getTokenName()); - return false; + context.getListContext().removeFromList(getTokenName(), + race, PCClass.MONSTER_SKILL_LIST, skill); } - context.getListContext().removeFromList(getTokenName(), race, - PCClass.MONSTER_SKILL_LIST, skill); } else { @@ -99,7 +117,7 @@ * the graph would also make it harder to trace the source of * class skills, etc.) */ - CDOMReference<Skill> skill; + CDOMReference<Skill> skill = null; if (Constants.LST_ALL.equals(tokText)) { foundAny = true; @@ -108,18 +126,31 @@ else { foundOther = true; - skill = getSkillReference(context, race, tokText); + if (Constants.LST_LIST.equals(tokText)) + { + context.getObjectContext().addToList(race, + ListKey.CHOOSE_ACTOR, this); + } + else + { + skill = getSkillReference(context, tokText); + if (skill == null) + { + Logging + .errorPrint(" Error was encountered while parsing " + + getTokenName()); + return false; + } + } } - if (skill == null) + if (skill != null) { - Logging.errorPrint(" Error was encountered while parsing " - + getTokenName()); - return false; + AssociatedPrereqObject apo = context.getListContext() + .addToList(getTokenName(), race, + PCClass.MONSTER_SKILL_LIST, skill); + apo.setAssociation(AssociationKey.SKILL_COST, + SkillCost.CLASS); } - AssociatedPrereqObject apo = context.getListContext() - .addToList(getTokenName(), race, - PCClass.MONSTER_SKILL_LIST, skill); - apo.setAssociation(AssociationKey.SKILL_COST, SkillCost.CLASS); } firstToken = false; } @@ -132,16 +163,11 @@ return true; } - private CDOMReference<Skill> getSkillReference(LoadContext context, Race r, + private CDOMReference<Skill> getSkillReference(LoadContext context, String tokText) { - if (Constants.LST_LIST.equals(tokText)) + if (tokText.endsWith(Constants.LST_PATTERN)) { - return new AssociationReference<Skill>(context.ref - .getCDOMAllReference(SKILL_CLASS), r); - } - else if (tokText.endsWith(Constants.LST_PATTERN)) - { return new PatternMatchingReference<Skill>(Skill.class, context.ref .getCDOMAllReference(SKILL_CLASS), tokText); } @@ -157,6 +183,8 @@ AssociatedChanges<CDOMReference<Skill>> changes = context .getListContext().getChangesInList(getTokenName(), race, PCClass.MONSTER_SKILL_LIST); + Changes<ChooseResultActor> listChanges = context.getObjectContext() + .getListChanges(race, ListKey.CHOOSE_ACTOR); List<String> list = new ArrayList<String>(); Collection<CDOMReference<Skill>> removedItems = changes.getRemoved(); if (removedItems != null && !removedItems.isEmpty()) @@ -172,6 +200,15 @@ + ReferenceUtilities .joinLstFormat(removedItems, "|.CLEAR.")); } + Collection<ChooseResultActor> listRemoved = listChanges.getRemoved(); + System.err.println(listRemoved); + if (listRemoved != null && !listRemoved.isEmpty()) + { + if (listRemoved.contains(this)) + { + list.add(".CLEAR.LIST"); + } + } if (changes.includesGlobalClear()) { list.add(Constants.LST_DOT_CLEAR); @@ -196,6 +233,14 @@ } list.add(ReferenceUtilities.joinLstFormat(added, Constants.PIPE)); } + Collection<ChooseResultActor> listAdded = listChanges.getAdded(); + if (listAdded != null && !listAdded.isEmpty()) + { + if (listAdded.contains(this)) + { + list.add("LIST"); + } + } if (list.isEmpty()) { // Zero indicates no add or clear @@ -208,4 +253,24 @@ { return Race.class; } + + public void apply(PlayerCharacter pc, CDOMObject obj, String o) + { + Skill skill = Globals.getContext().ref + .silentlyGetConstructedCDOMObject(SKILL_CLASS, o); + if (skill != null) + { + pc.addAssoc(obj, AssociationListKey.MONCSKILL, skill); + } + } + + public void remove(PlayerCharacter pc, CDOMObject obj, String o) + { + Skill skill = Globals.getContext().ref + .silentlyGetConstructedCDOMObject(SKILL_CLASS, o); + if (skill != null) + { + pc.removeAssoc(obj, AssociationListKey.MONCSKILL, skill); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-10-16 00:08:33
|
Revision: 8089 http://pcgen.svn.sourceforge.net/pcgen/?rev=8089&view=rev Author: thpr Date: 2008-10-16 00:08:23 +0000 (Thu, 16 Oct 2008) Log Message: ----------- refactoring Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java Trunk/pcgen/code/src/java/pcgen/core/Ability.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/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/Race.java Trunk/pcgen/code/src/java/pcgen/core/SubClass.java Trunk/pcgen/code/src/java/pcgen/core/SubstitutionClass.java Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/core/analysis/RaceAlignment.java Trunk/pcgen/code/src/java/pcgen/core/analysis/SubstitutionLevelSupport.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -55,7 +55,9 @@ import pcgen.core.ShieldProf; import pcgen.core.SizeAdjustment; import pcgen.core.SpellProhibitor; +import pcgen.core.SubClass; import pcgen.core.WeaponProf; +import pcgen.core.Ability.Nature; import pcgen.core.character.WieldCategory; import pcgen.core.spell.Spell; import pcgen.util.enumeration.Load; @@ -230,6 +232,10 @@ public static final ObjectKey<Capacity> TOTAL_CAPACITY = new ObjectKey<Capacity>(null); + public static final ObjectKey<Category<SubClass>> SUBCLASS_CATEGORY = new ObjectKey<Category<SubClass>>(null); + + public static final ObjectKey<Nature> ABILITY_NATURE = new ObjectKey<Nature>(Ability.Nature.NORMAL); + public static final ObjectKey<SizeAdjustment> BASESIZE; public static final ObjectKey<SizeAdjustment> SIZE; Modified: Trunk/pcgen/code/src/java/pcgen/core/Ability.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Ability.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/Ability.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -63,8 +63,6 @@ private boolean needsSaving = false; - private Nature theNature = Nature.NORMAL; - // ///////////////////////////////////// // Fields - Associations @@ -94,15 +92,6 @@ } /** - * Identify if this ability is actually a feat. - * @return true if this is a feat, false otherwise. - */ - public boolean isFeat() - { - return Constants.FEAT_CATEGORY.equals(getCategory()); - } - - /** * Set the AbilityType property of this Ability * * @param type The type of this ability (normal, automatic, virtual (see @@ -115,7 +104,7 @@ return; } - theNature = type; + put(ObjectKey.ABILITY_NATURE, type); } /** @@ -125,7 +114,7 @@ */ public Nature getAbilityNature() { - return theNature; + return getSafe(ObjectKey.ABILITY_NATURE); } /** Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -70,6 +70,7 @@ import pcgen.core.QualifiedObject.LevelAwareQualifiedObject; import pcgen.core.analysis.DomainApplication; import pcgen.core.analysis.SkillRankControl; +import pcgen.core.analysis.SubstitutionLevelSupport; import pcgen.core.bonus.Bonus; import pcgen.core.bonus.BonusObj; import pcgen.core.character.CharacterSpell; @@ -3856,11 +3857,11 @@ { continue; } - if (!sc.hasLevelArrayModsForLevel(level)) + if (!sc.hasClassLevel(level)) { continue; } - if (!sc.qualifiesForSubstitutionLevel(aPC, level)) + if (!SubstitutionLevelSupport.qualifiesForSubstitutionLevel(sc, aPC, level)) { continue; } @@ -4130,7 +4131,7 @@ { SubstitutionClass sc = (SubstitutionClass) selected; setSubstitutionClassKey(sc.getKeyName(), aLevel); - sc.applyLevelArrayModsToLevel(this, aLevel, aPC); + SubstitutionLevelSupport.applyLevelArrayModsToLevel(sc, this, aLevel, aPC); return; } else Modified: Trunk/pcgen/code/src/java/pcgen/core/PCTemplate.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCTemplate.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/PCTemplate.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -63,34 +63,10 @@ public float getCR(final int level, final int hitdice) { float localCR = getSafe(ObjectKey.CR_MODIFIER).floatValue(); - - for (PCTemplate rlt : getSafeListFor(ListKey.REPEATLEVEL_TEMPLATES)) + for (PCTemplate pct : getConditionalTemplates(level, hitdice)) { - for (PCTemplate lt : rlt.getSafeListFor(ListKey.LEVEL_TEMPLATES)) - { - if (lt.get(IntegerKey.LEVEL) <= level) - { - localCR += lt.getSafe(ObjectKey.CR_MODIFIER).floatValue(); - } - } + localCR += pct.getSafe(ObjectKey.CR_MODIFIER).floatValue(); } - - for (PCTemplate lt : getSafeListFor(ListKey.LEVEL_TEMPLATES)) - { - if (lt.get(IntegerKey.LEVEL) <= level) - { - localCR += lt.getSafe(ObjectKey.CR_MODIFIER).floatValue(); - } - } - - for (PCTemplate lt : getSafeListFor(ListKey.HD_TEMPLATES)) - { - if (lt.get(IntegerKey.HD_MAX) <= hitdice - && lt.get(IntegerKey.HD_MIN) >= hitdice) - { - localCR += lt.getSafe(ObjectKey.CR_MODIFIER).floatValue(); - } - } return localCR; } @@ -110,7 +86,7 @@ txt.append("\t"); if ((getChooseLanguageAutos() != null) - && (getChooseLanguageAutos().length() > 0)) + && (getChooseLanguageAutos().length() > 0)) { txt.append("\tCHOOSE:LANGAUTO:").append(getChooseLanguageAutos()); } @@ -188,7 +164,7 @@ boolean result = false; if ((getSafe(ObjectKey.VISIBILITY) == Visibility.DEFAULT) - || (getSafe(ObjectKey.VISIBILITY) == Visibility.DISPLAY_ONLY)) + || (getSafe(ObjectKey.VISIBILITY) == Visibility.DISPLAY_ONLY)) { result = getSafe(ObjectKey.REMOVABLE); } @@ -196,7 +172,6 @@ return result; } - /** * Make a copy of this Template * @@ -226,40 +201,14 @@ */ @Override public List<SpecialAbility> addSpecialAbilitiesToList( - final List<SpecialAbility> aList, PlayerCharacter pc) + final List<SpecialAbility> aList, PlayerCharacter pc) { super.addSpecialAbilitiesToList(aList, pc); - - int level = pc.getTotalLevels(); - for (PCTemplate rlt : getSafeListFor(ListKey.REPEATLEVEL_TEMPLATES)) + for (PCTemplate pct : getConditionalTemplates(pc.getTotalLevels(), pc + .totalHitDice())) { - for (PCTemplate lt : rlt.getSafeListFor(ListKey.LEVEL_TEMPLATES)) - { - if (lt.get(IntegerKey.LEVEL) <= level) - { - lt.addSpecialAbilitiesToList(aList, pc); - } - } + pct.addSpecialAbilitiesToList(aList, pc); } - - for (PCTemplate lt : getSafeListFor(ListKey.LEVEL_TEMPLATES)) - { - if (lt.get(IntegerKey.LEVEL) <= level) - { - lt.addSpecialAbilitiesToList(aList, pc); - } - } - - int hitdice = pc.totalHitDice(); - for (PCTemplate lt : getSafeListFor(ListKey.HD_TEMPLATES)) - { - if (lt.get(IntegerKey.HD_MAX) <= hitdice - && lt.get(IntegerKey.HD_MIN) >= hitdice) - { - lt.addSpecialAbilitiesToList(aList, pc); - } - } - return aList; } @@ -279,16 +228,18 @@ return new Point2D.Double(width.doubleValue(), height.doubleValue()); } - public void getConditionalTemplates(int totalLevels, int totalHitDice, - List<? super PCTemplate> list) + public List<PCTemplate> getConditionalTemplates(int totalLevels, + int totalHitDice) { + List<PCTemplate> returnList = new ArrayList<PCTemplate>(); + for (PCTemplate rlt : getSafeListFor(ListKey.REPEATLEVEL_TEMPLATES)) { for (PCTemplate lt : rlt.getSafeListFor(ListKey.LEVEL_TEMPLATES)) { if (lt.get(IntegerKey.LEVEL) <= totalLevels) { - list.add(lt); + returnList.add(lt); } } } @@ -297,24 +248,32 @@ { if (lt.get(IntegerKey.LEVEL) <= totalLevels) { - list.add(lt); + returnList.add(lt); } } for (PCTemplate lt : getSafeListFor(ListKey.HD_TEMPLATES)) { if (lt.get(IntegerKey.HD_MAX) <= totalHitDice - && lt.get(IntegerKey.HD_MIN) >= totalHitDice) + && lt.get(IntegerKey.HD_MIN) >= totalHitDice) { - list.add(lt); + returnList.add(lt); } } + return returnList; } @Override public List<BonusObj> getRawBonusList(PlayerCharacter pc) { List<BonusObj> list = new ArrayList<BonusObj>(super.getRawBonusList(pc)); + /* + * TODO Does this require a test of getTotalLevels() totalHitDice() on + * the PC? + * + * for (PCTemplate pct : getConditionalTemplates(pc.getTotalLevels(), + * pc.totalHitDice())) { list.addAll(pct.getRawBonusList(pc); } + */ for (PCTemplate rlt : getSafeListFor(ListKey.REPEATLEVEL_TEMPLATES)) { for (PCTemplate lt : rlt.getSafeListFor(ListKey.LEVEL_TEMPLATES)) @@ -332,14 +291,14 @@ { list.addAll(lt.getRawBonusList(pc)); } - + // end potential TO-DO change return list; } - + @Override public PObject getActiveEquivalent(PlayerCharacter pc) { return pc.getTemplateKeyed(getKeyName()); } - + } Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -92,6 +92,7 @@ import pcgen.cdom.reference.CDOMSingleRef; import pcgen.core.Ability.Nature; import pcgen.core.analysis.DomainApplication; +import pcgen.core.analysis.RaceAlignment; import pcgen.core.analysis.RaceStat; import pcgen.core.analysis.SkillRankControl; import pcgen.core.analysis.SpecialAbilityResolution; @@ -4648,7 +4649,7 @@ // 0 = LG, 3 = NG, 6 = CG // 1 = LN, 4 = TN, 7 = CN // 2 = LE, 5 = NE, 8 = CE - if (bForce || this.race.canBeAlignment(Integer.toString(index))) + if (bForce || RaceAlignment.canBeAlignment(this.race, Integer.toString(index))) { alignment = index; } @@ -12473,7 +12474,7 @@ int totalHitDice = totalHitDice(); for (PCTemplate templ : getTemplateList()) { - templ.getConditionalTemplates(totalLevels, totalHitDice, list); + list.addAll(templ.getConditionalTemplates(totalLevels, totalHitDice)); } return list; } Modified: Trunk/pcgen/code/src/java/pcgen/core/Race.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Race.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/Race.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -31,7 +31,6 @@ import pcgen.cdom.enumeration.FormulaKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; -import pcgen.core.prereq.Prerequisite; import pcgen.core.utils.MessageType; import pcgen.core.utils.ShowMessageDelegate; @@ -140,46 +139,6 @@ return getKeyName().hashCode(); } - boolean canBeAlignment(final String aString) - { - if (hasPrerequisites()) - { - for (Prerequisite prereq : getPrerequisiteList()) - { - if ("ALIGN".equalsIgnoreCase(prereq.getKind())) - { - String alignStr = aString; - final String[] aligns = - SettingsHandler.getGame().getAlignmentListStrings( - false); - try - { - final int align = Integer.parseInt(alignStr); - alignStr = aligns[align]; - } - catch (NumberFormatException ex) - { - // Do Nothing - } - String desiredAlignment = prereq.getKey(); - try - { - final int align = Integer.parseInt(desiredAlignment); - desiredAlignment = aligns[align]; - } - catch (NumberFormatException ex) - { - // Do Nothing - } - - return desiredAlignment.equalsIgnoreCase(alignStr); - } - } - } - - return true; - } - int maxHitDiceAdvancement() { List<Integer> hda = getListFor(ListKey.HITDICE_ADVANCEMENT); Modified: Trunk/pcgen/code/src/java/pcgen/core/SubClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SubClass.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/SubClass.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -112,22 +112,20 @@ return displayInfo.toString(); } - private Category<SubClass> category; - public Category<SubClass> getCDOMCategory() { - return category; + return get(ObjectKey.SUBCLASS_CATEGORY); } public void setCDOMCategory(Category<SubClass> cat) { - category = cat; + put(ObjectKey.SUBCLASS_CATEGORY, cat); } @Override public String getFullKey() { - return category.toString() + "." + super.getFullKey(); + return getCDOMCategory() + "." + super.getFullKey(); } Modified: Trunk/pcgen/code/src/java/pcgen/core/SubstitutionClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SubstitutionClass.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/SubstitutionClass.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -22,19 +22,9 @@ */ package pcgen.core; -import java.util.ArrayList; -import java.util.List; - -import pcgen.cdom.enumeration.ListKey; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.lst.CampaignSourceEntry; -import pcgen.persistence.lst.PCClassLoader; -import pcgen.persistence.lst.utils.DeferredLine; -import pcgen.util.Logging; - /** * <code>SubClass</code>. - * + * * @author Bryan McRoberts <mer...@us...> * @version $Revision: 254 $ */ @@ -44,113 +34,4 @@ public SubstitutionClass() { } - - /** - * Apply the level mods to a class - * @param aClass - */ - public void applyLevelArrayModsToLevel(final PCClass aClass, final int aLevel, final PlayerCharacter aPC) - { - List<DeferredLine> levelArray = getListFor(ListKey.SUB_CLASS_LEVEL); - if (levelArray == null) - { - return; - } - - List<DeferredLine> newLevels = new ArrayList<DeferredLine>(); - for (DeferredLine line : levelArray) - { - String aLine = line.lstLine; - final int modLevel = Integer.parseInt(aLine.substring(0, aLine - .indexOf("\t"))); - - if (aLevel == modLevel) - { - if (levelArrayQualifies(aPC, aLine, line.source)) - { - newLevels.add(line); - } - } - } - - // find all qualifying level lines for this level - // and put into newLevels list. - if (!newLevels.isEmpty()) - { - // remove all stuff from the original level - aClass.stealClassLevel(this, aLevel); - aClass.removeAllBonuses(aLevel); - aClass.removeAllAutoAbilites(aLevel); - aClass.removeAllVirtualAbilites(aLevel); - aClass.removeAllLevelAbilities(aLevel); - // Now add in each new level line in turn. - for (DeferredLine line : newLevels) - { - aClass.performReallyBadHackForOldTokens(line); - } - } - } - - /** - * Get the level mods for a specific level - * - * @param aClass - */ - public boolean hasLevelArrayModsForLevel(final int aLevel) - { - return hasClassLevel(aLevel); - } - - public boolean qualifiesForSubstitutionLevel(PlayerCharacter pc, int level) - { - List<DeferredLine> levelArray = getListFor(ListKey.SUB_CLASS_LEVEL); - if (levelArray == null) - { - return false; - } - - for (DeferredLine line : levelArray) - { - String aLine = line.lstLine; - final int modLevel = Integer.parseInt(aLine.substring(0, aLine - .indexOf("\t"))); - - if (level == modLevel) - { - if (!levelArrayQualifies(pc, aLine, line.source)) - { - return false; - } - } - } - - return true; - } - - /** - * @param pc - * @param aLine - * @param tempSource - * @return - */ - private boolean levelArrayQualifies(final PlayerCharacter pc, final String aLine, - final CampaignSourceEntry tempSource) - { - final PCClassLoader classLoader = new PCClassLoader(); - PCClass dummyClass = new PCClass(); - - try - { - classLoader.parseLine(Globals.getContext(), dummyClass, aLine, tempSource); - } - catch (PersistenceLayerException e) - { - Logging - .errorPrint("Unable to parse line from levelArray: " + aLine); - } - return dummyClass.qualifies(pc); - } - - - } Added: Trunk/pcgen/code/src/java/pcgen/core/analysis/RaceAlignment.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/RaceAlignment.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/RaceAlignment.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -0,0 +1,50 @@ +package pcgen.core.analysis; + +import pcgen.core.Race; +import pcgen.core.SettingsHandler; +import pcgen.core.prereq.Prerequisite; + +public class RaceAlignment +{ + + public static boolean canBeAlignment(Race r, final String aString) + { + if (r.hasPrerequisites()) + { + for (Prerequisite prereq : r.getPrerequisiteList()) + { + if ("ALIGN".equalsIgnoreCase(prereq.getKind())) + { + String alignStr = aString; + final String[] aligns = + SettingsHandler.getGame().getAlignmentListStrings( + false); + try + { + final int align = Integer.parseInt(alignStr); + alignStr = aligns[align]; + } + catch (NumberFormatException ex) + { + // Do Nothing + } + String desiredAlignment = prereq.getKey(); + try + { + final int align = Integer.parseInt(desiredAlignment); + desiredAlignment = aligns[align]; + } + catch (NumberFormatException ex) + { + // Do Nothing + } + + return desiredAlignment.equalsIgnoreCase(alignStr); + } + } + } + + return true; + } + +} Added: Trunk/pcgen/code/src/java/pcgen/core/analysis/SubstitutionLevelSupport.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/SubstitutionLevelSupport.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/SubstitutionLevelSupport.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -0,0 +1,110 @@ +package pcgen.core.analysis; + +import java.util.ArrayList; +import java.util.List; + +import pcgen.cdom.enumeration.ListKey; +import pcgen.core.Globals; +import pcgen.core.PCClass; +import pcgen.core.PlayerCharacter; +import pcgen.core.SubstitutionClass; +import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.lst.CampaignSourceEntry; +import pcgen.persistence.lst.PCClassLoader; +import pcgen.persistence.lst.utils.DeferredLine; +import pcgen.util.Logging; + +public class SubstitutionLevelSupport +{ + + public static boolean levelArrayQualifies(final PlayerCharacter pc, final String aLine, + final CampaignSourceEntry tempSource) + { + final PCClassLoader classLoader = new PCClassLoader(); + PCClass dummyClass = new PCClass(); + + try + { + classLoader.parseLine(Globals.getContext(), dummyClass, aLine, tempSource); + } + catch (PersistenceLayerException e) + { + Logging + .errorPrint("Unable to parse line from levelArray: " + aLine); + } + return dummyClass.qualifies(pc); + } + + /** + * Apply the level mods to a class + * @param aClass + */ + public static void applyLevelArrayModsToLevel(SubstitutionClass sc, final PCClass aClass, final int aLevel, final PlayerCharacter aPC) + { + List<DeferredLine> levelArray = sc.getListFor(ListKey.SUB_CLASS_LEVEL); + if (levelArray == null) + { + return; + } + + List<DeferredLine> newLevels = new ArrayList<DeferredLine>(); + for (DeferredLine line : levelArray) + { + String aLine = line.lstLine; + final int modLevel = Integer.parseInt(aLine.substring(0, aLine + .indexOf("\t"))); + + if (aLevel == modLevel) + { + if (levelArrayQualifies(aPC, aLine, line.source)) + { + newLevels.add(line); + } + } + } + + // find all qualifying level lines for this level + // and put into newLevels list. + if (!newLevels.isEmpty()) + { + // remove all stuff from the original level + aClass.stealClassLevel(sc, aLevel); + aClass.removeAllBonuses(aLevel); + aClass.removeAllAutoAbilites(aLevel); + aClass.removeAllVirtualAbilites(aLevel); + aClass.removeAllLevelAbilities(aLevel); + // Now add in each new level line in turn. + for (DeferredLine line : newLevels) + { + aClass.performReallyBadHackForOldTokens(line); + } + } + } + + public static boolean qualifiesForSubstitutionLevel(SubstitutionClass sc, PlayerCharacter pc, int level) + { + List<DeferredLine> levelArray = sc.getListFor(ListKey.SUB_CLASS_LEVEL); + if (levelArray == null) + { + return false; + } + + for (DeferredLine line : levelArray) + { + String aLine = line.lstLine; + final int modLevel = Integer.parseInt(aLine.substring(0, aLine + .indexOf("\t"))); + + if (level == modLevel) + { + if (!levelArrayQualifies(pc, aLine, line.source)) + { + return false; + } + } + } + + return true; + } + +} Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -69,7 +69,7 @@ int totalHitDice = aPC.totalHitDice(); List<PCTemplate> templList = new ArrayList<PCTemplate>(); templList.add(pct); - pct.getConditionalTemplates(totalLevels, totalHitDice, templList); + templList.addAll(pct.getConditionalTemplates(totalLevels, totalHitDice)); for (PCTemplate subt : templList) { List<DamageReduction> tList = subt Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -77,6 +77,7 @@ import pcgen.core.WeaponProf; import pcgen.core.analysis.DomainApplication; import pcgen.core.analysis.SkillRankControl; +import pcgen.core.analysis.SubstitutionLevelSupport; import pcgen.core.bonus.Bonus; import pcgen.core.bonus.BonusObj; import pcgen.core.character.CharacterSpell; @@ -1591,7 +1592,7 @@ } aPCClass.setSubstitutionClassKey(substitutionClassKeyName, level); - aSubstitutionClass.applyLevelArrayModsToLevel(aPCClass, level, thePC); + SubstitutionLevelSupport.applyLevelArrayModsToLevel(aSubstitutionClass, aPCClass, level, thePC); } else if (TAG_HITPOINTS.equals(tag)) { Modified: Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java 2008-10-15 21:56:40 UTC (rev 8088) +++ Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java 2008-10-16 00:08:23 UTC (rev 8089) @@ -229,7 +229,7 @@ template.addSpecialAbilitiesToList(saList, pc); SpecialAbilityResolution.addSABToList(saList, pc, template); List<PCTemplate> subList = new ArrayList<PCTemplate>(); - template.getConditionalTemplates(pc.getTotalLevels(), pc.totalHitDice(), subList); + subList.addAll(template.getConditionalTemplates(pc.getTotalLevels(), pc.totalHitDice())); for (PCTemplate subt : subList) { SpecialAbilityResolution.addSABToList(saList, pc, subt); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2008-10-19 02:27:14
|
Revision: 8132 http://pcgen.svn.sourceforge.net/pcgen/?rev=8132&view=rev Author: jdempsey Date: 2008-10-19 02:27:08 +0000 (Sun, 19 Oct 2008) Log Message: ----------- Improve error reporting of LEVEL and associated tags from Level.lst Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LevelLoader.java Trunk/pcgen/code/src/java/plugin/lsttokens/level/LevelToken.java Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LevelLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LevelLoader.java 2008-10-19 00:42:10 UTC (rev 8131) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LevelLoader.java 2008-10-19 02:27:08 UTC (rev 8132) @@ -123,9 +123,8 @@ source, value); if (!token.parse(levelInfo, value)) { - Logging.errorPrint("Error parsing ability " - + levelInfo.getLevelString() + ':' + "level.lst" + ':' - + colString + "\""); + Logging.errorPrint("LevelLoader got invalid " + key + " value of '" + value + "' in '" + + inputLine + "' at line " + lineNum + " of " + source + ". Token ignored."); } } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/level/LevelToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/level/LevelToken.java 2008-10-19 00:42:10 UTC (rev 8131) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/level/LevelToken.java 2008-10-19 02:27:08 UTC (rev 8132) @@ -27,22 +27,48 @@ import pcgen.core.LevelInfo; import pcgen.persistence.lst.LevelLstToken; +import pcgen.util.Logging; /** - * <code>LevelToken</code> + * <code>LevelToken</code> parses the LEVEL tag for the game mode + * file level.lst. * + * + * Last Editor: $Author$ + * Last Edited: $Date$ + * * @author Devon Jones <sou...@ev...> + * @version $Revision$ */ public class LevelToken implements LevelLstToken { + /* (non-Javadoc) + * @see pcgen.persistence.lst.LstToken#getTokenName() + */ public String getTokenName() { return "LEVEL"; } + /* (non-Javadoc) + * @see pcgen.persistence.lst.LevelLstToken#parse(pcgen.core.LevelInfo, java.lang.String) + */ public boolean parse(LevelInfo levelInfo, String value) { + if (!value.equals("LEVEL")) + { + try + { + Integer.parseInt(value); + } + catch (NumberFormatException e) + { + Logging.errorPrint("Invalid " + getTokenName() + " value: '" + + value + "'. Value must be either LEVEL or a number."); + return false; + } + } levelInfo.setLevelString(value); return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-10-25 01:20:31
|
Revision: 8200 http://pcgen.svn.sourceforge.net/pcgen/?rev=8200&view=rev Author: thpr Date: 2008-10-25 01:20:28 +0000 (Sat, 25 Oct 2008) Log Message: ----------- MODIFY*CHOICE token updates Deprecates MODIFYABILITYCHOICE per _experimental 11891 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java Trunk/pcgen/code/src/java/pcgen/core/Ability.java Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java Removed Paths: ------------- Trunk/pcgen/code/src/java/pcgen/core/analysis/ChoiceModification.java Added: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -0,0 +1,64 @@ +/* + * Copyright 2008 (C) Tom Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package pcgen.cdom.choiceset; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import pcgen.cdom.base.PrimitiveChoiceSet; +import pcgen.cdom.enumeration.ObjectKey; +import pcgen.core.Ability; +import pcgen.core.PlayerCharacter; + +public class ModifyChoiceDecorator implements PrimitiveChoiceSet<Ability> +{ + + private final PrimitiveChoiceSet<Ability> set; + + public <U> ModifyChoiceDecorator(PrimitiveChoiceSet<Ability> underlyingSet) + { + set = underlyingSet; + } + + public Class<? super Ability> getChoiceClass() + { + return set.getChoiceClass(); + } + + public String getLSTformat() + { + return set.getLSTformat(); + } + + public Set<Ability> getSet(PlayerCharacter pc) + { + Set<Ability> ab = set.getSet(pc); + List<Ability> pcfeats = pc.aggregateFeatList(); + Set<Ability> returnSet = new HashSet<Ability>(); + for (Ability a : pcfeats) + { + if (a.getSafe(ObjectKey.MULTIPLE_ALLOWED) && ab.contains(a)) + { + returnSet.add(a); + } + } + return returnSet; + } + +} Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-10-25 00:43:54 UTC (rev 8199) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -226,6 +226,8 @@ public static final ObjectKey<SpellProhibitor> CHOICE = new ObjectKey<SpellProhibitor>(null); + public static final ObjectKey<TransitionChoice<Ability>> MODIFY_CHOICE = new ObjectKey<TransitionChoice<Ability>>(null); + public static final ObjectKey<Boolean> CONTAINER_CONSTANT_WEIGHT = new ObjectKey<Boolean>(Boolean.FALSE); public static final ObjectKey<BigDecimal> CONTAINER_WEIGHT_CAPACITY = new ObjectKey<BigDecimal>(null); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java 2008-10-25 00:43:54 UTC (rev 8199) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -36,7 +36,7 @@ NAME, KEY_NAME, WORSHIPPERS, TITLE, HOLY_ITEM, MASTER_HP_FORMULA, MASTER_CHECK_FORMULA, MASTER_BAB_FORMULA, BIRTHPLACE, BIRTHDAY, CATEGORY, BOOK_TYPE, CHOICE_STRING, DESTINATION, PAGE_USAGE, MINDEVVER, MINVER, BIO, DESCRIPTION, GENRE, HELP, APPEARANCE, CATCH_PHRASE, - OUTPUT_NAME, INFO_TEXT, CHOICE_TO_MODIFY, PUB_NAME_LONG, COST, PUB_NAME_SHORT, + OUTPUT_NAME, INFO_TEXT, PUB_NAME_LONG, COST, PUB_NAME_SHORT, CURRENT_EQUIP_SET_NAME, REGION, PUB_NAME_WEB, SETTING, TEMP_DESCRIPTION, TRAIT2, TRAIT1, SKIN_COLOR, HAIR_COLOR, SUB_REGION, SPEECH_TENDENCY, PHOBIAS, INTERESTS, RESIDENCE, SPELLBOOK_AUTO_ADD_KNOWN, PLAYERS_NAME, HANDED, HAIR_STYLE, PORTRAIT_PATH, EYE_COLOR, LOCATION, Modified: Trunk/pcgen/code/src/java/pcgen/core/Ability.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Ability.java 2008-10-25 00:43:54 UTC (rev 8199) +++ Trunk/pcgen/code/src/java/pcgen/core/Ability.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -170,14 +170,7 @@ final StringBuffer txt = new StringBuffer(200); txt.append(getDisplayName()); txt.append("\tCATEGORY:").append(getCategory()); - - if (getChoiceToModify().length() != 0) - { - txt.append("\tMODIFYABILITYCHOICE:").append(getChoiceToModify()); - } - txt.append(super.getPCCText(false)); - return txt.toString(); } @@ -233,29 +226,6 @@ return iCount; } - /** - * Simple setter method for a String representing a choice that must be - * made when applying this ability - * - * @param choiceToModify sets the choice - */ - public void setChoiceToModify(final String choiceToModify) - { - put(StringKey.CHOICE_TO_MODIFY, choiceToModify); - } - - /** - * simple getter method for a string that represents a choice that must - * be made when applying this Ability. - * - * @return The choice to be made. - */ - public String getChoiceToModify() - { - final String characteristic = get(StringKey.CHOICE_TO_MODIFY); - return characteristic == null ? "" : characteristic; - } - /** * Compare an ability (category) to another one * Returns the compare value from String.compareToIgnoreCase Modified: Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java 2008-10-25 00:43:54 UTC (rev 8199) +++ Trunk/pcgen/code/src/java/pcgen/core/AbilityUtilities.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -33,7 +33,6 @@ import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; -import pcgen.core.analysis.ChoiceModification; import pcgen.core.chooser.ChooserUtilities; import pcgen.core.pclevelinfo.PCLevelInfo; import pcgen.core.utils.CoreUtility; @@ -413,7 +412,11 @@ * which doesn't appear to be used anywhere, so this code is totally * redundant. */ - ChoiceModification.modifyChoice(aPC, ability); + TransitionChoice<Ability> mc = ability.get(ObjectKey.MODIFY_CHOICE); + if (mc != null) + { + mc.act(mc.driveChoice(aPC), aPC); + } if (addIt) { Deleted: Trunk/pcgen/code/src/java/pcgen/core/analysis/ChoiceModification.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/ChoiceModification.java 2008-10-25 00:43:54 UTC (rev 8199) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/ChoiceModification.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -1,190 +0,0 @@ -/* - * Copyright 2008 (C) Tom Parker <th...@us...> - * Derived from Ability.java - * Copyright 2001 (C) Bryan McRoberts <mer...@ya...> - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at your option) - * any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package pcgen.core.analysis; - -import java.util.ArrayList; -import java.util.List; - -import pcgen.cdom.enumeration.ObjectKey; -import pcgen.core.Ability; -import pcgen.core.Globals; -import pcgen.core.PObject; -import pcgen.core.PlayerCharacter; -import pcgen.core.SettingsHandler; -import pcgen.core.chooser.ChooserUtilities; -import pcgen.util.Logging; -import pcgen.util.chooser.ChooserFactory; -import pcgen.util.chooser.ChooserInterface; -import pcgen.util.enumeration.Tab; - -public class ChoiceModification -{ - /** - * Modify the Ability as per the info from this.getChoiceToModify() and the - * choices made by the user in the GUI. - * - * @param aPC The Player Character object this Ability belongs to. - * - * @return whether we modified the Ability - */ - public static boolean modifyChoice(PlayerCharacter aPC, Ability a) - { - String abilityName = a.getChoiceToModify(); - - if (abilityName.length() == 0) - { - return false; - } - - final List<String> abilityList = new ArrayList<String>(); - final List<String> selectedList = new ArrayList<String>(); - - if (abilityName.startsWith("TYPE=") || abilityName.startsWith("TYPE.")) - { - final String anAbilityType = abilityName.substring(5); - - // - // Get a list of all ability possessed by the character that - // are the specified type - // - for ( final PObject ability : aPC.aggregateFeatList() ) - { - if (ability.isType(anAbilityType)) - { - abilityList.add(ability.getKeyName()); - } - } - - // - // Get the user to select one if there is more than 1. - // - switch (abilityList.size()) - { - case 0: - Logging.debugPrint("PC does not have an ability of type: " - + anAbilityType); - return false; // no ability to modify - - case 1: - abilityName = abilityList.get(0); - break; - - default: - - final ChooserInterface chooser = ChooserFactory.getChooserInstance(); - chooser.setPoolFlag(false); // user is not required to make any - - // changes - chooser.setTotalChoicesAvail(1); - - chooser.setTitle("Select a " - + SettingsHandler.getGame().getSingularTabName(Tab.ABILITIES) - + " to modify"); - - Globals.sortChooserLists(abilityList, selectedList); - chooser.setAvailableList(abilityList); - chooser.setSelectedList(selectedList); - chooser.setVisible(true); - - final int selectedSize = chooser.getSelectedList().size(); - - if (selectedSize == 0) - { - return false; // no ability chosen, so nothing was modified - } - - abilityName = (String) chooser.getSelectedList().get(0); - - break; - } - } - - final Ability anAbility = aPC.getFeatNamed(abilityName); - - if (anAbility == null) - { - Logging.debugPrint("PC does not have ability: " + abilityName); - - return false; - } - - // - // Ability doesn't allow choices, so we cannot modify - // - if (!anAbility.getSafe(ObjectKey.MULTIPLE_ALLOWED)) - { - Logging.debugPrint("MULT:NO for: " + abilityName); - - return false; - } - - // build a list of available choices and choices already made. - ChooserUtilities.modChoices( - anAbility, - abilityList, - selectedList, - false, - aPC, - true, - SettingsHandler.getGame().getAbilityCategory(a.getCategory())); - - final int currentSelections = selectedList.size(); - - // - // If nothing to choose, or nothing selected, then leave - // - if ((abilityList.size() == 0) || (currentSelections == 0)) - { - return false; - } - - final ChooserInterface chooser = ChooserFactory.getChooserInstance(); - chooser.setPoolFlag(true); // user is required to use all available - // pool points - chooser.setTotalChoicesAvail(selectedList.size()); // need to remove 1 to add another - - chooser.setTitle("Modify selections for " + abilityName); - Globals.sortChooserLists(abilityList, selectedList); - chooser.setAvailableList(abilityList); - chooser.setSelectedList(selectedList); - chooser.setVisible(true); - - final int selectedSize = chooser.getSelectedList().size(); - - if (selectedSize != currentSelections) - { - return false; // need to have the same number of selections when finished - } - - // replace old selection(s) with new and update bonuses - // - aPC.removeAllAssociations(anAbility); - - for (int i = 0; i < selectedSize; ++i) - { - aPC.addAssociation(anAbility, (String) chooser.getSelectedList().get(i)); - } - - // aPC.calcActiveBonuses(); - return true; - } - - -} Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java 2008-10-25 00:43:54 UTC (rev 8199) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -1,22 +1,156 @@ package plugin.lsttokens.ability; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +import pcgen.base.formula.Formula; +import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.ChoiceActor; +import pcgen.cdom.base.ChoiceSet; +import pcgen.cdom.base.Constants; +import pcgen.cdom.base.TransitionChoice; +import pcgen.cdom.choiceset.ModifyChoiceDecorator; +import pcgen.cdom.choiceset.ReferenceChoiceSet; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Ability; -import pcgen.persistence.lst.AbilityLstToken; +import pcgen.core.AbilityCategory; +import pcgen.core.Globals; +import pcgen.core.PObject; +import pcgen.core.PlayerCharacter; +import pcgen.core.SettingsHandler; +import pcgen.core.chooser.ChooserUtilities; +import pcgen.persistence.lst.DeprecatedToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.TokenUtilities; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.chooser.ChooserFactory; +import pcgen.util.chooser.ChooserInterface; +import pcgen.util.enumeration.Tab; /** * Deals with the MODIFYABILITYCHOICE token */ -public class ModifyabilitychoiceToken implements AbilityLstToken +public class ModifyabilitychoiceToken extends AbstractToken implements + CDOMPrimaryToken<Ability>, ChoiceActor<Ability>, DeprecatedToken { + public static final Class<Ability> ABILITY_CLASS = Ability.class; + + @Override public String getTokenName() { return "MODIFYABILITYCHOICE"; } - public boolean parse(Ability ability, String value) + public boolean parse(LoadContext context, Ability obj, String value) { - ability.setChoiceToModify(value); + if (isEmpty(value) || hasIllegalSeparator('|', value)) + { + return false; + } + + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); + + AbilityCategory category = AbilityCategory.FEAT; + List<CDOMReference<Ability>> refs = new ArrayList<CDOMReference<Ability>>(); + while (tok.hasMoreTokens()) + { + String token = tok.nextToken(); + + CDOMReference<Ability> ability = TokenUtilities.getTypeOrPrimitive( + context, ABILITY_CLASS, category, token); + if (ability == null) + { + return false; + } + + refs.add(ability); + } + + ReferenceChoiceSet<Ability> rcs = new ReferenceChoiceSet<Ability>(refs); + ModifyChoiceDecorator gfd = new ModifyChoiceDecorator(rcs); + ChoiceSet<Ability> cs = new ChoiceSet<Ability>("ADD", gfd); + TransitionChoice<Ability> tc = new TransitionChoice<Ability>(cs, + Formula.ONE); + tc.setTitle("Select a " + + SettingsHandler.getGame().getSingularTabName(Tab.ABILITIES) + + " to modify"); + tc.setRequired(false); + context.getObjectContext().put(obj, ObjectKey.MODIFY_CHOICE, tc); + tc.setChoiceActor(this); + return true; } + + public String[] unparse(LoadContext context, Ability obj) + { + // This is intentional, so as to have this export as MODIFYFEATCHOICE + return null; + } + + public Class<Ability> getTokenClass() + { + return Ability.class; + } + + public void applyChoice(Ability choice, PlayerCharacter pc) + { + final List<String> abilityList = new ArrayList<String>(); + final List<String> selectedList = new ArrayList<String>(); + + // build a list of available choices and choices already made. + ChooserUtilities.modChoices(choice, abilityList, selectedList, false, + pc, true, SettingsHandler.getGame().getAbilityCategory( + choice.getCategory())); + + final int currentSelections = selectedList.size(); + + // + // If nothing to choose, or nothing selected, then leave + // + if ((abilityList.size() == 0) || (currentSelections == 0)) + { + return; + } + + final ChooserInterface chooser = ChooserFactory.getChooserInstance(); + chooser.setPoolFlag(true); // user is required to use all available + // pool points + chooser.setTotalChoicesAvail(selectedList.size()); // need to remove 1 + // to add another + + chooser.setTitle("Modify selections for " + choice); + Globals.sortChooserLists(abilityList, selectedList); + chooser.setAvailableList(abilityList); + chooser.setSelectedList(selectedList); + chooser.setVisible(true); + + final int selectedSize = chooser.getSelectedList().size(); + + if (selectedSize != currentSelections) + { + // need to have the same number of selections when finished + return; + } + + // replace old selection(s) with new and update bonuses + pc.removeAllAssociations(choice); + + for (int i = 0; i < selectedSize; ++i) + { + pc + .addAssociation(choice, (String) chooser.getSelectedList() + .get(i)); + } + } + + public String getMessage(PObject obj, String value) + { + return "You are using MODIFYABILITYCHOICE, " + + "which is a poorly formed token. " + + "Please use MODIFYFEATCHOICE, " + + "as it has the same function"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-10-25 00:43:54 UTC (rev 8199) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-10-25 01:20:28 UTC (rev 8200) @@ -1,22 +1,152 @@ package plugin.lsttokens.ability; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +import pcgen.base.formula.Formula; +import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.ChoiceActor; +import pcgen.cdom.base.ChoiceSet; +import pcgen.cdom.base.Constants; +import pcgen.cdom.base.TransitionChoice; +import pcgen.cdom.choiceset.ModifyChoiceDecorator; +import pcgen.cdom.choiceset.ReferenceChoiceSet; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Ability; -import pcgen.persistence.lst.AbilityLstToken; +import pcgen.core.AbilityCategory; +import pcgen.core.Globals; +import pcgen.core.PlayerCharacter; +import pcgen.core.SettingsHandler; +import pcgen.core.chooser.ChooserUtilities; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.TokenUtilities; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.chooser.ChooserFactory; +import pcgen.util.chooser.ChooserInterface; +import pcgen.util.enumeration.Tab; /** * Deals with the MODIFYFEATCHOICE token */ -public class ModifyfeatchoiceToken implements AbilityLstToken +public class ModifyfeatchoiceToken extends AbstractToken implements + CDOMPrimaryToken<Ability>, ChoiceActor<Ability> { + public static final Class<Ability> ABILITY_CLASS = Ability.class; + + @Override public String getTokenName() { return "MODIFYFEATCHOICE"; } - public boolean parse(Ability ability, String value) + public boolean parse(LoadContext context, Ability obj, String value) { - ability.setChoiceToModify(value); + if (isEmpty(value) || hasIllegalSeparator('|', value)) + { + return false; + } + + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); + + AbilityCategory category = AbilityCategory.FEAT; + List<CDOMReference<Ability>> refs = new ArrayList<CDOMReference<Ability>>(); + while (tok.hasMoreTokens()) + { + String token = tok.nextToken(); + + CDOMReference<Ability> ability = TokenUtilities.getTypeOrPrimitive( + context, ABILITY_CLASS, category, token); + if (ability == null) + { + return false; + } + + refs.add(ability); + } + + ReferenceChoiceSet<Ability> rcs = new ReferenceChoiceSet<Ability>(refs); + ModifyChoiceDecorator gfd = new ModifyChoiceDecorator(rcs); + ChoiceSet<Ability> cs = new ChoiceSet<Ability>("ADD", gfd); + TransitionChoice<Ability> tc = new TransitionChoice<Ability>(cs, + Formula.ONE); + tc.setTitle("Select a " + + SettingsHandler.getGame().getSingularTabName(Tab.ABILITIES) + + " to modify"); + tc.setRequired(false); + context.getObjectContext().put(obj, ObjectKey.MODIFY_CHOICE, tc); + tc.setChoiceActor(this); + return true; } + + public String[] unparse(LoadContext context, Ability obj) + { + TransitionChoice<Ability> mc = context.getObjectContext().getObject( + obj, ObjectKey.MODIFY_CHOICE); + if (mc == null) + { + // Zero indicates no Token + return null; + } + return new String[] { mc.getChoices().getLSTformat() }; + } + + public Class<Ability> getTokenClass() + { + return Ability.class; + } + + public void applyChoice(Ability choice, PlayerCharacter pc) + { + final List<String> abilityList = new ArrayList<String>(); + final List<String> selectedList = new ArrayList<String>(); + + // build a list of available choices and choices already made. + ChooserUtilities.modChoices(choice, abilityList, selectedList, false, + pc, true, SettingsHandler.getGame().getAbilityCategory( + choice.getCategory())); + + final int currentSelections = selectedList.size(); + + // + // If nothing to choose, or nothing selected, then leave + // + if ((abilityList.size() == 0) || (currentSelections == 0)) + { + return; + } + + final ChooserInterface chooser = ChooserFactory.getChooserInstance(); + chooser.setPoolFlag(true); // user is required to use all available + // pool points + chooser.setTotalChoicesAvail(selectedList.size()); // need to remove 1 + // to add another + + chooser.setTitle("Modify selections for " + choice); + Globals.sortChooserLists(abilityList, selectedList); + chooser.setAvailableList(abilityList); + chooser.setSelectedList(selectedList); + chooser.setVisible(true); + + final int selectedSize = chooser.getSelectedList().size(); + + if (selectedSize != currentSelections) + { + // need to have the same number of selections when finished + return; + } + + // replace old selection(s) with new and update bonuses + pc.removeAllAssociations(choice); + + for (int i = 0; i < selectedSize; ++i) + { + pc + .addAssociation(choice, (String) chooser.getSelectedList() + .get(i)); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-10-31 21:19:34
|
Revision: 8283 http://pcgen.svn.sourceforge.net/pcgen/?rev=8283&view=rev Author: thpr Date: 2008-10-31 21:19:24 +0000 (Fri, 31 Oct 2008) Log Message: ----------- PROHIBITED token update Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java Trunk/pcgen/code/src/java/pcgen/core/AssociationSupport.java Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/SpellProhibitor.java Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassAbilityPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java Trunk/pcgen/code/src/java/pcgen/io/ExportHandler.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java Trunk/pcgen/code/src/java/plugin/exporttokens/ProhibitedListToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -33,6 +33,7 @@ import pcgen.cdom.base.CDOMListObject; import pcgen.cdom.list.ClassSkillList; import pcgen.core.Skill; +import pcgen.core.SpellProhibitor; import pcgen.core.bonus.BonusObj; import pcgen.core.spell.Spell; @@ -74,6 +75,9 @@ public static final AssociationListKey<BonusObj> BONUS = new AssociationListKey<BonusObj>(); + public static final AssociationListKey<SpellProhibitor> PROHIBITED_SCHOOLS = + new AssociationListKey<SpellProhibitor>(); + private static CaseInsensitiveMap<AssociationListKey<?>> map = null; private AssociationListKey() Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -237,6 +237,7 @@ public static final ListKey<BonusObj> BONUS = new ListKey<BonusObj>(); public static final ListKey<String> UNARMED_DAMAGE = new ListKey<String>(); public static final ListKey<Capacity> CAPACITY = new ListKey<Capacity>(); + public static final ListKey<SpellProhibitor> PROHIBITED_SPELLS = new ListKey<SpellProhibitor>(); private static CaseInsensitiveMap<ListKey<?>> map = null; Modified: Trunk/pcgen/code/src/java/pcgen/core/AssociationSupport.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/AssociationSupport.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/core/AssociationSupport.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -108,4 +108,9 @@ oldTarget, secKey)); } } + + public boolean containsAssocList(Object o, AssociationListKey<?> alk) + { + return assocMTL.containsListFor(o, alk); + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -93,6 +93,7 @@ import pcgen.util.chooser.ChooserFactory; import pcgen.util.chooser.ChooserInterface; import pcgen.util.enumeration.AttackType; +import pcgen.util.enumeration.ProhibitedSpellType; /** * <code>PCClass</code>. @@ -175,17 +176,6 @@ private RaceType preRaceType = null; /* - * FINALALLCLASSLEVELS Because this indicates prohibited Spell Schools and Spells - * Known and Cast are granted by each PCClassLevel, this must be passed into - * each and every PCClassLevel (though it can be given in its pure form). - */ - /* - * TYPESAFETY Since this is storing Spell Schools/SubSchools, this should - * be type safe - */ - private List<String> prohibitedSchools = null; - - /* * ALLCLASSLEVELS This goes into each PCClassLevel from PCClass in order to * store what the sublevel actually is. This is NOT set by a tag, so it is * PCCLASSLEVELONLY @@ -856,42 +846,6 @@ } /* - * FINALPCCLASSANDLEVEL This is required in PCClassLevel and PCClass because it - * is a Tag - */ - public final boolean addProhibitedSchool(String school) - { - if (prohibitedSchools == null) - { - prohibitedSchools = new ArrayList<String>(); - } - boolean addedSchool = false; - if (!prohibitedSchools.contains(school)) - { - addedSchool = prohibitedSchools.add(school); - } - return addedSchool; - } - - /* - * FINALPCCLASSONLY This is required in PCClass because it is used in - * construction of PCClassLevel... (or is it required there too??) - */ - public final void clearProhibitedSchools() - { - prohibitedSchools = null; - } - - /* - * FINALPCCLASSANDLEVEL This is required in PCClassLevel and should be present in - * PCClass for PCClassLevel creation (in the factory) - */ - public final List<String> getProhibitedSchools() - { - return prohibitedSchools; - } - - /* * PCCLASSLEVELONLY This is an active level calculation, and is therefore * only appropriate in the PCClassLevel that has the particular Hit Die for * which the calculation is required. @@ -1890,12 +1844,6 @@ pccTxt.append("CLASS:").append(getDisplayName()); pccTxt.append(super.getPCCText(false)); - if (prohibitedSchools != null) - { - pccTxt.append('\t').append("PROHIBITED:"); - pccTxt.append(StringUtil.join(prohibitedSchools, ",")); - } - // now all the level-based stuff final String lineSep = System.getProperty("line.separator"); @@ -2237,11 +2185,6 @@ { aClass = (PCClass) super.clone(); - if (prohibitedSchools != null) - { - aClass.prohibitedSchools = - new ArrayList<String>(prohibitedSchools); - } spellCache = null; spellCacheValid = false; // if ( theAutoAbilities != null ) @@ -2769,12 +2712,21 @@ } } - if (prohibitedSchools != null) + for (SpellProhibitor prohibit : getSafeListFor(ListKey.PROHIBITED_SPELLS)) { - for (String school : prohibitedSchools) + if (prohibit.isProhibited(aSpell, aPC)) { - if (aSpell.containsInList(ListKey.SPELL_SCHOOL, school) - || aSpell.containsInList(ListKey.SPELL_SUBSCHOOL, school)) + return true; + } + } + + List<SpellProhibitor> assocList = + aPC.getAssocList(this, AssociationListKey.PROHIBITED_SCHOOLS); + if (assocList != null) + { + for (SpellProhibitor prohibit : assocList) + { + if (prohibit.isProhibited(aSpell, aPC)) { return true; } @@ -3989,7 +3941,7 @@ if (!selectedList.isEmpty() && subselected instanceof SubClass) { - clearProhibitedSchools(); + aPC.removeAllAssocs(this, AssociationListKey.PROHIBITED_SCHOOLS); /* * CONSIDER What happens to this reset during PCClass/PCClassLevel split */ @@ -4062,7 +4014,16 @@ { final List columns = i.next(); sc = (SubClass) columns.get(0); - addProhibitedSchool(sc.getChoice()); + SpellProhibitor prohibSchool = new SpellProhibitor(); + prohibSchool.setType(ProhibitedSpellType.SCHOOL); + prohibSchool.addValue(sc.getChoice()); + SpellProhibitor prohibSubSchool = new SpellProhibitor(); + prohibSubSchool.setType(ProhibitedSpellType.SUBSCHOOL); + prohibSubSchool.addValue(sc.getChoice()); + aPC.addAssoc(this, AssociationListKey.PROHIBITED_SCHOOLS, + prohibSchool); + aPC.addAssoc(this, AssociationListKey.PROHIBITED_SCHOOLS, + prohibSubSchool); } } } Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -18259,4 +18259,9 @@ } } + public boolean containsAssocList(Object o, AssociationListKey<?> alk) + { + return assocSupt.containsAssocList(o, alk); + } + } Modified: Trunk/pcgen/code/src/java/pcgen/core/SpellProhibitor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SpellProhibitor.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/core/SpellProhibitor.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -92,7 +92,6 @@ } int hits = 0; - for (String typeDesc : type.getCheckList(s)) { for (String prohib : valueList) @@ -103,7 +102,6 @@ } } } - return hits == type.getRequiredCount(valueList); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassAbilityPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassAbilityPanel.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassAbilityPanel.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -29,6 +29,8 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import javax.swing.DefaultComboBoxModel; import javax.swing.JCheckBox; @@ -50,6 +52,7 @@ import pcgen.core.PCStat; import pcgen.core.PObject; import pcgen.core.SettingsHandler; +import pcgen.core.SpellProhibitor; import pcgen.core.spell.Spell; import pcgen.gui.utils.JComboBoxEx; import pcgen.persistence.lst.PCClassLstToken; @@ -231,7 +234,13 @@ knownSpells.setText(known[0]); } memorize.setSelected(obj.getSafe(ObjectKey.MEMORIZE_SPELLS)); - prohibited.setText(StringUtil.join(obj.getProhibitedSchools(), ",")); + Set<String> set = new TreeSet<String>(); + for (SpellProhibitor sp : obj + .getSafeListFor(ListKey.PROHIBITED_SPELLS)) + { + set.addAll(sp.getValueList()); + } + prohibited.setText(StringUtil.join(set, ",")); // StringBuffer specKnown = new StringBuffer(); // for (LevelProperty<String> lp : obj.getSpecialtyKnownList()) Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -33,6 +33,8 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import javax.swing.DefaultListSelectionModel; import javax.swing.JComponent; @@ -49,7 +51,9 @@ import pcgen.base.lang.StringUtil; import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.IntegerKey; +import pcgen.cdom.enumeration.ListKey; import pcgen.core.Ability; import pcgen.core.CharacterDomain; import pcgen.core.Domain; @@ -60,6 +64,7 @@ import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.SettingsHandler; +import pcgen.core.SpellProhibitor; import pcgen.core.character.CharacterSpell; import pcgen.core.character.SpellBook; import pcgen.core.character.SpellInfo; @@ -767,11 +772,28 @@ b.appendI18nElement("InfoSpells.school", schoolInfo.toString()); //$NON-NLS-1$ } - if (aClass.getProhibitedSchools() != null) + Set<String> set = new TreeSet<String>(); + for (SpellProhibitor sp : aClass + .getSafeListFor(ListKey.PROHIBITED_SPELLS)) { + set.addAll(sp.getValueList()); + } + + List<SpellProhibitor> prohibList = + pc.getAssocList(aClass, + AssociationListKey.PROHIBITED_SCHOOLS); + if (prohibList != null) + { + for (SpellProhibitor sp : prohibList) + { + set.addAll(sp.getValueList()); + } + } + if (!set.isEmpty()) + { b.appendLineBreak(); b.appendI18nElement("InfoSpells.prohibited.school", //$NON-NLS-1$ - StringUtil.join(aClass.getProhibitedSchools(), ",")); //$NON-NLS-1$ + StringUtil.join(set, ",")); //$NON-NLS-1$ } String bString = aClass.getDefaultSourceString(); Modified: Trunk/pcgen/code/src/java/pcgen/io/ExportHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/ExportHandler.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/io/ExportHandler.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -42,6 +42,8 @@ import java.util.regex.Pattern; import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.AssociationListKey; +import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Equipment; import pcgen.core.Globals; @@ -1768,7 +1770,10 @@ { if (pcClass.getLevel() > 0) { - if (pcClass.getProhibitedSchools() != null) + if (pcClass + .containsListFor(ListKey.PROHIBITED_SPELLS) + || aPC.containsAssocList(pcClass, + AssociationListKey.PROHIBITED_SCHOOLS)) { return 0; } Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -33,7 +33,9 @@ import java.util.Map; import java.util.MissingResourceException; import java.util.ResourceBundle; +import java.util.Set; import java.util.StringTokenizer; +import java.util.TreeSet; import pcgen.base.lang.StringUtil; import pcgen.base.util.FixedStringList; @@ -71,6 +73,7 @@ import pcgen.core.SettingsHandler; import pcgen.core.Skill; import pcgen.core.SpecialAbility; +import pcgen.core.SpellProhibitor; import pcgen.core.WeaponProf; import pcgen.core.analysis.SkillRankControl; import pcgen.core.bonus.BonusObj; @@ -856,14 +859,18 @@ .getCastListForLevel(classLevel), ",")); } - List<String> prohibited = pcClass.getProhibitedSchools(); + Set<String> set = new TreeSet<String>(); + for (SpellProhibitor sp : pcClass + .getSafeListFor(ListKey.PROHIBITED_SPELLS)) + { + set.addAll(sp.getValueList()); + } - if (prohibited != null) + if (!set.isEmpty()) { buffer.append('|'); buffer.append(TAG_PROHIBITED).append(':'); - buffer.append(EntityEncoder.encode(StringUtil.join(prohibited, - ","))); + buffer.append(EntityEncoder.encode(StringUtil.join(set, ","))); } buffer.append(LINE_SEP); Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -1972,11 +1972,8 @@ } else if (TAG_PROHIBITED.equals(tag)) { - PCClassLstToken token = - (PCClassLstToken) TokenStore.inst().getTokenMap( - PCClassLstToken.class).get(TAG_PROHIBITED); - token.parse(aPCClass, EntityEncoder.decode(element.getText()), - -9); + Globals.getContext().unconditionallyProcess(aPCClass, + "PROHIBITED", EntityEncoder.decode(element.getText())); } } Modified: Trunk/pcgen/code/src/java/plugin/exporttokens/ProhibitedListToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/exporttokens/ProhibitedListToken.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/plugin/exporttokens/ProhibitedListToken.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -25,15 +25,19 @@ */ package plugin.exporttokens; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; + import pcgen.base.lang.StringUtil; +import pcgen.cdom.enumeration.AssociationListKey; +import pcgen.cdom.enumeration.ListKey; import pcgen.core.PCClass; import pcgen.core.PlayerCharacter; +import pcgen.core.SpellProhibitor; import pcgen.io.ExportHandler; import pcgen.io.exporttoken.Token; -import java.util.ArrayList; -import java.util.List; - //PROHIBITEDLIST public class ProhibitedListToken extends Token { @@ -71,29 +75,30 @@ jointext = ","; } - List<String> stringList = new ArrayList<String>(); - + Set<String> set = new TreeSet<String>(); for (PCClass pcClass : pc.getClassList()) { if (pcClass.getLevel() > 0) { - if (pcClass.getProhibitedSchools() != null) + for (SpellProhibitor sp : pcClass + .getSafeListFor(ListKey.PROHIBITED_SPELLS)) { - /* - * CONSIDER This was changed from adding - * pcClass.getProhibitedString() directly into stringList, - * which was adding a string which was "," delimited into - * the List, which gets joined by ", " below... SOOOOO, in - * THEORY, it is easier to add the individual items here and - * let the join happen in one step below - but it will - * change some spacing!! I hope this doesn't break anything :) - - * thpr 10/29/06 - */ - stringList.addAll(pcClass.getProhibitedSchools()); + set.addAll(sp.getValueList()); } + + List<SpellProhibitor> prohibList = + pc.getAssocList(pcClass, + AssociationListKey.PROHIBITED_SCHOOLS); + if (prohibList != null) + { + for (SpellProhibitor sp : prohibList) + { + set.addAll(sp.getValueList()); + } + } } } - return StringUtil.join(stringList, jointext); + return StringUtil.join(set, jointext); } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java 2008-10-31 20:18:04 UTC (rev 8282) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java 2008-10-31 21:19:24 UTC (rev 8283) @@ -1,33 +1,83 @@ package plugin.lsttokens.pcclass; +import java.util.Collection; +import java.util.Set; import java.util.StringTokenizer; +import java.util.TreeSet; +import pcgen.base.lang.StringUtil; import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.ListKey; import pcgen.core.PCClass; -import pcgen.persistence.lst.PCClassLstToken; +import pcgen.core.SpellProhibitor; +import pcgen.rules.context.Changes; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.enumeration.ProhibitedSpellType; /** * Class deals with PROHIBITED Token */ -public class ProhibitedToken implements PCClassLstToken +public class ProhibitedToken extends AbstractToken implements + CDOMPrimaryToken<PCClass> { + @Override public String getTokenName() { return "PROHIBITED"; } - public boolean parse(PCClass pcclass, String value, int level) + public boolean parse(LoadContext context, PCClass pcc, String value) { - final StringTokenizer aTok = new StringTokenizer(value, ","); - while (aTok.hasMoreTokens()) + if (isEmpty(value) || hasIllegalSeparator(',', value)) { - String prohibitedSchool = aTok.nextToken(); - if (!prohibitedSchool.equals(Constants.s_NONE)) + return false; + } + StringTokenizer elements = new StringTokenizer(value, Constants.COMMA); + while (elements.hasMoreTokens()) + { + String aValue = elements.nextToken(); + if (!aValue.equalsIgnoreCase("None")) { - pcclass.addProhibitedSchool(prohibitedSchool); + SpellProhibitor prohibSchool = new SpellProhibitor(); + prohibSchool.setType(ProhibitedSpellType.SCHOOL); + prohibSchool.addValue(aValue); + context.getObjectContext().addToList(pcc, + ListKey.PROHIBITED_SPELLS, prohibSchool); + SpellProhibitor prohibSubSchool = new SpellProhibitor(); + prohibSubSchool.setType(ProhibitedSpellType.SUBSCHOOL); + prohibSubSchool.addValue(aValue); + context.getObjectContext().addToList(pcc, + ListKey.PROHIBITED_SPELLS, prohibSubSchool); } } return true; } + + public String[] unparse(LoadContext context, PCClass pcc) + { + Changes<SpellProhibitor> changes = + context.getObjectContext().getListChanges(pcc, + ListKey.PROHIBITED_SPELLS); + Collection<SpellProhibitor> added = changes.getAdded(); + if (added == null || added.isEmpty()) + { + // Zero indicates no Token present + return null; + } + Set<String> set = new TreeSet<String>(); + for (SpellProhibitor sp : added) + { + set.addAll(sp.getValueList()); + } + return new String[]{StringUtil.join(set, Constants.COMMA)}; + } + + public Class<PCClass> getTokenClass() + { + return PCClass.class; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-10-31 21:55:40
|
Revision: 8285 http://pcgen.svn.sourceforge.net/pcgen/?rev=8285&view=rev Author: thpr Date: 2008-10-31 21:55:26 +0000 (Fri, 31 Oct 2008) Log Message: ----------- REGION token rebuild Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Region.java Trunk/pcgen/code/src/java/pcgen/core/CustomData.java Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/PObject.java Trunk/pcgen/code/src/java/pcgen/core/Skill.java Trunk/pcgen/code/src/java/pcgen/gui/LstEditorMain.java Trunk/pcgen/code/src/java/pcgen/gui/editor/AgePanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/AppearancePanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassLevelPanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java Added: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -0,0 +1,153 @@ +/* + * Copyright 2006 (C) Tom Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on October 29, 2006. + * + * Current Ver: $Revision: 1111 $ Last Editor: $Author: boomer70 $ Last Edited: + * $Date: 2006-06-22 21:22:44 -0400 (Thu, 22 Jun 2006) $ + */ +package pcgen.cdom.choiceset; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.TreeSet; + +import pcgen.base.lang.StringUtil; +import pcgen.cdom.base.Constants; +import pcgen.cdom.base.PrimitiveChoiceSet; +import pcgen.core.PlayerCharacter; + +/** + * A SimpleChoiceSet contains Objects + * + * The contents of a SimpleChoiceSet is defined at construction of the + * SimpleChoiceSet. The contents of a SimpleChoiceSet is fixed, and will not + * vary by the PlayerCharacter used to resolve the SimpleChoiceSet. + * + * @param <T> + * The class of object this SimpleChoiceSet contains. + */ +public class SimpleChoiceSet<T extends Comparable<T>> implements PrimitiveChoiceSet<T> +{ + + /** + * The underlying Set of objects in this SimpleChoiceSet + */ + private final Set<T> set; + + /** + * Constructs a new SimpleChoiceSet which contains the Set of objects. + * + * This constructor is reference-semantic, meaning that ownership of the + * Collection provided to this constructor is not transferred. Modification + * of the Collection (after this constructor completes) does not result in + * modifying the SimpleChoiceSet, and the SimpleChoiceSet will not modify + * the given Collection. + * + * @param col + * A Collection of objects contained within the SimpleChoiceSet + * @throws IllegalArgumentException + * if the given Collection is null or empty. + */ + public SimpleChoiceSet(Collection<? extends T> col) + { + super(); + if (col == null) + { + throw new IllegalArgumentException( + "Choice Collection cannot be null"); + } + if (col.isEmpty()) + { + throw new IllegalArgumentException( + "Choice Collection cannot be empty"); + } + set = new HashSet<T>(col); + } + + /** + * Returns a representation of this SimpleChoiceSet, suitable for storing in + * an LST file. + */ + public String getLSTformat() + { + return StringUtil.join(new TreeSet<T>(set), Constants.COMMA); + } + + /** + * The class of object this SimpleChoiceSet contains. + * + * @return The class of object this SimpleChoiceSet contains. + */ + public Class<T> getChoiceClass() + { + return (Class<T>) (set == null ? null : set.iterator().next() + .getClass()); + } + + /** + * Returns a Set containing the Objects which this SimpleChoiceSet contains. + * The contents of a SimpleChoiceSet is fixed, and will not vary by the + * PlayerCharacter used to resolve the SimpleChoiceSet. + * + * This method is reference-semantic, meaning that ownership of the Set + * returned by this method will be transferred to the calling object. + * Modification of the returned Set should not result in modifying the + * SimpleChoiceSet, and modifying the SimpleChoiceSet after the Set is + * returned should not modify the Set. + * + * @return A Set containing the Objects which this SimpleChoiceSet contains. + */ + public Set<T> getSet(PlayerCharacter pc) + { + return new HashSet<T>(set); + } + + /** + * Returns the consistent-with-equals hashCode for this SimpleChoiceSet + * + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() + { + return set.size(); + } + + /** + * Returns true if this SimpleChoiceSet is equal to the given Object. + * Equality is defined as being another SimpleChoiceSet object with equal + * underlying contents. + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) + { + if (o == this) + { + return true; + } + if (o instanceof SimpleChoiceSet) + { + SimpleChoiceSet<?> other = (SimpleChoiceSet<?>) o; + return set.equals(other.set); + } + return false; + } +} Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -242,6 +242,8 @@ public static final ObjectKey<SizeAdjustment> SIZE; + public static final ObjectKey<TransitionChoice<Region>> REGION_CHOICE = new ObjectKey<TransitionChoice<Region>>(null); + /* * TODO Okay, this is a hack. */ Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Region.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Region.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Region.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -30,7 +30,7 @@ * type-safe fashion, so that they can be quickly compared and use less memory * when identical Regions exist in two CDOMObjects. */ -public final class Region implements TypeSafeConstant +public final class Region implements TypeSafeConstant, Comparable<Region> { /** @@ -57,8 +57,7 @@ { if (name == null) { - throw new IllegalArgumentException( - "Name for Region cannot be null"); + throw new IllegalArgumentException("Name for Region cannot be null"); } ordinal = ordinalCount++; fieldName = name; @@ -174,4 +173,9 @@ } } + public int compareTo(Region r0) + { + return fieldName.compareToIgnoreCase(r0.fieldName); + } + } Modified: Trunk/pcgen/code/src/java/pcgen/core/CustomData.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/CustomData.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/core/CustomData.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -475,12 +475,17 @@ { if (race.isType(Constants.s_CUSTOM)) { - String region = race.getRegionString(); + String region; + String[] unp = Globals.getContext().unparse(race, "REGION"); - if (region == null) + if (unp == null) { region = Constants.s_NONE; } + else + { + region = unp[0]; + } final String key = race.getKeyName(); bw.write(Globals.getBioSet().getRacePCCText(region, key)); Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -57,6 +57,7 @@ import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.RaceType; +import pcgen.cdom.enumeration.Region; import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.enumeration.VariableKey; import pcgen.cdom.helper.AttackCycle; @@ -1847,15 +1848,6 @@ // now all the level-based stuff final String lineSep = System.getProperty("line.separator"); - String regionString = getRegionString(); - if ((regionString != null) && !regionString.startsWith("0|")) - { - final int x = regionString.indexOf('|'); - pccTxt.append(lineSep).append(regionString.substring(0, x)).append( - "\tREGION:").append(regionString.substring(x + 1)); - } - - pccTxt.append('\t'); pccTxt.append(StringUtil.joinToStringBuffer(Globals.getContext().unparse( this), "\t")); for (Map.Entry<Integer, PCClassLevel> me : levelMap.entrySet()) @@ -3050,7 +3042,11 @@ { kit.act(kit.driveChoice(aPC), aPC); } - makeRegionSelection(0, aPC); + TransitionChoice<Region> region = get(ObjectKey.REGION_CHOICE); + if (region != null) + { + region.act(region.driveChoice(aPC), aPC); + } addAdds(aPC); aPC.addNaturalWeapons(getListFor(ListKey.NATURAL_WEAPON)); } @@ -3060,7 +3056,12 @@ { kit.act(kit.driveChoice(aPC), aPC); } - makeRegionSelection(newLevel, aPC); + TransitionChoice<Region> region = classLevel + .get(ObjectKey.REGION_CHOICE); + if (region != null) + { + region.act(region.driveChoice(aPC), aPC); + } // Make sure any natural weapons are added aPC.addNaturalWeapons(classLevel.getListFor(ListKey.NATURAL_WEAPON)); @@ -4232,9 +4233,11 @@ addAllToListFor(ListKey.KIT_CHOICE, otherClass .getSafeListFor(ListKey.KIT_CHOICE)); - if (otherClass.getRegionString() != null) + remove(ObjectKey.REGION_CHOICE); + if (otherClass.containsKey(ObjectKey.REGION_CHOICE)) { - setRegionString(otherClass.getRegionString()); + put(ObjectKey.REGION_CHOICE, otherClass + .get(ObjectKey.REGION_CHOICE)); } removeListFor(ListKey.SAB); Modified: Trunk/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -47,6 +47,7 @@ import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.enumeration.Region; import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.reference.CDOMSingleRef; import pcgen.core.analysis.BonusCalc; @@ -678,24 +679,6 @@ } /** - * Set the region string - * @param arg - */ - public final void setRegionString(final String arg) - { - put(StringKey.REGION, arg); - } - - /** - * Get the region string - * @return the region string - */ - public final String getRegionString() - { - return get(StringKey.REGION); - } - - /** * Set the remove list for the character list * @param arg */ @@ -1244,12 +1227,6 @@ txt.append("\tSOURCEPAGE:").append(aString); } - String regionString = get(StringKey.REGION); - if ((regionString != null) && regionString.startsWith("0|")) - { - txt.append("\tREGION:").append(regionString.substring(2)); - } - // SPELLLEVEL txt.append('\t').append(getSpellSupport().getPCCText()); @@ -1401,7 +1378,11 @@ { kit.act(kit.driveChoice(aPC), aPC); } - makeRegionSelection(aPC); + TransitionChoice<Region> region = get(ObjectKey.REGION_CHOICE); + if (region != null) + { + region.act(region.driveChoice(aPC), aPC); + } if (flag) { @@ -1765,86 +1746,6 @@ return false; } - final void makeRegionSelection(final PlayerCharacter aPC) - { - makeRegionSelection(0, aPC); - } - - final void makeRegionSelection(final int arg, final PlayerCharacter aPC) - { - String regionString = get(StringKey.REGION); - if (regionString == null) - { - return; - } - - final StringTokenizer aTok = new StringTokenizer(regionString, "|"); - - // first element is prelevel - should be 0 for everything but PCClass entries - String tok = aTok.nextToken(); - int aLevel; - - try - { - aLevel = Integer.parseInt(tok); - } - catch (NumberFormatException e) - { - Logging.errorPrint("Badly formed preLevel attribute in makeRegionSelection: " + tok); - aLevel = 0; - } - - if (aLevel > arg) - { - return; - } - - tok = aTok.nextToken(); - - int num; - - try - { - num = Integer.parseInt(tok); // number of selections - } - catch (NumberFormatException e) - { - Logging.errorPrint("Badly formed number of selection attribute in makeRegionSelection: " + tok); - num = -1; - } - - List<String> aList = new ArrayList<String>(); - - while (aTok.hasMoreTokens()) - { - aList.add(aTok.nextToken()); - } - - if (num != aList.size()) - { - final ChooserInterface c = ChooserFactory.getChooserInstance(); - c.setTitle("Region Selection"); - c.setTotalChoicesAvail(num); - c.setPoolFlag(false); - c.setAvailableList(aList); - c.setVisible(true); - aList = c.getSelectedList(); - } - - if (aList.size() > 0) - { - for ( String region : aList ) - { - if (aPC.getRegion().equalsIgnoreCase(region)) - { - continue; - } - - aPC.setRegion(region); - } - } - } - int numberInList(PlayerCharacter pc, final String aType) { return 0; Modified: Trunk/pcgen/code/src/java/pcgen/core/Skill.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -31,6 +31,7 @@ import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.enumeration.Region; import pcgen.core.analysis.SkillRankControl; import pcgen.core.bonus.Bonus; import pcgen.core.bonus.BonusObj; @@ -183,7 +184,11 @@ { kit.act(kit.driveChoice(aPC), aPC); } - makeRegionSelection(aPC); + TransitionChoice<Region> region = get(ObjectKey.REGION_CHOICE); + if (region != null) + { + region.act(region.driveChoice(aPC), aPC); + } if (flag) { Modified: Trunk/pcgen/code/src/java/pcgen/gui/LstEditorMain.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/LstEditorMain.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/gui/LstEditorMain.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -233,12 +233,17 @@ { if (originalItem instanceof Race) { - String region = originalItem.getRegionString(); + String[] unp = Globals.getContext().unparse(originalItem, "REGION"); - if (region == null) + String region; + if (unp == null) { region = Constants.s_NONE; } + else + { + region = unp[0]; + } Globals.getBioSet().copyRaceTags(region, originalItem.getKeyName(), region, copyItem.getKeyName()); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/AgePanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/AgePanel.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/AgePanel.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -82,12 +82,16 @@ race = (Race) obj; - region = race.getRegionString(); + String[] unp = Globals.getContext().unparse(race, "REGION"); - if (region == null) + if (unp == null) { region = defaultRegionName; } + else + { + region = unp[0]; + } raceName = race.getKeyName(); @@ -113,12 +117,16 @@ race = (Race) obj; - region = race.getRegionString(); + String[] unp = Globals.getContext().unparse(race, "REGION"); - if (region == null) + if (unp == null) { region = defaultRegionName; } + else + { + region = unp[0]; + } raceKey = race.getKeyName(); Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/AppearancePanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/AppearancePanel.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/AppearancePanel.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -108,12 +108,16 @@ race = (Race) obj; - region = race.getRegionString(); + String[] unp = Globals.getContext().unparse(race, "REGION"); - if (region == null) + if (unp == null) { region = defaultRegionName; } + else + { + region = unp[0]; + } raceName = race.getKeyName(); @@ -149,12 +153,16 @@ race = (Race) obj; - region = race.getRegionString(); + String[] unp = Globals.getContext().unparse(race, "REGION"); - if (region == null) + if (unp == null) { region = defaultRegionName; } + else + { + region = unp[0]; + } raceName = race.getKeyName(); Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassLevelPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassLevelPanel.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassLevelPanel.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -57,6 +57,7 @@ import pcgen.cdom.enumeration.IntegerKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.enumeration.Region; import pcgen.cdom.enumeration.VariableKey; import pcgen.cdom.inst.PCClassLevel; import pcgen.core.Campaign; @@ -339,24 +340,15 @@ LevelTag lt = new LevelTag(cl, LevelTag.TAG_BONUS, bonusValue); levelTagList.add(lt); } - - } - - String s = obj.getRegionString(); - - if ((s != null) && !s.equals("")) - { - int y = s.indexOf('|'); - String l = "1"; - - if (y > 0) + + TransitionChoice<Region> region = pcl.get(ObjectKey.REGION_CHOICE); + if (region != null) { - l = s.substring(0, y); - s = s.substring(y + 1); + LevelTag lt = new LevelTag(cl, LevelTag.TAG_REGION, region + .getChoices().getLSTformat().replaceAll( + Constants.COMMA, Constants.PIPE)); + levelTagList.add(lt); } - - LevelTag lt = new LevelTag(l, LevelTag.TAG_REGION, s); - levelTagList.add(lt); } LoadContext context = Globals.getContext(); Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -1629,12 +1629,16 @@ for ( final Race race : Globals.getContext().ref.getConstructedCDOMObjects(Race.class) ) { // final String raceName = (String) e.next(); - aString = race.getRegionString(); + String[] unp = Globals.getContext().unparse(race, "REGION"); - if (aString == null) + if (unp == null) { aString = Constants.s_NONE; } + else + { + aString = unp[0]; + } aList = Globals.getBioSet().getTagForRace(aString, race.getKeyName(), "HAIR"); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java 2008-10-31 21:54:25 UTC (rev 8284) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java 2008-10-31 21:55:26 UTC (rev 8285) @@ -4,35 +4,117 @@ */ package plugin.lsttokens; -import pcgen.core.PObject; -import pcgen.persistence.lst.GlobalLstToken; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; +import pcgen.base.formula.Formula; +import pcgen.cdom.base.CDOMObject; +import pcgen.cdom.base.ChoiceActor; +import pcgen.cdom.base.ChoiceSet; +import pcgen.cdom.base.Constants; +import pcgen.cdom.base.FormulaFactory; +import pcgen.cdom.base.TransitionChoice; +import pcgen.cdom.choiceset.SimpleChoiceSet; +import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.enumeration.Region; +import pcgen.core.PlayerCharacter; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; + /** * @author djones4 - * + * */ -public class RegionLst implements GlobalLstToken +public class RegionLst extends AbstractToken implements + CDOMPrimaryToken<CDOMObject>, ChoiceActor<Region> { - /* - * Note: Don't need to wait for Template's LevelToken before this can be converted - * as there is a REGION token in Template, so this is never hit by Templates - */ - + @Override public String getTokenName() { return "REGION"; } - public boolean parse(PObject obj, String value, int anInt) + public boolean parse(LoadContext context, CDOMObject pcc, String value) { - if (anInt > -9) + if (isEmpty(value) || hasIllegalSeparator('|', value)) { - obj.setRegionString(anInt + "|" + value); + return false; } - else + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); + String item = tok.nextToken(); + Formula count = FormulaFactory.getFormulaFor(item); + if (count.isStatic()) { - obj.setRegionString("0|" + value); + item = tok.nextToken(); + if (count.resolve(null, "").intValue() <= 0) + { + Logging.addParseMessage(Logging.LST_ERROR, "Count in " + + getTokenName() + " must be > 0"); + return false; + } + if (!tok.hasMoreTokens()) + { + Logging.addParseMessage(Logging.LST_ERROR, getTokenName() + + " must have a | separating " + + "count from the list of possible values: " + value); + return false; + } } + List<Region> regions = new ArrayList<Region>(); + while (true) + { + regions.add(Region.getConstant(item)); + if (!tok.hasMoreTokens()) + { + break; + } + item = tok.nextToken(); + } + + SimpleChoiceSet<Region> rcs = new SimpleChoiceSet<Region>(regions); + ChoiceSet<Region> cs = new ChoiceSet<Region>(getTokenName(), rcs); + TransitionChoice<Region> tc = new TransitionChoice<Region>(cs, count); + context.obj.put(pcc, ObjectKey.REGION_CHOICE, tc); + tc.setTitle("Region Selection"); + tc.setRequired(false); + tc.setChoiceActor(this); return true; } + + public String[] unparse(LoadContext context, CDOMObject pcc) + { + TransitionChoice<Region> tc = context.getObjectContext().getObject(pcc, + ObjectKey.REGION_CHOICE); + if (tc == null) + { + // indicates no Token + return null; + } + StringBuilder sb = new StringBuilder(); + String count = tc.getCount().toString(); + if (!"1".equals(count)) + { + sb.append(count); + sb.append(Constants.PIPE); + } + sb.append(tc.getChoices().getLSTformat().replaceAll(Constants.COMMA, + Constants.PIPE)); + return new String[] { sb.toString() }; + } + + public Class<CDOMObject> getTokenClass() + { + return CDOMObject.class; + } + + public void applyChoice(Region choice, PlayerCharacter pc) + { + if (!pc.getRegion().equalsIgnoreCase(choice.toString())) + { + pc.setRegion(choice.toString()); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2008-11-09 03:22:09
|
Revision: 8360 http://pcgen.svn.sourceforge.net/pcgen/?rev=8360&view=rev Author: jdempsey Date: 2008-11-09 03:22:05 +0000 (Sun, 09 Nov 2008) Log Message: ----------- PCGen Source Loading is too complex - Initial demo of user interface - Allows predefined sources to be loaded via a simplified interface. Issue#: 1625030 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java Trunk/pcgen/code/src/java/pcgen/gui/Options.java Trunk/pcgen/code/src/java/pcgen/gui/PCGenMenuBar.java Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/DefaultdatasetToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionDialog.java Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionUtils.java Modified: Trunk/pcgen/code/src/java/pcgen/core/GameMode.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -3416,6 +3416,7 @@ private LoadContext context = new RuntimeLoadContext(new ReferenceContext(), masterLCS); private GameReferenceContext gameRefContext = new GameReferenceContext(); private LoadContext modeContext = new RuntimeLoadContext(gameRefContext, masterLCS); + private String defaultSourceTitle; public void clearLoadContext() { @@ -3550,4 +3551,24 @@ { return name; } + + /** + * Sets the title of the default source (used on the quick sources dialog). + * + * @param title the new title + */ + public void setDefaultSourceTitle(String title) + { + this.defaultSourceTitle = title; + } + + /** + * Gets the default source title. + * + * @return the default source title + */ + public String getDefaultSourceTitle() + { + return defaultSourceTitle; + } } \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -241,7 +241,7 @@ } } - private void updateMenu() + void updateMenu() { boolean bFound = false; @@ -289,7 +289,6 @@ public void actionPerformed(ActionEvent actionEvent) { final Object source = actionEvent.getSource(); - String oldStatus = ""; String tempGameMode = Constants.e3_MODE; int campaignNum = -1; @@ -312,77 +311,25 @@ } // Now check for a campaign selection which may have switched game mode + List<Campaign> selectedCampaigns = new ArrayList<Campaign>(); if (campaignNum >= 0) { // We can now specify multiple game modes in a PCC file. // We assume here that the 1st one is the primary one. List<String> gameModeList = (campaigns.get(campaignNum)).getGameModes(); tempGameMode = gameModeList.get(0); + selectedCampaigns.add(campaigns.get(campaignNum)); } if (!Globals.isInGameMode(tempGameMode)) { - SettingsHandler.setGame(tempGameMode); - Globals.createEmptyRace(); - updateMenu(); - ((MainSource) PCGen_Frame1.getBaseTabbedPane().getComponent(0)).changedGameMode(); + SourceSelectionUtils.changeGameMode(tempGameMode); } // Now we deal with a campaign selection - if (campaignNum >= 0) + if (!selectedCampaigns.isEmpty()) { - List<Campaign> selectedCampaigns = new ArrayList<Campaign>(); - selectedCampaigns.add(campaigns.get(campaignNum)); - - try - { - PCGen_Frame1.getInst().closeAllPCs(); - - if (PCGen_Frame1.getBaseTabbedPane().getTabCount() > PCGen_Frame1.FIRST_CHAR_TAB) // All non-player tabs will be first - { - ShowMessageDelegate.showMessageDialog(PropertyFactory.getString("in_campaignChangeError"), - Constants.s_APPNAME, MessageType.INFORMATION); - - return; - } - - // Unload the existing campaigns and load our selected campaign - Globals.emptyLists(); - PersistenceManager pManager = PersistenceManager.getInstance(); - pManager.emptyLists(); - pManager.setChosenCampaignSourcefiles(new ArrayList<URI>()); - - for (Campaign aCamp : Globals.getCampaignList()) - { - aCamp.setIsLoaded(false); - } - - // Show that we are loading... - oldStatus = PCGen_Frame1.getInst().getMainSource() - .showLoadingSources(); - //PersistenceObserver observer = new PersistenceObserver(); - //pManager.addObserver( observer ); - pManager.loadCampaigns(selectedCampaigns); - //pManager.deleteObserver( observer ); - - } - catch (PersistenceLayerException e) - { - ShowMessageDelegate.showMessageDialog(e.getMessage(), Constants.s_APPNAME, MessageType.WARNING); - } - - pcgen.gui.PCGen_Frame1.getInst().getMainSource().updateLoadedCampaignsUI(); - - // Show that we are done - PCGen_Frame1.getInst().getMainSource().showSourcesLoaded( - oldStatus); - - if ((getParent() != null) && Globals.displayListsHappy()) - { - PCGen_Frame1 parent = pcgen.gui.PCGen_Frame1.getInst(); - parent.enableNew(true); - parent.enableLstEditors(true); - } + SourceSelectionUtils.loadSources(selectedCampaigns); } } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -1457,45 +1457,16 @@ //this method will now unload all current sources, but will not remove them from the selected table private void unloadAllCampaigns_actionPerformed() { - PCGen_Frame1 parent = PCGen_Frame1.getRealParentFrame(this); + SourceSelectionUtils.unloadSources(); + } - if (Logging.isDebugMode()) //don't force PC closure if we're in debug mode, per request - { - ShowMessageDelegate.showMessageDialog("PC's are not closed in debug mode. " + "Please be aware that they may not function correctly " - + "until campaign data is loaded again.", - Constants.s_APPNAME, MessageType.WARNING); - } - else - { - parent.closeAllPCs(); - - if (PCGen_Frame1.getBaseTabbedPane().getTabCount() > PCGen_Frame1.FIRST_CHAR_TAB) // All non-player tabs will be first - { - ShowMessageDelegate.showMessageDialog("Can't unload campaigns until all PC's are closed.", Constants.s_APPNAME, - MessageType.INFORMATION); - - return; - } - PCGen_Frame1.setCharacterPane(null); - } - - Globals.emptyLists(); - PersistenceManager.getInstance().emptyLists(); - //PersistenceManager.getInstance().setChosenCampaignSourcefiles(new ArrayList<URI>()); - - for (Campaign aCamp : Globals.getCampaignList()) - { - aCamp.setIsLoaded(false); - } - - parent.enableLstEditors(false); - + void campaignsUnloaded() + { sourcesLoaded = false; refreshButton.setEnabled(true); refreshButton.setToolTipText("Refresh the list of sources"); - PCGen_Frame1.enableDisableMenuItems(); updateModels(); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/Options.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/Options.java 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/pcgen/gui/Options.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -43,6 +43,10 @@ // Used to create the entries for the "set all stats to" menu private PrefsMenuListener prefsMenuHandler = new PrefsMenuListener(); + private SourcesMenuListener sourcesMenuHandler = new SourcesMenuListener(); + + private GameModes modesMenu; + /** Creates new form Options */ public Options() { @@ -64,8 +68,7 @@ private void addCampMenu(JMenu parent) { - //Modes menu - GameModes modesMenu = new GameModes(); + modesMenu = new GameModes(); parent.add(modesMenu); } @@ -79,8 +82,15 @@ { addCampMenu(this); // campaigns addPreferencesMenu(this); // Preferences dialog + addQuickSourcesMenu(this); // Sources dialog } + private void addQuickSourcesMenu(JMenu parent) + { + parent.add(Utility.createMenuItem("mnuSettingsSources", sourcesMenuHandler, null, null, "", + true)); + } + /** * Show the preferences pane. */ @@ -101,4 +111,31 @@ PCGen_Frame1.restoreMessageAreaText(); } } + + /** + * Show the sources pane. + */ + private static final class SourcesMenuListener implements ActionListener + { + public void actionPerformed(ActionEvent actionEvent) + { + PCGen_Frame1.setMessageAreaText("Source Selection..."); + + SourceSelectionDialog dialog = + new SourceSelectionDialog(PCGen_Frame1.getInst(), true); + dialog.setVisible(true); + + PCGen_Frame1.restoreMessageAreaText(); + } + } + + /** + * Gets the game mode menu. + * + * @return the game mode menu + */ + GameModes getGameModeMenu() + { + return modesMenu; + } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/PCGenMenuBar.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PCGenMenuBar.java 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/pcgen/gui/PCGenMenuBar.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -118,6 +118,8 @@ PrintFrame printFrame = null; boolean enablePDF; + private GameModes gameModeMenu; + /** * Create a new menu item bar including all menu items. * @param pcgenframe The PCGen window we are attached to. @@ -138,6 +140,7 @@ //Options Menu (called Settings in the UI) Options optionMenu = new Options(); this.add(optionMenu); + gameModeMenu = optionMenu.getGameModeMenu(); //Tools Menu JMenu toolsMenu = createToolsMenu(); @@ -823,4 +826,12 @@ { return filtersMenu; } + + /** + * @return the gameModeMenu + */ + GameModes getGameModeMenu() + { + return gameModeMenu; + } } \ No newline at end of file Added: Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionDialog.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionDialog.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -0,0 +1,377 @@ +/* + * SourceSelectionDialog.java + * Copyright 2008 (C) James Dempsey + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on 9/11/2008 08:01:30 + * + * $Id: $ + */ + +package pcgen.gui; + +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.GridBagConstraints; +import java.awt.Insets; +import java.awt.Rectangle; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JScrollPane; +import javax.swing.JToggleButton; +import javax.swing.ListCellRenderer; +import javax.swing.SwingConstants; + +import pcgen.core.Campaign; +import pcgen.core.GameMode; +import pcgen.core.Globals; +import pcgen.core.SystemCollections; +import pcgen.core.utils.MessageType; +import pcgen.core.utils.ShowMessageDelegate; +import pcgen.gui.utils.Utility; +import pcgen.util.PropertyFactory; + +/** + * The Class <code>SourceSelectionDialog</code> provides a simplified + * interface to selecting source materials for PCGen. It is intended + * to assist the majority of regular users who use only a few source + * combinations as well as making source selection easier for first + * time users. + * + * Last Editor: $Author: $ + * Last Edited: $Date: $ + * + * @author James Dempsey <jde...@us...> + * @version $Revision: $ + */ +@SuppressWarnings("serial") +public class SourceSelectionDialog extends javax.swing.JDialog implements + ActionListener +{ + + private static final String ACTION_CANCEL = "cancel"; + private static final String ACTION_LOAD = "load"; + private static final String ACTION_REMOVE = "remove"; + private static final String ACTION_ADD = "add"; + + private JList sourceList; + private Map<String, List<String>> nameToSourceMap = new HashMap<String, List<String>>(); + private Map<String, String> nameToGameModeMap = new HashMap<String, String>(); + + /** + * Creates new form SourceSelectionDialog. + * + * @param parent the parent dialog or window. + * @param modal Should the dialog block the program + */ + public SourceSelectionDialog(Frame parent, boolean modal) + { + super(parent, modal); + setTitle(PropertyFactory.getString("in_qsrc_title")); + initComponents(); + } + + /** + * This method is called from within the constructor to + * initialize the form. + */ + private void initComponents() + { + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + getContentPane().setLayout(new java.awt.GridBagLayout()); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.anchor = GridBagConstraints.WEST; + gbc.insets = new Insets(4, 4, 4, 4); + + JLabel jLabel1 = new JLabel(PropertyFactory.getString("in_qsrc_intro")); + Utility.buildRelativeConstraints(gbc, GridBagConstraints.REMAINDER, 1, + 0.0, 0.0); + getContentPane().add(jLabel1, gbc); + + sourceList = new javax.swing.JList(); + sourceList.setModel(new javax.swing.AbstractListModel() + { + String[] strings = getSourceNames(); + + //{ "SRD 3.0\nfor Players", "SRD 3.0 for Game Masters (includes Monsters)<br>111222333 111222333", "SRD 3.5 for Players", "SRD 3.5 for Game Masters (includes Monsters)", "MSRD" }; + + public int getSize() + { + return strings.length; + } + + public Object getElementAt(int i) + { + return strings[i]; + } + }); + sourceList + .setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + sourceList.setLayoutOrientation(JList.VERTICAL_WRAP); + sourceList.setVisibleRowCount(2); + sourceList.setCellRenderer(new SourceListCellRenderer()); + JScrollPane listScrollPane = new JScrollPane(sourceList); + listScrollPane.setPreferredSize(new Dimension(480, 240)); + + Utility.buildRelativeConstraints(gbc, 1, 2, 100, 100, + GridBagConstraints.BOTH, GridBagConstraints.WEST); + getContentPane().add(listScrollPane, gbc); + + JButton addButton = new JButton(PropertyFactory.getString("in_add")); + addButton.setActionCommand(ACTION_ADD); + addButton.setEnabled(false); + Utility.buildRelativeConstraints(gbc, GridBagConstraints.REMAINDER, 1, + 0, 0, GridBagConstraints.HORIZONTAL, GridBagConstraints.WEST); + getContentPane().add(addButton, gbc); + + JButton removeButton = + new JButton(PropertyFactory.getString("in_remove")); + removeButton.setActionCommand(ACTION_REMOVE); + removeButton.setEnabled(false); + Utility.buildRelativeConstraints(gbc, GridBagConstraints.REMAINDER, 1, + 0, 0, GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTH); + getContentPane().add(removeButton, gbc); + + JButton loadButton = new JButton(PropertyFactory.getString("in_load")); + loadButton.setActionCommand(ACTION_LOAD); + getRootPane().setDefaultButton(loadButton); + Utility.buildRelativeConstraints(gbc, 1, 1, 0.0, 0.0, + GridBagConstraints.NONE, GridBagConstraints.EAST); + getContentPane().add(loadButton, gbc); + + JButton cancelButton = + new JButton(PropertyFactory.getString("in_cancel")); + cancelButton.setActionCommand(ACTION_CANCEL); + Utility.buildRelativeConstraints(gbc, 1, 1, 0, 0); + getContentPane().add(cancelButton, gbc); + + //Listen for actions on the buttons + addButton.addActionListener(this); + removeButton.addActionListener(this); + loadButton.addActionListener(this); + cancelButton.addActionListener(this); + + pack(); + } + + /** + * Build the list of source names to be displayed. Note this + * also rebuilds the maps nameToSourceMap and nameToGameModeMap + * as these are driven by the source names. + * + * @return the source names + */ + private String[] getSourceNames() + { + List<String> names = new ArrayList<String>(); + nameToSourceMap.clear(); + nameToGameModeMap.clear(); + + for (Campaign aCamp : Globals.getCampaignList()) + { + if (aCamp.canShowInMenu()) + { + String name = aCamp.getDisplayName(); + names.add(name); + nameToGameModeMap.put(name, aCamp.getGameModes().get(0)); + List<String> sourceKeys = new ArrayList<String>(); + sourceKeys.add(aCamp.getKeyName()); + nameToSourceMap.put(name, sourceKeys); + } + } + + for (GameMode mode : SystemCollections.getUnmodifiableGameModeList()) + { + String title = mode.getDefaultSourceTitle(); + if (title != null && !"".equals(title)) + { + names.add(title); + nameToGameModeMap.put(title, mode.getName()); + nameToSourceMap.put(title, mode.getDefaultDataSetList()); + } + } + + Collections.sort(names); + return names.toArray(new String[]{}); + } + + /* (non-Javadoc) + * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) + */ + public void actionPerformed(ActionEvent e) + { + if (ACTION_LOAD.equals(e.getActionCommand())) + { + loadButtonAction(); + } + else if (ACTION_CANCEL.equals(e.getActionCommand())) + { + cancelButtonAction(); + } + else if (ACTION_ADD.equals(e.getActionCommand())) + { + //TODO + } + else if (ACTION_REMOVE.equals(e.getActionCommand())) + { + //TODO + } + } + + /** + * Load the selected source. Note this will also unload any sources already + * loaded and switch game modes. + */ + public void loadButtonAction() + { + // verify a source is selected + if (sourceList.getSelectedIndex() < 0) + { + ShowMessageDelegate.showMessageDialog(PropertyFactory.getString("in_qsrc_err_none_selected"), PropertyFactory.getString("in_qsrc_title"), MessageType.ERROR); + return; + } + String sourceTitle = (String) sourceList.getSelectedValue(); + String gameMode = nameToGameModeMap.get(sourceTitle); + List<String> sources = nameToSourceMap.get(sourceTitle); + + // Unload all sources + SourceSelectionUtils.unloadSources(); + + // Switch game mode + if (!Globals.isInGameMode(gameMode)) + { + SourceSelectionUtils.changeGameMode(gameMode); + } + + // Load sources + List<Campaign> selectedCampaigns = new ArrayList<Campaign>(); + for (String key : sources) + { + Campaign camp = Globals.getCampaignKeyed(key); + selectedCampaigns.add(camp); + } + SourceSelectionUtils.loadSources(selectedCampaigns); + + // Close window + setVisible(false); + this.dispose(); + } + + public void cancelButtonAction() + { + setVisible(false); + this.dispose(); + } + + /** + * Overrides the default setVisible method to position the window. + * + * @param visible true to show the dialog, false to hide it. + */ + public void setVisible(boolean visible) + { + if (visible) + { + Window owner = getOwner(); + Rectangle ownerBounds = owner.getBounds(); + Rectangle bounds = getBounds(); + + int width = (int) bounds.getWidth(); + int height = (int) bounds.getHeight(); + + setBounds( + (int) (owner.getX() + ((ownerBounds.getWidth() - width) / 2)), + (int) (owner.getY() + ((ownerBounds.getHeight() - height) / 2)), + width, height); + } + + super.setVisible(visible); + } + /** + * Testing main entry point + * + * @param args the command line arguments + */ + public static void main(String args[]) + { + java.awt.EventQueue.invokeLater(new Runnable() + { + + public void run() + { + SourceSelectionDialog dialog = + new SourceSelectionDialog(new javax.swing.JFrame(), + true); + dialog.addWindowListener(new java.awt.event.WindowAdapter() + { + + public void windowClosing(java.awt.event.WindowEvent e) + { + System.exit(0); + } + + }); + dialog.setVisible(true); + } + + }); + } + + /** + * Display of a single source cell in the sources list. + */ + private class SourceListCellRenderer extends JToggleButton implements + ListCellRenderer + { + + /** + * Instantiates a new source list cell renderer. + */ + public SourceListCellRenderer() + { + setHorizontalAlignment(SwingConstants.CENTER); + setVerticalAlignment(SwingConstants.TOP); + } + + /* (non-Javadoc) + * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) + */ + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) + { + setText("<HTML>" + String.valueOf(value) + "</HTML>"); + setPreferredSize(new Dimension(120, 120)); + + setContentAreaFilled(isSelected); + setSelected(isSelected); + return this; + } + + } +} Added: Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionUtils.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionUtils.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/gui/SourceSelectionUtils.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -0,0 +1,177 @@ +/* + * SourceSelectionUtils.java + * Copyright 2008 (C) James Dempsey + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on 09/11/2008 11:07:19 AM + * + * $Id: $ + */ + +package pcgen.gui; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + +import pcgen.cdom.base.Constants; +import pcgen.core.Campaign; +import pcgen.core.Globals; +import pcgen.core.SettingsHandler; +import pcgen.core.utils.MessageType; +import pcgen.core.utils.ShowMessageDelegate; +import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.PersistenceManager; +import pcgen.util.Logging; +import pcgen.util.PropertyFactory; + + + +/** + * The Class <code>SourceSelectionUtils</code> holds common + * functionality for source selection and loading. + * + * Last Editor: $Author: $ + * Last Edited: $Date: $ + * + * @author James Dempsey <jde...@us...> + * @version $Revision: $ + */ +public final class SourceSelectionUtils +{ + + /** + * Switch game modes. + * + * @param gameMode the game mode + */ + public static void changeGameMode(String gameMode) + { + SettingsHandler.setGame(gameMode); + Globals.createEmptyRace(); + PCGen_Frame1.getInst().getPcgenMenuBar().getGameModeMenu().updateMenu(); + PCGen_Frame1.getInst().getMainSource().changedGameMode(); + } + + /** + * Unload all loaded sources. + * + * @return true, if successful + */ + public static boolean unloadSources() + { + PCGen_Frame1 parent = PCGen_Frame1.getInst(); + + if (Logging.isDebugMode()) //don't force PC closure if we're in debug mode, per request + { + ShowMessageDelegate.showMessageDialog("PCs are not closed in debug mode. " + "Please be aware that they may not function correctly " + + "until campaign data is loaded again.", + Constants.s_APPNAME, MessageType.WARNING); + } + else + { + parent.closeAllPCs(); + + if (PCGen_Frame1.getBaseTabbedPane().getTabCount() > PCGen_Frame1.FIRST_CHAR_TAB) // All non-player tabs will be first + { + ShowMessageDelegate.showMessageDialog("Can't unload campaigns until all PC's are closed.", Constants.s_APPNAME, + MessageType.INFORMATION); + + return false; + } + PCGen_Frame1.setCharacterPane(null); + } + + Globals.emptyLists(); + PersistenceManager.getInstance().emptyLists(); + //PersistenceManager.getInstance().setChosenCampaignSourcefiles(new ArrayList<URI>()); + + for (Campaign aCamp : Globals.getCampaignList()) + { + aCamp.setIsLoaded(false); + } + + parent.enableLstEditors(false); + + PCGen_Frame1.enableDisableMenuItems(); + PCGen_Frame1.getInst().getMainSource().campaignsUnloaded(); + + return true; + } + + + /** + * Load the source materials. + * + * @param selectedCampaigns the sources to be loaded. + */ + public static boolean loadSources(List<Campaign> selectedCampaigns) + { + String oldStatus = ""; + try + { + PCGen_Frame1.getInst().closeAllPCs(); + + if (PCGen_Frame1.getBaseTabbedPane().getTabCount() > PCGen_Frame1.FIRST_CHAR_TAB) // All non-player tabs will be first + { + ShowMessageDelegate.showMessageDialog(PropertyFactory.getString("in_campaignChangeError"), + Constants.s_APPNAME, MessageType.INFORMATION); + + return false; + } + + // Unload the existing campaigns and load our selected campaign + Globals.emptyLists(); + PersistenceManager pManager = PersistenceManager.getInstance(); + pManager.emptyLists(); + pManager.setChosenCampaignSourcefiles(new ArrayList<URI>()); + + for (Campaign aCamp : Globals.getCampaignList()) + { + aCamp.setIsLoaded(false); + } + + // Show that we are loading... + oldStatus = PCGen_Frame1.getInst().getMainSource() + .showLoadingSources(); + //PersistenceObserver observer = new PersistenceObserver(); + //pManager.addObserver( observer ); + pManager.loadCampaigns(selectedCampaigns); + //pManager.deleteObserver( observer ); + + } + catch (PersistenceLayerException e) + { + ShowMessageDelegate.showMessageDialog(e.getMessage(), Constants.s_APPNAME, MessageType.WARNING); + } + + pcgen.gui.PCGen_Frame1.getInst().getMainSource().updateLoadedCampaignsUI(); + + // Show that we are done + PCGen_Frame1.getInst().getMainSource().showSourcesLoaded( + oldStatus); + + PCGen_Frame1 parent = pcgen.gui.PCGen_Frame1.getInst(); + if ((parent != null) && Globals.displayListsHappy()) + { + parent.enableNew(true); + parent.enableLstEditors(true); + } + + return true; + } + +} Modified: Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2008-11-09 03:22:05 UTC (rev 8360) @@ -4175,3 +4175,11 @@ in_Src_browser=Unable to open {0} in browser. See log for details. in_Src_Bad_Combo_Load=The sources you have selected are not compatible.\nPlease resolve the conflict and then Load Sources. + +# Source Selection dialog +in_mnuSettingsSources=Quick Source Loading Demo + +in_qsrc_title=Load Sources + +in_qsrc_intro=Select a Source to load, or define a new set of sources +in_qsrc_err_none_selected=You must select a source to load from the list. Modified: Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -296,6 +296,44 @@ } /** + * Set up GridBag Constraints in a relative pattern. Components must be + * added in order row by row. + * + * @param gbc The gridbagconstraints to set up + * @param gw cols wide + * @param gh rows high + * @param wx weight of x, I typically put in percentile, only need to specify this once for each column, other values in same column are 0.0 + * @param wy weight of y, same as weight for cols, just specify a non-zero value for one cell in each row. + * @param fill How should the component be resized if smaller than the space. + * @param anchor Where should the component be placed if smaller than the space. + */ + public static void buildRelativeConstraints(GridBagConstraints gbc, + int gw, int gh, double wx, double wy, int fill, int anchor) + { + buildConstraints(gbc, GridBagConstraints.RELATIVE, + GridBagConstraints.RELATIVE, gw, gh, wx, wy); + gbc.fill = fill; + gbc.anchor = anchor; + } + + /** + * Set up GridBag Constraints in a relative pattern. Components must be + * added in order row by row. + * + * @param gbc The gridbagconstraints to set up + * @param gw cols wide + * @param gh rows high + * @param wx weight of x, I typically put in percentile, only need to specify this once for each column, other values in same column are 0.0 + * @param wy weight of y, same as weight for cols, just specify a non-zero value for one cell in each row. + */ + public static void buildRelativeConstraints(GridBagConstraints gbc, + int gw, int gh, double wx, double wy) + { + buildConstraints(gbc, GridBagConstraints.RELATIVE, + GridBagConstraints.RELATIVE, gw, gh, wx, wy); + } + + /** * Centers a <code>JDialog</code> to the screen. * * @param dialog JDialog dialog to center Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/DefaultdatasetToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/DefaultdatasetToken.java 2008-11-09 02:42:03 UTC (rev 8359) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/DefaultdatasetToken.java 2008-11-09 03:22:05 UTC (rev 8360) @@ -54,7 +54,9 @@ */ public boolean parse(GameMode gameMode, String value, URI source) { - final StringTokenizer aTok = new StringTokenizer(value, ",", false); + String tokens[] = value.split("\\|"); + + final StringTokenizer aTok = new StringTokenizer(tokens[0], ",", false); gameMode.clearDefaultDataSetList(); while (aTok.hasMoreTokens()) @@ -63,6 +65,10 @@ gameMode.addDefaultDataSet(aString); } + if (tokens.length > 1) + { + gameMode.setDefaultSourceTitle(tokens[1]); + } return true; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-11-09 22:31:59
|
Revision: 8370 http://pcgen.svn.sourceforge.net/pcgen/?rev=8370&view=rev Author: thpr Date: 2008-11-09 22:31:54 +0000 (Sun, 09 Nov 2008) Log Message: ----------- fix ADD:VFEAT for Abilities with choices Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java 2008-11-09 22:14:28 UTC (rev 8369) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java 2008-11-09 22:31:54 UTC (rev 8370) @@ -48,6 +48,19 @@ return ability.getKeyName(); } + public String getFullAbilityKey() + { + StringBuilder sb = new StringBuilder(); + sb.append(ability.getKeyName()); + if (selection != null) + { + sb.append('('); + sb.append(selection); + sb.append(')'); + } + return sb.toString(); + } + public boolean containsAssociation(String a) { return a == null ? selection == null : a.equals(selection); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java 2008-11-09 22:14:28 UTC (rev 8369) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java 2008-11-09 22:31:54 UTC (rev 8370) @@ -275,7 +275,7 @@ public void applyChoice(CDOMObject owner, AbilitySelection choice, PlayerCharacter pc) { - String featName = choice.getAbilityKey(); + String featName = choice.getFullAbilityKey(); final Ability aFeat = AbilityUtilities.addVirtualAbility("FEAT", featName, pc.getDirectVirtualAbilities(AbilityCategory.FEAT), pc, null); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-11-11 23:42:01
|
Revision: 8404 http://pcgen.svn.sourceforge.net/pcgen/?rev=8404&view=rev Author: thpr Date: 2008-11-11 23:41:52 +0000 (Tue, 11 Nov 2008) Log Message: ----------- Refactoring Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/PObject.java Trunk/pcgen/code/src/java/pcgen/core/Skill.java Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDomain.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/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/spells/InfoSpellsSubTab.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/SpellModel.java Trunk/pcgen/code/src/java/pcgen/gui/utils/PObjectNode.java Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -69,6 +69,7 @@ import pcgen.core.Ability.Nature; import pcgen.core.QualifiedObject.LevelAwareQualifiedObject; import pcgen.core.analysis.DomainApplication; +import pcgen.core.analysis.SkillCostCalc; import pcgen.core.analysis.SkillRankControl; import pcgen.core.analysis.SubstitutionLevelSupport; import pcgen.core.bonus.Bonus; @@ -2140,7 +2141,7 @@ { final PCClass pcClass = Globals.getContext().ref.silentlyGetConstructedCDOMObject(PCClass.class, key.getLSTformat()); - if ((pcClass != null) && pcClass.hasCSkill(pc, aString)) + if ((pcClass != null) && SkillCostCalc.hasCSkill(pc, pcClass, aString)) { return true; } Modified: Trunk/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -51,9 +51,7 @@ import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.inst.PCClassLevel; import pcgen.cdom.reference.CDOMSingleRef; -import pcgen.core.analysis.BonusCalc; import pcgen.core.analysis.LanguageSupport; -import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.analysis.WeaponProfType; import pcgen.core.bonus.BonusObj; import pcgen.core.bonus.BonusUtilities; @@ -739,12 +737,6 @@ return theSource.getSourceBook().getCampaign(); } - //TODO inline - public int getStatMod(final int statIdx, final PlayerCharacter aPC) - { - return BonusCalc.getStatMod(this, statIdx, aPC); - } - /** * Add the level and ability to the level ability list * @param aLevel @@ -824,16 +816,6 @@ } /** - * Make choices for the PC (just calls getChoices) - * @param aPC - */ - //TODO inline - public void makeChoices(final PlayerCharacter aPC) - { - getChoices(getChoiceString(), aPC); - } - - /** * Returns true if the PC has a bonus that is currently applied * @param aPC * @param anObj @@ -887,27 +869,6 @@ } /** - * Get the Product Identity string - * @return the Product Identity string - */ - //TODO inline - public String piString() - { - return OutputNameFormatting.piString(this, true); - } - - /** - * In some cases, we need a PI-formatted string to place within - * a pre-existing <html> tag - * @return PI String with no header - */ - //TODO inline - public String piSubString() - { - return OutputNameFormatting.piString(this, false); - } - - /** * Remove all abilities gained via a level * @param aLevel */ @@ -1201,7 +1162,7 @@ if (flag) { - makeChoices(aPC); + getChoices(getChoiceString(), aPC); } if (this instanceof PCClass) @@ -1494,62 +1455,6 @@ // This method currently does nothing so it may be overriden in PCClass. } - //TODO move into SkillCostCalc - public final boolean hasCcSkill(PlayerCharacter pc, final String aName) - { - List<CDOMReference<Skill>> ccSkillList = getListFor(ListKey.CCSKILL); - List<Skill> assocCCSkill = pc.getAssocList(this, - AssociationListKey.CCSKILL); - if (ccSkillList != null && !ccSkillList.isEmpty()) - { - for (CDOMReference<Skill> ref : ccSkillList) - { - // Have to do slow due to cloning :P - for (Skill sk : ref.getContainedObjects()) - { - if (sk.getKeyName().equals(aName)) - { - return true; - } - } - } - } - if (assocCCSkill != null && !assocCCSkill.isEmpty()) - { - for (Skill sk : assocCCSkill) - { - // Have to do slow due to cloning :P - if (sk.getKeyName().equals(aName)) - { - return true; - } - } - } - return false; - } - - //TODO move into SkillCostCalc - public final boolean hasCSkill(PlayerCharacter pc, final String aName) - { - List<CDOMReference<Skill>> cSkillList = getListFor(ListKey.CSKILL); - if (cSkillList != null) - { - for (CDOMReference<Skill> ref : cSkillList) - { - //Have to do slow due to cloning :P - for (Skill sk : ref.getContainedObjects()) - { - if (sk.getKeyName().equals(aName)) - { - return true; - } - } - } - } - - return false; - } - int numberInList(PlayerCharacter pc, final String aType) { return 0; Modified: Trunk/pcgen/code/src/java/pcgen/core/Skill.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -192,7 +192,7 @@ if (flag) { - makeChoices(aPC); + getChoices(getChoiceString(), aPC); } activateBonuses(aPC); } Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillCostCalc.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -39,6 +39,7 @@ import pcgen.core.EquipmentModifier; import pcgen.core.PCClass; import pcgen.core.PCTemplate; +import pcgen.core.PObject; import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.Skill; @@ -56,7 +57,7 @@ String keyName = sk.getKeyName(); - if (aPC.getRace().hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, aPC.getRace(), keyName)) { return true; } @@ -68,7 +69,7 @@ } // hasCSkill is a class.lst loader skill - if (aClass.hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, aClass, keyName)) { return true; } @@ -91,20 +92,20 @@ { if ((aCD.getDomain() != null) && aCD.isFromPCClass(aClass.getKeyName()) - && aCD.getDomain().hasCSkill(aPC, keyName)) + && SkillCostCalc.hasCSkill(aPC, aCD.getDomain(), keyName)) { return true; } } - if ((aPC.getDeity() != null) && aPC.getDeity().hasCSkill(aPC, keyName)) + if ((aPC.getDeity() != null) && SkillCostCalc.hasCSkill(aPC, aPC.getDeity(), keyName)) { return true; } for (Ability aFeat : aPC.getFullAbilitySet()) { - if (aFeat.hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, aFeat, keyName)) { return true; } @@ -113,7 +114,7 @@ List<Skill> skillList = new ArrayList<Skill>(aPC.getSkillList()); for (Skill aSkill : skillList) { - if (aSkill.hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, aSkill, keyName)) { return true; } @@ -125,14 +126,14 @@ { if (eq.isEquipped()) { - if (eq.hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, eq, keyName)) { return true; } for (EquipmentModifier eqMod : eq.getEqModifierList(true)) { - if (eqMod.hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, eqMod, keyName)) { return true; } @@ -140,7 +141,7 @@ for (EquipmentModifier eqMod : eq.getEqModifierList(false)) { - if (eqMod.hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, eqMod, keyName)) { return true; } @@ -150,7 +151,7 @@ for (PCTemplate aTemplate : aPC.getTemplateList()) { - if (aTemplate.hasCSkill(aPC, keyName)) + if (SkillCostCalc.hasCSkill(aPC, aTemplate, keyName)) { return true; } @@ -224,7 +225,7 @@ } String keyName = sk.getKeyName(); - if (aPC.getRace().hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, aPC.getRace(), keyName)) { return true; } @@ -233,18 +234,18 @@ { if ((aCD.getDomain() != null) && aCD.isFromPCClass(aClass.getKeyName()) - && aCD.getDomain().hasCcSkill(aPC, keyName)) + && SkillCostCalc.hasCcSkill(aPC, aCD.getDomain(), keyName)) { return true; } } - if ((aPC.getDeity() != null) && aPC.getDeity().hasCcSkill(aPC, keyName)) + if ((aPC.getDeity() != null) && SkillCostCalc.hasCcSkill(aPC, aPC.getDeity(), keyName)) { return true; } - if (aClass.hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, aClass, keyName)) { return true; } @@ -259,7 +260,7 @@ for (Ability feat : aPC.getFullAbilitySet()) { - if (feat.hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, feat, keyName)) { return true; } @@ -268,7 +269,7 @@ List<Skill> skillList = new ArrayList<Skill>(aPC.getSkillList()); for (Skill aSkill : skillList) { - if (aSkill.hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, aSkill, keyName)) { return true; } @@ -278,14 +279,14 @@ { if (eq.isEquipped()) { - if (eq.hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, eq, keyName)) { return true; } for (EquipmentModifier eqMod : eq.getEqModifierList(true)) { - if (eqMod.hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, eqMod, keyName)) { return true; } @@ -293,7 +294,7 @@ for (EquipmentModifier eqMod : eq.getEqModifierList(false)) { - if (eqMod.hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, eqMod, keyName)) { return true; } @@ -303,7 +304,7 @@ for (PCTemplate template : aPC.getTemplateList()) { - if (template.hasCcSkill(aPC, keyName)) + if (SkillCostCalc.hasCcSkill(aPC, template, keyName)) { return true; } @@ -374,4 +375,58 @@ return false; } + public static boolean hasCcSkill(PlayerCharacter pc, PObject po, final String aName) + { + List<CDOMReference<Skill>> ccSkillList = po.getListFor(ListKey.CCSKILL); + List<Skill> assocCCSkill = pc.getAssocList(po, + AssociationListKey.CCSKILL); + if (ccSkillList != null && !ccSkillList.isEmpty()) + { + for (CDOMReference<Skill> ref : ccSkillList) + { + // Have to do slow due to cloning :P + for (Skill sk : ref.getContainedObjects()) + { + if (sk.getKeyName().equals(aName)) + { + return true; + } + } + } + } + if (assocCCSkill != null && !assocCCSkill.isEmpty()) + { + for (Skill sk : assocCCSkill) + { + // Have to do slow due to cloning :P + if (sk.getKeyName().equals(aName)) + { + return true; + } + } + } + return false; + } + + public static boolean hasCSkill(PlayerCharacter pc, PObject po, final String aName) + { + List<CDOMReference<Skill>> cSkillList = po.getListFor(ListKey.CSKILL); + if (cSkillList != null) + { + for (CDOMReference<Skill> ref : cSkillList) + { + //Have to do slow due to cloning :P + for (Skill sk : ref.getContainedObjects()) + { + if (sk.getKeyName().equals(aName)) + { + return true; + } + } + } + } + + return false; + } + } Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/TemplateModifier.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -54,7 +54,7 @@ } else { - int statMod = pct.getStatMod(x, aPC); + int statMod = BonusCalc.getStatMod(pct, x, aPC); if (statMod != 0) { Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -88,6 +88,7 @@ import pcgen.core.SettingsHandler; import pcgen.core.SourceEntry; import pcgen.core.SubClass; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.prereq.PrereqHandler; import pcgen.core.prereq.PrerequisiteUtilities; import pcgen.core.utils.MessageType; @@ -388,7 +389,7 @@ if (aClass != null) { - final InfoLabelTextBuilder b = new InfoLabelTextBuilder(aClass.piSubString()); + final InfoLabelTextBuilder b = new InfoLabelTextBuilder(OutputNameFormatting.piString(aClass, false)); b.appendLineBreak(); Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDomain.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDomain.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDomain.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -107,6 +107,7 @@ import pcgen.core.WeaponProf; import pcgen.core.analysis.DescriptionFormatting; import pcgen.core.analysis.DomainApplication; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.prereq.PrereqHandler; import pcgen.core.prereq.Prerequisite; import pcgen.core.prereq.PrerequisiteUtilities; @@ -381,7 +382,7 @@ { StringBuffer infoText = new StringBuffer().append(HTML).append(FONT_PLUS_1).append(BOLD).append( - aDeity.piSubString()).append(END_BOLD).append(END_FONT); + OutputNameFormatting.piString(aDeity, false)).append(END_BOLD).append(END_FONT); String aString = aDeity.get(StringKey.TITLE); @@ -461,7 +462,7 @@ if (aDomain != null) { infoText.append(FONT_PLUS_1).append(BOLD).append( - aDomain.piSubString()).append(END_BOLD).append(END_FONT); + OutputNameFormatting.piString(aDomain, false)).append(END_BOLD).append(END_FONT); String aString = pc.getDescription(aDomain); if (aString.length() != 0) @@ -1207,7 +1208,7 @@ } pc.setDeity(aDeity); - deityName.setText(aDeity.piString()); + deityName.setText(OutputNameFormatting.piString(aDeity, true)); buildDomainLists(); @@ -1239,7 +1240,7 @@ // Set the displayed deity name if (pc.getDeity() != null) { - deityName.setText(pc.getDeity().piString()); + deityName.setText(OutputNameFormatting.piString(pc.getDeity(), true)); } else { @@ -2057,7 +2058,7 @@ { for (Domain d : ref.getContainedObjects()) { - set.add(d.piSubString()); + set.add(OutputNameFormatting.piString(d, false)); } } final StringBuffer piString = new StringBuffer(100); @@ -2306,7 +2307,7 @@ if (selectedDomainList.contains(displayDomainList.get(row).getObject(null))) { retVal.append("<html><b>") - .append(aDomain.piSubString()).append( + .append(OutputNameFormatting.piString(aDomain, false)).append( "*</b></html>"); } else if (!PrereqHandler.passesAll(aDomain.getPrerequisiteList(), pc, aDomain) @@ -2314,13 +2315,13 @@ { retVal.append("<html>").append( SettingsHandler.getPrereqFailColorAsHtmlStart()) - .append(aDomain.piSubString()).append( + .append(OutputNameFormatting.piString(aDomain, false)).append( SettingsHandler.getPrereqFailColorAsHtmlEnd()) .append("</html>"); } else { - retVal.append(aDomain.piString()); + retVal.append(OutputNameFormatting.piString(aDomain, true)); } break; Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoEquipping.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoEquipping.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoEquipping.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -106,6 +106,7 @@ import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; import pcgen.core.SystemCollections; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.bonus.BonusObj; import pcgen.core.character.EquipSet; import pcgen.core.character.EquipSlot; @@ -616,7 +617,7 @@ if (eqI != null) { StringBuffer title = new StringBuffer(40); - title.append(eqI.piSubString()); + title.append(OutputNameFormatting.piString(eqI, false)); if (!eqI.longName().equals(eqI.getName())) { title.append("(").append(eqI.longName()).append(")"); @@ -6004,11 +6005,11 @@ return b.toString(); } - return eqI.piString(); + return OutputNameFormatting.piString(eqI, true); } else if (item instanceof Equipment) { - return ((Equipment) item).piString(); + return OutputNameFormatting.piString(((Equipment) item), true); } else { Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -102,6 +102,7 @@ import pcgen.core.PObject; import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.character.EquipSet; import pcgen.core.character.WieldCategory; import pcgen.core.prereq.PrereqHandler; @@ -592,7 +593,7 @@ if (aEq != null) { final StringBuilder title = new StringBuilder(50); - title.append(aEq.piSubString()); + title.append(OutputNameFormatting.piString(aEq, false)); if (!aEq.longName().equals(aEq.getName())) { Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoRaces.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoRaces.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoRaces.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -82,6 +82,8 @@ import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.SettingsHandler; +import pcgen.core.analysis.BonusCalc; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.analysis.RaceStat; import pcgen.core.display.VisionDisplay; import pcgen.core.prereq.PrerequisiteUtilities; @@ -408,7 +410,7 @@ if ((aRace != null) && !aRace.getKeyName().startsWith("<none")) { - b.appendTitleElement(aRace.piSubString()); + b.appendTitleElement(OutputNameFormatting.piString(aRace, false)); b.appendLineBreak(); RaceType rt = aRace.get(ObjectKey.RACETYPE); @@ -825,7 +827,7 @@ // If the either race was monstrous, natural weapons in the gear need // updated. sage_sam 20 March 2003 - raceText.setText(getPc().getRace().piString()); + raceText.setText(OutputNameFormatting.piString(getPc().getRace(), true)); raceText.setMinimumSize(new Dimension(120, 25)); setInfoLabelText(getPc().getRace()); @@ -852,7 +854,7 @@ try { - raceText.setText(getPc().getRace().piString()); + raceText.setText(OutputNameFormatting.piString(getPc().getRace(), true)); raceText.setMinimumSize(new Dimension(120, 25)); setInfoLabelText(getPc().getRace()); } @@ -1132,7 +1134,7 @@ } else { - if (race.getStatMod(i, getPc()) != 0) + if (BonusCalc.getStatMod(race, i, getPc()) != 0) { if (retString.length() > 0) { @@ -1141,7 +1143,7 @@ retString .append(SettingsHandler.getGame().s_ATTRIBSHORT[i] - + ":" + race.getStatMod(i, getPc())); + + ":" + BonusCalc.getStatMod(race, i, getPc())); } } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -112,6 +112,7 @@ import pcgen.core.Skill; import pcgen.core.SkillComparator; import pcgen.core.SkillUtilities; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.analysis.SkillModifier; import pcgen.core.analysis.SkillRankControl; import pcgen.core.pclevelinfo.PCLevelInfo; @@ -2316,7 +2317,7 @@ { StringBuffer b = new StringBuffer(); b.append(HTML).append(FONT_PLUS_1).append(BOLD) - .append(aSkill.piSubString()) + .append(OutputNameFormatting.piString(aSkill, false)) .append(END_BOLD).append(END_FONT).append(BR); if (!Globals.checkRule(RuleConstants.SKILLMAX)) { @@ -2558,10 +2559,10 @@ new Color(SettingsHandler.getPrereqFailColor()); } - return "|" + aColor.getRGB() + "|" + _aSkill.piString(); + return "|" + aColor.getRGB() + "|" + OutputNameFormatting.piString(_aSkill, true); } - return _aSkill.piString(); + return OutputNameFormatting.piString(_aSkill, true); } protected Integer getSkWrapMod() Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -92,6 +92,7 @@ import pcgen.core.RuleConstants; import pcgen.core.SettingsHandler; import pcgen.core.StatList; +import pcgen.core.analysis.BonusCalc; import pcgen.core.analysis.RaceStat; import pcgen.core.display.VisionDisplay; import pcgen.core.pclevelinfo.PCLevelInfo; @@ -887,7 +888,7 @@ } else { - if (aRace.getStatMod(i, pc) != 0) + if (BonusCalc.getStatMod(aRace, i, pc) != 0) { if (aString.length() > 0) { @@ -896,7 +897,7 @@ aString.append( SettingsHandler.getGame().s_ATTRIBSHORT[i]).append( - ':').append(aRace.getStatMod(i, pc)); + ':').append(BonusCalc.getStatMod(aRace, i, pc)); } } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -81,6 +81,7 @@ import pcgen.core.SettingsHandler; import pcgen.core.Skill; import pcgen.core.analysis.DescriptionFormatting; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.bonus.Bonus; import pcgen.core.bonus.BonusObj; import pcgen.core.character.CharacterSpell; @@ -554,7 +555,7 @@ } else if (aFeat != null) { - InfoLabelTextBuilder b = new InfoLabelTextBuilder(aFeat.piSubString()); + InfoLabelTextBuilder b = new InfoLabelTextBuilder(OutputNameFormatting.piString(aFeat, false)); b.appendLineBreak(); b.appendI18nElement("in_itmInfoLabelTextType" , aFeat.getType()); //$NON-NLS-1$ @@ -577,7 +578,7 @@ } else if (eqI != null) { - InfoLabelTextBuilder b = new InfoLabelTextBuilder(eqI.piSubString()); + InfoLabelTextBuilder b = new InfoLabelTextBuilder(OutputNameFormatting.piString(eqI, false)); if (!eqI.longName().equals(eqI.getName())) { @@ -710,7 +711,7 @@ } else if (aSpell != null) { - InfoLabelTextBuilder b = new InfoLabelTextBuilder(aSpell.piSubString()); + InfoLabelTextBuilder b = new InfoLabelTextBuilder(OutputNameFormatting.piString(aSpell, false)); b.appendLineBreak(); b.appendI18nElement("in_itmInfoLabelTextDuration", aSpell.getDuration()); //$NON-NLS-1 Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -76,6 +76,7 @@ import pcgen.core.PCTemplate; import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.analysis.TemplateModifier; import pcgen.core.prereq.PrereqHandler; import pcgen.core.prereq.PrerequisiteUtilities; @@ -681,7 +682,7 @@ if ((temp != null)) { - b.appendTitleElement(temp.piSubString()); + b.appendTitleElement(OutputNameFormatting.piString(temp, false)); b.appendLineBreak(); RaceType rt = temp.get(ObjectKey.RACETYPE); Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityInfoPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityInfoPanel.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityInfoPanel.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -51,6 +51,7 @@ import pcgen.core.BenefitFormatting; import pcgen.core.PlayerCharacter; import pcgen.core.analysis.DescriptionFormatting; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.prereq.PrerequisiteUtilities; import pcgen.gui.utils.JLabelPane; import pcgen.gui.utils.Utility; @@ -141,7 +142,7 @@ final StringBuffer sb = new StringBuffer(); sb.append(HTML).append(FONT_PLUS_1).append(BOLD); - sb.append(theAbility.piSubString()); + sb.append(OutputNameFormatting.piString(theAbility, false)); sb.append(END_BOLD).append(END_FONT).append(BR); sb.append(PropertyFactory.getFormattedString( "Ability.Info.Type", //$NON-NLS-1$ Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -65,6 +65,7 @@ import pcgen.core.Race; import pcgen.core.SettingsHandler; import pcgen.core.SpellProhibitor; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.character.CharacterSpell; import pcgen.core.character.SpellBook; import pcgen.core.character.SpellInfo; @@ -687,7 +688,7 @@ int highestSpellLevel = aClass.getHighestLevelSpell(pc); final InfoLabelTextBuilder b = new InfoLabelTextBuilder(); b.append("<table border=1><tr><td><font size=-2><b>"); //$NON-NLS-1$ - b.append(aClass.piSubString()).append(" ["); //$NON-NLS-1$ + b.append(OutputNameFormatting.piString(aClass, false)).append(" ["); //$NON-NLS-1$ b.append(String.valueOf(aClass.getLevel() + (int) pc.getTotalBonusTo("PCLEVEL", aClass.getKeyName()))); //$NON-NLS-1$ b.append("]</b></font></td>"); //$NON-NLS-1$ @@ -828,7 +829,7 @@ if (aSpell != null) { final InfoLabelTextBuilder b = - new InfoLabelTextBuilder(aSpell.piSubString()); + new InfoLabelTextBuilder(OutputNameFormatting.piString(aSpell, false)); final String addString = si.toString(); // would add [featList] if (addString.length() > 0) Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/SpellModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/SpellModel.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/SpellModel.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -42,6 +42,7 @@ import pcgen.core.Race; import pcgen.core.SettingsHandler; import pcgen.core.analysis.DescriptionFormatting; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.character.CharacterSpell; import pcgen.core.character.SpellInfo; import pcgen.core.spell.Spell; @@ -1214,7 +1215,7 @@ for (int ix = 0; ix < classList.size(); ++ix) { PObject obj = classList.get(ix); - String objName = obj.piString(); + String objName = OutputNameFormatting.piString(obj, true); tempNodes[ix] = new PObjectNode(); tempNodes[ix].setItem(objName); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/utils/PObjectNode.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/utils/PObjectNode.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/pcgen/gui/utils/PObjectNode.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -34,6 +34,7 @@ import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.SettingsHandler; +import pcgen.core.analysis.OutputNameFormatting; import pcgen.core.character.CharacterSpell; import pcgen.core.character.SpellInfo; import pcgen.core.prereq.PrereqHandler; @@ -577,7 +578,7 @@ if (item instanceof PObject) { - String itemName = ((PObject) item).piString(); + String itemName = OutputNameFormatting.piString(((PObject) item), true); if (displayName != null) { itemName = displayName; @@ -717,7 +718,7 @@ final StringBuffer val = new StringBuffer(80); // first, set the name - val.append(spellA.getSpell().piSubString()); // gets name of spell + val.append(OutputNameFormatting.piString(spellA.getSpell(), false)); // gets name of spell // now tack on any extra crap such as domains, etc val.append((item).toString()); // appends feat list if any Modified: Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java 2008-11-11 23:34:19 UTC (rev 8403) +++ Trunk/pcgen/code/src/java/plugin/exporttokens/TemplateToken.java 2008-11-11 23:41:52 UTC (rev 8404) @@ -34,6 +34,7 @@ import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; import pcgen.core.SpecialAbility; +import pcgen.core.analysis.BonusCalc; import pcgen.core.analysis.SpecialAbilityResolution; import pcgen.core.analysis.TemplateSR; import pcgen.core.analysis.TemplateStat; @@ -187,7 +188,7 @@ } else { - retString.append(template.getStatMod(iMod, pc)); + retString.append(BonusCalc.getStatMod(template, iMod, pc)); } break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-11-12 01:38:10
|
Revision: 8407 http://pcgen.svn.sourceforge.net/pcgen/?rev=8407&view=rev Author: thpr Date: 2008-11-12 01:35:59 +0000 (Wed, 12 Nov 2008) Log Message: ----------- ADD:SPELLCASTER token update Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.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/analysis/BonusAddition.java Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbility.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/plugin/lsttokens/add/SpellCasterToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java Removed Paths: ------------- Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbilitySpellCaster.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -41,13 +41,6 @@ * * @see pcgen.cdom.base.CDOMList * - * TODO Why is this necessary? It certainly doesn't add anything other than a - * name to the Trunk structure (as of SVN 6665), and it's even dangerously - * semantic in the sense that it takes in the PrimitiveChoiceSet and keeps a - * reference to it. getSet also asks for a PlayerCharacter, yet none is ever - * actually used in any implementation contained within Trunk (again 6665) - - * thpr 6/15/08 - * * @param <T> * the Class contained within this ChoiceSet */ Added: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -0,0 +1,239 @@ +/* + * Copyright 2006 (C) Tom Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on October 29, 2006. + * + * Current Ver: $Revision: 1111 $ Last Editor: $Author: boomer70 $ Last Edited: + * $Date: 2006-06-22 21:22:44 -0400 (Thu, 22 Jun 2006) $ + */ +package pcgen.cdom.choiceset; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import pcgen.base.lang.StringUtil; +import pcgen.cdom.base.ChoiceSet; +import pcgen.cdom.base.Constants; +import pcgen.cdom.base.PrimitiveChoiceSet; +import pcgen.core.PCClass; +import pcgen.core.PlayerCharacter; + +/** + * A ClassReferenceChoiceSet contains references to PCClass Objects. + * + * The contents of a ClassReferenceChoiceSet is defined at construction of the + * ClassReferenceChoiceSet. The contents of a ClassReferenceChoiceSet is fixed, + * and will not vary by the PlayerCharacter used to resolve the + * ClassReferenceChoiceSet. + * + * @param <T> + * The class of object this ReferenceChoiceSet contains. + */ +public class SpellCasterChoiceSet extends ChoiceSet<PCClass> implements + PrimitiveChoiceSet<PCClass> +{ + + private static final PrimitiveChoiceSet<PCClass> EMPTY_CHOICE_SET = new PrimitiveChoiceSet<PCClass>() + { + + public Class<PCClass> getChoiceClass() + { + return PCClass.class; + } + + public String getLSTformat() + { + return Constants.EMPTY_STRING; + } + + public Set<PCClass> getSet(PlayerCharacter pc) + { + return Collections.emptySet(); + } + }; + + /** + * The underlying Set of CDOMReferences that contain the objects in this + * ClassReferenceChoiceSet + */ + private final PrimitiveChoiceSet<PCClass> pcset; + + /** + * The underlying Set of CDOMReferences that contain the objects in this + * ClassReferenceChoiceSet + */ + private final PrimitiveChoiceSet<PCClass> primitives; + + /** + * Constructs a new ClassReferenceChoiceSet which contains the Set of + * objects contained within the given CDOMReferences. The CDOMReferences do + * not need to be resolved at the time of construction of the + * ClassReferenceChoiceSet. + * + * This constructor is reference-semantic, meaning that ownership of the + * Collection provided to this constructor is not transferred. Modification + * of the Collection (after this constructor completes) does not result in + * modifying the ClassReferenceChoiceSet, and the ClassReferenceChoiceSet + * will not modify the given Collection. + * + * @param col + * A Collection of CDOMReferences which define the Set of objects + * contained within the ClassReferenceChoiceSet + * @throws IllegalArgumentException + * if the given Collection is null or empty. + */ + public SpellCasterChoiceSet(PrimitiveChoiceSet<PCClass> col, + PrimitiveChoiceSet<PCClass> prim) + { + super("SPELLCASTER", col == null ? EMPTY_CHOICE_SET : col); + pcset = col; + primitives = prim; + } + + /** + * Returns a representation of this ClassReferenceChoiceSet, suitable for + * storing in an LST file. + */ + @Override + public String getLSTformat() + { + List<String> list = new ArrayList<String>(); + if (pcset != null) + { + list.add(pcset.getLSTformat()); + } + if (primitives != null) + { + list.add(primitives.getLSTformat()); + } + return StringUtil.join(list, Constants.COMMA); + } + + /** + * The class of object this ClassReferenceChoiceSet contains. + * + * The behavior of this method is undefined if the CDOMReference objects + * provided during the construction of this ClassReferenceChoiceSet are not + * yet resolved. + * + * @return The class of object this ClassReferenceChoiceSet contains. + */ + @Override + public Class<PCClass> getChoiceClass() + { + return PCClass.class; + } + + /** + * Returns a Set containing the Objects which this ClassReferenceChoiceSet + * contains. The contents of a ClassReferenceChoiceSet is fixed, and will + * not vary by the PlayerCharacter used to resolve the + * ClassReferenceChoiceSet. + * + * The behavior of this method is undefined if the CDOMReference objects + * provided during the construction of this ClassReferenceChoiceSet are not + * yet resolved. + * + * This method is reference-semantic, meaning that ownership of the Set + * returned by this method will be transferred to the calling object. + * Modification of the returned Set should not result in modifying the + * ClassReferenceChoiceSet, and modifying the ClassReferenceChoiceSet after + * the Set is returned should not modify the Set. + * + * @return A Set containing the Objects which this ClassReferenceChoiceSet + * contains. + */ + @Override + public Set<PCClass> getSet(PlayerCharacter pc) + { + Set<PCClass> returnSet = new HashSet<PCClass>(); + if (pcset != null) + { + for (PCClass pcc : pcset.getSet(pc)) + { + if (pc.getClassKeyed(pcc.getKeyName()) != null) + { + returnSet.add(pcc); + } + } + } + if (primitives != null) + { + returnSet.addAll(primitives.getSet(pc)); + } + return returnSet; + } + + /** + * Returns the consistent-with-equals hashCode for this + * ClassReferenceChoiceSet + * + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() + { + return pcset.hashCode() * 29 + + (primitives == null ? 0 : primitives.hashCode()); + } + + /** + * Returns true if this ClassReferenceChoiceSet is equal to the given + * Object. Equality is defined as being another ClassReferenceChoiceSet + * object with equal underlying contents. + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) + { + if (o == this) + { + return true; + } + if (o instanceof SpellCasterChoiceSet) + { + SpellCasterChoiceSet other = (SpellCasterChoiceSet) o; + if (pcset == null) + { + if (other.pcset != null) + { + return false; + } + } + else + { + if (!pcset.equals(other.pcset)) + { + return false; + } + } + if (primitives == null) + { + if (other.primitives != null) + { + return false; + } + } + return primitives.equals(other.primitives); + } + return false; + } +} Modified: Trunk/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -632,7 +632,7 @@ { boolean b = removeFromListFor(ListKey.SAVE, bonusString); if (!b) { - Logging.errorPrint("removeSave: Could not find bonus: " + bonusString + " in saveList."); + Logging.errorPrint("removeSave: Could not find: " + bonusString + " in saveList."); } } Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -13121,6 +13121,8 @@ if (anObj == null) { + Logging.debugPrint("BONUS: " + bonus + + " ignored due to no creator"); continue; } Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/BonusAddition.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/BonusAddition.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/BonusAddition.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -21,6 +21,7 @@ import java.util.List; +import pcgen.cdom.base.CDOMObject; import pcgen.cdom.enumeration.AssociationListKey; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; @@ -46,20 +47,17 @@ * choices */ public static void applyBonus(String bonusString, String chooseString, - PlayerCharacter aPC, PObject target, boolean addOnceOnly) + PlayerCharacter aPC, CDOMObject target, boolean addOnceOnly) { bonusString = target.bonusStringPrefix() + makeBonusString(bonusString, chooseString, aPC); final BonusObj aBonus = Bonus.newBonus(bonusString); - if (aBonus != null) { aBonus.setCreatorObject(target); aBonus.setAddOnceOnly(addOnceOnly); aPC.addAssoc(target, AssociationListKey.BONUS, aBonus); } - - target.addSave("BONUS|" + bonusString); } /** @@ -107,8 +105,6 @@ Logging.errorPrint("removeBonus: Could not find bonus: " + bonus + " in bonusList " + bonusList); } - - target.removeSave("BONUS|" + bonus); } private static String makeBonusString(String bonusString, Modified: Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbility.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbility.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbility.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -453,10 +453,6 @@ { return new LevelAbilityAbility(aowner, aLevel, aString, true); } - else if (aString.startsWith("SPELLCASTER")) - { - return new LevelAbilitySpellCaster(aowner, aLevel, aString); - } else { return new LevelAbility(aowner, aLevel, aString); Deleted: Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbilitySpellCaster.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbilitySpellCaster.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/core/levelability/LevelAbilitySpellCaster.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -1,244 +0,0 @@ -/* - * LevelAbilitySpellCaster.java - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Current Version: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - * - * Copyright 2005 Andrew Wilson <nu...@so...> - */ - -package pcgen.core.levelability; - -import java.util.Iterator; -import java.util.List; -import java.util.StringTokenizer; - -import pcgen.cdom.enumeration.AssociationListKey; -import pcgen.cdom.enumeration.StringKey; -import pcgen.core.Globals; -import pcgen.core.PCClass; -import pcgen.core.PObject; -import pcgen.core.PlayerCharacter; -import pcgen.core.bonus.Bonus; -import pcgen.core.bonus.BonusObj; -import pcgen.core.pclevelinfo.PCLevelInfo; -import pcgen.util.Logging; -import pcgen.util.chooser.ChooserInterface; - - - -/** - * Class for adding a level of a spellcasting class to a character as part of - * levelling up. - * - * @author Andrew Wilson <nu...@so...> - * @version $Revision$ - */ - -public class LevelAbilitySpellCaster extends LevelAbility -{ - /** - * Creates a new LevelAbilitySpellCaster object. - * - * @param aOwner - * @param aLevel - * @param tagData - */ - LevelAbilitySpellCaster(PObject aOwner, int aLevel, String tagData) - { - super(aOwner, aLevel, tagData); - } - - /** - * Performs the initial setup of a chooser. - * - * @param chooser - * @param aPC - * - * @return String - */ - - String prepareChooser(final ChooserInterface chooser, PlayerCharacter aPC) - { - setNumberofChoices(chooser, aPC); - - chooser.setTitle("Spell Caster Class Choice"); - - return rawTagData; - } - - /** - * Set the type property of this LevelAbility - * - * @param aPC - */ - - protected void setType(final PlayerCharacter aPC) - { - type = SPELLCASTER; - } - - /** - * Process the choice selected by the user. - * - * @param anArrayList - * @param selectedList - * @param aPC - * @param pcLevelInfo - */ - - public boolean processChoice( - final List<String> anArrayList, - final List<String> selectedList, - final PlayerCharacter aPC, - final PCLevelInfo pcLevelInfo) - { - if (selectedList.size() > 0) - { - final String classKey = selectedList.get(0); - PCClass theClass = aPC.getClassKeyed(classKey); - - if (theClass == null) - { - theClass = Globals.getContext().ref.silentlyGetConstructedCDOMObject(PCClass.class, classKey); - - if (theClass == null) - { - Logging.errorPrint( - "ERROR:Expected PC to have a class named " + classKey); - - return true; - } - - aPC.incrementClassLevel(0, theClass); - theClass = aPC.getClassKeyed(classKey); - } - final BonusObj aBonus = Bonus.newBonus("0|PCLEVEL|" + theClass.getKeyName() + "|1"); - - if (aBonus != null) - { - aBonus.setCreatorObject(owner); - aPC.addAssoc(owner, AssociationListKey.BONUS, aBonus); - } - - // owner.addSave("BONUS|0|PCLEVEL|" + bClass.getKeyName() + "|1"); - // to force spellbook update - // for divine spellcasters - - theClass.setLevel(theClass.getLevel(), aPC); - - for (String choice : selectedList) - { - aPC.addAssociation(this, choice); - } - } - return true; - } - - /** - * Processes a single token in the comma-separated list of the ADD: field - * and adds the choices to be shown to the ArrayList. - * - * @param aToken the token to be processed. - * @param anArrayList the list to add the choice to. - * @param aPC the PC this Level ability is adding to. - */ - - void processToken( - final String aToken, - final List<String> anArrayList, - final PlayerCharacter aPC) - { - String token = aToken; - final String casterKey = token.substring( - token.indexOf('(') + 1, - token.lastIndexOf(')')); - - // If the SPELLCASTER bit is still there, strip it off - if (aToken.startsWith("SPELLCASTER(")) - { - token = casterKey; - } - - final PCClass selectedClass = Globals.getContext().ref.silentlyGetConstructedCDOMObject(PCClass.class, casterKey); - - if (selectedClass != null) - { - token = selectedClass.getKeyName(); - } - - PCClass aClass; - - for (Iterator<PCClass> e1 = aPC.getClassList().iterator(); e1.hasNext();) - { - aClass = e1.next(); - - if ("Domain".equals(aClass.getKeyName())) - { - continue; // cannot include domain class - } - - // if the class has a valid spelltype and the class is not the owning - // class - else if ( - aClass.get(StringKey.SPELLTYPE) != null && - !aClass.getKeyName().equals(owner.getKeyName())) - { - // if the string is ANY or if the string matches the class' spell - // type - if ( - (token.equalsIgnoreCase("ANY")) || - (token.equalsIgnoreCase(aClass.get(StringKey.SPELLTYPE)))) - { - anArrayList.add(aClass.getKeyName()); - } - } - } - - if (token.startsWith("SPELLCASTER(")) - { - token = token.substring(12, token.length() - 1); - } - - final StringTokenizer aTok = new StringTokenizer(token, "|", false); - - while (aTok.hasMoreTokens()) - { - final String aString = aTok.nextToken(); - - if (anArrayList.contains(aString)) - { - continue; - } - - if ( - aString.startsWith("EXCLUDE=") && - anArrayList.contains(aString.substring(8))) - { - anArrayList.remove(aString.substring(8)); - } - - aClass = Globals.getContext().ref.silentlyGetConstructedCDOMObject(PCClass.class, aString); - - if (aClass != null) - { - anArrayList.add(aClass.getKeyName()); - } - } - } -} Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer0Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer0Parser.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer0Parser.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -510,8 +510,7 @@ aClass.addToListFor(ListKey.SPECIAL_ABILITY, sa); } - if (!aClass.containsInList(saveKey, token) - || token.startsWith("BONUS")) + if (!aClass.containsInList(saveKey, token)) { aClass.addSave(token); } @@ -1233,8 +1232,10 @@ aPC.addAssoc(anAbility, AssociationListKey.BONUS, aBonus); } } - - anAbility.addSave(aString); + else + { + anAbility.addSave(aString); + } } } else Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -922,6 +922,26 @@ specials.put(key, save); } } + + List<BonusObj> list = thePC.getAssocList(pcClass, AssociationListKey.BONUS); + if (list != null) + { + for (final BonusObj save : list) + { + specials.put(key, "BONUS|" + save); + } + } + for (int i = 1; i <= pcClass.getLevel(); i++) + { + list = thePC.getAssocList(pcClass.getClassLevel(i), AssociationListKey.BONUS); + if (list != null) + { + for (final BonusObj save : list) + { + specials.put(key, "BONUS|" + save); + } + } + } } // @@ -1440,6 +1460,17 @@ buffer.append(EntityEncoder.encode(save)); } + List<BonusObj> list = thePC.getAssocList(ability, AssociationListKey.BONUS); + if (list != null) + { + for (final BonusObj save : list) + { + buffer.append('|'); + buffer.append(TAG_SAVE).append(':'); + buffer.append(EntityEncoder.encode("BONUS|" + save)); + } + } + for (final Description desc : ability.getSafeListFor(ListKey.DESCRIPTION)) { buffer.append(Constants.PIPE); Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -75,6 +75,7 @@ import pcgen.core.SubClass; import pcgen.core.SubstitutionClass; import pcgen.core.WeaponProf; +import pcgen.core.analysis.BonusAddition; import pcgen.core.analysis.DomainApplication; import pcgen.core.analysis.SkillRankControl; import pcgen.core.analysis.SubstitutionLevelSupport; @@ -1612,20 +1613,24 @@ { final String dString = EntityEncoder.decode(child.getText()); - - // TODO This doesn't seem to be written in Creator. if (dString.startsWith(TAG_BONUS + TAG_SEPARATOR)) { - final BonusObj aBonus = Bonus.newBonus(dString.substring(6)); - - if (aBonus != null) + String bonusString = dString.substring(6); + int pipeLoc = bonusString.indexOf('|'); + if (pipeLoc != -1) { - aBonus.setCreatorObject(aPCClass); - thePC.addAssoc(aPCClass, AssociationListKey.BONUS, aBonus); + CDOMObject target = aPCClass; + int bonusLevel = Integer.parseInt(bonusString + .substring(0, pipeLoc)); + if (bonusLevel > 0) + { + target = aPCClass.getClassLevel(bonusLevel); + } + bonusString = bonusString.substring(pipeLoc + 1); + BonusAddition.applyBonus(bonusString, "", thePC, + target, false); } } - - aPCClass.addSave(dString); } } else if (TAG_SPECIALTIES.equals(tag)) @@ -2425,8 +2430,10 @@ thePC.addAssoc(ability, AssociationListKey.BONUS, aBonus); } } - - ability.addSave(saveKey); + else + { + ability.addSave(saveKey); + } } } if (ability != null && category != null && nature != null) @@ -2695,8 +2702,10 @@ thePC.addAssoc(aFeat, AssociationListKey.BONUS, aBonus); } } - - aFeat.addSave(saveKey); + else + { + aFeat.addSave(saveKey); + } } else if (tag.equals(TAG_LEVELABILITY)) { Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-11-12 00:50:57 UTC (rev 8406) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-11-12 01:35:59 UTC (rev 8407) @@ -17,16 +17,58 @@ */ package plugin.lsttokens.add; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.StringTokenizer; + +import pcgen.base.formula.Formula; +import pcgen.cdom.base.CDOMObject; +import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.ChoiceSet; import pcgen.cdom.base.Constants; +import pcgen.cdom.base.FormulaFactory; +import pcgen.cdom.base.PersistentChoiceActor; +import pcgen.cdom.base.PersistentTransitionChoice; +import pcgen.cdom.base.TransitionChoice; +import pcgen.cdom.choiceset.ReferenceChoiceSet; +import pcgen.cdom.choiceset.SpellCasterChoiceSet; +import pcgen.cdom.enumeration.ListKey; +import pcgen.core.Globals; +import pcgen.core.PCClass; import pcgen.core.PObject; -import pcgen.persistence.lst.AddLstToken; +import pcgen.core.PlayerCharacter; +import pcgen.core.analysis.BonusAddition; +import pcgen.rules.context.Changes; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.TokenUtilities; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMSecondaryToken; import pcgen.util.Logging; -public class SpellCasterToken implements AddLstToken +public class SpellCasterToken extends AbstractToken implements + CDOMSecondaryToken<CDOMObject>, PersistentChoiceActor<PCClass> { + private static final Class<PCClass> PCCLASS_CLASS = PCClass.class; + + public String getParentToken() + { + return "ADD"; + } + + private String getFullName() + { + return getParentToken() + ":" + getTokenName(); + } + public boolean parse(PObject target, String value, int level) { + if (value.length() == 0) + { + Logging.errorPrint(getTokenName() + " may not have empty argument"); + return false; + } int pipeLoc = value.indexOf(Constants.PIPE); String countString; String items; @@ -40,19 +82,210 @@ if (pipeLoc != value.lastIndexOf(Constants.PIPE)) { Logging.errorPrint("Syntax of ADD:" + getTokenName() - + " only allows one | : " + value); + + " only allows one | : " + value); return false; } countString = value.substring(0, pipeLoc); items = value.substring(pipeLoc + 1); } target.addAddList(level, getTokenName() + "(" + items + ")" - + countString); + + countString); return true; } + @Override public String getTokenName() { return "SPELLCASTER"; } + + public boolean parse(LoadContext context, CDOMObject obj, String value) + { + int pipeLoc = value.indexOf(Constants.PIPE); + int count; + String items; + if (pipeLoc == -1) + { + count = 1; + items = value; + } + else + { + String countString = value.substring(0, pipeLoc); + try + { + count = Integer.parseInt(countString); + if (count < 1) + { + Logging.errorPrint("Count in " + getFullName() + + " must be > 0"); + return false; + } + } + catch (NumberFormatException nfe) + { + Logging.errorPrint("Invalid Count in " + getFullName() + ": " + + countString); + return false; + } + items = value.substring(pipeLoc + 1); + } + + if (isEmpty(items) || hasIllegalSeparator(',', items)) + { + return false; + } + StringTokenizer tok = new StringTokenizer(items, Constants.COMMA); + + boolean foundAny = false; + boolean foundOther = false; + + List<CDOMReference<PCClass>> groups = new ArrayList<CDOMReference<PCClass>>(); + List<CDOMReference<PCClass>> prims = new ArrayList<CDOMReference<PCClass>>(); + while (tok.hasMoreTokens()) + { + String token = tok.nextToken(); + if (Constants.LST_ANY.equalsIgnoreCase(token)) + { + foundAny = true; + groups.add(context.ref.getCDOMAllReference(PCCLASS_CLASS)); + } + else + { + if (token.equals("Arcane") || token.equals("Divine") + || token.equals("Psionic")) + { + // TODO Need deprecation warning here + token = "TYPE=" + token; + } + foundOther = true; + if (token.startsWith(Constants.LST_TYPE_OLD) + || token.startsWith(Constants.LST_TYPE)) + { + CDOMReference<PCClass> ref = TokenUtilities + .getTypeReference(context, PCCLASS_CLASS, token + .substring(5)); + if (ref == null) + { + Logging + .errorPrint(" Error was encountered while parsing " + + getFullName() + + ": " + + token + + " is not a valid reference: " + value); + return false; + } + groups.add(ref); + } + else + { + prims.add(context.ref + .getCDOMReference(PCCLASS_CLASS, token)); + } + } + } + + if (foundAny && foundOther) + { + Logging.errorPrint("Non-sensical " + getFullName() + + ": Contains ANY and a specific reference: " + value); + return false; + } + + ReferenceChoiceSet<PCClass> grcs = groups.isEmpty() ? null + : new ReferenceChoiceSet<PCClass>(groups); + ReferenceChoiceSet<PCClass> prcs = prims.isEmpty() ? null + : new ReferenceChoiceSet<PCClass>(prims); + ChoiceSet<PCClass> cs = new SpellCasterChoiceSet(grcs, prcs); + PersistentTransitionChoice<PCClass> tc = new PersistentTransitionChoice<PCClass>( + cs, FormulaFactory.getFormulaFor(count)); + tc.setTitle("Spell Caster Class Choice"); + context.getObjectContext().addToList(obj, ListKey.ADD, tc); + tc.setTitle("Language Choice"); + tc.setChoiceActor(this); + return true; + + } + + public String[] unparse(LoadContext context, CDOMObject obj) + { + Changes<PersistentTransitionChoice<?>> grantChanges = context + .getObjectContext().getListChanges(obj, ListKey.ADD); + Collection<PersistentTransitionChoice<?>> addedItems = grantChanges + .getAdded(); + if (addedItems == null || addedItems.isEmpty()) + { + // Zero indicates no Token + return null; + } + List<String> addStrings = new ArrayList<String>(); + for (TransitionChoice<?> container : addedItems) + { + ChoiceSet<?> cs = container.getChoices(); + if (PCCLASS_CLASS.equals(cs.getChoiceClass())) + { + Formula f = container.getCount(); + if (f == null) + { + context.addWriteMessage("Unable to find " + getFullName() + + " Count"); + return null; + } + String fString = f.toString(); + StringBuilder sb = new StringBuilder(); + if (!"1".equals(fString)) + { + sb.append(fString).append(Constants.PIPE); + } + sb.append(cs.getLSTformat()); + addStrings.add(sb.toString()); + + // assoc.getAssociation(AssociationKey.CHOICE_MAXCOUNT); + } + } + return addStrings.toArray(new String[addStrings.size()]); + } + + public Class<CDOMObject> getTokenClass() + { + return CDOMObject.class; + } + + public void applyChoice(CDOMObject owner, PCClass choice, PlayerCharacter pc) + { + PCClass theClass = pc.getClassKeyed(choice.getKeyName()); + + if (theClass == null) + { + pc.incrementClassLevel(0, choice); + theClass = pc.getClassKeyed(choice.getKeyName()); + } + + BonusAddition.applyBonus("PCLEVEL|" + theClass.getKeyName() + "|1", "", + pc, owner, false); + + theClass.setLevel(theClass.getLevel(), pc); + } + + public boolean allow(PCClass choice, PlayerCharacter pc, boolean allowStack) + { + return true; + } + + public PCClass decodeChoice(String s) + { + return Globals.getContext().ref.silentlyGetConstructedCDOMObject( + PCCLASS_CLASS, s); + } + + public String encodeChoice(Object choice) + { + return ((PCClass) choice).getKeyName(); + } + + public void restoreChoice(PlayerCharacter pc, CDOMObject owner, + PCClass choice) + { + // No action required + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-11-14 01:53:53
|
Revision: 8425 http://pcgen.svn.sourceforge.net/pcgen/?rev=8425&view=rev Author: thpr Date: 2008-11-14 01:53:43 +0000 (Fri, 14 Nov 2008) Log Message: ----------- [ 2258402 ] New Token System does not detect duplicate Issue#: 2258402 Modified Paths: -------------- Trunk/pcgen/code/src/java/gmgen/pluginmgr/PluginLoader.java Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenLibrary.java Trunk/pcgen/code/src/java/pcgen/rules/persistence/util/TokenFamily.java Modified: Trunk/pcgen/code/src/java/gmgen/pluginmgr/PluginLoader.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/pluginmgr/PluginLoader.java 2008-11-14 01:05:18 UTC (rev 8424) +++ Trunk/pcgen/code/src/java/gmgen/pluginmgr/PluginLoader.java 2008-11-14 01:53:43 UTC (rev 8425) @@ -21,6 +21,7 @@ package gmgen.pluginmgr; import gmgen.util.MiscUtilities; +import pcgen.cdom.base.Constants; import pcgen.core.Globals; import pcgen.core.SettingsHandler; import pcgen.persistence.lst.prereq.PreMultParser; @@ -88,7 +89,10 @@ jar.getClassLoader().startAllPlugins(system); } loadedMap.put(system, system); - TokenLibrary.addToTokenMap(new PreMultParser()); + if (system.equals(Constants.s_SYSTEM_TOKENS)) + { + TokenLibrary.addToTokenMap(new PreMultParser()); + } } } Modified: Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenLibrary.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenLibrary.java 2008-11-14 01:05:18 UTC (rev 8424) +++ Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenLibrary.java 2008-11-14 01:53:43 UTC (rev 8425) @@ -36,6 +36,7 @@ import pcgen.rules.persistence.token.DeferredToken; import pcgen.rules.persistence.token.PreCompatibilityToken; import pcgen.rules.persistence.util.TokenFamily; +import pcgen.util.Logging; public class TokenLibrary { @@ -155,7 +156,12 @@ if (newToken instanceof CDOMPrimaryToken) { CDOMPrimaryToken<?> tok = (CDOMPrimaryToken<?>) newToken; - TokenFamily.CURRENT.putToken(tok); + if (TokenFamily.CURRENT.putToken(tok) != null) + { + Logging.errorPrint("Duplicate " + + tok.getTokenClass().getSimpleName() + + " Token found for token " + tok.getTokenName()); + } if (PCCLASS_CLASS.equals(tok.getTokenClass())) { addToTokenMap(new ClassWrappedToken( @@ -164,7 +170,14 @@ } if (newToken instanceof CDOMSecondaryToken) { - TokenFamily.CURRENT.putSubToken((CDOMSecondaryToken<?>) newToken); + CDOMSecondaryToken<?> tok = (CDOMSecondaryToken<?>) newToken; + if (TokenFamily.CURRENT.putSubToken(tok) != null) + { + Logging.errorPrint("Duplicate " + + tok.getTokenClass().getSimpleName() + + " Token found for token " + tok.getParentToken() + + ":" + tok.getTokenName()); + } } // if (newToken instanceof ChoiceSetToken) // { @@ -182,12 +195,35 @@ */ PreCompatibilityToken pos = new PreCompatibilityToken(s, prereqToken, false); - TokenFamily.CURRENT.putToken(pos); + if (TokenFamily.CURRENT.putToken(pos) != null) + { + Logging.errorPrint("Duplicate " + + pos.getTokenClass().getSimpleName() + + " Token found for token " + pos.getTokenName()); + } + if (TokenFamily.CURRENT.putSubToken(pos) != null) + { + Logging.errorPrint("Duplicate " + + pos.getTokenClass().getSimpleName() + + " Token found for token " + pos.getParentToken() + + ":" + pos.getTokenName()); + } TokenFamily.CURRENT.putSubToken(pos); PreCompatibilityToken neg = new PreCompatibilityToken(s, prereqToken, true); - TokenFamily.CURRENT.putToken(neg); - TokenFamily.CURRENT.putSubToken(neg); + if (TokenFamily.CURRENT.putToken(neg) != null) + { + Logging.errorPrint("Duplicate " + + neg.getTokenClass().getSimpleName() + + " Token found for token " + neg.getTokenName()); + } + if (TokenFamily.CURRENT.putSubToken(neg) != null) + { + Logging.errorPrint("Duplicate " + + neg.getTokenClass().getSimpleName() + + " Token found for token " + neg.getParentToken() + + ":" + neg.getTokenName()); + } } } if (newToken instanceof CDOMCompatibilityToken) @@ -195,7 +231,16 @@ CDOMCompatibilityToken<?> tok = (CDOMCompatibilityToken<?>) newToken; TokenFamily fam = TokenFamily.getConstant(tok.compatibilityLevel(), tok.compatibilitySubLevel(), tok.compatibilityPriority()); - fam.putToken(tok); + if (fam.putToken(tok) != null) + { + Logging.errorPrint("Duplicate " + + tok.getTokenClass().getSimpleName() + + " Compatibility Token found for token " + + tok.getTokenName() + " at compatibility level " + + tok.compatibilityLevel() + "." + + tok.compatibilitySubLevel() + "." + + tok.compatibilityPriority()); + } TOKEN_FAMILIES.add(fam); if (fam.compareTo(TokenFamily.REV514) <= 0 && PCCLASS_CLASS.equals(tok.getTokenClass())) Modified: Trunk/pcgen/code/src/java/pcgen/rules/persistence/util/TokenFamily.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/persistence/util/TokenFamily.java 2008-11-14 01:05:18 UTC (rev 8424) +++ Trunk/pcgen/code/src/java/pcgen/rules/persistence/util/TokenFamily.java 2008-11-14 01:53:43 UTC (rev 8425) @@ -84,10 +84,10 @@ return tokenMap.values(cl); } - public <U, T extends CDOMSubToken<U>> void putSubToken(T tok) + public <U, T extends CDOMSubToken<U>> CDOMSubToken<U> putSubToken(T tok) { - subTokenMap.put(tok.getTokenClass(), tok.getParentToken(), tok - .getTokenName(), tok); + return (CDOMSubToken<U>) subTokenMap.put(tok.getTokenClass(), tok + .getParentToken(), tok.getTokenName(), tok); } public <T> CDOMSubToken<T> getSubToken(Class<? extends T> cl, String token, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-11-14 23:22:31
|
Revision: 8429 http://pcgen.svn.sourceforge.net/pcgen/?rev=8429&view=rev Author: thpr Date: 2008-11-14 23:22:29 +0000 (Fri, 14 Nov 2008) Log Message: ----------- cleanup Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java Modified: Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java 2008-11-14 22:40:00 UTC (rev 8428) +++ Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java 2008-11-14 23:22:29 UTC (rev 8429) @@ -26,11 +26,7 @@ import pcgen.cdom.base.Constants; import pcgen.core.*; -import pcgen.core.utils.MessageType; -import pcgen.core.utils.ShowMessageDelegate; import pcgen.gui.utils.Utility; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.PersistenceManager; import pcgen.util.Logging; import pcgen.util.PropertyFactory; @@ -39,7 +35,6 @@ import javax.swing.JRadioButtonMenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.net.URI; import java.util.*; /** Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java 2008-11-14 22:40:00 UTC (rev 8428) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java 2008-11-14 23:22:29 UTC (rev 8429) @@ -6,7 +6,6 @@ import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.Constants; -import pcgen.cdom.enumeration.ListKey; import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-11-19 00:31:02
|
Revision: 8454 http://pcgen.svn.sourceforge.net/pcgen/?rev=8454&view=rev Author: thpr Date: 2008-11-19 00:30:59 +0000 (Wed, 19 Nov 2008) Log Message: ----------- [ 2190904 ] [Nov 8] Campaign String based Tokens Issue#: 2190904 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Campaign.java Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Campaign.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Campaign.java 2008-11-18 05:06:46 UTC (rev 8453) +++ Trunk/pcgen/code/src/java/pcgen/core/Campaign.java 2008-11-19 00:30:59 UTC (rev 8454) @@ -351,24 +351,6 @@ } /** - * Set the book type - * @param bookType - */ - public void setBookType(final String bookType) - { - put(StringKey.BOOK_TYPE, bookType); - } - - /** - * Set the destination - * @param destination - */ - public void setDestination(final String destination) - { - put(StringKey.DESTINATION, destination); - } - - /** * Sets the name of the game this campaign is intended for. * @param gameMode name or '|' delimited list of names */ @@ -388,33 +370,6 @@ } /** - * Set the genre - * @param genre - */ - public void setGenre(final String genre) - { - put(StringKey.GENRE, genre); - } - - /** - * Set the help - * @param help - */ - public void setHelp(final String help) - { - put(StringKey.HELP, help); - } - - /** - * Set the infotext - * @param infoText - */ - public void setInfoText(final String infoText) - { - put(StringKey.INFO_TEXT, infoText); - } - - /** * Set the publisher long name * @param pubNameLong */ @@ -454,15 +409,6 @@ } /** - * Set the setting - * @param setting - */ - public void setSetting(final String setting) - { - put(StringKey.SETTING, setting); - } - - /** * @return whether or not the d20 info will pop up when this campaign is loaded */ public boolean isD20() Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java 2008-11-18 05:06:46 UTC (rev 8453) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java 2008-11-19 00:30:59 UTC (rev 8454) @@ -23,6 +23,7 @@ package pcgen.gui.editor; import pcgen.cdom.enumeration.IntegerKey; +import pcgen.cdom.enumeration.StringKey; import pcgen.core.Campaign; import pcgen.core.PObject; import pcgen.core.SettingsHandler; @@ -143,13 +144,13 @@ theCampaign.setIsD20(isD20.getSelectedObjects() != null); theCampaign.setShowInMenu(showInMenu.getSelectedObjects() != null); theCampaign.setIsLicensed(isLicensed.getSelectedObjects() != null); - theCampaign.setInfoText(infoText.getText().trim()); - theCampaign.setBookType(bookType.getSelectedItem().toString()); - theCampaign.setDestination(destination.getText().trim()); + theCampaign.put(StringKey.INFO_TEXT, infoText.getText().trim()); + theCampaign.put(StringKey.BOOK_TYPE, bookType.getSelectedItem().toString()); + theCampaign.put(StringKey.DESTINATION, destination.getText().trim()); theCampaign.addLicense(".CLEAR"); theCampaign.addSection15(".CLEAR"); - theCampaign.setSetting(setting.getText().trim()); - theCampaign.setGenre(genre.getText().trim()); + theCampaign.put(StringKey.SETTING, setting.getText().trim()); + theCampaign.put(StringKey.GENRE, genre.getText().trim()); Properties options = new Properties(); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java 2008-11-18 05:06:46 UTC (rev 8453) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java 2008-11-19 00:30:59 UTC (rev 8454) @@ -1,14 +1,15 @@ package plugin.lsttokens.campaign; -import java.net.URI; - +import pcgen.cdom.enumeration.StringKey; import pcgen.core.Campaign; -import pcgen.persistence.lst.CampaignLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** * Class deals with BOOKTYPE Token */ -public class BooktypeToken implements CampaignLstToken +public class BooktypeToken implements CDOMPrimaryToken<Campaign> { public String getTokenName() @@ -16,9 +17,30 @@ return "BOOKTYPE"; } - public boolean parse(Campaign campaign, String value, URI sourceUri) + public boolean parse(LoadContext context, Campaign camp, String value) { - campaign.setBookType(value); + if (value == null || value.length() == 0) + { + Logging.errorPrint(getTokenName() + " arguments may not be empty"); + return false; + } + context.getObjectContext().put(camp, StringKey.BOOK_TYPE, value); return true; } + + public String[] unparse(LoadContext context, Campaign camp) + { + String booktype = + context.getObjectContext().getString(camp, StringKey.BOOK_TYPE); + if (booktype == null) + { + return null; + } + return new String[]{booktype}; + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java 2008-11-18 05:06:46 UTC (rev 8453) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java 2008-11-19 00:30:59 UTC (rev 8454) @@ -1,14 +1,15 @@ package plugin.lsttokens.campaign; -import java.net.URI; - +import pcgen.cdom.enumeration.StringKey; import pcgen.core.Campaign; -import pcgen.persistence.lst.CampaignLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** * Class deals with GENRE Token */ -public class GenreToken implements CampaignLstToken +public class GenreToken implements CDOMPrimaryToken<Campaign> { public String getTokenName() @@ -16,9 +17,29 @@ return "GENRE"; } - public boolean parse(Campaign campaign, String value, URI sourceUri) + public boolean parse(LoadContext context, Campaign camp, String value) { - campaign.setGenre(value); + if (value == null || value.length() == 0) + { + Logging.errorPrint(getTokenName() + " arguments may not be empty"); + return false; + } + context.getObjectContext().put(camp, StringKey.GENRE, value); return true; } -} + + public String[] unparse(LoadContext context, Campaign camp) + { + String genre = + context.getObjectContext().getString(camp, StringKey.GENRE); + if (genre == null) + { + return null; + } + return new String[]{genre}; + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + }} Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java 2008-11-18 05:06:46 UTC (rev 8453) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java 2008-11-19 00:30:59 UTC (rev 8454) @@ -1,14 +1,15 @@ package plugin.lsttokens.campaign; -import java.net.URI; - +import pcgen.cdom.enumeration.StringKey; import pcgen.core.Campaign; -import pcgen.persistence.lst.CampaignLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** * Class deals with HELP Token */ -public class HelpToken implements CampaignLstToken +public class HelpToken implements CDOMPrimaryToken<Campaign> { public String getTokenName() @@ -16,9 +17,30 @@ return "HELP"; } - public boolean parse(Campaign campaign, String value, URI sourceUri) + public boolean parse(LoadContext context, Campaign camp, String value) { - campaign.setHelp(value); + if (value == null || value.length() == 0) + { + Logging.errorPrint(getTokenName() + " arguments may not be empty"); + return false; + } + context.getObjectContext().put(camp, StringKey.HELP, value); return true; } + + public String[] unparse(LoadContext context, Campaign camp) + { + String help = + context.getObjectContext().getString(camp, StringKey.HELP); + if (help == null) + { + return null; + } + return new String[]{help}; + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java 2008-11-18 05:06:46 UTC (rev 8453) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java 2008-11-19 00:30:59 UTC (rev 8454) @@ -2,14 +2,18 @@ import java.net.URI; +import pcgen.cdom.enumeration.StringKey; import pcgen.core.Campaign; import pcgen.persistence.lst.CampaignLstToken; import pcgen.persistence.lst.InstallLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** * Class deals with INFOTEXT Token */ -public class InfotextToken implements CampaignLstToken, InstallLstToken +public class InfotextToken implements CDOMPrimaryToken<Campaign>, InstallLstToken { public String getTokenName() @@ -19,7 +23,34 @@ public boolean parse(Campaign campaign, String value, URI sourceUri) { - campaign.setInfoText(value); + campaign.put(StringKey.INFO_TEXT, value); return true; } + + public boolean parse(LoadContext context, Campaign camp, String value) + { + if (value == null || value.length() == 0) + { + Logging.errorPrint(getTokenName() + " arguments may not be empty"); + return false; + } + context.getObjectContext().put(camp, StringKey.INFO_TEXT, value); + return true; + } + + public String[] unparse(LoadContext context, Campaign camp) + { + String infotext = + context.getObjectContext().getString(camp, StringKey.INFO_TEXT); + if (infotext == null) + { + return null; + } + return new String[]{infotext}; + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java 2008-11-18 05:06:46 UTC (rev 8453) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java 2008-11-19 00:30:59 UTC (rev 8454) @@ -1,14 +1,15 @@ package plugin.lsttokens.campaign; -import java.net.URI; - +import pcgen.cdom.enumeration.StringKey; import pcgen.core.Campaign; -import pcgen.persistence.lst.CampaignLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** * Class deals with SETTING Token */ -public class SettingToken implements CampaignLstToken +public class SettingToken implements CDOMPrimaryToken<Campaign> { public String getTokenName() @@ -16,9 +17,30 @@ return "SETTING"; } - public boolean parse(Campaign campaign, String value, URI sourceUri) + public boolean parse(LoadContext context, Campaign camp, String value) { - campaign.setSetting(value); + if (value == null || value.length() == 0) + { + Logging.errorPrint(getTokenName() + " arguments may not be empty"); + return false; + } + context.getObjectContext().put(camp, StringKey.SETTING, value); return true; } + + public String[] unparse(LoadContext context, Campaign camp) + { + String setting = + context.getObjectContext().getString(camp, StringKey.SETTING); + if (setting == null) + { + return null; + } + return new String[]{setting}; + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-11-19 00:56:24
|
Revision: 8455 http://pcgen.svn.sourceforge.net/pcgen/?rev=8455&view=rev Author: thpr Date: 2008-11-19 00:56:22 +0000 (Wed, 19 Nov 2008) Log Message: ----------- [ 2190900 ] [Nov 8] Campaign RANK Token Issue#: 2190900 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Campaign.java Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Campaign.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Campaign.java 2008-11-19 00:30:59 UTC (rev 8454) +++ Trunk/pcgen/code/src/java/pcgen/core/Campaign.java 2008-11-19 00:56:22 UTC (rev 8455) @@ -37,7 +37,6 @@ import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.Constants; -import pcgen.cdom.enumeration.IntegerKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.reference.TransparentReferenceManufacturer; @@ -400,15 +399,6 @@ } /** - * Sets the 'load rank' of the campaign. - * @param rank the wanted load rank - */ - public void setRank(final int rank) - { - put(IntegerKey.CAMPAIGN_RANK, rank); - } - - /** * @return whether or not the d20 info will pop up when this campaign is loaded */ public boolean isD20() Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java 2008-11-19 00:30:59 UTC (rev 8454) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java 2008-11-19 00:56:22 UTC (rev 8455) @@ -88,7 +88,7 @@ public void updateData(PObject thisPObject) { - theCampaign.setRank(Integer.parseInt(rank.getValue().toString())); + theCampaign.put(IntegerKey.CAMPAIGN_RANK, Integer.parseInt(rank.getValue().toString())); game = ""; StringBuffer tempBuff = new StringBuffer(30); if (gm35e.isSelected()) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java 2008-11-19 00:30:59 UTC (rev 8454) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java 2008-11-19 00:56:22 UTC (rev 8455) @@ -1,15 +1,16 @@ package plugin.lsttokens.campaign; -import java.net.URI; - +import pcgen.cdom.enumeration.IntegerKey; import pcgen.core.Campaign; -import pcgen.persistence.lst.CampaignLstToken; +import pcgen.persistence.PersistenceLayerException; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.CDOMPrimaryToken; import pcgen.util.Logging; /** * Class deals with RANK Token */ -public class RankToken implements CampaignLstToken +public class RankToken implements CDOMPrimaryToken<Campaign> { public String getTokenName() @@ -17,17 +18,38 @@ return "RANK"; } - public boolean parse(Campaign campaign, String value, URI sourceUri) + public boolean parse(LoadContext context, Campaign obj, String value) + throws PersistenceLayerException { try { - campaign.setRank(Integer.parseInt(value)); + context.obj.put(obj, IntegerKey.CAMPAIGN_RANK, Integer + .parseInt(value)); return true; } catch (NumberFormatException nfe) { - Logging.log(Logging.LST_ERROR, "Bad RANK " + value); + Logging.log(Logging.LST_ERROR, "Bad " + getTokenName() + + " value, expected an integer: " + value); } return false; } + + public String[] unparse(LoadContext context, Campaign obj) + { + Integer rank = + context.getObjectContext().getInteger(obj, + IntegerKey.CAMPAIGN_RANK); + if (rank == null) + { + return null; + } + return new String[]{rank.toString()}; + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2008-11-28 22:46:31
|
Revision: 8506 http://pcgen.svn.sourceforge.net/pcgen/?rev=8506&view=rev Author: jdempsey Date: 2008-11-28 22:46:19 +0000 (Fri, 28 Nov 2008) Log Message: ----------- [PATHFINDER] FAVCLASS:CHOOSE improvements Issue#: 1999270 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java 2008-11-28 16:25:19 UTC (rev 8505) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java 2008-11-28 22:46:19 UTC (rev 8506) @@ -308,6 +308,7 @@ String DOT = "."; String LST_LIST = "LIST"; String LST_PATTERN = "%"; + String LST_PRECENTLIST = "%LIST"; String COLON = ":"; String LST_NONE = "NONE"; String LST_DOT_CLEARALL = ".CLEARALL"; @@ -326,5 +327,6 @@ String LST_CROSSCLASS = "CROSSCLASSSKILLS"; char PERCENT = '%'; String LST_CHOICE = "CHOICE"; + String HIGHESTLEVELCLASS = "HIGHESTLEVELCLASS"; public static final int NO_LEVEL_LIMIT = -1; } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java 2008-11-28 16:25:19 UTC (rev 8505) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationListKey.java 2008-11-28 22:46:19 UTC (rev 8506) @@ -37,6 +37,7 @@ import pcgen.core.Ability; import pcgen.core.ArmorProf; import pcgen.core.Equipment; +import pcgen.core.PCClass; import pcgen.core.ShieldProf; import pcgen.core.Skill; import pcgen.core.SpellProhibitor; @@ -101,6 +102,9 @@ public static final AssociationListKey<CharacterSpell> CHARACTER_SPELLS = new AssociationListKey<CharacterSpell>(); + public static final AssociationListKey<PCClass> FAVCLASS = + new AssociationListKey<PCClass>(); + private static CaseInsensitiveMap<AssociationListKey<?>> map = null; private AssociationListKey() Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-11-28 16:25:19 UTC (rev 8505) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-11-28 22:46:19 UTC (rev 8506) @@ -5843,6 +5843,15 @@ favored.addAll(ref.getContainedObjects()); } } + List<PCClass> assocFavclass = + getAssocList(getRace(), AssociationListKey.FAVCLASS); + if (assocFavclass != null && !assocFavclass.isEmpty()) + { + for (PCClass cls : assocFavclass) + { + favored.add(cls); + } + } for (PCTemplate template : templateList) { @@ -5855,8 +5864,19 @@ favored.addAll(ref.getContainedObjects()); } } + assocFavclass = + getAssocList(template, AssociationListKey.FAVCLASS); + if (assocFavclass != null && !assocFavclass.isEmpty()) + { + for (PCClass cls : assocFavclass) + { + favored.add(cls); + } + } } + + return favored; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2008-11-28 16:25:19 UTC (rev 8505) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2008-11-28 22:46:19 UTC (rev 8506) @@ -29,16 +29,21 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Category; import pcgen.cdom.base.ChoiceSet; +import pcgen.cdom.base.ChooseResultActor; import pcgen.cdom.base.Constants; import pcgen.cdom.base.PrimitiveChoiceSet; import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.choiceset.ClassReferenceChoiceSet; +import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.SubClassCategory; import pcgen.cdom.reference.CategorizedCDOMReference; +import pcgen.core.Globals; import pcgen.core.PCClass; +import pcgen.core.PlayerCharacter; import pcgen.core.Race; +import pcgen.core.Skill; import pcgen.core.SubClass; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; @@ -50,7 +55,7 @@ * Class deals with FAVCLASS Token */ public class FavclassToken extends AbstractToken implements - CDOMPrimaryToken<Race> + CDOMPrimaryToken<Race>, ChooseResultActor { public static final Class<PCClass> PCCLASS_CLASS = PCClass.class; public static final Class<SubClass> SUBCLASS_CLASS = SubClass.class; @@ -130,6 +135,11 @@ tc.setTitle("Select favored class"); tc.setRequired(true); + Logging + .deprecationPrint("Use of FAVCLASS:CHOOSE is deprecated. " + + "Please use FAVCLASS:%LIST with a CHOOSE:CLASS insetad of FAVCLASS:CHOOSE|" + + value); + return true; } @@ -145,12 +155,25 @@ { String token = tok.nextToken(); if (Constants.LST_ALL.equalsIgnoreCase(token) - || Constants.LST_ANY.equalsIgnoreCase(token)) + || Constants.LST_ANY.equalsIgnoreCase(token) + || Constants.HIGHESTLEVELCLASS.equalsIgnoreCase(token)) { foundAny = true; context.getObjectContext().put(cdo, - ObjectKey.ANY_FAVORED_CLASS, true); + ObjectKey.ANY_FAVORED_CLASS, true); + if (Constants.LST_ALL.equalsIgnoreCase(token) + || Constants.LST_ANY.equalsIgnoreCase(token)) + { + Logging.deprecationPrint("Use of FAVCLASS:" + token + + " is deprecated. " + + "Please use FAVCLASS:HIGHESTLEVELCLASS"); + } } + else if (Constants.LST_PRECENTLIST.equalsIgnoreCase(token)) + { + context.getObjectContext().addToList(cdo, + ListKey.CHOOSE_ACTOR, this); + } else { CDOMReference<? extends PCClass> ref; @@ -213,4 +236,33 @@ { return Race.class; } + + /* (non-Javadoc) + * @see pcgen.cdom.base.ChooseResultActor#apply(pcgen.core.PlayerCharacter, pcgen.cdom.base.CDOMObject, java.lang.String) + */ + public void apply(PlayerCharacter pc, CDOMObject obj, String o) + { + PCClass cls = + Globals.getContext().ref.silentlyGetConstructedCDOMObject( + PCCLASS_CLASS, o); + if (cls != null) + { + pc.addAssoc(obj, AssociationListKey.FAVCLASS, cls); + } + } + + /* (non-Javadoc) + * @see pcgen.cdom.base.ChooseResultActor#remove(pcgen.core.PlayerCharacter, pcgen.cdom.base.CDOMObject, java.lang.String) + */ + public void remove(PlayerCharacter pc, CDOMObject obj, String o) + { + PCClass cls = + Globals.getContext().ref.silentlyGetConstructedCDOMObject( + PCCLASS_CLASS, o); + if (cls != null) + { + pc.removeAssoc(obj, AssociationListKey.FAVCLASS, cls); + } + + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java 2008-11-28 16:25:19 UTC (rev 8505) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java 2008-11-28 22:46:19 UTC (rev 8506) @@ -25,13 +25,17 @@ import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Category; +import pcgen.cdom.base.ChooseResultActor; import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.SubClassCategory; import pcgen.cdom.reference.CategorizedCDOMReference; +import pcgen.core.Globals; import pcgen.core.PCClass; import pcgen.core.PCTemplate; +import pcgen.core.PlayerCharacter; import pcgen.core.SubClass; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; @@ -43,7 +47,7 @@ * Class deals with FAVOREDCLASS Token */ public class FavoredclassToken extends AbstractToken implements - CDOMPrimaryToken<PCTemplate> + CDOMPrimaryToken<PCTemplate>, ChooseResultActor { public static final Class<PCClass> PCCLASS_CLASS = PCClass.class; @@ -77,12 +81,25 @@ { String token = tok.nextToken(); if (Constants.LST_ALL.equalsIgnoreCase(token) - || Constants.LST_ANY.equalsIgnoreCase(token)) + || Constants.LST_ANY.equalsIgnoreCase(token) + || Constants.HIGHESTLEVELCLASS.equalsIgnoreCase(token)) { foundAny = true; context.getObjectContext().put(cdo, ObjectKey.ANY_FAVORED_CLASS, true); + if (Constants.LST_ALL.equalsIgnoreCase(token) + || Constants.LST_ANY.equalsIgnoreCase(token)) + { + Logging.deprecationPrint("Use of " + getTokenName() + ":" + token + + " is deprecated. " + + "Please use " + getTokenName() + ":HIGHESTLEVELCLASS"); + } } + else if (Constants.LST_PRECENTLIST.equalsIgnoreCase(token)) + { + context.getObjectContext().addToList(cdo, + ListKey.CHOOSE_ACTOR, this); + } else { CDOMReference<? extends PCClass> ref; @@ -149,4 +166,33 @@ { return PCTemplate.class; } + + /* (non-Javadoc) + * @see pcgen.cdom.base.ChooseResultActor#apply(pcgen.core.PlayerCharacter, pcgen.cdom.base.CDOMObject, java.lang.String) + */ + public void apply(PlayerCharacter pc, CDOMObject obj, String o) + { + PCClass cls = + Globals.getContext().ref.silentlyGetConstructedCDOMObject( + PCCLASS_CLASS, o); + if (cls != null) + { + pc.addAssoc(obj, AssociationListKey.FAVCLASS, cls); + } + } + + /* (non-Javadoc) + * @see pcgen.cdom.base.ChooseResultActor#remove(pcgen.core.PlayerCharacter, pcgen.cdom.base.CDOMObject, java.lang.String) + */ + public void remove(PlayerCharacter pc, CDOMObject obj, String o) + { + PCClass cls = + Globals.getContext().ref.silentlyGetConstructedCDOMObject( + PCCLASS_CLASS, o); + if (cls != null) + { + pc.removeAssoc(obj, AssociationListKey.FAVCLASS, cls); + } + + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-05 02:44:38
|
Revision: 8542 http://pcgen.svn.sourceforge.net/pcgen/?rev=8542&view=rev Author: thpr Date: 2008-12-05 02:44:34 +0000 (Fri, 05 Dec 2008) Log Message: ----------- [ 2341722 ] Magical Key Change Issue#: 2341722 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2008-12-05 02:18:26 UTC (rev 8541) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2008-12-05 02:44:34 UTC (rev 8542) @@ -519,7 +519,7 @@ { throw new UnreachableError("Did not find " + obj + " under " + key); } - if (act.equals(obj)) + if (act == obj) { List<T> list = duplicates.getListFor(ocik); if (list == null) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java 2008-12-05 02:18:26 UTC (rev 8541) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java 2008-12-05 02:44:34 UTC (rev 8542) @@ -19,6 +19,7 @@ CDOMPrimaryToken<CDOMObject> { + @Override public String getTokenName() { return "KEY"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-05 22:08:58
|
Revision: 8567 http://pcgen.svn.sourceforge.net/pcgen/?rev=8567&view=rev Author: thpr Date: 2008-12-05 22:08:52 +0000 (Fri, 05 Dec 2008) Log Message: ----------- Convert COMPANIONMOD tokens Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/MapKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/character/CompanionMod.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/EquipmentModifierLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/MasterbonusraceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/RaceTypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/UsemasterskillToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -252,6 +252,7 @@ public static final ListKey<PersistentTransitionChoice<?>> REMOVE = new ListKey<PersistentTransitionChoice<?>>(); public static final ListKey<Type> TYPE = new ListKey<Type>(); public static final ListKey<BaseKit> KIT_TASKS = new ListKey<BaseKit>(); + public static final ListKey<CDOMSingleRef<Race>> APPLIED_RACE = new ListKey<CDOMSingleRef<Race>>(); private static CaseInsensitiveMap<ListKey<?>> map = null; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/MapKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/MapKey.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/MapKey.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1,77 +1,82 @@ -/* - * MapKey.java - * Copyright 2008 (C) James Dempsey - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on 11/09/2008 19:28:45 - * - * $Id: $ - */ -package pcgen.cdom.enumeration; - -import pcgen.base.util.HashMapToList; -import pcgen.cdom.base.CDOMList; -import pcgen.cdom.helper.Aspect; -import pcgen.core.spell.Spell; - -/** - * This is a Typesafe enumeration of legal Map Characteristics of an object. It - * is designed to act as an index to a specific Object items within a - * CDOMObject. - * - * ListKeys are designed to store items in a CDOMObject in a type-safe - * fashion. Note that it is possible to use the MapKey to cast the object to - * the type of object stored by the ListKey. (This assists with Generics) - * - * @param <T> - * The class of object stored by this MapKey. - * - * Last Editor: $Author: $ - * Last Edited: $Date: $ - * - * @author James Dempsey <jde...@us...> - * @version $Revision: $ - */ -public final class MapKey<K, V> -{ - - /** ASPECT - a map key. */ - public static final MapKey<AspectName, Aspect> ASPECT = new MapKey<AspectName, Aspect>(); - /** TEST - a test map key. May be deleted and its usage replaced when a second Map Key is created. */ - public static final MapKey<String, String> TEST = new MapKey<String, String>(); - public static final MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>> SPELL_MASTER_INFO = new MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>>(); - public static final MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>> SPELL_PC_INFO = new MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>>(); - - /** - * Private constructor to prevent instantiation of this class. - */ - private MapKey() - { - //Only allow instantation here - } - - /** - * Cast an object into the MapKey's value type - * - * @param o the object to cast - * - * @return the object as the MapKey's value type - */ - public V cast(Object o) - { - return (V) o; - } -} +/* + * MapKey.java + * Copyright 2008 (C) James Dempsey + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on 11/09/2008 19:28:45 + * + * $Id: $ + */ +package pcgen.cdom.enumeration; + +import pcgen.base.util.HashMapToList; +import pcgen.cdom.base.CDOMList; +import pcgen.cdom.helper.Aspect; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.core.PCClass; +import pcgen.core.spell.Spell; + +/** + * This is a Typesafe enumeration of legal Map Characteristics of an object. It + * is designed to act as an index to a specific Object items within a + * CDOMObject. + * + * ListKeys are designed to store items in a CDOMObject in a type-safe + * fashion. Note that it is possible to use the MapKey to cast the object to + * the type of object stored by the ListKey. (This assists with Generics) + * + * @param <T> + * The class of object stored by this MapKey. + * + * Last Editor: $Author: $ + * Last Edited: $Date: $ + * + * @author James Dempsey <jde...@us...> + * @version $Revision: $ + */ +public final class MapKey<K, V> +{ + + /** ASPECT - a map key. */ + public static final MapKey<AspectName, Aspect> ASPECT = new MapKey<AspectName, Aspect>(); + /** TEST - a test map key. May be deleted and its usage replaced when a second Map Key is created. */ + public static final MapKey<String, String> TEST = new MapKey<String, String>(); + public static final MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>> SPELL_MASTER_INFO = new MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>>(); + public static final MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>> SPELL_PC_INFO = new MapKey<Spell, HashMapToList<CDOMList<Spell>, Integer>>(); + + public static final MapKey<CDOMSingleRef<? extends PCClass>, Integer> APPLIED_CLASS = new MapKey<CDOMSingleRef<? extends PCClass>, Integer>(); + public static final MapKey<String, Integer> APPLIED_VARIABLE = new MapKey<String, Integer>(); + + /** + * Private constructor to prevent instantiation of this class. + */ + private MapKey() + { + //Only allow instantation here + } + + /** + * Cast an object into the MapKey's value type + * + * @param o the object to cast + * + * @return the object as the MapKey's value type + */ + public V cast(Object o) + { + return (V) o; + } +} Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1,383 +1,385 @@ -/* - * Copyright 2005 (C) Tom Parker <th...@us...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on June 18, 2005. - * - * Current Ver: $Revision: 513 $ - * Last Editor: $Author: soulcatcher $ - * Last Edited: $Date: 2006-03-29 12:17:43 -0500 (Wed, 29 Mar 2006) $ - */ -package pcgen.cdom.enumeration; - -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.net.URI; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; - -import pcgen.base.util.CaseInsensitiveMap; -import pcgen.cdom.base.CDOMListObject; -import pcgen.cdom.base.Category; -import pcgen.cdom.base.TransitionChoice; -import pcgen.cdom.content.ChallengeRating; -import pcgen.cdom.content.HitDie; -import pcgen.cdom.content.LevelCommandFactory; -import pcgen.cdom.content.LevelExchange; -import pcgen.cdom.content.Modifier; -import pcgen.cdom.content.SpellResistance; -import pcgen.cdom.helper.Capacity; -import pcgen.cdom.list.ClassSkillList; -import pcgen.cdom.list.ClassSpellList; -import pcgen.cdom.list.DomainSpellList; -import pcgen.cdom.reference.CDOMSingleRef; -import pcgen.core.Ability; -import pcgen.core.ArmorProf; -import pcgen.core.Equipment; -import pcgen.core.PCAlignment; -import pcgen.core.PCClass; -import pcgen.core.PCStat; -import pcgen.core.QualifiedObject; -import pcgen.core.SettingsHandler; -import pcgen.core.ShieldProf; -import pcgen.core.SizeAdjustment; -import pcgen.core.SpellProhibitor; -import pcgen.core.SubClass; -import pcgen.core.WeaponProf; -import pcgen.core.Ability.Nature; -import pcgen.core.character.WieldCategory; -import pcgen.core.spell.Spell; -import pcgen.util.enumeration.Load; -import pcgen.util.enumeration.Visibility; - -/** - * @author Tom Parker <th...@us...> - * - * This is a Typesafe enumeration of legal Object Characteristics of an object. - * It is designed to act as an index to a specific Objects within a - * CDOMObject. - * - * ObjectKeys are designed to store items in a CDOMObject in a type-safe - * fashion. Note that it is possible to use the ObjectKey to cast the object to - * the type of object stored by the ObjectKey. (This assists with Generics) - * - * A "default value" (may be null) must be provided at object construction (the - * default is provided when getSafe(ObjectKey) is called in CDOMObject). This - * default value is especially useful for Boolean ObjectKeys. - * - * @param <T> - * The class of object stored by this ObjectKey. - */ -public class ObjectKey<T> -{ - - private static CaseInsensitiveMap<ObjectKey<?>> map = null; - - public static final ObjectKey<Boolean> USE_UNTRAINED = new ObjectKey<Boolean>(Boolean.TRUE); - - public static final ObjectKey<Boolean> EXCLUSIVE = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<URI> SOURCE_URI = new ObjectKey<URI>(null); - - public static final ObjectKey<PCAlignment> ALIGNMENT = new ObjectKey<PCAlignment>(null); - - public static final ObjectKey<Boolean> READ_ONLY = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<PCStat> KEY_STAT = new ObjectKey<PCStat>(null); - - public static final ObjectKey<SkillArmorCheck> ARMOR_CHECK = new ObjectKey<SkillArmorCheck>(SkillArmorCheck.NONE); - - public static final ObjectKey<Visibility> VISIBILITY = new ObjectKey<Visibility>(Visibility.DEFAULT); - - public static final ObjectKey<Boolean> REMOVABLE = new ObjectKey<Boolean>(Boolean.TRUE); - - public static final ObjectKey<SubRegion> SUBREGION = new ObjectKey<SubRegion>(null); - - public static final ObjectKey<Region> REGION = new ObjectKey<Region>(null); - - public static final ObjectKey<Boolean> USETEMPLATENAMEFORSUBREGION = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<Boolean> USETEMPLATENAMEFORREGION = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<Gender> GENDER_LOCK = new ObjectKey<Gender>(null); - - public static final ObjectKey<BigDecimal> FACE_WIDTH = new ObjectKey<BigDecimal>(null); - - public static final ObjectKey<BigDecimal> FACE_HEIGHT = new ObjectKey<BigDecimal>(null); - - public static final ObjectKey<Boolean> USETEMPLATENAMEFORSUBRACE = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<SubRace> SUBRACE = new ObjectKey<SubRace>(null); - - public static final ObjectKey<BigDecimal> CR_MODIFIER = new ObjectKey<BigDecimal>(BigDecimal.ZERO); - - public static final ObjectKey<RaceType> RACETYPE = new ObjectKey<RaceType>(null); - - public static final ObjectKey<BigDecimal> COST = new ObjectKey<BigDecimal>(BigDecimal.ZERO); - - public static final ObjectKey<PCStat> SPELL_STAT = new ObjectKey<PCStat>(null); - - public static final ObjectKey<Boolean> COST_DOUBLE = new ObjectKey<Boolean>(null); - - public static final ObjectKey<Boolean> ASSIGN_TO_ALL = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<EqModNameOpt> NAME_OPT = new ObjectKey<EqModNameOpt>(EqModNameOpt.NORMAL); - - public static final ObjectKey<EqModFormatCat> FORMAT = new ObjectKey<EqModFormatCat>(EqModFormatCat.PARENS); - - public static final ObjectKey<Boolean> ATTACKS_PROGRESS = new ObjectKey<Boolean>(Boolean.TRUE); - - public static final ObjectKey<WieldCategory> WIELD = new ObjectKey<WieldCategory>(null); - - public static final ObjectKey<BigDecimal> WEIGHT = new ObjectKey<BigDecimal>(BigDecimal.ZERO); - - public static final ObjectKey<BigDecimal> WEIGHT_MOD = new ObjectKey<BigDecimal>(BigDecimal.ZERO); - - public static final ObjectKey<CDOMSingleRef<WeaponProf>> WEAPON_PROF = new ObjectKey<CDOMSingleRef<WeaponProf>>(null); - - public static final ObjectKey<CDOMSingleRef<ArmorProf>> ARMOR_PROF = new ObjectKey<CDOMSingleRef<ArmorProf>>(null); - - public static final ObjectKey<CDOMSingleRef<ShieldProf>> SHIELD_PROF = new ObjectKey<CDOMSingleRef<ShieldProf>>(null); - - public static final ObjectKey<EqModControl> MOD_CONTROL = new ObjectKey<EqModControl>(EqModControl.YES); - - public static final ObjectKey<BigDecimal> CURRENT_COST = new ObjectKey<BigDecimal>(null); - - /* - * This MUST Stay Object! Otherwise the code hierarchy ends up with circular - * references/tangles - */ - public static final ObjectKey<Object> PARENT = new ObjectKey<Object>(null); - - public static final ObjectKey<Modifier<HitDie>> HITDIE = new ObjectKey<Modifier<HitDie>>(null); - - public static final ObjectKey<ChallengeRating> CHALLENGE_RATING = new ObjectKey<ChallengeRating>(ChallengeRating.ZERO); - - public static final ObjectKey<Boolean> USE_SPELL_SPELL_STAT = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<Boolean> CASTER_WITHOUT_SPELL_STAT = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<Boolean> SPELLBOOK = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<Boolean> MOD_TO_SKILLS = new ObjectKey<Boolean>(Boolean.TRUE); - - public static final ObjectKey<Boolean> MEMORIZE_SPELLS = new ObjectKey<Boolean>(Boolean.TRUE); - - public static final ObjectKey<Boolean> IS_MONSTER = new ObjectKey<Boolean>(null); - - public static final ObjectKey<Boolean> ALLOWBASECLASS = new ObjectKey<Boolean>(Boolean.TRUE); - - public static final ObjectKey<Boolean> HAS_BONUS_SPELL_STAT = new ObjectKey<Boolean>(null); - - public static final ObjectKey<PCStat> BONUS_SPELL_STAT = new ObjectKey<PCStat>(null); - - public static final ObjectKey<HitDie> LEVEL_HITDIE = new ObjectKey<HitDie>(HitDie.ZERO); - - public static final ObjectKey<ClassSpellList> CLASS_SPELLLIST = new ObjectKey<ClassSpellList>(null); - - public static final ObjectKey<DomainSpellList> DOMAIN_SPELLLIST = new ObjectKey<DomainSpellList>(null); - - public static final ObjectKey<TransitionChoice<CDOMListObject<Spell>>> SPELLLIST_CHOICE = new ObjectKey<TransitionChoice<CDOMListObject<Spell>>>(null); - - 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); - - public static final ObjectKey<Boolean> NAME_PI = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<Boolean> DESC_PI = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<Category<Ability>> ABILITY_CAT = new ObjectKey<Category<Ability>>(null); - - public static final ObjectKey<Load> UNENCUMBERED_LOAD = new ObjectKey<Load>(Load.LIGHT); - - public static final ObjectKey<Load> UNENCUMBERED_ARMOR = new ObjectKey<Load>(Load.LIGHT); - - public static final ObjectKey<Boolean> ANY_FAVORED_CLASS = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<TransitionChoice<PCClass>> FAVCLASS_CHOICE = new ObjectKey<TransitionChoice<PCClass>>(null); - - public static final ObjectKey<LevelCommandFactory> MONSTER_CLASS = new ObjectKey<LevelCommandFactory>(null); - - public static final ObjectKey<CDOMSingleRef<Equipment>> BASE_ITEM = new ObjectKey<CDOMSingleRef<Equipment>>(null); - - public static final ObjectKey<LevelExchange> EXCHANGE_LEVEL = new ObjectKey<LevelExchange>(null); - - public static final ObjectKey<CDOMSingleRef<PCClass>> EX_CLASS = new ObjectKey<CDOMSingleRef<PCClass>>(null); - - public static final ObjectKey<SpellResistance> SR = new ObjectKey<SpellResistance>(SpellResistance.NONE); - - public static final ObjectKey<QualifiedObject<Boolean>> HAS_DEITY_WEAPONPROF = new ObjectKey<QualifiedObject<Boolean>>( - new QualifiedObject<Boolean>(Boolean.FALSE)); - - public static final ObjectKey<SpellProhibitor> CHOICE = new ObjectKey<SpellProhibitor>(null); - - public static final ObjectKey<TransitionChoice<Ability>> MODIFY_CHOICE = new ObjectKey<TransitionChoice<Ability>>(null); - - public static final ObjectKey<Boolean> CONTAINER_CONSTANT_WEIGHT = new ObjectKey<Boolean>(Boolean.FALSE); - - public static final ObjectKey<BigDecimal> CONTAINER_WEIGHT_CAPACITY = new ObjectKey<BigDecimal>(null); - - public static final ObjectKey<Capacity> TOTAL_CAPACITY = new ObjectKey<Capacity>(null); - - public static final ObjectKey<Category<SubClass>> SUBCLASS_CATEGORY = new ObjectKey<Category<SubClass>>(null); - - public static final ObjectKey<Nature> ABILITY_NATURE = new ObjectKey<Nature>(Ability.Nature.NORMAL); - - public static final ObjectKey<SizeAdjustment> BASESIZE; - - public static final ObjectKey<SizeAdjustment> SIZE; - - public static final ObjectKey<TransitionChoice<Region>> REGION_CHOICE = new ObjectKey<TransitionChoice<Region>>(null); - - /* - * TODO Okay, this is a hack. - */ - - static - { - buildMap(); - BASESIZE = new ObjectKey<SizeAdjustment>(null) - { - @Override - public SizeAdjustment getDefault() - { - return SettingsHandler.getGame().getDefaultSizeAdjustment(); - } - - }; - map.put(BASESIZE.toString(), BASESIZE); - SIZE = new ObjectKey<SizeAdjustment>(null) - { - @Override - public SizeAdjustment getDefault() - { - return SettingsHandler.getGame().getDefaultSizeAdjustment(); - } - - }; - map.put(SIZE.toString(), SIZE); - } - - private final T defaultValue; - - private ObjectKey(T def) - { - defaultValue = def; - } - - public T getDefault() - { - return defaultValue; - } - - public T cast(Object o) - { - return (T) o; - } - - public static <OT> ObjectKey<OT> getKeyFor(Class<OT> c, String s) - { - if (map == null) - { - buildMap(); - } - /* - * CONSIDER This is actually not type safe, there is a case of asking - * for a String a second time with a different Class that ObjectKey - * currently does not handle. Two solutions: One, store this in a - * Two-Key map and allow a String to map to more than one ObjectKey - * given different output types (considered confusing) or Two, store the - * Class and validate that with a an error message if a different class - * is requested. - */ - ObjectKey<OT> o = (ObjectKey<OT>) map.get(s); - if (o == null) - { - o = new ObjectKey<OT>(null); - map.put(s, o); - } - return o; - } - - private static void buildMap() - { - map = new CaseInsensitiveMap<ObjectKey<?>>(); - Field[] fields = ObjectKey.class.getDeclaredFields(); - for (int i = 0; i < fields.length; i++) - { - int mod = fields[i].getModifiers(); - - if (java.lang.reflect.Modifier.isStatic(mod) - && java.lang.reflect.Modifier.isFinal(mod) - && java.lang.reflect.Modifier.isPublic(mod)) - { - try - { - Object o = fields[i].get(null); - if (o instanceof ObjectKey) - { - map.put(fields[i].getName(), (ObjectKey<?>) o); - } - } - catch (IllegalArgumentException e) - { - throw new InternalError(); - } - catch (IllegalAccessException e) - { - throw new InternalError(); - } - } - } - } - - @Override - public String toString() - { - /* - * CONSIDER Should this find a way to do a Two-Way Map or something to - * that effect? - */ - if (map == null) - { - buildMap(); - } - for (Map.Entry<?, ObjectKey<?>> me : map.entrySet()) - { - if (me.getValue() == this) - { - return me.getKey().toString(); - } - } - // Error - return ""; - } - - public static Collection<ObjectKey<?>> getAllConstants() - { - if (map == null) - { - buildMap(); - } - return new HashSet<ObjectKey<?>>(map.values()); - } -} +/* + * Copyright 2005 (C) Tom Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on June 18, 2005. + * + * Current Ver: $Revision: 513 $ + * Last Editor: $Author: soulcatcher $ + * Last Edited: $Date: 2006-03-29 12:17:43 -0500 (Wed, 29 Mar 2006) $ + */ +package pcgen.cdom.enumeration; + +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.net.URI; +import java.util.Collection; +import java.util.HashSet; +import java.util.Map; + +import pcgen.base.util.CaseInsensitiveMap; +import pcgen.cdom.base.CDOMListObject; +import pcgen.cdom.base.Category; +import pcgen.cdom.base.TransitionChoice; +import pcgen.cdom.content.ChallengeRating; +import pcgen.cdom.content.HitDie; +import pcgen.cdom.content.LevelCommandFactory; +import pcgen.cdom.content.LevelExchange; +import pcgen.cdom.content.Modifier; +import pcgen.cdom.content.SpellResistance; +import pcgen.cdom.helper.Capacity; +import pcgen.cdom.list.ClassSkillList; +import pcgen.cdom.list.ClassSpellList; +import pcgen.cdom.list.DomainSpellList; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.core.Ability; +import pcgen.core.ArmorProf; +import pcgen.core.Equipment; +import pcgen.core.PCAlignment; +import pcgen.core.PCClass; +import pcgen.core.PCStat; +import pcgen.core.QualifiedObject; +import pcgen.core.SettingsHandler; +import pcgen.core.ShieldProf; +import pcgen.core.SizeAdjustment; +import pcgen.core.SpellProhibitor; +import pcgen.core.SubClass; +import pcgen.core.WeaponProf; +import pcgen.core.Ability.Nature; +import pcgen.core.character.WieldCategory; +import pcgen.core.spell.Spell; +import pcgen.util.enumeration.Load; +import pcgen.util.enumeration.Visibility; + +/** + * @author Tom Parker <th...@us...> + * + * This is a Typesafe enumeration of legal Object Characteristics of an object. + * It is designed to act as an index to a specific Objects within a + * CDOMObject. + * + * ObjectKeys are designed to store items in a CDOMObject in a type-safe + * fashion. Note that it is possible to use the ObjectKey to cast the object to + * the type of object stored by the ObjectKey. (This assists with Generics) + * + * A "default value" (may be null) must be provided at object construction (the + * default is provided when getSafe(ObjectKey) is called in CDOMObject). This + * default value is especially useful for Boolean ObjectKeys. + * + * @param <T> + * The class of object stored by this ObjectKey. + */ +public class ObjectKey<T> +{ + + private static CaseInsensitiveMap<ObjectKey<?>> map = null; + + public static final ObjectKey<Boolean> USE_UNTRAINED = new ObjectKey<Boolean>(Boolean.TRUE); + + public static final ObjectKey<Boolean> EXCLUSIVE = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<URI> SOURCE_URI = new ObjectKey<URI>(null); + + public static final ObjectKey<PCAlignment> ALIGNMENT = new ObjectKey<PCAlignment>(null); + + public static final ObjectKey<Boolean> READ_ONLY = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<PCStat> KEY_STAT = new ObjectKey<PCStat>(null); + + public static final ObjectKey<SkillArmorCheck> ARMOR_CHECK = new ObjectKey<SkillArmorCheck>(SkillArmorCheck.NONE); + + public static final ObjectKey<Visibility> VISIBILITY = new ObjectKey<Visibility>(Visibility.DEFAULT); + + public static final ObjectKey<Boolean> REMOVABLE = new ObjectKey<Boolean>(Boolean.TRUE); + + public static final ObjectKey<SubRegion> SUBREGION = new ObjectKey<SubRegion>(null); + + public static final ObjectKey<Region> REGION = new ObjectKey<Region>(null); + + public static final ObjectKey<Boolean> USETEMPLATENAMEFORSUBREGION = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Boolean> USETEMPLATENAMEFORREGION = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Gender> GENDER_LOCK = new ObjectKey<Gender>(null); + + public static final ObjectKey<BigDecimal> FACE_WIDTH = new ObjectKey<BigDecimal>(null); + + public static final ObjectKey<BigDecimal> FACE_HEIGHT = new ObjectKey<BigDecimal>(null); + + public static final ObjectKey<Boolean> USETEMPLATENAMEFORSUBRACE = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<SubRace> SUBRACE = new ObjectKey<SubRace>(null); + + public static final ObjectKey<BigDecimal> CR_MODIFIER = new ObjectKey<BigDecimal>(BigDecimal.ZERO); + + public static final ObjectKey<RaceType> RACETYPE = new ObjectKey<RaceType>(null); + + public static final ObjectKey<BigDecimal> COST = new ObjectKey<BigDecimal>(BigDecimal.ZERO); + + public static final ObjectKey<PCStat> SPELL_STAT = new ObjectKey<PCStat>(null); + + public static final ObjectKey<Boolean> COST_DOUBLE = new ObjectKey<Boolean>(null); + + public static final ObjectKey<Boolean> ASSIGN_TO_ALL = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<EqModNameOpt> NAME_OPT = new ObjectKey<EqModNameOpt>(EqModNameOpt.NORMAL); + + public static final ObjectKey<EqModFormatCat> FORMAT = new ObjectKey<EqModFormatCat>(EqModFormatCat.PARENS); + + public static final ObjectKey<Boolean> ATTACKS_PROGRESS = new ObjectKey<Boolean>(Boolean.TRUE); + + public static final ObjectKey<WieldCategory> WIELD = new ObjectKey<WieldCategory>(null); + + public static final ObjectKey<BigDecimal> WEIGHT = new ObjectKey<BigDecimal>(BigDecimal.ZERO); + + public static final ObjectKey<BigDecimal> WEIGHT_MOD = new ObjectKey<BigDecimal>(BigDecimal.ZERO); + + public static final ObjectKey<CDOMSingleRef<WeaponProf>> WEAPON_PROF = new ObjectKey<CDOMSingleRef<WeaponProf>>(null); + + public static final ObjectKey<CDOMSingleRef<ArmorProf>> ARMOR_PROF = new ObjectKey<CDOMSingleRef<ArmorProf>>(null); + + public static final ObjectKey<CDOMSingleRef<ShieldProf>> SHIELD_PROF = new ObjectKey<CDOMSingleRef<ShieldProf>>(null); + + public static final ObjectKey<EqModControl> MOD_CONTROL = new ObjectKey<EqModControl>(EqModControl.YES); + + public static final ObjectKey<BigDecimal> CURRENT_COST = new ObjectKey<BigDecimal>(null); + + /* + * This MUST Stay Object! Otherwise the code hierarchy ends up with circular + * references/tangles + */ + public static final ObjectKey<Object> PARENT = new ObjectKey<Object>(null); + + public static final ObjectKey<Modifier<HitDie>> HITDIE = new ObjectKey<Modifier<HitDie>>(null); + + public static final ObjectKey<ChallengeRating> CHALLENGE_RATING = new ObjectKey<ChallengeRating>(ChallengeRating.ZERO); + + public static final ObjectKey<Boolean> USE_SPELL_SPELL_STAT = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Boolean> CASTER_WITHOUT_SPELL_STAT = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Boolean> SPELLBOOK = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Boolean> MOD_TO_SKILLS = new ObjectKey<Boolean>(Boolean.TRUE); + + public static final ObjectKey<Boolean> MEMORIZE_SPELLS = new ObjectKey<Boolean>(Boolean.TRUE); + + public static final ObjectKey<Boolean> IS_MONSTER = new ObjectKey<Boolean>(null); + + public static final ObjectKey<Boolean> ALLOWBASECLASS = new ObjectKey<Boolean>(Boolean.TRUE); + + public static final ObjectKey<Boolean> HAS_BONUS_SPELL_STAT = new ObjectKey<Boolean>(null); + + public static final ObjectKey<PCStat> BONUS_SPELL_STAT = new ObjectKey<PCStat>(null); + + public static final ObjectKey<HitDie> LEVEL_HITDIE = new ObjectKey<HitDie>(HitDie.ZERO); + + public static final ObjectKey<ClassSpellList> CLASS_SPELLLIST = new ObjectKey<ClassSpellList>(null); + + public static final ObjectKey<DomainSpellList> DOMAIN_SPELLLIST = new ObjectKey<DomainSpellList>(null); + + public static final ObjectKey<TransitionChoice<CDOMListObject<Spell>>> SPELLLIST_CHOICE = new ObjectKey<TransitionChoice<CDOMListObject<Spell>>>(null); + + 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); + + public static final ObjectKey<Boolean> NAME_PI = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Boolean> DESC_PI = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<Category<Ability>> ABILITY_CAT = new ObjectKey<Category<Ability>>(null); + + public static final ObjectKey<Load> UNENCUMBERED_LOAD = new ObjectKey<Load>(Load.LIGHT); + + public static final ObjectKey<Load> UNENCUMBERED_ARMOR = new ObjectKey<Load>(Load.LIGHT); + + public static final ObjectKey<Boolean> ANY_FAVORED_CLASS = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<TransitionChoice<PCClass>> FAVCLASS_CHOICE = new ObjectKey<TransitionChoice<PCClass>>(null); + + public static final ObjectKey<LevelCommandFactory> MONSTER_CLASS = new ObjectKey<LevelCommandFactory>(null); + + public static final ObjectKey<CDOMSingleRef<Equipment>> BASE_ITEM = new ObjectKey<CDOMSingleRef<Equipment>>(null); + + public static final ObjectKey<LevelExchange> EXCHANGE_LEVEL = new ObjectKey<LevelExchange>(null); + + public static final ObjectKey<CDOMSingleRef<PCClass>> EX_CLASS = new ObjectKey<CDOMSingleRef<PCClass>>(null); + + public static final ObjectKey<SpellResistance> SR = new ObjectKey<SpellResistance>(SpellResistance.NONE); + + public static final ObjectKey<QualifiedObject<Boolean>> HAS_DEITY_WEAPONPROF = new ObjectKey<QualifiedObject<Boolean>>( + new QualifiedObject<Boolean>(Boolean.FALSE)); + + public static final ObjectKey<SpellProhibitor> CHOICE = new ObjectKey<SpellProhibitor>(null); + + public static final ObjectKey<TransitionChoice<Ability>> MODIFY_CHOICE = new ObjectKey<TransitionChoice<Ability>>(null); + + public static final ObjectKey<Boolean> CONTAINER_CONSTANT_WEIGHT = new ObjectKey<Boolean>(Boolean.FALSE); + + public static final ObjectKey<BigDecimal> CONTAINER_WEIGHT_CAPACITY = new ObjectKey<BigDecimal>(null); + + public static final ObjectKey<Capacity> TOTAL_CAPACITY = new ObjectKey<Capacity>(null); + + public static final ObjectKey<Category<SubClass>> SUBCLASS_CATEGORY = new ObjectKey<Category<SubClass>>(null); + + public static final ObjectKey<Nature> ABILITY_NATURE = new ObjectKey<Nature>(Ability.Nature.NORMAL); + + public static final ObjectKey<SizeAdjustment> BASESIZE; + + public static final ObjectKey<SizeAdjustment> SIZE; + + public static final ObjectKey<TransitionChoice<Region>> REGION_CHOICE = new ObjectKey<TransitionChoice<Region>>(null); + + public static final ObjectKey<Boolean> USE_MASTER_SKILL = new ObjectKey<Boolean>(Boolean.FALSE); + + /* + * TODO Okay, this is a hack. + */ + + static + { + buildMap(); + BASESIZE = new ObjectKey<SizeAdjustment>(null) + { + @Override + public SizeAdjustment getDefault() + { + return SettingsHandler.getGame().getDefaultSizeAdjustment(); + } + + }; + map.put(BASESIZE.toString(), BASESIZE); + SIZE = new ObjectKey<SizeAdjustment>(null) + { + @Override + public SizeAdjustment getDefault() + { + return SettingsHandler.getGame().getDefaultSizeAdjustment(); + } + + }; + map.put(SIZE.toString(), SIZE); + } + + private final T defaultValue; + + private ObjectKey(T def) + { + defaultValue = def; + } + + public T getDefault() + { + return defaultValue; + } + + public T cast(Object o) + { + return (T) o; + } + + public static <OT> ObjectKey<OT> getKeyFor(Class<OT> c, String s) + { + if (map == null) + { + buildMap(); + } + /* + * CONSIDER This is actually not type safe, there is a case of asking + * for a String a second time with a different Class that ObjectKey + * currently does not handle. Two solutions: One, store this in a + * Two-Key map and allow a String to map to more than one ObjectKey + * given different output types (considered confusing) or Two, store the + * Class and validate that with a an error message if a different class + * is requested. + */ + ObjectKey<OT> o = (ObjectKey<OT>) map.get(s); + if (o == null) + { + o = new ObjectKey<OT>(null); + map.put(s, o); + } + return o; + } + + private static void buildMap() + { + map = new CaseInsensitiveMap<ObjectKey<?>>(); + Field[] fields = ObjectKey.class.getDeclaredFields(); + for (int i = 0; i < fields.length; i++) + { + int mod = fields[i].getModifiers(); + + if (java.lang.reflect.Modifier.isStatic(mod) + && java.lang.reflect.Modifier.isFinal(mod) + && java.lang.reflect.Modifier.isPublic(mod)) + { + try + { + Object o = fields[i].get(null); + if (o instanceof ObjectKey) + { + map.put(fields[i].getName(), (ObjectKey<?>) o); + } + } + catch (IllegalArgumentException e) + { + throw new InternalError(); + } + catch (IllegalAccessException e) + { + throw new InternalError(); + } + } + } + } + + @Override + public String toString() + { + /* + * CONSIDER Should this find a way to do a Two-Way Map or something to + * that effect? + */ + if (map == null) + { + buildMap(); + } + for (Map.Entry<?, ObjectKey<?>> me : map.entrySet()) + { + if (me.getValue() == this) + { + return me.getKey().toString(); + } + } + // Error + return ""; + } + + public static Collection<ObjectKey<?>> getAllConstants() + { + if (map == null) + { + buildMap(); + } + return new HashSet<ObjectKey<?>>(map.values()); + } +} Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1121,10 +1121,10 @@ { for (CompanionMod cm : companionModList) { - final String aType = cm.getRaceType(); - if (!Constants.EMPTY_STRING.equals(aType)) + RaceType rt = cm.get(ObjectKey.RACETYPE); + if (rt != null) { - raceType = aType; + raceType = rt.toString(); } } } @@ -2144,7 +2144,8 @@ Globals.getCompanionMods(compType); for (CompanionMod cMod : mods) { - for (Iterator<String> iType = cMod.getVarMap().keySet().iterator(); iType + Map<String, Integer> varmap = cMod.getMapFor(MapKey.APPLIED_VARIABLE); + for (Iterator<String> iType = varmap.keySet().iterator(); iType .hasNext();) { final String varName = iType.next(); @@ -2156,9 +2157,12 @@ return lvl; } } - for (final String classKey : cMod.getClassMap().keySet()) + Map<CDOMSingleRef<? extends PCClass>, Integer> ac = cMod.getMapFor(MapKey.APPLIED_CLASS); + for (Map.Entry<CDOMSingleRef<? extends PCClass>, Integer> me : ac.entrySet()) { - final int lvl = this.getClassKeyed(classKey).getLevel(); + PCClass pcclass = me.getKey().resolvesTo(); + String key = pcclass.getKeyName(); + int lvl = getClassKeyed(key).getLevel(); if (lvl > 0) { return lvl; @@ -2262,7 +2266,8 @@ } } } - for (String varName : cMod.getVarMap().keySet()) + Map<String, Integer> varmap = cMod.getMapFor(MapKey.APPLIED_VARIABLE); + for (String varName : varmap.keySet()) { final int mLev = mPC.getVariableValue(varName, Constants.EMPTY_STRING) @@ -2459,7 +2464,8 @@ // they can take unlimited number of them. for (CompanionMod cMod : Globals.getCompanionMods(cList)) { - for (String varName : cMod.getVarMap().keySet()) + Map<String, Integer> varmap = cMod.getMapFor(MapKey.APPLIED_VARIABLE); + for (String varName : varmap.keySet()) { if (this.getVariableValue(varName, Constants.EMPTY_STRING) .intValue() > 0) @@ -2467,13 +2473,16 @@ return -1; } } - for (String key : cMod.getClassMap().keySet()) + Map<CDOMSingleRef<? extends PCClass>, Integer> ac = cMod.getMapFor(MapKey.APPLIED_CLASS); + for (Map.Entry<CDOMSingleRef<? extends PCClass>, Integer> me : ac.entrySet()) { + PCClass pcclass = me.getKey().resolvesTo(); + String key = pcclass.getKeyName(); for (PCClass pcClass : getClassList()) { if (pcClass.getKeyName().equals(key)) { - return -1; + return me.getValue(); } } } @@ -5400,9 +5409,10 @@ if (cMod.getType().equalsIgnoreCase( getMaster().getType().getKeyName())) { - if (cMod.getCopyMasterBAB() != null) + String copyMasterBAB = cMod.get(StringKey.MASTER_BAB_FORMULA); + if (copyMasterBAB != null) { - return cMod.getCopyMasterBAB(); + return copyMasterBAB; } } } @@ -5417,9 +5427,9 @@ if (cMod.getType().equalsIgnoreCase( getMaster().getType().getKeyName())) { - if (cMod.getCopyMasterCheck() != null) + if (cMod.get(StringKey.MASTER_CHECK_FORMULA) != null) { - return cMod.getCopyMasterCheck(); + return cMod.get(StringKey.MASTER_CHECK_FORMULA); } } } @@ -5434,9 +5444,9 @@ if (cMod.getType().equalsIgnoreCase( getMaster().getType().getKeyName())) { - if (cMod.getCopyMasterHP() != null) + if (cMod.get(StringKey.MASTER_HP_FORMULA) != null) { - return cMod.getCopyMasterHP(); + return cMod.get(StringKey.MASTER_HP_FORMULA); } } } Modified: Trunk/pcgen/code/src/java/pcgen/core/character/CompanionMod.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/character/CompanionMod.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/pcgen/core/character/CompanionMod.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -28,16 +28,21 @@ *************************************************************************/ package pcgen.core.character; +import java.util.List; +import java.util.Map; + import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.IntegerKey; -import pcgen.cdom.enumeration.StringKey; +import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.enumeration.MapKey; +import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.core.PCClass; import pcgen.core.PObject; +import pcgen.core.Race; import pcgen.core.utils.MessageType; import pcgen.core.utils.ShowMessageDelegate; -import java.util.HashMap; -import java.util.Map; - /** * <code>CompanionMod</code>. * @@ -46,11 +51,6 @@ */ public final class CompanionMod extends PObject { - private Map<String, String> classMap = new HashMap<String, String>(); - private Map<String, String> varMap = new HashMap<String, String>(); - private boolean useMasterSkill; - private String raceType = ""; - /** * Bog standard clone method * @@ -64,10 +64,6 @@ try { cmpMod = (CompanionMod) super.clone(); - cmpMod.classMap = new HashMap<String, String>(classMap); - cmpMod.varMap = new HashMap<String, String>(varMap); - cmpMod.useMasterSkill = useMasterSkill; - cmpMod.raceType = raceType; } catch (CloneNotSupportedException e) { @@ -81,32 +77,6 @@ } /** - * Compares classMap, level. - * @param obj the CompanionMod to compare with - * @return a negative integer, zero, or a positive integer as this object - * is less than, equal to, or greater than the specified object. - * @see Comparable#compareTo(Object) - */ - @Override - public int compareTo(final Object obj) - { - int result = 0; - - if (obj instanceof CompanionMod) - { - final CompanionMod cmpMod = (CompanionMod) obj; - - if (classMap.entrySet().equals(cmpMod.classMap.entrySet()) - && getSafe(IntegerKey.LEVEL) == cmpMod.getSafe(IntegerKey.LEVEL)) - { - result = 1; - } - } - - return result; - } - - /** * Compares classMap, type and level * @param obj * @return true if equal @@ -114,62 +84,28 @@ @Override public boolean equals(final Object obj) { - boolean result = false; - if (obj instanceof CompanionMod) { final CompanionMod cmpMod = (CompanionMod) obj; - if (classMap.entrySet().equals(cmpMod.classMap.entrySet()) - && getSafe(IntegerKey.LEVEL) == cmpMod.getSafe(IntegerKey.LEVEL)) + List<CDOMSingleRef<Race>> car = cmpMod.getListFor(ListKey.APPLIED_RACE); + List<CDOMSingleRef<Race>> ar = getListFor(ListKey.APPLIED_RACE); + Map<CDOMSingleRef<? extends PCClass>, Integer> cac = cmpMod.getMapFor(MapKey.APPLIED_CLASS); + Map<CDOMSingleRef<? extends PCClass>, Integer> ac = getMapFor(MapKey.APPLIED_CLASS); + Map<String, Integer> cav = cmpMod.getMapFor(MapKey.APPLIED_VARIABLE); + Map<String, Integer> av = getMapFor(MapKey.APPLIED_VARIABLE); + if (ar == null && car != null || ac == null && cac != null + || av == null && cav != null) { - result = true; + return false; } + return getSafe(IntegerKey.LEVEL) == cmpMod.getSafe(IntegerKey.LEVEL) + && ar.equals(car) && ac.equals(cac) && av.equals(cav); } - - return result; + return false; } /** - * Get Class map - * @return classMap - */ - public Map<String, String> getClassMap() - { - return classMap; - } - - /** - * Get a copy of the master Base Attack Bonus - * @return master Base Attack Bonus - */ - public String getCopyMasterBAB() - { - final String characteristic = get(StringKey.MASTER_BAB_FORMULA); - return characteristic == null ? "" : characteristic; - } - - /** - * Get a copy of the master check - * @return String - */ - public String getCopyMasterCheck() - { - final String characteristic = get(StringKey.MASTER_CHECK_FORMULA); - return characteristic == null ? "" : characteristic; - } - - /** - * Get a copy of the master HP - * @return master HP - */ - public String getCopyMasterHP() - { - final String characteristic = get(StringKey.MASTER_HP_FORMULA); - return characteristic == null ? "" : characteristic; - } - - /** * Get Level * @param className * @return level @@ -178,115 +114,62 @@ { int result = -1; - if (classMap.get(className) != null) + List<CDOMSingleRef<Race>> list = + getListFor(ListKey.APPLIED_RACE); + if (list != null) { - result = Integer.parseInt(classMap.get(className)); + for (CDOMSingleRef<Race> ref : list) + { + Race race = ref.resolvesTo(); + String key = race.getKeyName(); + if(key.equalsIgnoreCase(className)) + { + result = 1; + } + } } - else if (varMap.get(className) != null) + + Map<CDOMSingleRef<? extends PCClass>, Integer> ac = + getMapFor(MapKey.APPLIED_CLASS); + if (ac != null) { - result = Integer.parseInt(varMap.get(className)); + for (Map.Entry<CDOMSingleRef<? extends PCClass>, Integer> me : ac.entrySet()) + { + PCClass pcclass = me.getKey().resolvesTo(); + String key = pcclass.getKeyName(); + if (key.equalsIgnoreCase(className)) + { + result = me.getValue(); + } + } } + Map<String, Integer> varmap = getMapFor(MapKey.APPLIED_VARIABLE); + + if (varmap != null && result == -1 && varmap.get(className) != null) + { + result = varmap.get(className); + } + return result; } /** - * Get Race Type - * @return Race Type - */ - public String getRaceType() - { - return raceType; - } - - /** * Get use master skill * @return true if you should use master skill */ public boolean getUseMasterSkill() { - return useMasterSkill; + return getSafe(ObjectKey.USE_MASTER_SKILL); } /** - * Get variable map - * @return varMap - */ - public Map<String, String> getVarMap() - { - return varMap; - } - - /** * Hashcode of the keyname * @return hash code */ @Override public int hashCode() { - return classMap.hashCode(); + return getSafe(IntegerKey.LEVEL); } - - /** - * Set the master BAB - * @param masterBABFormula - */ - public void setCopyMasterBAB(final String masterBABFormula) - { - put(StringKey.MASTER_BAB_FORMULA, masterBABFormula); - } - - /** - * Set the master formula - * @param masterCheckFormula - */ - public void setCopyMasterCheck(final String masterCheckFormula) - { - put(StringKey.MASTER_CHECK_FORMULA, masterCheckFormula); - } - - /** - * Set the master HP - * @param masterHPFormula - */ - public void setCopyMasterHP(final String masterHPFormula) - { - put(StringKey.MASTER_HP_FORMULA, masterHPFormula); - } - - /** - * Set the HD - * @param hd - */ - public void setHitDie(final int hd) - { - put(IntegerKey.HIT_DIE, hd); - } - - /** - * Set the level - * @param level - */ - public void setLevel(final int level) - { - put(IntegerKey.LEVEL, level); - } - - /** - * Set the Race Type - * @param aType - */ - public void setRaceType(final String aType) - { - raceType = aType; - } - - /** - * Set the use master skill flag - * @param useMasterSkill - */ - public void setUseMasterSkill(final boolean useMasterSkill) - { - this.useMasterSkill = useMasterSkill; - } } Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/EquipmentModifierLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/EquipmentModifierLoader.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/EquipmentModifierLoader.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -24,7 +24,6 @@ import java.net.URI; import java.net.URISyntaxException; -import java.util.Map; import java.util.StringTokenizer; import pcgen.base.lang.UnreachableError; @@ -75,8 +74,6 @@ } } - Map<String, LstToken> tokenMap = TokenStore.inst().getTokenMap( - EquipmentModifierLstToken.class); while (colToken.hasMoreTokens()) { final String token = colToken.nextToken().trim(); final int colonLoc = token.indexOf(':'); @@ -100,18 +97,6 @@ { context.commit(); } - else if (tokenMap.containsKey(key)) - { - EquipmentModifierLstToken tok = (EquipmentModifierLstToken) tokenMap - .get(key); - LstUtils.deprecationCheck(tok, eqMod, value); - if (!tok.parse(eqMod, value)) - { - Logging.errorPrint("Error parsing EqMod " - + eqMod.getDisplayName() + ':' + source.getURI() - + ':' + token + "\""); - } - } else if (!PObjectLoader.parseTag(eqMod, token)) { Logging.replayParsedMessages(); Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -44,7 +44,6 @@ tokenTypeList.add(CampaignLstToken.class); tokenTypeList.add(CompanionModLstToken.class); tokenTypeList.add(EquipmentLstToken.class); - tokenTypeList.add(EquipmentModifierLstToken.class); tokenTypeList.add(RaceLstToken.class); tokenTypeList.add(SourceLstToken.class); //Kits Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1,22 +1,48 @@ package plugin.lsttokens.companionmod; +import pcgen.cdom.enumeration.StringKey; import pcgen.core.character.CompanionMod; -import pcgen.persistence.lst.CompanionModLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; /** * Class deals with COPYMASTERBAB Token */ -public class CopymasterbabToken implements CompanionModLstToken +public class CopymasterbabToken extends AbstractToken implements + CDOMPrimaryToken<CompanionMod> { + @Override public String getTokenName() { return "COPYMASTERBAB"; } - public boolean parse(CompanionMod cmpMod, String value) + public boolean parse(LoadContext context, CompanionMod cMod, String value) { - cmpMod.setCopyMasterBAB(value); + if (isEmpty(value)) + { + return false; + } + context.getObjectContext().put(cMod, StringKey.MASTER_BAB_FORMULA, value); return true; } + + public String[] unparse(LoadContext context, CompanionMod cMod) + { + String masterBAB = + context.getObjectContext().getString(cMod, StringKey.MASTER_BAB_FORMULA); + if (masterBAB == null) + { + return null; + } + return new String[]{masterBAB}; + } + + public Class<CompanionMod> getTokenClass() + { + return CompanionMod.class; + } + } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1,22 +1,50 @@ package plugin.lsttokens.companionmod; +import pcgen.cdom.enumeration.StringKey; import pcgen.core.character.CompanionMod; -import pcgen.persistence.lst.CompanionModLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; /** * Class deals with COPYMASTERCHECK Token */ -public class CopymastercheckToken implements CompanionModLstToken +public class CopymastercheckToken extends AbstractToken implements + CDOMPrimaryToken<CompanionMod> { + @Override public String getTokenName() { return "COPYMASTERCHECK"; } - public boolean parse(CompanionMod cmpMod, String value) + public boolean parse(LoadContext context, CompanionMod cMod, String value) { - cmpMod.setCopyMasterCheck(value); + if (isEmpty(value)) + { + return false; + } + context.getObjectContext().put(cMod, StringKey.MASTER_CHECK_FORMULA, + value); return true; } + + public String[] unparse(LoadContext context, CompanionMod cMod) + { + String masterCheck = + context.getObjectContext().getString(cMod, + StringKey.MASTER_CHECK_FORMULA); + if (masterCheck == null) + { + return null; + } + return new String[]{masterCheck}; + } + + public Class<CompanionMod> getTokenClass() + { + return CompanionMod.class; + } + } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1,22 +1,50 @@ package plugin.lsttokens.companionmod; +import pcgen.cdom.enumeration.StringKey; import pcgen.core.character.CompanionMod; -import pcgen.persistence.lst.CompanionModLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; /** * Class deals with COPYMASTERHP Token */ -public class CopymasterhdToken implements CompanionModLstToken +public class CopymasterhdToken extends AbstractToken implements + CDOMPrimaryToken<CompanionMod> { + @Override public String getTokenName() { return "COPYMASTERHP"; } - public boolean parse(CompanionMod cmpMod, String value) + public boolean parse(LoadContext context, CompanionMod cMod, String value) { - cmpMod.setCopyMasterHP(value); + if (isEmpty(value)) + { + return false; + } + context.getObjectContext() + .put(cMod, StringKey.MASTER_HP_FORMULA, value); return true; } + + public String[] unparse(LoadContext context, CompanionMod cMod) + { + String masterHP = + context.getObjectContext().getString(cMod, + StringKey.MASTER_HP_FORMULA); + if (masterHP == null) + { + return null; + } + return new String[]{masterHP}; + } + + public Class<CompanionMod> getTokenClass() + { + return CompanionMod.class; + } + } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1,47 +1,125 @@ package plugin.lsttokens.companionmod; +import java.util.Map; +import java.util.SortedSet; +import java.util.StringTokenizer; +import java.util.TreeSet; + +import pcgen.base.lang.StringUtil; +import pcgen.cdom.base.Category; +import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.IntegerKey; +import pcgen.cdom.enumeration.MapKey; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.cdom.reference.CategorizedCDOMReference; import pcgen.core.Globals; import pcgen.core.PCClass; +import pcgen.core.SubClass; import pcgen.core.character.CompanionMod; -import pcgen.persistence.lst.CompanionModLstToken; +import pcgen.rules.context.LoadContext; +import pcgen.rules.context.MapChanges; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; -import java.util.StringTokenizer; - /** * Class deals with FOLLOWER Token */ -public class FollowerToken implements CompanionModLstToken +public class FollowerToken extends AbstractToken implements + CDOMPrimaryToken<CompanionMod> { + private static final Class<PCClass> PCCLASS_CLASS = PCClass.class; + private static final Class<SubClass> SUBCLASS_CLASS = SubClass.class; + + @Override public String getTokenName() { return "FOLLOWER"; } - public boolean parse(CompanionMod cmpMod, String value) + public boolean parse(LoadContext context, CompanionMod cMod, String value) { - final StringTokenizer aTok = new StringTokenizer(value, "="); - final String someClasses = aTok.nextToken(); - final String aLev = aTok.nextToken(); - cmpMod.setLevel(Integer.parseInt(aLev)); + if (isEmpty(value) || hasIllegalSeparator('|', value)) + { + return false; + } - final StringTokenizer bTok = new StringTokenizer(someClasses, ","); + int equalLoc = value.indexOf('='); + if (equalLoc == -1) + { + return false; + } + if (equalLoc != value.lastIndexOf('=')) + { + return false; + } + String classString = value.substring(0, equalLoc); + String levelString = value.substring(equalLoc + 1); + Integer lvl = Integer.valueOf(levelString); + context.obj.put(cMod, IntegerKey.LEVEL, lvl); + final StringTokenizer bTok = new StringTokenizer(classString, ","); + while (bTok.hasMoreTokens()) { - final String classKey = bTok.nextToken(); - final PCClass pcClass = Globals.getContext().ref.silentlyGetConstructedCDOMObject(PCClass.class, classKey); + String classKey = bTok.nextToken(); + PCClass pcClass = + context.ref.silentlyGetConstructedCDOMObject(PCCLASS_CLASS, + classKey); if (pcClass != null) { - cmpMod.getClassMap().put(classKey, aLev); + CDOMSingleRef<PCClass> pcc = + Globals.getContext().ref.getCDOMReference( + PCCLASS_CLASS, classKey); + context.getObjectContext().put(cMod, MapKey.APPLIED_CLASS, pcc, + lvl); } else { // Now we accept VARiable names here. - cmpMod.getVarMap().put(classKey, aLev); + context.getObjectContext().put(cMod, MapKey.APPLIED_VARIABLE, + classKey, lvl); } } return true; } + + public String[] unparse(LoadContext context, CompanionMod cMod) + { + MapChanges<CDOMSingleRef<? extends PCClass>, Integer> changes = + context.getObjectContext().getMapChanges(cMod, + MapKey.APPLIED_CLASS); + if (changes == null || changes.isEmpty()) + { + return null; + } + SortedSet<String> set = new TreeSet<String>(); + Map<CDOMSingleRef<? extends PCClass>, Integer> map = changes.getAdded(); + for (Map.Entry<CDOMSingleRef<? extends PCClass>, Integer> me : map + .entrySet()) + { + CDOMSingleRef<? extends PCClass> ref = me.getKey(); + Class<? extends PCClass> refClass = ref.getReferenceClass(); + if (SUBCLASS_CLASS.equals(refClass)) + { + Category<SubClass> parent = + ((CategorizedCDOMReference<SubClass>) ref) + .getCDOMCategory(); + set.add(parent.toString() + "." + ref.getLSTformat() + '=' + + me.getValue()); + } + else + { + set.add(ref.getLSTformat() + '=' + me.getValue()); + } + } + return new String[]{StringUtil.join(set, Constants.PIPE)}; + } + + public Class<CompanionMod> getTokenClass() + { + return CompanionMod.class; + } + } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java 2008-12-05 22:08:05 UTC (rev 8566) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java 2008-12-05 22:08:52 UTC (rev 8567) @@ -1,22 +1,65 @@ package plugin.lsttokens.companionmod; +import pcgen.cdom.enumeration.IntegerKey; import pcgen.core.character.CompanionMod; -import pcgen.persistence.lst.CompanionModLstToken; +import pcgen.rules.context.... [truncated message content] |
From: <th...@us...> - 2008-12-06 01:29:56
|
Revision: 8576 http://pcgen.svn.sourceforge.net/pcgen/?rev=8576&view=rev Author: thpr Date: 2008-12-06 01:29:45 +0000 (Sat, 06 Dec 2008) Log Message: ----------- license info Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilityRef.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractSimpleProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/ProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleArmorProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleShieldProfProvider.java Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedListCommitStrategy.java Trunk/pcgen/code/src/java/plugin/lsttokens/AddLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/AutoLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/BonusLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/CategoryToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/MasterbonusraceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/RaceTypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/UsemasterskillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/equipment/AlttypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/equipmentmodifier/BonusToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/PreracetypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/StartfeatsToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.choiceset; import java.util.Set; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.choiceset; import java.util.Collection; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.content; import pcgen.cdom.base.CDOMObject; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilityRef.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilityRef.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilityRef.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import pcgen.cdom.base.CDOMReference; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbilitySelection.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import java.util.StringTokenizer; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import java.util.List; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractSimpleProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractSimpleProfProvider.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractSimpleProfProvider.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import pcgen.cdom.base.CDOMObject; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import java.util.List; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import pcgen.cdom.base.CDOMObject; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/ProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/ProfProvider.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/ProfProvider.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import pcgen.cdom.base.CDOMObject; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import java.util.List; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleArmorProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleArmorProfProvider.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleArmorProfProvider.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import pcgen.core.ArmorProf; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleShieldProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleShieldProfProvider.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/SimpleShieldProfProvider.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package pcgen.cdom.helper; import pcgen.core.Equipment; Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedListCommitStrategy.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedListCommitStrategy.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedListCommitStrategy.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -210,7 +210,7 @@ return new ListChanges<T>(tokenName, owner, null, swl, false); } - public <T extends CDOMObject> Set<CDOMReference> getActiveLists() + public Set<CDOMReference> getActiveLists() { return masterList.getKeySet(); } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/AddLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/AddLst.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/AddLst.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,6 +1,19 @@ /* - * Created on Sep 2, 2005 - * + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package plugin.lsttokens; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/AutoLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/AutoLst.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/AutoLst.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,6 +1,19 @@ /* - * Created on Sep 2, 2005 - * + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package plugin.lsttokens; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/BonusLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/BonusLst.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/BonusLst.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,6 +1,19 @@ /* - * Created on Sep 2, 2005 - * + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package plugin.lsttokens; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/KeyLst.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,6 +1,19 @@ /* - * Created on Sep 2, 2005 - * + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package plugin.lsttokens; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/RemoveLst.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,6 +1,19 @@ /* - * Created on Sep 2, 2005 - * + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package plugin.lsttokens; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,6 +1,19 @@ /* - * Created on Sep 2, 2005 - * + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package plugin.lsttokens; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/CategoryToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/CategoryToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/CategoryToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.ability; import pcgen.cdom.base.Category; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.ability; import java.util.ArrayList; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.ability; import java.util.ArrayList; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/BooktypeToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import pcgen.cdom.enumeration.StringKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import java.net.URI; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GenreToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import pcgen.cdom.enumeration.StringKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HelpToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import pcgen.cdom.enumeration.StringKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import java.net.URI; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import java.net.URI; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/RankToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import pcgen.cdom.enumeration.IntegerKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/SettingToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.campaign; import pcgen.cdom.enumeration.StringKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterbabToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import pcgen.cdom.enumeration.StringKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymastercheckToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import pcgen.cdom.enumeration.StringKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/CopymasterhdToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import pcgen.cdom.enumeration.StringKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/FollowerToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import java.util.Map; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/HdToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import pcgen.cdom.enumeration.IntegerKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/MasterbonusraceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/MasterbonusraceToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/MasterbonusraceToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import java.util.Collection; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/RaceTypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/RaceTypeToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/RaceTypeToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import pcgen.cdom.enumeration.ObjectKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/UsemasterskillToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/UsemasterskillToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/companionmod/UsemasterskillToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.companionmod; import pcgen.cdom.enumeration.ObjectKey; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/equipment/AlttypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/equipment/AlttypeToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/equipment/AlttypeToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.equipment; import java.util.Collection; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/equipmentmodifier/BonusToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/equipmentmodifier/BonusToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/equipmentmodifier/BonusToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.equipmentmodifier; import java.util.Collection; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.pcclass; import java.util.Collection; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.pcclass; import java.util.ArrayList; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/PreracetypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/PreracetypeToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/PreracetypeToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package plugin.lsttokens.pcclass; import java.util.List; Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java 2008-12-06 00:22:02 UTC (rev 8575) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/ProhibitedToken.java 2008-12-06 01:29:45 UTC (rev 8576) @@ -1,3 +1,20 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Bost... [truncated message content] |
From: <th...@us...> - 2008-12-07 04:21:25
|
Revision: 8593 http://pcgen.svn.sourceforge.net/pcgen/?rev=8593&view=rev Author: thpr Date: 2008-12-07 04:21:15 +0000 (Sun, 07 Dec 2008) Log Message: ----------- convert rest of KIT tokens (excludes deletions) Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Kit.java Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitAlignment.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitBio.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitClass.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitDeity.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitFunds.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitKit.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitLangBonus.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitLevelAbility.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitProf.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitRace.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSelect.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSkill.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSkillAdd.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpellBookEntry.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpells.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitTemplate.java Trunk/pcgen/code/src/java/pcgen/gui/KitSelector.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java Trunk/pcgen/code/src/java/pcgen/rules/persistence/CDOMSubLineLoader.java Trunk/pcgen/code/src/java/pcgen/rules/persistence/token/DeferredToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/BonusLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/NaturalattacksLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/CategoryToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/AlignToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/GenderToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/KitToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/LangBonusToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/NameToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/RaceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/RegionToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/SelectToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/StatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/TemplateToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/CountToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FreeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/LookupToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/OptionToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/ClassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/LevelToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/SubclassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/deity/CountToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/deity/DeityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/deity/DomainToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/FundsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/QtyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/EqmodToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/GearToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/LocationToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/MaxCostToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/QtyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/SizeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/levelability/AbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/levelability/LevelAbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/CountToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/ProfToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/RacialToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/ClassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/CountToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/FreeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/RankToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SelectionToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SkillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/CountToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/SpellsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/ApplyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/EquipBuyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/StartpackToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/VisibleToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/TableToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/ValuesToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/pcclass/PreracetypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/CrToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/core/kit/KitTable.java Removed Paths: ------------- Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpellBook.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Kit.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Kit.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/Kit.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -25,17 +25,23 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; +import java.util.Map; +import pcgen.base.formula.Formula; import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.KitApply; import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.kit.BaseKit; import pcgen.core.kit.KitStat; +import pcgen.core.kit.KitTable; import pcgen.core.prereq.PrereqHandler; import pcgen.core.prereq.Prerequisite; import pcgen.core.prereq.PrerequisiteUtilities; import pcgen.gui.CharacterInfo; import pcgen.gui.PCGen_Frame1; import pcgen.util.Logging; +import pcgen.util.enumeration.Visibility; /** * <code>Kit</code>. @@ -45,55 +51,20 @@ */ public final class Kit extends PObject implements Comparable<Object> { - private static final int VISIBLE_NO = 0; - private static final int VISIBLE_YES = 1; - private static final int VISIBLE_QUALIFIED = 2; - - /** APPLY_PERMANENT = 0 */ - public static final int APPLY_PERMANENT = 0; - /** APPLY_INSTANT = 1 */ - public static final int APPLY_INSTANT = 1; - - private int kitVisible = VISIBLE_YES; - - private final HashMap<String, LookupTable> lookupTables = new HashMap<String, LookupTable>(); - private List<KitStat> statList = new ArrayList<KitStat>(); - private QualifiedObject<String> buyRate = null; - private String region = Constants.s_NONE; - private int applyMode = APPLY_PERMANENT; + private Map<String, KitTable> tableMap = new HashMap<String, KitTable>(); + private String region = Constants.s_NONE; private int selectValue = -1; private boolean doLevelAbilitiesFlag = true; - public Kit() { + public Kit() + { // } - - /** - * Adds an object to be applied as part of the kit. Objects are applied - * by the kit in the order they are added. - * - * @param anObject A BaseKit object to apply as part of the kit - */ - public void addObject(final BaseKit anObject) - { - addToListFor(ListKey.KIT_TASKS, anObject); - } /** - * Sets the buy rate of the kit. - * - * @param argRate the string-based representation of a percentage of the - * cost equipment will be purchased for - */ - public void setBuyRate(final String argRate) - { - buyRate = QualifiedObject.createQualifiedObject( argRate, '['); - } - - /** * Returns the list of base stats that are set by the kit. * * @return List the List of stats to be set by the kit. The stats are @@ -105,36 +76,6 @@ } /** - * Get the method by which the kit is applied. - * - * @return A string representation of the mode - */ - public int getApplyMode() - { - return applyMode; - } - - /** - * Set the mode this kit should be applied with. PERMANENT means the kit - * is added to the list of kits applied to the PC and will not be allowed - * to be applied again. INSTANT means it is not saved with the character - * and can be applied as many times as desirable. - * - * @param aMode The mode (PERMANENT, INSTANT) - */ - public void setApplyMode(final String aMode) - { - if ("PERMANENT".equals(aMode)) - { - applyMode = APPLY_PERMANENT; - } - else if ("INSTANT".equals(aMode)) - { - applyMode = APPLY_INSTANT; - } - } - - /** * Returns the region of the kit. * * @return String @@ -223,7 +164,8 @@ * @param thingsToAdd The list of things that will be added by this kit * wrapped in KitWrapper objects */ - public void processKit(final PlayerCharacter pc, final List<BaseKit> thingsToAdd) + public void processKit(final PlayerCharacter pc, + final List<BaseKit> thingsToAdd) { processKit(pc, thingsToAdd, -1); } @@ -239,17 +181,15 @@ * @param kitNo An integer that will be used to set the kit number * in items of equipment added by this kit */ - public void processKit( - final PlayerCharacter pc, - final List<BaseKit> thingsToAdd, - final int kitNo) + public void processKit(final PlayerCharacter pc, + final List<BaseKit> thingsToAdd, final int kitNo) { - for ( KitStat kStat : statList ) + for (KitStat kStat : statList) { kStat.apply(pc); } - for ( BaseKit bk : thingsToAdd ) + for (BaseKit bk : thingsToAdd) { bk.apply(pc); } @@ -261,7 +201,7 @@ pane.refresh(); } - if (applyMode == APPLY_PERMANENT) + if (getSafe(ObjectKey.APPLY_MODE) == KitApply.PERMANENT) { pc.addKit(this); } @@ -275,17 +215,18 @@ */ public int getBuyRate(PlayerCharacter aPC) { - int aBuyRate = SettingsHandler.getGearTab_BuyRate(); - final QualifiedObject<String> purchaseFormula = buyRate; - - if (purchaseFormula != null) + QualifiedObject<Formula> buy = get(ObjectKey.EQUIP_BUY); + Formula f = buy.getObject(aPC); + int buyRate; + if (f == null) { - if ( purchaseFormula.qualifies( aPC ) ) - { - aBuyRate = aPC.getVariableValue(purchaseFormula.getObject( aPC ), "").intValue(); - } + buyRate = SettingsHandler.getGearTab_BuyRate(); } - return aBuyRate; + else + { + buyRate = f.resolve(aPC, "").intValue(); + } + return buyRate; } /** @@ -298,7 +239,8 @@ */ public final boolean isVisible(PlayerCharacter aPC) { - if (kitVisible == VISIBLE_QUALIFIED) + Visibility kitVisible = getSafe(ObjectKey.VISIBILITY); + if (kitVisible == Visibility.QUALIFY) { final List<Prerequisite> prereqList = getPrerequisiteList(); @@ -309,7 +251,7 @@ return false; } - else if (kitVisible == VISIBLE_YES) + else if (kitVisible == Visibility.DEFAULT) { return true; } @@ -318,51 +260,30 @@ } /** - * Set how visible this Kit is * - * @param aString beginning with "Y" for visible, "Q" for only - * if pc qualifies. Any other letter makes the kit invisible. - */ - public final void setVisible(final String aString) - { - if ((aString.length() > 0) && (aString.charAt(0) == 'Y')) - { - kitVisible = VISIBLE_YES; - } - else if ((aString.length() > 0) && (aString.charAt(0) == 'Q')) - { - kitVisible = VISIBLE_QUALIFIED; - } - else - { - kitVisible = VISIBLE_NO; - } - } - - /** - * * @param aPC PlayerCharacter * @param thingsToAdd List * @param warnings List */ - public void testApplyKit(PlayerCharacter aPC, List<BaseKit> thingsToAdd, List<String> warnings) + public void testApplyKit(PlayerCharacter aPC, List<BaseKit> thingsToAdd, + List<String> warnings) { // We will create a copy of the PC since we may need to add classes and // levels to the PC that the user may choose not to apply. // NOTE: These methods need to be called in the correct order. - PlayerCharacter tempPC = (PlayerCharacter)aPC.clone(); - for ( KitStat kStat : statList ) + PlayerCharacter tempPC = (PlayerCharacter) aPC.clone(); + for (KitStat kStat : statList) { kStat.testApply(this, tempPC, warnings); } - for ( BaseKit baseKit : getSafeListFor(ListKey.KIT_TASKS) ) + for (BaseKit bk : getSafeListFor(ListKey.KIT_TASKS)) { - if (!PrereqHandler.passesAll(baseKit.getPrerequisiteList(), tempPC, this)) + if (!PrereqHandler + .passesAll(bk.getPrerequisiteList(), tempPC, this)) { continue; } - BaseKit bk = baseKit.clone(); if (selectValue != -1 && !bk.isOption(tempPC, selectValue)) { continue; @@ -373,7 +294,6 @@ } } } - private class ObjectTypeComparator implements Comparator<BaseKit> { @@ -408,7 +328,7 @@ Collections.sort(sortedObjects, new ObjectTypeComparator()); String lastObjectName = ""; - for ( BaseKit bk : sortedObjects ) + for (BaseKit bk : sortedObjects) { String objName = bk.getObjectName(); if (!objName.equals(lastObjectName)) @@ -434,157 +354,18 @@ private String getPreReqHTMLStrings(PlayerCharacter aPC) { - return PrerequisiteUtilities.preReqHTMLStringsForList(aPC, this, getPrerequisiteList(), false); + return PrerequisiteUtilities.preReqHTMLStringsForList(aPC, this, + getPrerequisiteList(), false); } - /** - * Add new lookup table - * @param tableName - */ - public void addLookupTable(final String tableName) + public static void applyKit(final Kit aKit, final PlayerCharacter aPC) { - lookupTables.put(tableName, new LookupTable()); - } - - /** - * Add a new lookup value to the table - * @param tableName - * @param lookupValue - * @param lowVal - * @param highVal - */ - public void addLookupValue(final String tableName, final String lookupValue, final String lowVal, final String highVal) - { - LookupTable table = lookupTables.get(tableName); - table.addEntry(lookupValue, lowVal, highVal); - } - - /** - * Get a value out of the table - * @param pc - * @param tableName - * @param value - * @return A value out of the table - */ - public String getTableValue(PlayerCharacter pc, final String tableName, String value) - { - LookupTable t = lookupTables.get(tableName); - if (t == null) + if (aKit == null) { - return ""; - } - int val = pc.getVariableValue(value, Math.random()+"").intValue(); - return t.getEntry(pc, val); - } - - /** - * Perform a lookup - * @param aPC - * @param aValue - * @return result - */ - public String lookup(PlayerCharacter aPC, String aValue) - { - int commaInd = aValue.indexOf(","); - String tableName = aValue.substring(0, commaInd); - String value = aValue.substring(commaInd+1,aValue.length()); - String result = getTableValue(aPC, tableName, value); - return result; - } - - class LookupTable - { - ArrayList<TableEntry> values = new ArrayList<TableEntry>(); - - /** - * Constructor - */ - public LookupTable() - { - // Empty Constructor - } - - /** - * Add an entry to the table - * @param value - * @param lowVal - * @param highVal - */ - public void addEntry(final String value, final String lowVal, final String highVal) - { - values.add(new TableEntry(value, lowVal, highVal)); - } - - /** - * Get an entry from the table - * @param pc - * @param value - * @return entry - */ - public String getEntry(PlayerCharacter pc, int value) - { - for ( TableEntry entry : values ) - { - if (entry.isIn(pc, value)) - { - return entry.getValue(); - } - } - return ""; - } - - class TableEntry - { - private String value = ""; - private String lowValue = "" + Integer.MIN_VALUE; - private String highValue = "" + Integer.MAX_VALUE; - - /** - * Constructor - * @param val the value for this table entry - * @param lowVal the low value of for this table entry - * @param highVal the high value for this table entry - */ - public TableEntry(String val, String lowVal, String highVal) - { - value = val; - lowValue = lowVal; - highValue = highVal; - } - - /** - * True if value falls within a range - * @param pc the PC this Kit is being applied to - * @param inValue the value to test. - * @return True if value falls within a range - */ - public boolean isIn(PlayerCharacter pc, int inValue) - { - int lv = pc.getVariableValue(lowValue, "").intValue(); - int hv = pc.getVariableValue(highValue, "").intValue(); - if (inValue >= lv && inValue <= hv) - return true; - return false; - } - - /** - * Get the value - * @return value - */ - public String getValue() - { - return value; - } - } - } - public static void applyKit( final Kit aKit, final PlayerCharacter aPC ) - { - if ( aKit == null ) - { return; } - if ( aKit.getApplyMode() == APPLY_PERMANENT - && aPC.getKitInfo().contains(aKit) ) + if (aKit.getSafe(ObjectKey.APPLY_MODE) == KitApply.PERMANENT + && aPC.getKitInfo().contains(aKit)) { return; } @@ -604,4 +385,14 @@ } aKit.processKit(aPC, thingsToAdd, 0); } + + public KitTable getTable(String name) + { + return tableMap.get(name); + } + + public KitTable addTable(KitTable table) + { + return tableMap.put(table.getTableName(), table); + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -23,109 +23,40 @@ */ package pcgen.core.kit; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import pcgen.base.lang.UnreachableError; +import pcgen.base.formula.Formula; import pcgen.cdom.base.ConcretePrereqObject; import pcgen.core.Kit; import pcgen.core.PlayerCharacter; -import pcgen.util.Logging; /** * Common code for the kits. * @author Jonas Karlson <juj...@sf...> * @version $Revision$ */ -public abstract class BaseKit extends ConcretePrereqObject implements Cloneable +public abstract class BaseKit extends ConcretePrereqObject { - protected int choiceCount = 1; - private List<Range> options = new ArrayList<Range>(); - private List<String> lookups = new ArrayList<String>(); - - /** - * Set the number of choices (after converting to an integer.) - * @param argChoiceCount the number of choices - */ - public void setChoiceCount(final String argChoiceCount) + + Formula minOption; + Formula maxOption; + + public void setOptionBounds(Formula min, Formula max) { - try - { - choiceCount = Integer.parseInt(argChoiceCount); - } - catch (NumberFormatException exc) - { - Logging.errorPrint("Invalid choice count \"" + argChoiceCount + "\" in BaseKit.setChoiceCount"); - } + minOption = min; + maxOption = max; } - /** - * Get the number of choices. - * @return the number of choices - */ - public int getChoiceCount() - { - return choiceCount; - } + public Formula getOptionMin() + { + return minOption; + } + public Formula getOptionMax() + { + return maxOption; + } /** - * Add the lookup to the lookups list - * @param aLookup - */ - public void addLookup(final String aLookup) - { - lookups.add(aLookup); - } - - /** - * Get an unmodifiable copy of the lookups list - * @return an unmodifiable copy of the lookups list - */ - public List<String> getLookups() - { - return Collections.unmodifiableList(lookups); - } - - /** - * Clone this Base Kit - * @return cloned Base Kit - */ - @Override - public BaseKit clone() - { - BaseKit aClone = null; - try - { - aClone = (BaseKit)super.clone(); - } - catch (CloneNotSupportedException notUsed) - { - throw new UnreachableError(notUsed); - } - aClone.choiceCount = choiceCount; - if ( options != null ) - { - aClone.options = new ArrayList<Range> (options); - } - if ( lookups != null ) - { - aClone.lookups = new ArrayList<String> (lookups); - } - return aClone; - } - - /** - * Add range to the options - * @param lowVal Start of the range - * @param highVal End of the range - */ - public void addOptionRange(String lowVal, String highVal) - { - options.add(new Range(lowVal, highVal)); - } - - /** * Returns true if the value is in the option range for this item * @param pc Charater the kit is being applied to. Used to eval formulas * @param val the Select value @@ -133,13 +64,9 @@ */ public boolean isOption(PlayerCharacter pc, int val) { - if (options.size() == 0) + if (minOption == null || minOption.resolve(pc, "").intValue() <= val) { - return true; - } - for ( Range r : options ) - { - if (r.isIn(pc, val)) + if (maxOption == null || maxOption.resolve(pc, "").intValue() >= val) { return true; } @@ -230,36 +157,4 @@ * @return object name */ public abstract String getObjectName(); - - static class Range - { - private String lowValue = "" + Integer.MIN_VALUE; - private String highValue = "" + Integer.MAX_VALUE; - - /** - * Constructor - * @param lowVal - * @param highVal - */ - public Range(String lowVal, String highVal) - { - lowValue = lowVal; - highValue = highVal; - } - - /** - * True if value falls within a range - * @param pc - * @param value - * @return True if value falls within a range - */ - public boolean isIn(PlayerCharacter pc, int value) - { - int lv = pc.getVariableValue(lowValue, "").intValue(); - int hv = pc.getVariableValue(highValue, "").intValue(); - if (value >= lv && value <= hv) - return true; - return false; - } - } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -22,19 +22,19 @@ */ package pcgen.core.kit; -import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; -import java.util.Iterator; import java.util.List; +import java.util.Map; +import pcgen.base.lang.StringUtil; +import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.reference.CategorizedCDOMReference; import pcgen.core.Ability; import pcgen.core.AbilityCategory; -import pcgen.core.AbilityInfo; -import pcgen.core.AbilityStore; import pcgen.core.AbilityUtilities; -import pcgen.core.Categorisable; import pcgen.core.Globals; import pcgen.core.Kit; import pcgen.core.PlayerCharacter; @@ -46,86 +46,24 @@ * @author Andrew Wilson <nu...@so...> * @version $Revision$ */ -public final class KitAbilities extends BaseKit implements Serializable, Cloneable +public final class KitAbilities extends BaseKit { - // Only change the UID when the serialized form of the class has also changed - private static final long serialVersionUID = 1; + private Boolean free = null; + private Integer choiceCount; + private Map<CDOMReference<Ability>, List<String>> abilityMap = + new HashMap<CDOMReference<Ability>, List<String>>(); - private AbilityStore abilityStore = new AbilityStore(); - private boolean free = false; - private String stringRep; - // These members store the state of an instance of this class. They are // not cloned. - private transient List<Ability> theAbilities = new ArrayList<Ability>(); - private transient List<AbilityInfo> abilitiesToAdd = null; + private transient List<AbilitySelection> abilitiesToAdd = null; + private AbilityCategory category; /** - * Constructor that takes a | separated list of Abilities, with Interspersed - * CATEGORY=FOO entries. - * - * @param abString the string containing the Abilities and - * Categories - * @param defaultCategory the default Category - * @param lockCategory Whether the initial category a subsequent - * CATEGORY= tag will be acted on or if it is an - * error - */ - public KitAbilities( - final String abString, - String defaultCategory, - boolean lockCategory) - { - abilityStore.addAbilityInfo(abString, defaultCategory, "|", lockCategory, false); - - final StringBuffer info = new StringBuffer(); - - if ((choiceCount != 1) || (abilityStore.size() != 1)) - { - info.append(choiceCount).append(" of "); - } - - boolean firstDone = false; - - for (Iterator<Categorisable> it = this.getIterator(); it.hasNext();) - { - if (firstDone) - { - info.append("; "); - } - else - { - firstDone = true; - } - - info.append(it.next().getKeyName()); - } - - if (free) - { - info.append(" (free)"); - } - - stringRep = info.toString(); - } - - /** - * Get an Iterator over the AbilityInfo Objects stored in this KitAbilities - * object - * - * @return the AbilityInfo Iterator - */ - public Iterator<Categorisable> getIterator() - { - return abilityStore.getKeyIterator("ALL"); - } - - /** * Set whether the kit is free. * * @param argFree true if the kit is free */ - public void setFree(final boolean argFree) + public void setFree(Boolean argFree) { free = argFree; } @@ -140,59 +78,77 @@ @Override public String toString() { - return stringRep; - } + StringBuilder sb = new StringBuilder(); - public boolean testApply(Kit aKit, PlayerCharacter aPC, List<String> warnings) - { - theAbilities = new ArrayList<Ability>(); - abilitiesToAdd = null; - - if (theAbilities == null) + if ((choiceCount != null) || (abilityMap.size() != 1)) { - return false; + sb.append(getSafeCount()).append(" of "); } - final HashMap<String, AbilityInfo> nameMap = new HashMap<String, AbilityInfo>(); - final HashMap<String, AbilityInfo> catMap = new HashMap<String, AbilityInfo>(); - boolean useNameMap = true; - AbilityCategory abilityCat = AbilityCategory.FEAT; + boolean firstDone = false; - for (Iterator<Categorisable> kAbInnerIt = getIterator(); kAbInnerIt.hasNext();) + for (Map.Entry<CDOMReference<Ability>, List<String>> me : abilityMap + .entrySet()) { - final AbilityInfo info = (AbilityInfo) kAbInnerIt.next(); - - if (!info.qualifies(aPC)) + if (firstDone) { - continue; + sb.append("; "); } + firstDone = true; - if (info.getAbility() != null) + List<String> choices = me.getValue(); + for (Ability a : me.getKey().getContainedObjects()) { - AbilityInfo abI = nameMap.put(info.toString(), info); - catMap.put(info.getCategory() + " " + info.toString(), info); - abilityCat = - SettingsHandler.getGame().getAbilityCategory( - info.getCategory()); - - if (abI != null) + sb.append(a.getKeyName()); + if (choices != null) { - useNameMap = false; + sb.append(" ("); + sb.append(StringUtil.joinToStringBuffer(choices, ", ")); + sb.append(')'); } } - else + } + + if (isFree()) + { + sb.append(" (free)"); + } + + return sb.toString(); + } + + @Override + public boolean testApply(Kit aKit, PlayerCharacter aPC, + List<String> warnings) + { + abilitiesToAdd = new ArrayList<AbilitySelection>(); + List<AbilitySelection> available = new ArrayList<AbilitySelection>(); + for (Map.Entry<CDOMReference<Ability>, List<String>> me : abilityMap + .entrySet()) + { + List<String> choices = me.getValue(); + for (Ability a : me.getKey().getContainedObjects()) { - warnings.add("ABILITY: Non-existant Ability \"" + info.getKeyName() - + "\""); + if (choices == null) + { + available.add(new AbilitySelection(a, "")); + } + else + { + for (String s : choices) + { + available.add(new AbilitySelection(a, s)); + } + } } } - int numberOfChoices = getChoiceCount(); - + int numberOfChoices = getSafeCount(); // Can't choose more entries than there are... - if (numberOfChoices > nameMap.size()) + // TODO this fails if SELECT != 1 + if (numberOfChoices > available.size()) { - numberOfChoices = nameMap.size(); + numberOfChoices = available.size(); } /* @@ -201,43 +157,41 @@ */ boolean tooManyAbilities = false; - int abilitiesChosen = 0; // Don't allow choosing of more than allotted number of abilities - if (!free - && (numberOfChoices > (aPC.getAvailableAbilityPool(abilityCat) - .intValue() - abilitiesChosen))) + if (!isFree() + && (numberOfChoices > (aPC.getAvailableAbilityPool(category) + .intValue()))) { numberOfChoices = - aPC.getAvailableAbilityPool(abilityCat).intValue() - - abilitiesChosen; + aPC.getAvailableAbilityPool(category).intValue(); tooManyAbilities = true; } if (numberOfChoices == 0) { - warnings.add("ABILITY: Not enough " + abilityCat.getPluralName() + " available to take \"" + this + "\""); + warnings.add("ABILITY: Not enough " + category.getPluralName() + + " available to take \"" + this + "\""); return false; } - List<String> choices = useNameMap ? new ArrayList<String>(nameMap.keySet()) : new ArrayList<String>(catMap.keySet()); - List<String> xs; + List<AbilitySelection> selected; - if (numberOfChoices == nameMap.size()) + if (numberOfChoices == available.size()) { - xs = choices; + selected = available; } else { + selected = new ArrayList<AbilitySelection>(); // Force user to make enough selections while (true) { - xs = Globals.getChoiceFromList( - "Choose abilities", - choices, - new ArrayList<String>(), - numberOfChoices); + selected = + Globals.getChoiceFromList("Choose abilities", + available, new ArrayList<AbilitySelection>(), + numberOfChoices); - if (xs.size() != 0) + if (selected.size() != 0) { break; } @@ -245,95 +199,122 @@ } // Add to list of things to add to the character - for (Iterator<String> e = xs.iterator(); e.hasNext();) + for (AbilitySelection as : selected) { - if (abilitiesToAdd == null) + abilitiesToAdd.add(as); + Ability ability = as.ability; + if (isFree()) { - abilitiesToAdd = new ArrayList<AbilityInfo>(); - } - final String choice = e.next(); - AbilityInfo ability = useNameMap ? - nameMap.get(choice): - catMap.get(choice); - - if (ability != null) - { - abilitiesToAdd.add(ability); - ++abilitiesChosen; - final AbilityCategory abilityCategory = - SettingsHandler.getGame().getAbilityCategory( - ability.getCategory()); + // Need to pay for it first if (free) { - // Need to pay for it first - if (free) - { - aPC.adjustAbilities(abilityCategory, new BigDecimal(1)); - } + aPC.adjustAbilities(category, new BigDecimal(1)); } - Iterator<String> choicesIter = ability.getChoicesIterator(); - String abChoice = ""; - do - { - if (choicesIter.hasNext()) - { - abChoice = choicesIter.next(); - } - AbilityUtilities.modAbility(aPC, null, - ability.getAbility(), abChoice, true, abilityCategory); - } - while (choicesIter.hasNext()); } - else - { - warnings.add("ABILITY: Non-existant Ability \"" + choice + "\""); - } + AbilityUtilities.modAbility(aPC, null, ability, as.selection, true, + category); } if (tooManyAbilities) { - warnings.add("ABILITY: Some Abilities were not granted -- not enough remaining feats"); + warnings + .add("ABILITY: Some Abilities were not granted -- not enough remaining feats"); return false; } return true; } + @Override public void apply(PlayerCharacter aPC) { - for ( AbilityInfo ability : abilitiesToAdd ) + for (AbilitySelection as : abilitiesToAdd) { + Ability ability = as.ability; final AbilityCategory abilityCategory = SettingsHandler.getGame().getAbilityCategory( ability.getCategory()); - Iterator<String> choicesIter = ability.getChoicesIterator(); - String choice = ""; - do - { - if (choicesIter.hasNext()) - { - choice = choicesIter.next(); - } - AbilityUtilities.modAbility(aPC, null, ability.getAbility(), - choice, true, abilityCategory); - } - while (choicesIter.hasNext()); + AbilityUtilities.modAbility(aPC, null, ability, as.selection, true, + abilityCategory); - if (free) + if (isFree()) { aPC.adjustAbilities(abilityCategory, new BigDecimal(1)); } } } - @Override - public KitAbilities clone() + /** + * Returns if the skill will be purchased for free. + * @return <code>true</code> if the skill will be free + */ + public boolean isFree() { - return (KitAbilities) super.clone(); + return free != null && free; } + @Override public String getObjectName() { return "Abilities"; } + + public Boolean getFree() + { + return free; + } + + public void setCount(Integer quan) + { + choiceCount = quan; + } + + public Integer getCount() + { + return choiceCount; + } + + public int getSafeCount() + { + return choiceCount == null ? 1 : choiceCount; + } + + public void addAbility(CDOMReference<Ability> ref, List<String> choices) + { + abilityMap.put(ref, choices); + } + + public Collection<CDOMReference<Ability>> getAbilityKeys() + { + return abilityMap.keySet(); + } + + private class AbilitySelection + { + public final Ability ability; + public final String selection; + + public AbilitySelection(Ability a, String sel) + { + ability = a; + selection = sel; + } + + @Override + public String toString() + { + StringBuilder sb = new StringBuilder(); + sb.append(ability.getDisplayName()); + if (selection != null) + { + sb.append(" (").append(selection).append(')'); + } + return sb.toString(); + } + } + + public void setCategory(AbilityCategory ac) + { + category = ac; + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitAlignment.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitAlignment.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitAlignment.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -48,6 +48,7 @@ * * @param aPC The PlayerCharacter the alignment is applied to */ + @Override public void apply(PlayerCharacter aPC) { aPC.setAlignment(alignInd, false, true); @@ -60,6 +61,7 @@ * @param aKit Kit * @param warnings List */ + @Override public boolean testApply(Kit k, PlayerCharacter aPC, List<String> warnings) { PCAlignment align = null; @@ -88,6 +90,7 @@ .toString(alignInd)); } + @Override public String getObjectName() { return "Alignment"; Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitBio.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitBio.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitBio.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -22,13 +22,15 @@ */ package pcgen.core.kit; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import pcgen.base.lang.StringUtil; +import pcgen.cdom.enumeration.Gender; +import pcgen.core.Globals; import pcgen.core.Kit; import pcgen.core.PlayerCharacter; -import java.util.ArrayList; -import java.util.StringTokenizer; -import pcgen.core.Globals; /** * Code to represent a bio setting choices for a Kit. @@ -39,7 +41,8 @@ public class KitBio extends BaseKit { private String theCharacterName = null; - private String theGender = null; + private List<Gender> theGenders = null; + private transient Gender selectedGender = null; /** * Set the character name to set for this kit item. @@ -50,13 +53,9 @@ theCharacterName = aName; } - /** - * Set the gender to use for this kit item. - * @param aGender Gender to use. Can be any string. - */ - public void setGender(final String aGender) + public String getCharacterName() { - theGender = aGender; + return theCharacterName; } /** @@ -65,15 +64,16 @@ * * @param aPC The character to apply the kit to. */ + @Override public void apply(PlayerCharacter aPC) { if (theCharacterName != null) { aPC.setName(theCharacterName); } - if (theGender != null) + if (selectedGender != null) { - aPC.setGender(theGender); + aPC.setGender(selectedGender.toString()); } } @@ -82,6 +82,7 @@ * * @return object name */ + @Override public String getObjectName() { return "Bio Settings"; @@ -98,25 +99,20 @@ * apply the kit * @return true if OK */ - public boolean testApply(Kit aKit, PlayerCharacter aPC, List<String> warnings) + @Override + public boolean testApply(Kit aKit, PlayerCharacter aPC, + List<String> warnings) { - if (theGender != null) + if (theGenders != null) { - ArrayList<String> genders = new ArrayList<String>(); - - StringTokenizer tok = new StringTokenizer(theGender, "|"); - while (tok.hasMoreTokens()) + if (theGenders.size() > 1) { - String gen = tok.nextToken(); - genders.add(gen); - } - if (genders.size() > 1) - { - List<String> selList = new ArrayList<String>(1); - Globals.getChoiceFromList("Choose Gender", genders, selList, 1); + List<Gender> selList = new ArrayList<Gender>(1); + Globals.getChoiceFromList("Choose Gender", theGenders, selList, + 1); if (selList.size() == 1) { - theGender = selList.get(0); + selectedGender = selList.get(0); } } } @@ -134,11 +130,30 @@ { info.append(" Name: " + theCharacterName); } - if (theGender != null) + if (theGenders != null) { - info.append(" Gender: " + theGender); + info.append(" Gender: " + StringUtil.join(theGenders, ", ")); } return info.toString(); } + + public void addGender(Gender gender) + { + if (theGenders == null) + { + theGenders = new ArrayList<Gender>(); + } + if (theGenders.contains(gender)) + { + throw new IllegalArgumentException("Cannot add Gender: " + gender + + " twice"); + } + theGenders.add(gender); + } + + public Collection<Gender> getGenders() + { + return theGenders; + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitClass.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitClass.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -22,11 +22,17 @@ */ package pcgen.core.kit; -import java.io.Serializable; import java.util.List; +import pcgen.base.formula.Formula; +import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; -import pcgen.core.*; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.core.Kit; +import pcgen.core.PCClass; +import pcgen.core.PlayerCharacter; +import pcgen.core.SettingsHandler; +import pcgen.core.SubClass; import pcgen.core.prereq.PrereqHandler; /** @@ -35,15 +41,12 @@ * @author boomer70 * @version $Id$ */ -public class KitClass extends BaseKit implements Serializable, Cloneable +public class KitClass extends BaseKit { - // Only change the UID when the serialized form of the class has also changed - private static final long serialVersionUID = 1; + private CDOMSingleRef<PCClass> pcClass; + private Formula levelFormula; + private CDOMReference<SubClass> subClass; - private String theClassName = null; - private String theSubClass = null; - private String theLevelString = ""; - // These members store the state of an instance of this class. They are // not cloned. private transient PCClass theClass = null; @@ -51,104 +54,45 @@ private transient int theLevel = -1; private transient boolean doLevelAbilities = true; - /** - * Constructor - * @param aClassName - */ - public KitClass(final String aClassName) - { - theClassName = aClassName; - } - - /** - * Get the class name - * @return class name - */ - public String getClassName() - { - return theClassName; - } - - /** - * Set the level - * @param aLevelStr - */ - public void setLevel(final String aLevelStr) - { - theLevelString = aLevelStr; - } - - /** - * Get the level string - * @return level string - */ - public String getLevelString() - { - return theLevelString; - } - - /** - * Set the sub class - * @param aClassName - */ - public void setSubClass(final String aClassName) - { - theSubClass = aClassName; - } - - /** - * Get the sub class - * @return sub class - */ - public String getSubClass() - { - return theSubClass; - } - @Override public String toString() { StringBuffer ret = new StringBuffer(100); - ret.append(theClassName).append(theLevelString); + ret.append(pcClass.getLSTformat()).append(levelFormula); return ret.toString(); } - public boolean testApply(Kit aKit, PlayerCharacter aPC, List<String> warnings) + @Override + public boolean testApply(Kit aKit, PlayerCharacter aPC, + List<String> warnings) { - theClass = null; - theClass = Globals.getContext().ref.silentlyGetConstructedCDOMObject(PCClass.class, getClassName()); + theClass = pcClass.resolvesTo(); - if (theClass == null) - { - warnings.add("CLASS: Class not found \"" + getClassName() + "\""); - - return false; - } - theOrigSubClass = theClass.getSubClassKey(); - if (getSubClass() != null) + if (subClass != null) { // try and set a subclass too. - theClass.setSubClassKey(aPC, getSubClass()); + theClass.setSubClassKey(aPC, getSubClass().getLSTformat()); } if (!PrereqHandler.passesAll(theClass.getPrerequisiteList(), aPC, aKit)) { PrereqHandler.toHtmlString(theClass.getPrerequisiteList()); - warnings.add("CLASS: Not qualified for class \"" + getClassName() + - "\"."); + warnings.add("CLASS: Not qualified for class \"" + + theClass.getKeyName() + "\"."); return false; } doLevelAbilities = aKit.doLevelAbilities(); // Temporarily increase the PCs level. - theLevel = aPC.getVariableValue(theLevelString, "").intValue(); + theLevel = levelFormula.resolve(aPC, "").intValue(); addLevel(aPC, theLevel, theClass, doLevelAbilities); return true; } + @Override public void apply(PlayerCharacter aPC) { addLevel(aPC, theLevel, theClass, doLevelAbilities); @@ -156,21 +100,17 @@ theClass = null; } - @Override - public KitClass clone() + private void addLevel(final PlayerCharacter pc, final int numLevels, + final PCClass aClass, final boolean doLevelAbilitiesIn) { - return (KitClass) super.clone(); - } - - private void addLevel(final PlayerCharacter pc, final int numLevels, final PCClass aClass, final boolean doLevelAbilitiesIn) - { // We want to level up as quietly as possible for kits. boolean tempShowHP = SettingsHandler.getShowHPDialogAtLevelUp(); SettingsHandler.setShowHPDialogAtLevelUp(false); -// boolean tempFeatDlg = SettingsHandler.getShowFeatDialogAtLevelUp(); -// SettingsHandler.setShowFeatDialogAtLevelUp(false); + // boolean tempFeatDlg = SettingsHandler.getShowFeatDialogAtLevelUp(); + // SettingsHandler.setShowFeatDialogAtLevelUp(false); int tempChoicePref = SettingsHandler.getSingleChoicePreference(); - SettingsHandler.setSingleChoicePreference(Constants.CHOOSER_SINGLECHOICEMETHOD_SELECTEXIT); + SettingsHandler + .setSingleChoicePreference(Constants.CHOOSER_SINGLECHOICEMETHOD_SELECTEXIT); boolean tempDoLevelAbilities = pc.doLevelAbilities(); pc.setDoLevelAbilities(doLevelAbilitiesIn); @@ -178,12 +118,43 @@ pc.setDoLevelAbilities(tempDoLevelAbilities); SettingsHandler.setSingleChoicePreference(tempChoicePref); -// SettingsHandler.setShowFeatDialogAtLevelUp(tempFeatDlg); + // SettingsHandler.setShowFeatDialogAtLevelUp(tempFeatDlg); SettingsHandler.setShowHPDialogAtLevelUp(tempShowHP); } + @Override public String getObjectName() { return "Classes"; } + + public void setPcclass(CDOMSingleRef<PCClass> ref) + { + pcClass = ref; + } + + public CDOMReference<PCClass> getPcclass() + { + return pcClass; + } + + public void setLevel(Formula formula) + { + levelFormula = formula; + } + + public Formula getLevel() + { + return levelFormula; + } + + public void setSubClass(CDOMReference<SubClass> sc) + { + subClass = sc; + } + + public CDOMReference<SubClass> getSubClass() + { + return subClass; + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitDeity.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitDeity.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitDeity.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -22,29 +22,33 @@ */ package pcgen.core.kit; -import pcgen.core.*; -import pcgen.core.analysis.DomainApplication; -import pcgen.core.prereq.PrereqHandler; -import pcgen.gui.CharacterInfo; -import pcgen.gui.PCGen_Frame1; - -import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; +import pcgen.base.formula.Formula; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.core.CharacterDomain; +import pcgen.core.Deity; +import pcgen.core.Domain; +import pcgen.core.Globals; +import pcgen.core.Kit; +import pcgen.core.PlayerCharacter; +import pcgen.core.analysis.DomainApplication; +import pcgen.core.prereq.PrereqHandler; +import pcgen.gui.CharacterInfo; +import pcgen.gui.PCGen_Frame1; + /** * Deal with Dieties via Kits */ -public class KitDeity extends BaseKit implements Serializable, Cloneable +public class KitDeity extends BaseKit { - // Only change the UID when the serialized form of the class has also changed - private static final long serialVersionUID = 1; + private CDOMSingleRef<Deity> theDeityRef; + private Formula choiceCount; - private String theDeityKey = null; - private String countFormula = ""; - private List<String> theDomains = null; + private List<CDOMSingleRef<Domain>> theDomains = null; // These members store the state of an instance of this class. They are // not cloned. @@ -52,41 +56,23 @@ private transient List<Domain> domainsToAdd = null; /** - * Constructor - * @param aDeityName - */ - public KitDeity(final String aDeityKey) - { - theDeityKey = aDeityKey; - } - - /** - * Get the deityName - * @return the deityName - */ - public String getDeityKey() - { - return theDeityKey; - } - - /** * Add the domain - * @param aDomainName + * @param ref */ - public void addDomain(final String aDomainName) + public void addDomain(final CDOMSingleRef<Domain> ref) { if (theDomains == null) { - theDomains = new ArrayList<String>(3); + theDomains = new ArrayList<CDOMSingleRef<Domain>>(3); } - theDomains.add(aDomainName); + theDomains.add(ref); } /** * Get domains * @return list of domains */ - public List<String> getDomains() + public List<CDOMSingleRef<Domain>> getDomains() { if (theDomains == null) { @@ -96,40 +82,23 @@ return Collections.unmodifiableList(theDomains); } - /** - * Set the COUNT formula - * @param argCountFormula - */ - public void setCountFormula(final String argCountFormula) - { - countFormula = argCountFormula; - } - - /** - * Get the COUNT formula - * @return COUNT formula - */ - public String getCountFormula() - { - return countFormula; - } - @Override public String toString() { StringBuffer buf = new StringBuffer(); - buf.append(theDeityKey); + buf.append(theDeityRef.getLSTformat()); if (theDomains != null && theDomains.size() > 0) { buf.append(" ("); - if (countFormula.length() > 0) + if (choiceCount != null) { - buf.append(countFormula); + buf.append(choiceCount.toString()); buf.append(" of "); } - for (Iterator<String> i = theDomains.iterator(); i.hasNext(); ) + for (Iterator<CDOMSingleRef<Domain>> i = theDomains.iterator(); i + .hasNext();) { buf.append(i.next()); if (i.hasNext()) @@ -143,32 +112,23 @@ return buf.toString(); } - public boolean testApply(Kit aKit, PlayerCharacter aPC, List<String> warnings) + @Override + public boolean testApply(Kit aKit, PlayerCharacter aPC, + List<String> warnings) { - theDeity = null; domainsToAdd = null; - if (theDeityKey == null) - { - return false; - } - theDeity = Globals.getContext().ref.silentlyGetConstructedCDOMObject(Deity.class, theDeityKey); - if (theDeity == null) - { - warnings.add("DEITY: Could not find deity '" + getDeityKey() - + "'"); - return false; - } + theDeity = theDeityRef.resolvesTo(); + if (!aPC.canSelectDeity(theDeity)) { - warnings.add("DEITY: Cannot select deity \"" + theDeity.getDisplayName() + - "\""); + warnings.add("DEITY: Cannot select deity \"" + + theDeity.getDisplayName() + "\""); return false; } aPC.setDeity(theDeity); - List<String> domains = getDomains(); - if (domains == null || domains.size() == 0) + if (theDomains == null || theDomains.size() == 0) { // nothing else to do. return true; @@ -180,24 +140,22 @@ return true; } - final String choiceFormula = getCountFormula(); - int numberOfChoices; - - if (choiceFormula.length() == 0) + int numberOfChoices; + if (choiceCount == null) { - numberOfChoices = domains.size(); + numberOfChoices = theDomains.size(); } else { - numberOfChoices = aPC.getVariableValue(choiceFormula, "").intValue(); + numberOfChoices = choiceCount.resolve(aPC, "").intValue(); } // // Can't choose more entries than there are... // - if (numberOfChoices > domains.size()) + if (numberOfChoices > theDomains.size()) { - numberOfChoices = domains.size(); + numberOfChoices = theDomains.size(); } if (numberOfChoices == 0) @@ -206,10 +164,10 @@ return true; } - List<String> xs; - if (numberOfChoices == domains.size()) + List<CDOMSingleRef<Domain>> xs; + if (numberOfChoices == theDomains.size()) { - xs = domains; + xs = theDomains; } else { @@ -218,11 +176,10 @@ // while (true) { - xs = Globals.getChoiceFromList( - "Choose Domains", - domains, - new ArrayList<String>(), - numberOfChoices); + xs = + Globals.getChoiceFromList("Choose Domains", theDomains, + new ArrayList<CDOMSingleRef<Domain>>(), + numberOfChoices); if (xs.size() != 0) { @@ -233,53 +190,48 @@ // // Add to list of things to add to the character // - for (Iterator<String> e = xs.iterator(); e.hasNext();) + for (CDOMSingleRef<Domain> ref : xs) { - final String domainKey = e.next(); + Domain domain = ref.resolvesTo(); + if (!PrereqHandler.passesAll(domain.getPrerequisiteList(), aPC, + domain)) + { + warnings.add("DEITY: Not qualified for domain \"" + + domain.getDisplayName() + "\""); + continue; + } + CharacterDomain aCD = + aPC.getCharacterDomainForDomain(domain.getKeyName()); - Domain domain = Globals.getContext().ref.silentlyGetConstructedCDOMObject(Domain.class, domainKey); - if (domain != null) + if (aCD == null) { - if (!PrereqHandler.passesAll(domain.getPrerequisiteList(), aPC, domain)) - { - warnings.add("DEITY: Not qualified for domain \"" + - domain.getDisplayName() + "\""); - continue; - } - CharacterDomain aCD = aPC.getCharacterDomainForDomain(domain.getKeyName()); + aCD = aPC.getNewCharacterDomain(); + } - if (aCD == null) - { - aCD = aPC.getNewCharacterDomain(); - } + if (aCD == null + || (aPC.getCharacterDomainUsed() >= aPC + .getMaxCharacterDomains())) + { + warnings.add("DEITY: No more allowed domains"); - if (aCD == null || (aPC.getCharacterDomainUsed() >= aPC.getMaxCharacterDomains())) - { - warnings.add("DEITY: No more allowed domains"); - - return false; - } - - if (domainsToAdd == null) - { - domainsToAdd = new ArrayList<Domain>(); - } - domainsToAdd.add(domain); - - DomainApplication.applyDomain(aPC, domain); - aCD.setDomain(domain, aPC); - aPC.addCharacterDomain(aCD); + return false; } - else + + if (domainsToAdd == null) { - warnings.add("DEITY: Non-existant domain \"" - + domainKey + "\""); + domainsToAdd = new ArrayList<Domain>(); } + domainsToAdd.add(domain); + + DomainApplication.applyDomain(aPC, domain); + aCD.setDomain(domain, aPC); + aPC.addCharacterDomain(aCD); } aPC.calcActiveBonuses(); return true; } + @Override public void apply(PlayerCharacter aPC) { if (theDeity == null) @@ -292,9 +244,10 @@ { return; } - for ( Domain domain : domainsToAdd ) + for (Domain domain : domainsToAdd) { - CharacterDomain aCD = aPC.getCharacterDomainForDomain(domain.getKeyName()); + CharacterDomain aCD = + aPC.getCharacterDomainForDomain(domain.getKeyName()); if (aCD == null) { @@ -321,13 +274,28 @@ } @Override - public KitDeity clone() + public String getObjectName() { - return (KitDeity) super.clone(); + return "Deity"; } - public String getObjectName() + public void setCount(Formula formula) { - return "Deity"; + choiceCount = formula; } + + public Formula getCount() + { + return choiceCount; + } + + public void setDeity(CDOMSingleRef<Deity> ref) + { + theDeityRef = ref; + } + + public CDOMSingleRef<Deity> getDeityRef() + { + return theDeityRef; + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitFunds.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitFunds.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitFunds.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -22,87 +22,75 @@ */ package pcgen.core.kit; +import java.util.List; + +import pcgen.base.formula.Formula; import pcgen.core.Kit; import pcgen.core.PlayerCharacter; -import java.io.Serializable; -import java.util.List; - /** * <code>KitFunds</code>. * * @author Greg Bingleman <by...@ho...> * @version $Revision$ */ -public final class KitFunds extends BaseKit implements Serializable, Cloneable +public final class KitFunds extends BaseKit { - // Only change the UID when the serialized form of the class has also changed - private static final long serialVersionUID = 1; + private String name; + private Formula quantity; - private String name = ""; - private String qty = "1"; - // These members store the state of an instance of this class. They are // not cloned. private transient int theQty = 0; - /** - * Constructor - * @param fundsName - */ - public KitFunds(final String fundsName) - { - name = fundsName; - } - - /** - * Set the quantity - * @param argQty - */ - public void setQty(final String argQty) - { - qty = argQty; - } - - /** - * Get the quantity - * @return quantity - */ - public String getQty() - { - return qty; - } - @Override public String toString() { - return qty + ' ' + name; + return quantity.toString() + ' ' + name; } - public boolean testApply(Kit aKit, PlayerCharacter aPC, List<String> warnings) + @Override + public boolean testApply(Kit aKit, PlayerCharacter aPC, + List<String> warnings) { theQty = -1; - if (qty == null) + if (quantity == null) { return false; } - theQty = aPC.getVariableValue(getQty(), "").intValue(); + theQty = quantity.resolve(aPC, "").intValue(); return true; } + @Override public void apply(PlayerCharacter aPC) { aPC.adjustGold(theQty); } @Override - public KitFunds clone() + public String getObjectName() { - return (KitFunds) super.clone(); + return "Funds"; } - public String getObjectName() + public void setQuantity(Formula formula) { - return "Funds"; + quantity = formula; } + + public void setName(String value) + { + name = value; + } + + public String getName() + { + return name; + } + + public Formula getQuantity() + { + return quantity; + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java 2008-12-07 04:12:19 UTC (rev 8592) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java 2008-12-07 04:21:15 UTC (rev 8593) @@ -22,38 +22,53 @@ */ package pcgen.core.kit; -import pcgen.cdom.enumeration.ObjectKey; -import pcgen.core.*; -import pcgen.core.character.EquipSet; -import pcgen.util.Logging; - -import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; -import java.util.StringTokenizer; +import pcgen.base.formula.Formula; +import pcgen.base.util.NamedFormula; +import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.helper.EqModRef; +import pcgen.core.Equipment; +import pcgen.core.EquipmentModifier; +import pcgen.core.Globals; +import pcgen.core.Kit; +import pcgen.core.PlayerCharacter; +import pcgen.core.SettingsHandler; +import pcgen.core.SizeAdjustment; +import pcgen.core.character.EquipSet; + /** * <code>KitGear</code>. * * @author Greg Bingleman <by...@ho...> * @version $Revision$ */ -public final class KitGear extends BaseKit implements Serializable, Cloneable +public final class KitGear extends BaseKit { - // Only change the UID when the serialized form of the class has also changed - private static final long serialVersionUID = 1; - - private List<String> eqMods = null; - private String name = ""; - private int maxCost = 0; - private String qty = "1"; - private String size = null; + private Formula quantity; + private Integer maxCost; + private CDOMReference<Equipment> equip; + private List<EqModRef> mods; private String theLocationStr = null; + private Boolean sizeToPC; + private SizeAdjustment size; // These members store the state of an instance of this class. They are // not cloned. + private transient Formula actingQuantity; + private transient Integer actingCost; + private transient List<EqModRef> actingMods; + private transient String actingLocation; + private transient SizeAdjustment actingSize; + private transient Equipment theEquipment = null; private transient int theQty = 0; private transient String theLocation = ""; @@ -61,100 +76,6 @@ private transient BigDecimal theCost = BigDecimal.ZERO; /** - * Constructor - * @param gearName - */ - public KitGear(final String gearName) - { - name = gearName; - } - - /** - * Get the equipmentt modifiers for this gear - * @return The equipmentt modifiers for this gear - */ - public List<String> getEqMods() - { - return eqMods; - } - - /** - * Set the max cost - * @param argMaxCost - */ - public void setMaxCost(final String argMaxCost) - { - try - { - maxCost = Integer.parseInt(argMaxCost); - } - catch (NumberFormatException exc) - { - Logging.errorPrint("Invalid max cost \"" + argMaxCost - + "\" in KitGear.setMaxCost"); - } - } - - /** - * Get the max cost - * @return max cost - */ - public int getMaxCost() - { - return maxCost; - } - - /** - * Set the quantity - * @param argQty - */ - public void setQty(final String argQty) - { - qty = argQty; - } - - /** - * Get the quantity - * @return quantity - */ - public String getQty() - { - return qty; - } - - /** - * Add a equipment modifier - *... [truncated message content] |
From: <th...@us...> - 2008-12-07 04:22:16
|
Revision: 8594 http://pcgen.svn.sourceforge.net/pcgen/?rev=8594&view=rev Author: thpr Date: 2008-12-07 04:22:11 +0000 (Sun, 07 Dec 2008) Log Message: ----------- KIT token updates - deleted files Removed Paths: ------------- Trunk/pcgen/code/src/java/pcgen/core/kit/KitWrapper.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLstToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLstToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/AbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ClassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/DeityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/FundsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/GearToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/LevelAbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ProfToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/RollStatsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/SkillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/SpellsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/StartpackToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/TableToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/EquipSellToken.java Deleted: Trunk/pcgen/code/src/java/pcgen/core/kit/KitWrapper.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitWrapper.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitWrapper.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,71 +0,0 @@ -/* - * KitWrapper.java - * Copyright 2002 (C) Bryan McRoberts <mer...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on September 23, 2002, 8:55 PM - */ -package pcgen.core.kit; - -import pcgen.core.PObject; - -/** - * <code>KitWrapper</code>. - * - * @author Bryan McRoberts <mer...@ya...> - * @version $Revision$ - */ -public final class KitWrapper -{ - private Object obj = null; - private PObject aPObject = null; - - /** - * Constructor - * @param argObj - */ - public KitWrapper(final Object argObj) - { - obj = argObj; - } - - /** - * Get object - * @return object - */ - public Object getObject() - { - return obj; - } - - /** - * Set the PObject - * @param argPObject - */ - public void setPObject(final PObject argPObject) - { - aPObject = argPObject; - } - - /** - * Return the PObject - * @return PObject - */ - public PObject getPObject() - { - return aPObject; - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,64 +0,0 @@ -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; - -import pcgen.core.kit.BaseKit; -import pcgen.util.Logging; -import pcgen.persistence.lst.prereq.PreParserFactory; -import pcgen.core.prereq.Prerequisite; -import pcgen.persistence.PersistenceLayerException; - -/** - * Loads the Base Kit - */ -public class BaseKitLoader -{ - - /** - * Parse the common tags - * @param obj - * @param tag - * @return true if parse OK - * @throws PersistenceLayerException - */ - public static boolean parseCommonTags(BaseKit obj, final String tag, URI source) - throws PersistenceLayerException - { - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(BaseKitLstToken.class); - - // We will find the first ":" for the "controlling" line token - final int idxColon = tag.indexOf(':'); - String key = ""; - try - { - key = tag.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - BaseKitLstToken token = (BaseKitLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = tag.substring(idxColon + 1); - LstUtils.deprecationCheck(token, obj.toString(), source, value); - if (!token.parse(obj, value)) - { - Logging.errorPrint("Error parsing Kit tag " + obj.toString() - + ':' + tag + "\""); - } - } - else if (PreParserFactory.isPreReqString(key+':')) - { - final PreParserFactory factory = PreParserFactory.getInstance(); - Prerequisite prereq = factory.parse(tag); - obj.addPrerequisite(prereq); - return true; - } - - return true; - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/BaseKitLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,20 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.BaseKit; - -/** - * Interface for BaseKit Lst token - * @author martinv - */ -public interface BaseKitLstToken extends LstToken -{ - - /** - * Parse the Base Kit Token - * @param baseKit - * @param value - * @return true if parse OK - */ - public abstract boolean parse(BaseKit baseKit, String value); - -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,83 +0,0 @@ -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitAbilities; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Deals with loading Abilities for Kits - */ -public class KitAbilityLoader -{ - /** - * Parse the line - * - * @param kit - * @param colString - * @param isFeat - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, boolean isFeat, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - KitAbilities kitAbility = null; - String ability = colToken.nextToken(); - if (isFeat) - { - kitAbility = new KitAbilities(ability, "FEAT", true); - } - else - { - kitAbility = new KitAbilities(ability, "", false); - } - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitAbilityLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitAbilityLstToken token = (KitAbilityLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitAbility, value)) - { - Logging.errorPrint("Error parsing Kit Ability tag " - + kitAbility.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitAbility, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Ability info: \"" + colString - + "\""); - } - } - kit.addObject(kitAbility); - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitAbilityLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,19 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitAbilities; - -/** - * Interface for Kit Ability LST tokens - */ -public interface KitAbilityLstToken extends LstToken -{ - - /** - * Parse the token - * @param kitAbility - * @param value - * @return true if parse OK - */ - public abstract boolean parse(KitAbilities kitAbility, String value); - -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,100 +0,0 @@ -/* - * KitClassLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitClass; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Deals with loading classes for kits - */ -public class KitClassLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - KitClass kitClass = null; - String className = colToken.nextToken(); - kitClass = new KitClass(className); - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitClassLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitClassLstToken token = (KitClassLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitClass, value)) - { - Logging.errorPrint("Error parsing Kit Ability tag " - + kitClass.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitClass, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Class info: \"" + colString - + "\""); - } - } - kit.addObject(kitClass); - } - -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitClassLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitClass; - -/** - * Interface for dealing with different types of Kit CLASS tokens - */ -public interface KitClassLstToken extends LstToken -{ - /** - * Parse the token - * @param kitClass - * @param value - * @return true if OK - */ - public abstract boolean parse(KitClass kitClass, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,100 +0,0 @@ -/* - * KitDeityLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitDeity; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Deals with loading DEITY for KIT - */ -public class KitDeityLoader -{ - /** - * parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - KitDeity kitDeity = null; - String deityName = colToken.nextToken(); - kitDeity = new KitDeity(deityName); - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitDeityLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitDeityLstToken token = (KitDeityLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitDeity, value)) - { - Logging.errorPrint("Error parsing Kit Ability tag " - + kitDeity.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitDeity, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Class info: \"" + colString - + "\""); - } - } - kit.addObject(kitDeity); - } - -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitDeityLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitDeity; - -/** - * Interface for dealing with KIT DEITY tokens - */ -public interface KitDeityLstToken extends LstToken -{ - /** - * Parse - * @param kitDeity - * @param value - * @return true if OK - */ - public abstract boolean parse(KitDeity kitDeity, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,102 +0,0 @@ -/* - * KitFundsLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitFunds; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Handles the parsing of a Kit line starting with FUNDS - * - * @author Aaron Divinsky <boo...@ya...> - * - */ -public class KitFundsLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - KitFunds kitFunds = new KitFunds(colToken.nextToken()); - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitFundsLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitFundsLstToken token = (KitFundsLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitFunds, value)) - { - Logging.errorPrint("Error parsing Kit Funds tag " - + kitFunds.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitFunds, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Funds info: \"" + colString - + "\""); - } - } - kit.addObject(kitFunds); - } - -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitFundsLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitFunds; - -/** - * Interface for the KitFunds Lst Token - */ -public interface KitFundsLstToken extends LstToken -{ - /** - * Parse - * @param kitFunds - * @param value - * @return true if OK - */ - public abstract boolean parse(KitFunds kitFunds, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,99 +0,0 @@ -/* - * KitGearLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitGear; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Loads the Kit Gear - */ -public class KitGearLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - KitGear kitGear = new KitGear(colToken.nextToken()); - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitGearLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitGearLstToken token = (KitGearLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitGear, value)) - { - Logging.errorPrint("Error parsing Kit Funds tag " - + kitGear.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitGear, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Gear info: \"" + colString - + "\""); - } - - } - kit.addObject(kitGear); - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitGearLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitGear; - -/** - * Interface to deal with Kit Gear LST Tokens - */ -public interface KitGearLstToken extends LstToken -{ - /** - * parse - * @param kitGear - * @param value - * @return true if OK - */ - public abstract boolean parse(KitGear kitGear, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,119 +0,0 @@ -/* - * KitLevelAbilityLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitLevelAbility; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Loads abilities for levels added by a Kit - */ -public class KitLevelAbilityLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - KitLevelAbility kitLA = new KitLevelAbility(); - - colString = colToken.nextToken(); - String classInfo = colString; - int levelInd = classInfo.indexOf("="); - if (levelInd < 0) - { - throw new PersistenceLayerException( - "Invalid level in KitLevelAbility info \"" + colString + "\""); - } - kitLA.setClass(classInfo.substring(0, levelInd)); - try - { - kitLA.setLevel(Integer.parseInt(classInfo.substring(levelInd + 1))); - } - catch (NumberFormatException e) - { - throw new PersistenceLayerException( - "Invalid level in KitLevelAbility info \"" + colString + "\""); - } - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitLevelAbilityLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - // TODO Handle Exception - } - KitLevelAbilityLstToken token = - (KitLevelAbilityLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitLA, value)) - { - Logging.errorPrint("Error parsing Kit Level Ability tag " - + kitLA.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitLA, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Level Ability info: \"" - + colString + "\""); - } - - } - kit.setDoLevelAbilities(false); - kit.addObject(kitLA); - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitLevelAbilityLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitLevelAbility; - -/** - * Interface to deal with Kit Level Ability Lst Tokens - */ -public interface KitLevelAbilityLstToken extends LstToken -{ - /** - * parse - * @param kitLA - * @param value - * @return true if OK - */ - public abstract boolean parse(KitLevelAbility kitLA, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,99 +0,0 @@ -/* - * KitProfLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitProf; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Deals with loading proficiencies for Kits - */ -public class KitProfLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - KitProf kitProf = new KitProf(colToken.nextToken()); - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitProfLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitProfLstToken token = (KitProfLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitProf, value)) - { - Logging.errorPrint("Error parsing Kit Prof tag " - + kitProf.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitProf, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Prof info: \"" + colString - + "\""); - } - - } - kit.addObject(kitProf); - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitProfLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitProf; - -/** - * Interface for dealing with Kit Proficiency tokens - */ -public interface KitProfLstToken extends LstToken -{ - /** - * Parse the token - * @param kitProf - * @param value - * @return true if OK - */ - public abstract boolean parse(KitProf kitProf, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,99 +0,0 @@ -/* - * KitSkillLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.core.kit.KitSkill; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Deals with loading skills via kit - */ -public class KitSkillLoader -{ - /** - * Parse line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - KitSkill kitSkill = new KitSkill(colToken.nextToken()); - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitSkillLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitSkillLstToken token = (KitSkillLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitSkill, value)) - { - Logging.errorPrint("Error parsing Kit Skill tag " - + kitSkill.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitSkill, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Skill info: \"" + colString - + "\""); - } - - } - kit.addObject(kitSkill); - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSkillLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitSkill; - -/** - * Interface to deal with Kit Skill LST Tokens - */ -public interface KitSkillLstToken extends LstToken -{ - /** - * Parse - * @param kitSkill - * @param value - * @return true if OK - */ - public abstract boolean parse(KitSkill kitSkill, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,135 +0,0 @@ -/* - * KitSpellsLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.ArrayList; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Globals; -import pcgen.core.Kit; -import pcgen.core.kit.KitSpells; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Deals with loading Kit Spells - */ -public class KitSpellsLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - final KitSpells kitSpells = new KitSpells(); - colString = colToken.nextToken(); - final StringTokenizer aTok = new StringTokenizer(colString, "|"); - - String spellbook = Globals.getDefaultSpellBook(); - String castingClass = null; - while (aTok.hasMoreTokens()) - { - String field = aTok.nextToken(); - if (field.startsWith("SPELLBOOK=")) - { - spellbook = field.substring(10); - } - else if (field.startsWith("CLASS=")) - { - castingClass = field.substring(6); - } - else - { - String countStr = null; - if (field.indexOf("=") != -1) - { - countStr = field.substring(field.indexOf("=") + 1); - field = field.substring(0, field.indexOf("=")); - } - final StringTokenizer subTok = new StringTokenizer(field, "[]"); - final String spell = subTok.nextToken(); - ArrayList<String> featList = new ArrayList<String>(); - while (subTok.hasMoreTokens()) - { - featList.add(subTok.nextToken()); - } - kitSpells.addSpell(castingClass, spellbook, spell, featList, - countStr); - } - } - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitSpellsLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitSpellsLstToken token = (KitSpellsLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kitSpells, value)) - { - Logging.errorPrint("Error parsing Kit Spells tag " - + kitSpells.getObjectName() + ':' + colString + "\""); - } - } - else if (BaseKitLoader.parseCommonTags(kitSpells, colString, source)) - { - continue; - } - else - { - Logging.errorPrint("Unknown Kit Spells info: \"" + colString - + "\""); - } - - } - kit.addObject(kitSpells); - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitSpellsLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,16 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.kit.KitSpells; - -/** - * Interface to deal with Kit Spells LST token - */ -public interface KitSpellsLstToken extends LstToken -{ - /** - * @param kitSpells - * @param value - * @return true if OK - */ - public abstract boolean parse(KitSpells kitSpells, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,102 +0,0 @@ -/* - * KitStartpackLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.net.URI; -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.rules.context.LoadContext; -import pcgen.util.Logging; - -/** - * Deals with loading start packs for kits - */ -public class KitStartpackLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(LoadContext context, Kit kit, String colString, URI source) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - kit.setName(colToken.nextToken()); - context.ref.importObject(kit); - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitStartpackLstToken.class); - while (colToken.hasMoreTokens()) - { - final String token = colToken.nextToken().trim(); - final int colonLoc = token.indexOf(':'); - if (colonLoc == -1) - { - Logging.errorPrint("Invalid Token - does not contain a colon: " - + token); - continue; - } - else if (colonLoc == 0) - { - Logging.errorPrint("Invalid Token - starts with a colon: " - + token); - continue; - } - - String key = token.substring(0, colonLoc); - String value = (colonLoc == token.length() - 1) ? null : token - .substring(colonLoc + 1); - if (context.processToken(kit, key, value)) - { - context.commit(); - } - else if (tokenMap.containsKey(key)) - { - KitStartpackLstToken tok = (KitStartpackLstToken) tokenMap - .get(key); - LstUtils.deprecationCheck(tok, kit, value); - if (!tok.parse(kit, value)) - { - Logging.errorPrint("Error parsing Kit:" - + kit.getDisplayName() + " token " + token - + " from " + source.toString()); - } - } - else if (!PObjectLoader.parseTag(kit, token)) - { - Logging.replayParsedMessages(); - } - Logging.clearParseMessages(); - } - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitStartpackLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,17 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.Kit; - -/** - * Interface to deal with Kit Startpack LST tokens - */ -public interface KitStartpackLstToken extends LstToken -{ - /** - * Parse token - * @param kit - * @param value - * @return true if OK - */ - public abstract boolean parse(Kit kit, String value); -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLoader.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLoader.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,92 +0,0 @@ -/* - * KitTableLoader.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 6, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package pcgen.persistence.lst; - -import java.util.Map; -import java.util.StringTokenizer; - -import pcgen.core.Kit; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.SystemLoader; -import pcgen.util.Logging; - -/** - * Kit table loader - */ -public class KitTableLoader -{ - /** - * Parse the line - * @param kit - * @param colString - * @throws PersistenceLayerException - */ - public static void parseLine(Kit kit, String colString) - throws PersistenceLayerException - { - final StringTokenizer colToken = - new StringTokenizer(colString, SystemLoader.TAB_DELIM); - - String tableName = colToken.nextToken(); - kit.addLookupTable(tableName); - - Map<String, LstToken> tokenMap = - TokenStore.inst().getTokenMap(KitTableLstToken.class); - while (colToken.hasMoreTokens()) - { - colString = colToken.nextToken(); - - // We will find the first ":" for the "controlling" line token - final int idxColon = colString.indexOf(':'); - String key = ""; - try - { - key = colString.substring(0, idxColon); - } - catch (StringIndexOutOfBoundsException e) - { - throw new PersistenceLayerException(); - } - KitTableLstToken token = (KitTableLstToken) tokenMap.get(key); - - if (token != null) - { - final String value = colString.substring(idxColon + 1); - LstUtils.deprecationCheck(token, kit, value); - if (!token.parse(kit, tableName, value)) - { - Logging.errorPrint("Error parsing Kit Table tag " - + kit.getDisplayName() + ':' + colString + "\""); - } - } - else - { - Logging.errorPrint("Unknown Kit Table info: \"" + colString - + "\""); - } - } - } -} Deleted: Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLstToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/KitTableLstToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,18 +0,0 @@ -package pcgen.persistence.lst; - -import pcgen.core.Kit; - -/** - * Interface to deal with Kit Table LST tokens - */ -public interface KitTableLstToken extends LstToken -{ - /** - * parse token - * @param kit - * @param tableName - * @param value - * @return true if OK - */ - public abstract boolean parse(Kit kit, final String tableName, String value); -} Deleted: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/AbilityToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/AbilityToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/AbilityToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,72 +0,0 @@ -/* - * AbilityToken.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 3, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package plugin.lsttokens.kit; - -import java.net.URI; - -import pcgen.core.Kit; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.lst.KitAbilityLoader; -import pcgen.persistence.lst.KitLstToken; - -/** - * Handles the ABILITY tag for Kits. - */ -public class AbilityToken extends KitLstToken -{ - /** - * Gets the name of the tag this class will parse. - * - * @return Name of the tag this class handles - */ - public String getTokenName() - { - return "ABILITY"; - } - - /** - * Handles parsing the ABILITY tag for this Kit line. - * - * @param aKit - * the Kit object to add this information to - * @param value - * the token string - * @return true if parse OK - */ - @Override - public boolean parse(Kit aKit, String value, URI source) - { - try - { - KitAbilityLoader.parseLine(aKit, value, false, source); - } - catch (PersistenceLayerException pe) - { - return false; - } - return true; - } -} Deleted: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ClassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ClassToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ClassToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,72 +0,0 @@ -/* - * ClassToken.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 3, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package plugin.lsttokens.kit; - -import java.net.URI; - -import pcgen.core.Kit; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.lst.KitClassLoader; -import pcgen.persistence.lst.KitLstToken; - -/** - * Handles the CLASS, LEVEL, and SUBCLASS tags for a Kit. - */ -public class ClassToken extends KitLstToken -{ - /** - * Gets the name of the tag this class will parse. - * - * @return Name of the tag this class handles - */ - public String getTokenName() - { - return "CLASS"; - } - - /** - * Handles parsing the CLASS, LEVEL, and SUBCLASS tags for a Kit. - * - * @param aKit - * the Kit object to add this information to - * @param value - * the token string - * @return true if parse OK - */ - @Override - public boolean parse(Kit aKit, String value, URI source) - { - try - { - KitClassLoader.parseLine(aKit, value, source); - } - catch (PersistenceLayerException pe) - { - return false; - } - return true; - } -} Deleted: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/DeityToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/DeityToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/DeityToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,72 +0,0 @@ -/* - * DeityToken.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 3, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package plugin.lsttokens.kit; - -import java.net.URI; - -import pcgen.core.Kit; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.lst.KitDeityLoader; -import pcgen.persistence.lst.KitLstToken; - -/** - * Handles the DEITY, DOMAIN, and COUNT tags for a Kit. - */ -public class DeityToken extends KitLstToken -{ - /** - * Gets the name of the tag this class will parse. - * - * @return Name of the tag this class handles - */ - public String getTokenName() - { - return "DEITY"; - } - - /** - * Handles parsing the DEITY, DOMAIN, and COUNT tags for a Kit. - * - * @param aKit - * the Kit object to add this information to - * @param value - * the token string - * @return true if parse OK - */ - @Override - public boolean parse(Kit aKit, String value, URI source) - { - try - { - KitDeityLoader.parseLine(aKit, value, source); - } - catch (PersistenceLayerException pe) - { - return false; - } - return true; - } -} Deleted: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/FeatToken.java 2008-12-07 04:21:15 UTC (rev 8593) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/FeatToken.java 2008-12-07 04:22:11 UTC (rev 8594) @@ -1,72 +0,0 @@ -/* - * FeatToken.java - * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on March 3, 2006 - * - * Current Ver: $Revision$ - * Last Editor: $Author$ - * Last Edited: $Date$ - */ - -package plugin.lsttokens.kit; - -import java.net.URI; - -import pcgen.core.Kit; -import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.lst.KitAbilityLoader; -import pcgen.persistence.lst.KitLstToken; - -/** - * Handles the FEAT and FREE tags... [truncated message content] |
From: <jde...@us...> - 2008-12-22 01:43:30
|
Revision: 8648 http://pcgen.svn.sourceforge.net/pcgen/?rev=8648&view=rev Author: jdempsey Date: 2008-12-22 01:38:29 +0000 (Mon, 22 Dec 2008) Log Message: ----------- Fix a few potential TYPE case sensitivity issues. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Type.java Trunk/pcgen/code/src/java/pcgen/core/Equipment.java Trunk/pcgen/code/src/java/pcgen/core/GameMode.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillMultTester.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillTester.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java 2008-12-22 01:33:17 UTC (rev 8647) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java 2008-12-22 01:38:29 UTC (rev 8648) @@ -79,7 +79,7 @@ /** What a character template file name starts with */ String s_CHARACTER_TEMPLATE_START = "csheet"; //$NON-NLS-1$ /** CUSTOM */ - String s_CUSTOM = "CUSTOM"; //$NON-NLS-1$ + String s_CUSTOM = "Custom"; //$NON-NLS-1$ /** Custom Equipment */ String s_CUSTOMSOURCE = "Custom Equipment"; //$NON-NLS-1$ /** Default */ Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Type.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Type.java 2008-12-22 01:33:17 UTC (rev 8647) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/Type.java 2008-12-22 01:38:29 UTC (rev 8648) @@ -107,7 +107,7 @@ /** * Converts this Constant to a String (returns the name of this Constant) * - * @return The string representatin (name) of this Constant + * @return The string representation (name) of this Constant */ @Override public String toString() @@ -124,6 +124,18 @@ } /** + * Converts this Constant to a String (returns the name of this Constant) + * that is suitable for backwards compatible comparison. The returned + * value will always be uppercase. + * + * @return The string representation (name) of this Constant + */ + public String getComparisonString() + { + return fieldName.toUpperCase(); + } + + /** * Returns the constant for the given String (the search for the constant is * case insensitive). If the constant does not already exist, a new Constant * is created with the given String as the name of the Constant. Modified: Trunk/pcgen/code/src/java/pcgen/core/Equipment.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Equipment.java 2008-12-22 01:33:17 UTC (rev 8647) +++ Trunk/pcgen/code/src/java/pcgen/core/Equipment.java 2008-12-22 01:38:29 UTC (rev 8648) @@ -4545,7 +4545,7 @@ { for (Type t : initializingList) { - calculatedTypeList.add(t.toString()); + calculatedTypeList.add(t.getComparisonString()); } } final Collection<String> modTypeList = new ArrayList<String>(); Modified: Trunk/pcgen/code/src/java/pcgen/core/GameMode.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2008-12-22 01:33:17 UTC (rev 8647) +++ Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2008-12-22 01:38:29 UTC (rev 8648) @@ -3414,7 +3414,17 @@ public boolean isTypeHidden(Class<?> cl, String type) { Set<String> set = hiddenTypes.get(cl); - return set != null && set.contains(type); + if (type != null && set != null) + { + for (String string : set) + { + if (type.equalsIgnoreCase(string)) + { + return true; + } + } + } + return false; } public int sizeIndex(SizeAdjustment sz) Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-12-22 01:33:17 UTC (rev 8647) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2008-12-22 01:38:29 UTC (rev 8648) @@ -12027,7 +12027,7 @@ // Add all weapons of type aString // (e.g.: Simple, Martial, Exotic, Ranged, etc.) - else if (context.containsType(WeaponProf.class, aString)) + else if (context.containsType(WeaponProf.class, Type.getConstant(aString).toString())) { for (WeaponProf weaponProf : Globals.getPObjectsOfType(context.ref .getConstructedCDOMObjects(WeaponProf.class), aString)) Modified: Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillMultTester.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillMultTester.java 2008-12-22 01:33:17 UTC (rev 8647) +++ Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillMultTester.java 2008-12-22 01:38:29 UTC (rev 8648) @@ -77,7 +77,7 @@ { for (Type type : aSkill.getTrueTypeList(false)) { - if (type.toString().startsWith( + if (type.toString().toUpperCase().startsWith( skillKey.substring(0, percentageSignPosition))) { foundMatch = true; Modified: Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillTester.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillTester.java 2008-12-22 01:33:17 UTC (rev 8647) +++ Trunk/pcgen/code/src/java/plugin/pretokens/test/PreSkillTester.java 2008-12-22 01:38:29 UTC (rev 8648) @@ -258,11 +258,13 @@ return foo; } /** + * Check if the skill's types match the supplied pattern. + * * Mar 6, 2008 - Joe.Frazier - * @param skillKey - * @param percentageSignPosition - * @param foundMatch - * @param aSkill + * @param skillKey Upper case key to be matched. + * @param percentageSignPosition Spot in the key which has the percentage sign + * @param found Has a match already been found? + * @param aSkill The skill to be checked. * @return */ private boolean matchesTypeWildCard(final String skillKey, @@ -270,7 +272,7 @@ { for (Type type : aSkill.getTrueTypeList(false)) { - if (type.toString().startsWith( + if (type.toString().toUpperCase().startsWith( skillKey.substring(0, percentageSignPosition))) { found = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-23 19:04:15
|
Revision: 8657 http://pcgen.svn.sourceforge.net/pcgen/?rev=8657&view=rev Author: thpr Date: 2008-12-23 19:04:10 +0000 (Tue, 23 Dec 2008) Log Message: ----------- ADD:SPELLCASTER not working fully - ID: 2439802 potentially only a partial fix? - need further test cases Issue#: 2439802 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java 2008-12-23 18:14:18 UTC (rev 8656) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java 2008-12-23 19:04:10 UTC (rev 8657) @@ -32,6 +32,8 @@ import pcgen.cdom.base.ChoiceSet; import pcgen.cdom.base.Constants; import pcgen.cdom.base.PrimitiveChoiceSet; +import pcgen.cdom.enumeration.StringKey; +import pcgen.cdom.reference.CDOMGroupRef; import pcgen.core.PCClass; import pcgen.core.PlayerCharacter; @@ -69,6 +71,10 @@ } }; + private final CDOMGroupRef<PCClass> allClasses; + + private final List<String> spelltypes; + /** * The underlying Set of CDOMReferences that contain the objects in this * ClassReferenceChoiceSet @@ -92,6 +98,8 @@ * of the Collection (after this constructor completes) does not result in * modifying the ClassReferenceChoiceSet, and the ClassReferenceChoiceSet * will not modify the given Collection. + * @param spelltypes + * @param allRef * * @param col * A Collection of CDOMReferences which define the Set of objects @@ -99,12 +107,15 @@ * @throws IllegalArgumentException * if the given Collection is null or empty. */ - public SpellCasterChoiceSet(PrimitiveChoiceSet<PCClass> col, - PrimitiveChoiceSet<PCClass> prim) + public SpellCasterChoiceSet(CDOMGroupRef<PCClass> allRef, + List<String> spelltype, PrimitiveChoiceSet<PCClass> col, + PrimitiveChoiceSet<PCClass> prim) { super("SPELLCASTER", col == null ? EMPTY_CHOICE_SET : col); pcset = col; primitives = prim; + spelltypes = new ArrayList<String>(spelltype); + allClasses = allRef; } /** @@ -119,6 +130,10 @@ { list.add(pcset.getLSTformat()); } + if (!spelltypes.isEmpty()) + { + list.addAll(spelltypes); + } if (primitives != null) { list.add(primitives.getLSTformat()); @@ -178,6 +193,23 @@ { returnSet.addAll(primitives.getSet(pc)); } + if (spelltypes != null) + { + for (PCClass pcc : allClasses.getContainedObjects()) + { + TYPE: for (String type : spelltypes) + { + if (type.equals(pcc.get(StringKey.SPELLTYPE))) + { + if (pc.getClassKeyed(pcc.getKeyName()) != null) + { + returnSet.add(pcc); + break TYPE; + } + } + } + } + } return returnSet; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-12-23 18:14:18 UTC (rev 8656) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-12-23 19:04:10 UTC (rev 8657) @@ -34,6 +34,7 @@ import pcgen.cdom.choiceset.ReferenceChoiceSet; import pcgen.cdom.choiceset.SpellCasterChoiceSet; import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.reference.CDOMGroupRef; import pcgen.core.Globals; import pcgen.core.PCClass; import pcgen.core.PlayerCharacter; @@ -110,24 +111,25 @@ List<CDOMReference<PCClass>> groups = new ArrayList<CDOMReference<PCClass>>(); List<CDOMReference<PCClass>> prims = new ArrayList<CDOMReference<PCClass>>(); + List<String> spelltypes = new ArrayList<String>(); + CDOMGroupRef<PCClass> allRef = context.ref.getCDOMAllReference(PCCLASS_CLASS); while (tok.hasMoreTokens()) { String token = tok.nextToken(); if (Constants.LST_ANY.equalsIgnoreCase(token)) { foundAny = true; - groups.add(context.ref.getCDOMAllReference(PCCLASS_CLASS)); + groups.add(allRef); } else { + foundOther = true; if (token.equals("Arcane") || token.equals("Divine") || token.equals("Psionic")) { - // TODO Need deprecation warning here - token = "TYPE=" + token; + spelltypes.add(token); } - foundOther = true; - if (token.startsWith(Constants.LST_TYPE_OLD) + else if (token.startsWith(Constants.LST_TYPE_OLD) || token.startsWith(Constants.LST_TYPE)) { CDOMReference<PCClass> ref = TokenUtilities @@ -163,12 +165,11 @@ : new ReferenceChoiceSet<PCClass>(groups); ReferenceChoiceSet<PCClass> prcs = prims.isEmpty() ? null : new ReferenceChoiceSet<PCClass>(prims); - ChoiceSet<PCClass> cs = new SpellCasterChoiceSet(grcs, prcs); + ChoiceSet<PCClass> cs = new SpellCasterChoiceSet(allRef, spelltypes, grcs, prcs); PersistentTransitionChoice<PCClass> tc = new PersistentTransitionChoice<PCClass>( cs, FormulaFactory.getFormulaFor(count)); tc.setTitle("Spell Caster Class Choice"); context.getObjectContext().addToList(obj, ListKey.ADD, tc); - tc.setTitle("Language Choice"); tc.setChoiceActor(this); return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-23 23:17:09
|
Revision: 8665 http://pcgen.svn.sourceforge.net/pcgen/?rev=8665&view=rev Author: thpr Date: 2008-12-23 22:51:34 +0000 (Tue, 23 Dec 2008) Log Message: ----------- convert HIDETYPE Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java Trunk/pcgen/code/src/java/pcgen/core/GameMode.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HidetypeToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-12-23 22:49:46 UTC (rev 8664) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2008-12-23 22:51:34 UTC (rev 8665) @@ -252,6 +252,11 @@ public static final ListKey<CDOMSingleRef<Race>> APPLIED_RACE = new ListKey<CDOMSingleRef<Race>>(); public static final ListKey<EqModRef> EQMOD_INFO = new ListKey<EqModRef>(); public static final ListKey<CampaignURL> CAMPAIGN_URL = new ListKey<CampaignURL>(); + + //These are case sensitive, please do not change them to upper case + public static final ListKey<String> HIDDEN_Equipment = new ListKey<String>(); + public static final ListKey<String> HIDDEN_Ability = new ListKey<String>(); + public static final ListKey<String> HIDDEN_Skill = new ListKey<String>(); private static CaseInsensitiveMap<ListKey<?>> map = null; Modified: Trunk/pcgen/code/src/java/pcgen/core/GameMode.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2008-12-23 22:49:46 UTC (rev 8664) +++ Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2008-12-23 22:51:34 UTC (rev 8665) @@ -3419,7 +3419,7 @@ //Can do this because it's TreeSet/Case Insensitive return set.contains(type); } - return false; + return context.isTypeHidden(cl, type); } public int sizeIndex(SizeAdjustment sz) Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2008-12-23 22:49:46 UTC (rev 8664) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2008-12-23 22:51:34 UTC (rev 8665) @@ -572,6 +572,7 @@ sourcesSet.add(SourceFormat.getFormattedString(campaign, SourceFormat.MEDIUM, true)); } + context.setLoaded(aSelectedCampaignsList); // Show the licenses showLicensesIfNeeded(); Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2008-12-23 22:49:46 UTC (rev 8664) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2008-12-23 22:51:34 UTC (rev 8665) @@ -18,13 +18,16 @@ package pcgen.rules.context; import java.net.URI; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; import pcgen.cdom.base.CDOMObject; +import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.Type; import pcgen.cdom.inst.ObjectCache; import pcgen.cdom.reference.ReferenceManufacturer; @@ -42,11 +45,15 @@ public abstract class LoadContext { + private static final Class<String> STRING_CLASS = String.class; + public final ListContext list; public final ObjectContext obj; public final AbstractReferenceContext ref; + + private List<Campaign> campaignList = new ArrayList<Campaign>(); public LoadContext(AbstractReferenceContext rc, ListContext lc, ObjectContext oc) { @@ -352,4 +359,30 @@ stateful.overlayCDOMObject(target); } } + + public void setLoaded(List<Campaign> selectedCampaignsList) + { + campaignList.clear(); + campaignList.addAll(selectedCampaignsList); + } + + public boolean isTypeHidden(Class<?> cl, String type) + { + for (Campaign c : campaignList) + { + List<String> hiddentypes = c.getListFor(ListKey.getKeyFor( + STRING_CLASS, "HIDDEN_" + cl.getSimpleName())); + if (hiddentypes != null) + { + for (String s : hiddentypes) + { + if (s.equalsIgnoreCase(type)) + { + return true; + } + } + } + } + return false; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HidetypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HidetypeToken.java 2008-12-23 22:49:46 UTC (rev 8664) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/HidetypeToken.java 2008-12-23 22:51:34 UTC (rev 8665) @@ -1,71 +1,125 @@ +/* + * Copyright 2008 (C) Thomas Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ package plugin.lsttokens.campaign; -import java.net.URI; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import java.util.StringTokenizer; +import pcgen.base.lang.StringUtil; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.ListKey; -import pcgen.core.Ability; import pcgen.core.Campaign; -import pcgen.core.Equipment; -import pcgen.core.GameMode; -import pcgen.core.Skill; -import pcgen.core.SystemCollections; -import pcgen.persistence.lst.CampaignLstToken; +import pcgen.persistence.PersistenceLayerException; +import pcgen.rules.context.Changes; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; import pcgen.util.Logging; /** * Class deals with HIDETYPE Token */ -public class HidetypeToken implements CampaignLstToken +public class HidetypeToken extends AbstractToken implements + CDOMPrimaryToken<Campaign> { + @Override public String getTokenName() { return "HIDETYPE"; } - public boolean parse(Campaign campaign, String value, URI sourceUri) + public boolean parse(LoadContext context, Campaign obj, String value) + throws PersistenceLayerException { - for (String gmName : campaign.getSafeListFor(ListKey.GAME_MODE)) + if (isEmpty(value) || hasIllegalSeparator('|', value)) { - GameMode gm = SystemCollections.getGameModeNamed(gmName); - if (gm == null) - { - Logging.log(Logging.LST_ERROR, "Unknown game mode '" + gmName - + "' in campaign: " + campaign.getDisplayName()); - continue; - } - - Class<?> cl = null; - String types = null; - if (value.startsWith("EQUIP|")) - { - cl = Equipment.class; - types = value.substring(6); - } - else if (value.startsWith("FEAT|")) - { - cl = Ability.class; - types = value.substring(5); - } - else if (value.startsWith("SKILL|")) - { - cl = Skill.class; - types = value.substring(6); - } - if (cl == null) - { - Logging.log(Logging.LST_ERROR, getTokenName () + " did not understand: " + value + " in " - + sourceUri.toString()); - return false; - } - StringTokenizer st = new StringTokenizer(types, Constants.PIPE); - while (st.hasMoreTokens()) - { - gm.addHiddenType(cl, st.nextToken()); - } + return false; } + ListKey<String> lk = null; + String types = null; + if (value.startsWith("EQUIP|")) + { + lk = ListKey.HIDDEN_Equipment; + types = value.substring(6); + } + else if (value.startsWith("FEAT|")) + { + lk = ListKey.HIDDEN_Ability; + types = value.substring(5); + } + else if (value.startsWith("SKILL|")) + { + lk = ListKey.HIDDEN_Skill; + types = value.substring(6); + } + if (lk == null) + { + Logging.log(Logging.LST_ERROR, getTokenName() + + " did not understand: " + value + " in " + + obj.getKeyName()); + return false; + } + StringTokenizer st = new StringTokenizer(types, Constants.PIPE); + while (st.hasMoreTokens()) + { + context.obj.addToList(obj, lk, st.nextToken()); + } return true; } + + public String[] unparse(LoadContext context, Campaign obj) + { + List<String> returnList = new ArrayList<String>(); + Changes<String> ech = context.obj.getListChanges(obj, + ListKey.HIDDEN_Equipment); + Changes<String> ach = context.obj.getListChanges(obj, + ListKey.HIDDEN_Ability); + Changes<String> sch = context.obj.getListChanges(obj, + ListKey.HIDDEN_Skill); + + Collection<String> added = ech.getAdded(); + if (added != null) + { + returnList.add("EQUIP|" + StringUtil.join(added, Constants.PIPE)); + } + added = ach.getAdded(); + if (added != null) + { + returnList.add("FEAT|" + StringUtil.join(added, Constants.PIPE)); + } + added = sch.getAdded(); + if (added != null) + { + returnList.add("SKILL|" + StringUtil.join(added, Constants.PIPE)); + } + if (returnList.isEmpty()) + { + // Empty is okay - no token + return null; + } + return returnList.toArray(new String[returnList.size()]); + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cpm...@us...> - 2008-12-25 08:01:06
|
Revision: 8680 http://pcgen.svn.sourceforge.net/pcgen/?rev=8680&view=rev Author: cpmeister Date: 2008-12-25 08:00:58 +0000 (Thu, 25 Dec 2008) Log Message: ----------- RollingMethods overhaul that negates the need for djep and DiceExpressions.jj. All dice expressions are now preparsed through RollingMethods and evaluated with JEP. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/RollingMethods.java Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractBasicChoiceManager.java Trunk/pcgen/code/src/java/plugin/dicebag/gui/DiceBagModel.java Trunk/pcgen/code/src/java/plugin/initiative/OpposedSkillModel.java Trunk/pcgen/code/src/java/plugin/initiative/gui/AttackDialog.java Trunk/pcgen/code/src/java/plugin/initiative/gui/DiceRollDialog.java Modified: Trunk/pcgen/code/src/java/pcgen/core/RollingMethods.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/RollingMethods.java 2008-12-24 08:23:43 UTC (rev 8679) +++ Trunk/pcgen/code/src/java/pcgen/core/RollingMethods.java 2008-12-25 08:00:58 UTC (rev 8680) @@ -23,11 +23,14 @@ */ package pcgen.core; -import pcgen.util.DiceExpression; import pcgen.util.Logging; -import pcgen.util.ParseException; import java.util.Arrays; +import java.util.Stack; +import java.util.Vector; +import org.nfunk.jep.*; +import org.nfunk.jep.function.List; +import org.nfunk.jep.function.PostfixMathCommand; /** * <code>RollingMethods</code>. @@ -38,207 +41,524 @@ */ public final class RollingMethods { - /** - * Roll <var>times</var> number of dice with <var>sides</var> - * shape. - * - * @param times int how many dice to roll? - * @param sides int what shape dice? - * - * @return int dice total - */ - public static int roll(final int times, final int sides) - { - return roll(times, sides, times, 0, 0); - } - /** - * One random number between 1 and <var>sides</var>, good, for - * example, for rolling percentage dice. - * - * @param sides int what shape die? - * - * @return int die roll - */ - public static int roll(final int sides) - { - return Globals.getRandomInt(sides) + 1; - } + /** + * Roll <var>times</var> number of dice with <var>sides</var> + * shape. + * + * @param times int how many dice to roll? + * @param sides int what shape dice? + * + * @return int dice total + */ + public static int roll(final int times, final int sides) + { + return roll(times, sides, times, 0, 0); + } - /** - * Roll <var>times</var> dice with <var>sides</var> shape, - * sort them, and return the sum of only those listed in - * <var>keep</var> (0-indexed). - * - * @param times int how many dice to roll? - * @param sides int what shape dice? - * @param keep int[] which dice to keep (0-indexed)? - * - * @return int dice total - */ - public static int roll(int times, final int sides, final int[] keep) - { - // return roll (times, sides, keep, 0, 0); - final int[] rolls = new int[times]; + /** + * One random number between 1 and <var>sides</var>, good, for + * example, for rolling percentage dice. + * + * @param sides int what shape die? + * + * @return int die roll + */ + public static int roll(final int sides) + { + return Globals.getRandomInt(sides) + 1; + } - while (--times >= 0) - { - rolls[times] = Globals.getRandomInt(sides); - } + /** + * Roll <var>times</var> dice with <var>sides</var> shape, + * sort them, and return the sum of only those listed in + * <var>keep</var> (0-indexed). + * + * @param times int how many dice to roll? + * @param sides int what shape dice? + * @param keep int[] which dice to keep (0-indexed)? + * + * @return int dice total + */ + public static int roll(int times, final int sides, final int[] keep) + { + // return roll (times, sides, keep, 0, 0); + final int[] rolls = new int[times]; - java.util.Arrays.sort(rolls); + while (--times >= 0) + { + rolls[times] = Globals.getRandomInt(sides); + } - int total = keep.length; // keep the +1 at the end + java.util.Arrays.sort(rolls); - for (int i = 0; i < keep.length; ++i) - { - total += rolls[keep[i]]; // 0-indexed - } + int total = keep.length; // keep the +1 at the end - return total; - } + for (int i = 0; i < keep.length; ++i) + { + total += rolls[keep[i]]; // 0-indexed + } - /** - * Roll <var>times</var> bizarre dice. - * - * @param times int how many dice to roll? - * @param shape int[] array of values of sides of die - * - * @return what the die says - */ - public static int roll(int times, final int[] shape) - { - int total = 0; + return total; + } - while (--times >= 0) - { - total += shape[Globals.getRandomInt(shape.length)]; - } + /** + * Roll <var>times</var> bizarre dice. + * + * @param times int how many dice to roll? + * @param shape int[] array of values of sides of die + * + * @return what the die says + */ + public static int roll(int times, final int[] shape) + { + int total = 0; - return total; - } + while (--times >= 0) + { + total += shape[Globals.getRandomInt(shape.length)]; + } - /** - * Roll <var>times</var> bizarre dice, keeping - * <var>keep</keep> of them in ascending order. - * - * @param times int how many dice to roll? - * @param shape int[] array of values of sides of die - * @param keep int[] which dice to keep - * - * @return what the die says - */ - public static int roll(int times, final int[] shape, final int[] keep) - { - final int[] rolls = new int[times]; + return total; + } - while (--times >= 0) - { - rolls[times] = shape[Globals.getRandomInt(shape.length)]; - } + /** + * Roll <var>times</var> bizarre dice, keeping + * <var>keep</keep> of them in ascending order. + * + * @param times int how many dice to roll? + * @param shape int[] array of values of sides of die + * @param keep int[] which dice to keep + * + * @return what the die says + */ + public static int roll(int times, final int[] shape, final int[] keep) + { + final int[] rolls = new int[times]; - Arrays.sort(rolls); + while (--times >= 0) + { + rolls[times] = shape[Globals.getRandomInt(shape.length)]; + } - int total = 0; + Arrays.sort(rolls); - for (int i = 0; i < keep.length; ++i) - { - total += rolls[keep[i]]; // 0-indexed - } + int total = 0; - return total; - } + for (int i = 0; i < keep.length; ++i) + { + total += rolls[keep[i]]; // 0-indexed + } - /** - * Takes many forms including "2d6-2" and returns the result - * Whitespace is ignored; case insensitive; Most simple math - * operations (including exponentiation) are supported - * Functions builtin include max, min, roll - * Add new functions to DiceExpressionFunctions - * - * @see pcgen.util.DiceExpression - * - * @param method String formatted string representing dice roll - * - * @return int dice total - */ - public static int roll(final String method) - { - int r = 0; + return total; + } - if (method.length() <= 0) - { - return r; - } + private static int getLeftIndex(StringBuilder expression, int startIndex) + { + int parenth = 0; + char c; + do + { + startIndex--; + if (startIndex >= 0) + { + c = expression.charAt(startIndex); + } + else + { + break; + } + if (c == ')') + { + parenth++; + } + else if (c == '(') + { + parenth--; + } + } while (parenth > 0 || c == 'd' || c == '*' || c == '/' || c == ' ' || + Character.isDigit(c)); + return startIndex + 1; + } - final DiceExpression parser = new DiceExpression(method); + private static int getRightIndex(StringBuilder expression, int startIndex) + { + int parenth = 0; + char c; + do + { + startIndex++; + if (startIndex < expression.length()) + { + c = expression.charAt(startIndex); + } + else + { + break; + } + if (c == '(') + { + parenth++; + } + else if (c == ')') + { + parenth--; + } + } while (parenth > 0 || c == '*' || c == '/' || c == ' ' || + Character.isDigit(c)); + return startIndex; + } - try - { - r = parser.rollDice(); + /** + * Takes many forms including "2d6-2" and returns the result + * Whitespace is ignored; case insensitive; Most simple math + * operations (including exponentiation) are supported + * Functions builtin include max, min, roll + * Add new functions to DiceExpressionFunctions + * + * @see pcgen.util.DiceExpression + * + * @param method String formatted string representing dice roll + * + * @return int dice total + */ + public static int roll(final String method) + { + int r = 0; - if (r == DiceExpression.BAD_VALUE) - { - r = 0; - } - } - catch (ParseException ex) - { - Logging.errorPrint("Bad dice: " + method + ": " + ex); - } + if (method.length() <= 0) + { + return r; + } + StringBuilder expression = new StringBuilder(method.replaceAll("d%", + "1d100")); + int index = expression.lastIndexOf("d"); + while (index != -1) + { + expression.insert(getRightIndex(expression, index), ')'); + expression.setCharAt(index, ','); + expression.insert(getLeftIndex(expression, index), "roll("); + index = expression.lastIndexOf("d", index + 4); + } + String exp = expression.toString(); + exp = exp.replaceAll("\\[", "list(").replaceAll("\\]", ")"); + JEP jep = new JEP(); + jep.addStandardFunctions(); + jep.addFunction("roll", new Roll()); + jep.addFunction("top", new Top()); + jep.addFunction("reroll", new Reroll()); + jep.addFunction("list", new List()); + jep.parseExpression(exp); + if (!jep.hasError()) + { + r = (int) jep.getValue(); + } + else + { + Logging.errorPrint("Bad dice: " + expression + ":" + + jep.getErrorInfo()); + } + return r; + } - return r; - } + /** + * Roll {<code>times</code>} 1d{<code>sides</code>}, reroll any result <= {<code>reroll</code>}. + * Add together the highest {<code>numToKeep</code>} dice then add {<code>modifier</code>} + * and return the result. + * + * @param times + * @param sides + * @param numToKeep + * @param reroll + * @param modifier + * @return the result of the die roll + */ + private static int roll( + final int times, + final int sides, + final int numToKeep, + final int reroll, + final int modifier) + { + final int[] dieRoll = new int[times]; + int total = 0; + final int keep = (numToKeep > times) ? times : numToKeep; - /** - * Roll {<code>times</code>} 1d{<code>sides</code>}, reroll any result <= {<code>reroll</code>}. - * Add together the highest {<code>numToKeep</code>} dice then add {<code>modifier</code>} - * and return the result. - * - * @param times - * @param sides - * @param numToKeep - * @param reroll - * @param modifier - * @return the result of the die roll - */ - private static int roll( - final int times, - final int sides, - final int numToKeep, - final int reroll, - final int modifier) - { - final int[] dieRoll = new int[times]; - int total = 0; - final int keep = (numToKeep > times) ? times : numToKeep; + for (int i = 0; i < times; ++i) + { + dieRoll[i] = roll(sides - reroll) + reroll; + } - for (int i = 0; i < times; ++i) - { - dieRoll[i] = roll(sides - reroll) + reroll; - } + Arrays.sort(dieRoll); - Arrays.sort(dieRoll); + if (Logging.isDebugMode()) + { + final StringBuffer rollString = new StringBuffer(times << 2); + rollString.append(dieRoll[0]); - if (Logging.isDebugMode()) - { - final StringBuffer rollString = new StringBuffer(times << 2); - rollString.append(dieRoll[0]); + if (times > 1) + { + for (int i = 1; i < times; ++i) + { + rollString.append(" + ").append(dieRoll[i]); + } + } + Logging.debugPrint(rollString.toString()); + } - if (times > 1) - { - for (int i = 1; i < times; ++i) - { - rollString.append(" + ").append(dieRoll[i]); - } - } - Logging.debugPrint(rollString.toString()); - } + // Now add together the highest "keep" dice - // Now add together the highest "keep" dice + for (int j = times - keep; j < times; j++) + { + total += dieRoll[j]; + } - for (int j = times - keep; j < times; j++) {total += dieRoll[j];} + return total + modifier; + } - return total + modifier; - } + /** + * @author RossLodge + * + * <p>This class forms the basis for the dJEP extensions to the JEP library. + * It evaluates a <code>ROLL</code> token, which is an operator that comes + * in precedence between multiplicative and additive operators.</p> + * + * <p>The class receives two parameters, the number of rolls and the number of + * faces per die, as in "3d6," or whatever. It initializes a random number + * generator, which must be a subclass of <code>edu.cornell.lassp.houle.RngPack.RandomElement</code>. + * A default randomizer class is provided that wraps the java.util.Random class. + * The class used may be changed via setRandomClassName.</p> + * + * <p>The class provides very minimal retrieval of individual rolls, via the + * <code>getRolls()</code> method.</p> + */ + private static class Roll extends PostfixMathCommand + { + + /** + * + * <p>The default (and only) constructor. Sets the number + * of parameters for the JEP package, and calls <code>setRandom()</code> to + * initialize the randomizer.</p> + */ + public Roll() + { + numberOfParameters = -1; + } + + /** + * <p>The run command for the JEP framework. This receives the arguments + * to the operator as a stack, pops off the two it needs, does type checking, + * rolls the dice on the randomizer, and pushes the result back onto the stack. + * Logging is performed if it is turned on.</p> + * + * @see org.nfunk.jep.function.PostfixMathCommandI#run(java.util.Stack) + */ + @Override + public void run(Stack inStack) throws ParseException + { + // check the stack + checkStack(inStack); + if (curNumberOfParameters < 2) + { + throw new ParseException("Too few parameters"); + } + if (curNumberOfParameters > 4) + { + throw new ParseException("Too many parameters"); + } + + int numToKeep = 0; + int[] keep = null; + int reroll = 0; + while (curNumberOfParameters > 2) + { + Object param = inStack.pop(); + if (param instanceof Top.TopRolls && numToKeep == 0) + { + numToKeep = ((Top.TopRolls) param).getRolls(); + } + else if (param instanceof Reroll.Rerolls && reroll == 0) + { + reroll = ((Reroll.Rerolls) param).getRolls(); + } + else if (param instanceof Vector && curNumberOfParameters == 3) + { + if (numToKeep != 0) + { + throw new ParseException("Redundant Arugments"); + } + if (reroll != 0) + { + throw new ParseException("Reroll not compatable with older syntax, use top(NUMBER) instead"); + } + Vector vec = (Vector) param; + keep = new int[vec.size()]; + for (int x = 0; x < vec.size(); x++) + { + keep[x] = ((int) Math.round(((Double) vec.get(x)).doubleValue())) - + 1; + } + } + else + { + throw new ParseException("Invalid parameter type"); + } + curNumberOfParameters--; + } + + // get the parameter from the stack + Object faces = inStack.pop(); + Object numberOfRolls = inStack.pop(); + if (faces instanceof Vector) + { + Vector vec = (Vector) faces; + faces = vec.get(Globals.getRandomInt(vec.size())); + } + // check whether the argument is of the right type + if (faces instanceof Double && + numberOfRolls instanceof Double) + { + // calculate the result + //Integer.MAX_VALUE + double dRolls = ((Double) numberOfRolls).doubleValue(); + double dFaces = ((Double) faces).doubleValue(); + if (dRolls > Integer.MAX_VALUE || dFaces > + Integer.MAX_VALUE) + { + throw new ParseException("Values greater than " + + Integer.MAX_VALUE + + " not allowed."); + } + int iRolls = (int) Math.round(((Double) numberOfRolls).doubleValue()); + int iFaces = (int) Math.round(((Double) faces).doubleValue()); + if (numToKeep == 0) + { + numToKeep = iRolls; + } + double result = 0; + if (keep == null) + { + result = roll(iRolls, iFaces, numToKeep, reroll, 0); + } + else + { + result = roll(iRolls, iFaces, keep); + } + // push the result on the inStack + inStack.push(new Double(result)); + } + else + { + throw new ParseException("Invalid parameter type"); + } + } + + } + + private static class Top extends PostfixMathCommand + { + + public Top() + { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException + { + Object param = inStack.pop(); + if (param instanceof Double) + { + double dRolls = ((Double) param).doubleValue(); + if (dRolls > Integer.MAX_VALUE) + { + throw new ParseException("Values greater than " + + Integer.MAX_VALUE + " not allowed."); + } + int iRolls = (int) Math.round(dRolls); + if (iRolls > 0) + { + inStack.push(new TopRolls(iRolls)); + } + else + { + throw new ParseException("Values less than 1 are not allowed"); + } + } + else + { + throw new ParseException("Invalid parameter type"); + } + } + + public static class TopRolls + { + + private Integer rolls; + + public TopRolls(Integer rolls) + { + this.rolls = rolls; + } + + public Integer getRolls() + { + return rolls; + } + + } + } + + private static class Reroll extends PostfixMathCommand + { + + public Reroll() + { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException + { + Object param = inStack.pop(); + if (param instanceof Double) + { + double dRolls = ((Double) param).doubleValue(); + if (dRolls > Integer.MAX_VALUE) + { + throw new ParseException("Values greater than " + + Integer.MAX_VALUE + " not allowed."); + } + int iRolls = (int) Math.round(dRolls); + if (iRolls > 0) + { + inStack.push(new Rerolls(iRolls)); + } + else + { + throw new ParseException("Values less than 1 are not allowed"); + } + } + else + { + throw new ParseException("Invalid parameter type"); + } + } + + public static class Rerolls + { + + private Integer rolls; + + public Rerolls(Integer rolls) + { + this.rolls = rolls; + } + + public Integer getRolls() + { + return rolls; + } + + } + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractBasicChoiceManager.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractBasicChoiceManager.java 2008-12-24 08:23:43 UTC (rev 8679) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/AbstractBasicChoiceManager.java 2008-12-25 08:00:58 UTC (rev 8680) @@ -154,10 +154,7 @@ chooser.setAllowsDups(dupsAllowed); if (!dupsAllowed) { - for (String o : reservedList) - { - availableList.remove(o); - } + availableList.removeAll(reservedList); } Globals.sortChooserLists(availableList, selectedList); Modified: Trunk/pcgen/code/src/java/plugin/dicebag/gui/DiceBagModel.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/dicebag/gui/DiceBagModel.java 2008-12-24 08:23:43 UTC (rev 8679) +++ Trunk/pcgen/code/src/java/plugin/dicebag/gui/DiceBagModel.java 2008-12-25 08:00:58 UTC (rev 8680) @@ -27,15 +27,12 @@ */ package plugin.dicebag.gui; -import com.electronicmuse.djep.JEP; import gmgen.GMGenSystem; -import gmgen.util.LogUtilities; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; import pcgen.util.Logging; -import plugin.dicebag.DiceBagPlugin; import javax.swing.JOptionPane; import java.io.File; @@ -44,6 +41,7 @@ import java.util.Iterator; import java.util.List; import java.util.Observable; +import pcgen.core.RollingMethods; /** * <p>The base data class of the DiceBag plugin. This class maintains a single "Dice Bag," which @@ -53,9 +51,6 @@ */ public class DiceBagModel extends Observable { - /** The dJEP instance for this bag. */ - private JEP m_jep = new JEP(); - /** List of dice strings. */ private List<String> m_dice = new ArrayList<String>(); @@ -73,7 +68,6 @@ */ public DiceBagModel() { - m_jep.addStandardFunctions(); } /** @@ -244,21 +238,7 @@ if (index < m_dice.size()) { - String expression = m_dice.get(index); - m_jep.parseExpression(expression); - returnValue = m_jep.getValue(); - if (m_jep.hasError()) - { - JOptionPane.showMessageDialog(GMGenSystem.inst, m_jep - .getErrorInfo()); - LogUtilities.inst().logMessage(DiceBagPlugin.LOG_NAME, - "Parse error: " + expression + ": " + m_jep.getErrorInfo()); - } - else - { - LogUtilities.inst().logMessage(DiceBagPlugin.LOG_NAME, - "Roll of: " + expression + ": " + returnValue); - } + returnValue = RollingMethods.roll(m_dice.get(index)); } return returnValue; @@ -273,22 +253,7 @@ */ public double rollDie(String expression) { - double returnValue = 0; - m_jep.parseExpression(expression); - returnValue = m_jep.getValue(); - if (m_jep.hasError()) - { - JOptionPane.showMessageDialog(GMGenSystem.inst, m_jep - .getErrorInfo()); - LogUtilities.inst().logMessage(DiceBagPlugin.LOG_NAME, - "Parse error: " + expression + ": " + m_jep.getErrorInfo()); - } - else - { - LogUtilities.inst().logMessage(DiceBagPlugin.LOG_NAME, - "Roll of: " + expression + ": " + returnValue); - } - + double returnValue = RollingMethods.roll(expression); return returnValue; } Modified: Trunk/pcgen/code/src/java/plugin/initiative/OpposedSkillModel.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/initiative/OpposedSkillModel.java 2008-12-24 08:23:43 UTC (rev 8679) +++ Trunk/pcgen/code/src/java/plugin/initiative/OpposedSkillModel.java 2008-12-25 08:00:58 UTC (rev 8680) @@ -34,7 +34,7 @@ import pcgen.core.analysis.SkillModifier; import pcgen.core.analysis.SkillRankControl; -import com.electronicmuse.djep.JEP; +import pcgen.core.RollingMethods; /** * <p> @@ -131,9 +131,7 @@ */ public void roll() { - djep.parseExpression("1d20"); - double r = djep.getValue(); - roll = Integer.valueOf((int) r); + roll = RollingMethods.roll("1d20"); calc(); } @@ -210,9 +208,6 @@ } } - /** A djep instance that allows dice rolling */ - protected static final JEP djep = new JEP(); - /** Name of the skill being currently used for rolls */ protected String skillName; Modified: Trunk/pcgen/code/src/java/plugin/initiative/gui/AttackDialog.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/initiative/gui/AttackDialog.java 2008-12-24 08:23:43 UTC (rev 8679) +++ Trunk/pcgen/code/src/java/plugin/initiative/gui/AttackDialog.java 2008-12-25 08:00:58 UTC (rev 8680) @@ -25,8 +25,6 @@ */ package plugin.initiative.gui; -import com.electronicmuse.djep.JEP; -import com.electronicmuse.djep.function.Roll; import gmgen.GMGenSystem; import gmgen.plugin.PcgCombatant; import plugin.initiative.AttackModel; @@ -46,6 +44,7 @@ import java.util.List; import java.util.StringTokenizer; import java.util.Vector; +import pcgen.core.RollingMethods; /** * @author Ross M. Lodge @@ -495,10 +494,6 @@ static final int COLUMN_INDEX_EDITABLE = 3; static final int COLUMN_INDEX_KEY = 4; - /** - * dJEP instance for rolling dice. - */ - private JEP m_jep = new JEP(); /** AC Type string */ private String m_acType = "Total"; @@ -860,7 +855,7 @@ for (int i = 0; i < numberOfRolls; i++) { - dmg += rollDice(damageString); + dmg += RollingMethods.roll(damageString); } setValueAt(Integer.valueOf(dmg), row, @@ -881,7 +876,7 @@ */ private void rollAttack(int row) { - setValueAt(Integer.valueOf(rollDice("1d20")), row, + setValueAt(Integer.valueOf(RollingMethods.roll("1d20")), row, columnFromKey(COLUMN_KEY_ROLL)); if ((getIntAt(row, columnFromKey(COLUMN_KEY_ROLL)) >= m_attack @@ -889,7 +884,7 @@ && ((Boolean) getValueAt(row, columnFromKey(COLUMN_KEY_HIT))) .booleanValue()) { - setValueAt(Integer.valueOf(rollDice("1d20")), row, + setValueAt(Integer.valueOf(RollingMethods.roll("1d20")), row, columnFromKey(COLUMN_KEY_CRITROLL)); } else @@ -898,22 +893,5 @@ } } - /** - * <p>Executes the requested dice expression and returns the integer value.</p> - * - * @param expression A dice expression - * @return The integer result - */ - private int rollDice(String expression) - { - boolean logging = Roll.isLogging(); - Roll.setLogging(false); - m_jep.parseExpression(expression); - - int returnValue = (int) m_jep.getValue(); - Roll.setLogging(logging); - - return returnValue; - } } } Modified: Trunk/pcgen/code/src/java/plugin/initiative/gui/DiceRollDialog.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/initiative/gui/DiceRollDialog.java 2008-12-24 08:23:43 UTC (rev 8679) +++ Trunk/pcgen/code/src/java/plugin/initiative/gui/DiceRollDialog.java 2008-12-25 08:00:58 UTC (rev 8680) @@ -25,8 +25,6 @@ */ package plugin.initiative.gui; -import com.electronicmuse.djep.JEP; -import com.electronicmuse.djep.function.Roll; import gmgen.GMGenSystem; import plugin.initiative.DiceRollModel; @@ -36,6 +34,7 @@ import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import pcgen.core.RollingMethods; /** * <p> @@ -55,9 +54,6 @@ /** Button to roll the skill checks */ protected JButton m_doRoll; - /** dJEP instance to do the calculationss */ - protected JEP m_jep = new JEP(); - /** Label to display the result of the check */ protected JLabel m_result; @@ -88,7 +84,6 @@ { super(); m_model = model; - m_jep.addStandardFunctions(); initComponents(); } @@ -113,13 +108,7 @@ */ protected void handleRoll(ActionEvent e) { - boolean logging = Roll.isLogging(); - Roll.setLogging(false); - m_jep.parseExpression(m_roll.getText()); - - int rollResult = (int) Math.floor(m_jep.getValue()); - setResult(rollResult); - Roll.setLogging(logging); + setResult(RollingMethods.roll(m_roll.getText())); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-30 22:30:46
|
Revision: 8733 http://pcgen.svn.sourceforge.net/pcgen/?rev=8733&view=rev Author: thpr Date: 2008-12-30 22:30:42 +0000 (Tue, 30 Dec 2008) Log Message: ----------- updates/fixes Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java Trunk/pcgen/code/src/java/pcgen/rules/context/ListContext.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GamemodeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LstexcludeToken.java Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java 2008-12-30 22:28:53 UTC (rev 8732) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java 2008-12-30 22:30:42 UTC (rev 8733) @@ -404,6 +404,11 @@ if (pipePos == -1) { + if (value.startsWith("(")) + { + Logging.errorPrint("Invalid Campaign File, cannot start with (:" + value); + return null; + } cse = new CampaignSourceEntry(campaign2, new URIFactory( sourceUri, value)); Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/ListContext.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/ListContext.java 2008-12-30 22:28:53 UTC (rev 8732) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/ListContext.java 2008-12-30 22:30:42 UTC (rev 8733) @@ -475,7 +475,33 @@ } } } - return new CollectionChanges<CDOMReference>(list, null, + set = negativeMasterMap.getKeySet(); + ArrayList<CDOMReference> removelist = new ArrayList<CDOMReference>(); + if (set != null) + { + LIST: for (CDOMReference<? extends CDOMList<?>> ref : set) + { + if (!cl.equals(ref.getReferenceClass())) + { + continue; + } + for (CDOMObject allowed : negativeMasterMap + .getTertiaryKeySet(ref, lo)) + { + AssociatedPrereqObject assoc = negativeMasterMap.get( + ref, lo, allowed); + if (owner.equals(assoc + .getAssociation(AssociationKey.OWNER)) + && tokenName.equals(assoc + .getAssociation(AssociationKey.TOKEN))) + { + removelist.add(ref); + continue LIST; + } + } + } + } + return new CollectionChanges<CDOMReference>(list, removelist, masterAllClear.containsInList(tokenName, lo)); } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GamemodeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GamemodeToken.java 2008-12-30 22:28:53 UTC (rev 8732) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/GamemodeToken.java 2008-12-30 22:30:42 UTC (rev 8733) @@ -29,6 +29,7 @@ import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** * Class deals with GAMEMODE Token @@ -46,7 +47,7 @@ public boolean parse(LoadContext context, Campaign campaign, String gameMode) throws PersistenceLayerException { - if (isEmpty(gameMode)) + if (isEmpty(gameMode) || hasIllegalSeparator('|', gameMode)) { return false; } @@ -69,11 +70,13 @@ return null; } Collection<?> added = changes.getAdded(); - if (added != null && !added.isEmpty()) + if (added == null || added.isEmpty()) { - return new String[] { StringUtil.join(added, Constants.PIPE) }; + Logging.errorPrint("Found Game Mode changes in " + + campaign.getKeyName() + " but none were added"); + return null; } - return null; + return new String[] { StringUtil.join(added, Constants.PIPE) }; } public Class<Campaign> getTokenClass() Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LstexcludeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LstexcludeToken.java 2008-12-30 22:28:53 UTC (rev 8732) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LstexcludeToken.java 2008-12-30 22:30:42 UTC (rev 8733) @@ -30,7 +30,6 @@ import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; -import pcgen.util.Logging; /** * Class deals with LSTEXCLUDE Token @@ -64,18 +63,11 @@ //Error return false; } - if (!cse.getIncludeItems().isEmpty()) - { - Logging.log(Logging.LST_ERROR, getTokenName() + " does not allow INCLUDE: " - + value); - return false; - } - if (!cse.getExcludeItems().isEmpty()) - { - Logging.log(Logging.LST_ERROR, getTokenName() + " does not allow EXCLUDE: " - + value); - return false; - } + /* + * No need to check for cse.getIncludeItems or getExcludeItems as + * the use of pipe separator would have caused an error in fetching + * the CSE + */ context.obj.addToList(campaign, ListKey.FILE_LST_EXCLUDE, cse); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |