From: <th...@us...> - 2009-09-01 01:35:20
|
Revision: 10369 http://pcgen.svn.sourceforge.net/pcgen/?rev=10369&view=rev Author: thpr Date: 2009-09-01 01:35:09 +0000 (Tue, 01 Sep 2009) Log Message: ----------- Bring cdomui branch (code directory only) up to Trunk 9950 Modified Paths: -------------- sandbox/cdomui/code/src/java/gmgen/plugin/PcgCombatant.java sandbox/cdomui/code/src/java/gmgen/plugin/PcgSystemInitiative.java sandbox/cdomui/code/src/java/gmgen/plugin/PlayerCharacterOutput.java sandbox/cdomui/code/src/java/gmgen/plugin/SystemHP.java sandbox/cdomui/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java sandbox/cdomui/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java sandbox/cdomui/code/src/java/pcgen/core/Campaign.java sandbox/cdomui/code/src/java/pcgen/core/Equipment.java sandbox/cdomui/code/src/java/pcgen/core/EquipmentChoice.java sandbox/cdomui/code/src/java/pcgen/core/GameMode.java sandbox/cdomui/code/src/java/pcgen/core/Globals.java sandbox/cdomui/code/src/java/pcgen/core/PCClass.java sandbox/cdomui/code/src/java/pcgen/core/PlayerCharacter.java sandbox/cdomui/code/src/java/pcgen/core/SettingsHandler.java sandbox/cdomui/code/src/java/pcgen/core/Skill.java sandbox/cdomui/code/src/java/pcgen/core/StatList.java sandbox/cdomui/code/src/java/pcgen/core/analysis/BonusCalc.java sandbox/cdomui/code/src/java/pcgen/core/analysis/RaceStat.java sandbox/cdomui/code/src/java/pcgen/core/analysis/SkillModifier.java sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateModifier.java sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateStat.java sandbox/cdomui/code/src/java/pcgen/core/chooser/SpellListChoiceManager.java sandbox/cdomui/code/src/java/pcgen/core/chooser/StatChoiceManager.java sandbox/cdomui/code/src/java/pcgen/core/kit/KitStat.java sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassData.java sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassDataParser.java sandbox/cdomui/code/src/java/pcgen/core/npcgen/Configuration.java sandbox/cdomui/code/src/java/pcgen/core/npcgen/NPCGenerator.java sandbox/cdomui/code/src/java/pcgen/core/pclevelinfo/PCLevelInfo.java sandbox/cdomui/code/src/java/pcgen/core/pclevelinfo/PCLevelInfoStat.java sandbox/cdomui/code/src/java/pcgen/core/term/EvaluatorFactory.java sandbox/cdomui/code/src/java/pcgen/core/term/PCCountStatsTermEvaluator.java sandbox/cdomui/code/src/java/pcgen/core/term/PCSPellBaseStatScoreEvaluatorTermEvaluator.java sandbox/cdomui/code/src/java/pcgen/core/term/PCSPellBaseStatTermEvaluator.java sandbox/cdomui/code/src/java/pcgen/core/term/PCScoreTermEvaluator.java sandbox/cdomui/code/src/java/pcgen/core/term/PCStatBaseTermEvaluator.java sandbox/cdomui/code/src/java/pcgen/core/term/PCStatModTermEvaluator.java sandbox/cdomui/code/src/java/pcgen/core/term/PCStatTotalTermEvaluator.java sandbox/cdomui/code/src/java/pcgen/gui/SplashScreen.java sandbox/cdomui/code/src/java/pcgen/gui/converter/LSTConverter.java sandbox/cdomui/code/src/java/pcgen/gui/editor/SkillBasePanel.java sandbox/cdomui/code/src/java/pcgen/gui/filter/FilterFactory.java sandbox/cdomui/code/src/java/pcgen/gui/prop/PCGenProp.properties sandbox/cdomui/code/src/java/pcgen/gui/tabs/InfoRaces.java sandbox/cdomui/code/src/java/pcgen/gui/tabs/InfoResources.java sandbox/cdomui/code/src/java/pcgen/gui/tabs/InfoSkills.java sandbox/cdomui/code/src/java/pcgen/gui/tabs/InfoSummary.java sandbox/cdomui/code/src/java/pcgen/io/PCGIOHandler.java sandbox/cdomui/code/src/java/pcgen/io/PCGVer2Parser.java sandbox/cdomui/code/src/java/pcgen/io/exporttoken/SkillToken.java sandbox/cdomui/code/src/java/pcgen/io/exporttoken/StatToken.java sandbox/cdomui/code/src/java/pcgen/persistence/lst/LstSystemLoader.java sandbox/cdomui/code/src/java/pcgen/persistence/lst/PCStatLoader.java sandbox/cdomui/code/src/java/pcgen/persistence/lst/StatsAndChecksLoader.java sandbox/cdomui/code/src/java/pcgen/rules/context/AbstractReferenceContext.java sandbox/cdomui/code/src/java/pcgen/rules/context/ReferenceContext.java sandbox/cdomui/code/src/java/plugin/bonustokens/Stat.java sandbox/cdomui/code/src/java/plugin/charactersheet/gui/AttributePane.java sandbox/cdomui/code/src/java/plugin/charactersheet/gui/CombatPane2.java sandbox/cdomui/code/src/java/plugin/charactersheet/gui/SavingThrowPane.java sandbox/cdomui/code/src/java/plugin/charactersheet/gui/TurnPane.java sandbox/cdomui/code/src/java/plugin/exporttokens/SkillListModsToken.java sandbox/cdomui/code/src/java/plugin/exporttokens/TemplateToken.java sandbox/cdomui/code/src/java/plugin/initiative/gui/Initiative.java sandbox/cdomui/code/src/java/plugin/lsttokens/choose/StatToken.java sandbox/cdomui/code/src/java/plugin/lsttokens/equipmentmodifier/choose/StatBonusToken.java sandbox/cdomui/code/src/java/plugin/pretokens/test/PreStatTester.java sandbox/cdomui/code/src/test/pcgen/AbstractCharacterTestCase.java sandbox/cdomui/code/src/test/pcgen/core/PCClassTest.java sandbox/cdomui/code/src/test/pcgen/core/PCTemplateTest.java sandbox/cdomui/code/src/test/pcgen/core/PlayerCharacterTest.java sandbox/cdomui/code/src/test/pcgen/core/RaceTest.java sandbox/cdomui/code/src/test/pcgen/core/StatListTest.java sandbox/cdomui/code/src/test/pcgen/core/analysis/SkillModifierTest.java sandbox/cdomui/code/src/test/pcgen/core/bonus/BonusTest.java sandbox/cdomui/code/src/test/pcgen/core/chooser/ClassSkillsChoiceManagerTest.java sandbox/cdomui/code/src/test/pcgen/core/levelability/AddClassSkillsTest.java sandbox/cdomui/code/src/test/pcgen/core/prereq/PreVarTest.java sandbox/cdomui/code/src/test/pcgen/io/ExportHandlerTest.java sandbox/cdomui/code/src/test/pcgen/io/exporttoken/SpellMemTokenTest.java sandbox/cdomui/code/src/test/pcgen/io/exporttoken/StatTokenTest.java sandbox/cdomui/code/src/test/pcgen/io/exporttoken/WeaponTokenTest.java sandbox/cdomui/code/src/test/pcgen/persistence/lst/output/prereq/PrerequisiteWriterTest.java sandbox/cdomui/code/src/test/pcgen/util/TestHelper.java sandbox/cdomui/code/src/test/plugin/exporttokens/ACTokenTest.java sandbox/cdomui/code/src/test/plugin/exporttokens/AttackTokenTest.java sandbox/cdomui/code/src/test/plugin/exporttokens/SkillTokenTest.java sandbox/cdomui/code/src/test/plugin/exporttokens/SpellListTokenTest.java Removed Paths: ------------- sandbox/cdomui/code/src/java/pcgen/io/PCGVer0Parser.java Property Changed: ---------------- sandbox/cdomui/code/ Property changes on: sandbox/cdomui/code ___________________________________________________________________ Modified: svn:mergeinfo - /Trunk/pcgen/code:9778-9846 + /Trunk/pcgen/code:9778-9846,9863-9926 Modified: sandbox/cdomui/code/src/java/gmgen/plugin/PcgCombatant.java =================================================================== --- sandbox/cdomui/code/src/java/gmgen/plugin/PcgCombatant.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/gmgen/plugin/PcgCombatant.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -84,9 +84,11 @@ this.init = new PcgSystemInitiative(pc); StatList sl = pc.getStatList(); + PCStat stat = Globals.getContext().ref + .getAbbreviatedObject(PCStat.class, "CON"); this.hitPoints = new SystemHP(new SystemAttribute("Constitution", sl - .getTotalStatFor("CON")), pc.hitPoints(), pc.hitPoints()); + .getTotalStatFor(stat)), pc.hitPoints(), pc.hitPoints()); setCombatantType("PC"); } @@ -117,9 +119,11 @@ this.init = new PcgSystemInitiative(pc); StatList sl = pc.getStatList(); + PCStat stat = Globals.getContext().ref + .getAbbreviatedObject(PCStat.class, "CON"); this.hitPoints = new SystemHP(new SystemAttribute("Constitution", sl - .getTotalStatFor("CON")), pc.hitPoints(), pc + .getTotalStatFor(stat)), pc.hitPoints(), pc .hitPoints()); setStatus(combatant.getAttribute("status").getValue()); @@ -707,14 +711,13 @@ StatList sl = pcOut.getStatList(); - for (int i = 0; i < sl.size(); i++) + for (PCStat stat : sl) { - PCStat stat = sl.getStatAt(i); - - if (pc.isNonAbility(i)) + String statAbb = stat.getAbb(); + if (pc.isNonAbility(stat)) { statBuf.append("<font class='type'>"); - statBuf.append(stat.getAbb()); //|STAT.%stat.NAME| + statBuf.append(statAbb); //|STAT.%stat.NAME| statBuf.append("</font>"); statBuf.append("*"); //|STAT.%stat| @@ -725,17 +728,17 @@ else { statBuf.append("<font class='type'>"); - statBuf.append(stat.getAbb()); //|STAT.%stat.NAME| + statBuf.append(statAbb); //|STAT.%stat.NAME| statBuf.append("</font> "); - statBuf.append(pcOut.getStat(stat.getAbb())); //|STAT.%stat| + statBuf.append(pcOut.getStat(stat)); //|STAT.%stat| statBuf.append(" ("); statBuf.append("<a href='check:"); - statBuf.append(stat.getAbb()); //|STAT.%stat.NAME| + statBuf.append(statAbb); //|STAT.%stat.NAME| statBuf.append("\\1d20"); - statBuf.append(pcOut.getStatMod(stat.getAbb())); //|STAT.%stat.MOD| + statBuf.append(pcOut.getStatMod(stat)); //|STAT.%stat.MOD| statBuf.append("' class='dialog'>"); - statBuf.append(pcOut.getStatMod(stat.getAbb())); //|STAT.%stat.MOD| + statBuf.append(pcOut.getStatMod(stat)); //|STAT.%stat.MOD| statBuf.append("</a>) "); } } @@ -825,7 +828,7 @@ modSkill = SkillModifier.modifier(skill, pc).intValue() - pc.getStatList().getStatModFor( - skill.getKeyStatAbb()); + skill.get(ObjectKey.KEY_STAT)); Logging.debugPrint("modSkill: " + modSkill); } Modified: sandbox/cdomui/code/src/java/gmgen/plugin/PcgSystemInitiative.java =================================================================== --- sandbox/cdomui/code/src/java/gmgen/plugin/PcgSystemInitiative.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/gmgen/plugin/PcgSystemInitiative.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -4,6 +4,7 @@ package gmgen.plugin; import pcgen.core.Globals; +import pcgen.core.PCStat; import pcgen.core.PlayerCharacter; import pcgen.core.StatList; @@ -17,7 +18,9 @@ Globals.setCurrentPC(pc); StatList sl = pc.getStatList(); - this.attribute = new SystemAttribute("Dexterity", sl.getTotalStatFor("DEX")); + PCStat stat = Globals.getContext().ref + .getAbbreviatedObject(PCStat.class, "DEX"); + this.attribute = new SystemAttribute("Dexterity", sl.getTotalStatFor(stat)); bonus = 0; die = new Dice(1, 20); } @@ -28,7 +31,9 @@ StatList sl = pc.getStatList(); - return new SystemAttribute("Dexterity", sl.getTotalStatFor("DEX")); + PCStat stat = Globals.getContext().ref + .getAbbreviatedObject(PCStat.class, "DEX"); + return new SystemAttribute("Dexterity", sl.getTotalStatFor(stat)); } public void setBonus(int bonus) @@ -42,8 +47,9 @@ Globals.setCurrentPC(pc); StatList sl = pc.getStatList(); - - return pc.initiativeMod() - sl.getStatModFor("DEX") + bonus; + PCStat dex = Globals.getContext().ref.getAbbreviatedObject( + PCStat.class, "DEX"); + return pc.initiativeMod() - sl.getStatModFor(dex) + bonus; } public int getModifier() Modified: sandbox/cdomui/code/src/java/gmgen/plugin/PlayerCharacterOutput.java =================================================================== --- sandbox/cdomui/code/src/java/gmgen/plugin/PlayerCharacterOutput.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/gmgen/plugin/PlayerCharacterOutput.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -16,6 +16,7 @@ import pcgen.core.Equipment; import pcgen.core.Globals; import pcgen.core.PCClass; +import pcgen.core.PCStat; import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; import pcgen.core.StatList; @@ -231,7 +232,9 @@ public String getInitMiscMod() { StatList sl = pc.getStatList(); - int statMod = sl.getStatModFor("DEX"); + PCStat dex = Globals.getContext().ref.getAbbreviatedObject( + PCStat.class, "DEX"); + int statMod = sl.getStatModFor(dex); int miscMod = pc.initiativeMod() - statMod; return "+" + miscMod; @@ -240,7 +243,9 @@ public String getInitStatMod() { StatList sl = pc.getStatList(); - int statMod = sl.getStatModFor("DEX"); + PCStat dex = Globals.getContext().ref.getAbbreviatedObject( + PCStat.class, "DEX"); + int statMod = sl.getStatModFor(dex); return "+" + statMod; } @@ -328,11 +333,11 @@ return sb.toString(); } - public String getStat(String statAbbrev) + public String getStat(PCStat stat) { StatList sl = pc.getStatList(); - return Integer.toString(sl.getTotalStatFor(statAbbrev)); + return Integer.toString(sl.getTotalStatFor(stat)); } public StatList getStatList() @@ -340,12 +345,12 @@ return pc.getStatList(); } - public String getStatMod(String statAbbrev) + public String getStatMod(PCStat stat) { int returnValue; StatList sl = pc.getStatList(); - returnValue = sl.getStatModFor(statAbbrev); + returnValue = sl.getStatModFor(stat); return (returnValue < 0) ? Integer.toString(returnValue) : "+" + returnValue; Modified: sandbox/cdomui/code/src/java/gmgen/plugin/SystemHP.java =================================================================== --- sandbox/cdomui/code/src/java/gmgen/plugin/SystemHP.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/gmgen/plugin/SystemHP.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -4,6 +4,7 @@ package gmgen.plugin; import pcgen.core.Globals; +import pcgen.core.PCStat; import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; import pcgen.core.StatList; @@ -122,7 +123,9 @@ StatList sl = pc.getStatList(); - if (damage > sl.getTotalStatFor("CON")) + PCStat stat = Globals.getContext().ref + .getAbbreviatedObject(PCStat.class, "CON"); + if (damage > sl.getTotalStatFor(stat)) { return true; } Modified: sandbox/cdomui/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -1277,4 +1277,17 @@ } } } + + /** + * Returns the number of objects that are constructed in this + * AbstractReferenceManufacturer (These could be natively constructed or + * imported objects and does not count duplicates) + * + * @return The number of objects that are constructed in this + * AbstractReferenceManufacturer + */ + public int getConstructedObjectCount() + { + return active.size(); + } } Modified: sandbox/cdomui/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -358,4 +358,14 @@ */ public void removeUnconstructedListener(UnconstructedListener listener); + /** + * Returns the number of objects that are constructed in this + * ReferenceManufacturer (These could be natively constructed or imported + * objects and does not count duplicates) + * + * @return The number of objects that are constructed in this + * ReferenceManufacturer + */ + public int getConstructedObjectCount(); + } Modified: sandbox/cdomui/code/src/java/pcgen/core/Campaign.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/Campaign.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/Campaign.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -28,10 +28,7 @@ import java.util.List; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CategorizedCDOMObject; import pcgen.cdom.enumeration.ListKey; -import pcgen.cdom.reference.ReferenceManufacturer; -import pcgen.cdom.reference.TransparentCategorizedReferenceManufacturer; import pcgen.cdom.reference.TransparentReferenceManufacturer; import pcgen.persistence.lst.CampaignSourceEntry; import pcgen.rules.context.ConsolidatedListCommitStrategy; @@ -155,26 +152,7 @@ for (TransparentReferenceManufacturer<? extends CDOMObject> rm : gameRefContext .getAllManufacturers()) { - resolveReferenceManufacturer(rc, rm); + GameMode.resolveReferenceManufacturer(rc, rm); } } - - private <T extends CDOMObject> void resolveReferenceManufacturer( - ReferenceContext rc, TransparentReferenceManufacturer<T> rm) - { - Class<T> c = rm.getReferenceClass(); - ReferenceManufacturer<T, ?> mfg; - if (CategorizedCDOMObject.class.isAssignableFrom(c)) - { - String category = ((TransparentCategorizedReferenceManufacturer) rm) - .getCDOMCategory(); - mfg = rc.getManufacturer((Class) c, category); - } - else - { - mfg = rc.getManufacturer(c); - } - rm.resolveUsing(mfg); - } - } Modified: sandbox/cdomui/code/src/java/pcgen/core/Equipment.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/Equipment.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/Equipment.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -6001,7 +6001,11 @@ public List<FixedStringList> getDetailedAssociations(CDOMObject obj) { - return assocSupt.getAssocList(obj, AssociationListKey.CHOICES); + List<FixedStringList> list = assocSupt.getAssocList(obj, AssociationListKey.CHOICES); + if (list == null) { + list = Collections.emptyList(); + } + return list; } public List<String> getExpandedAssociations(CDOMObject obj) Modified: sandbox/cdomui/code/src/java/pcgen/core/EquipmentChoice.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/EquipmentChoice.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/EquipmentChoice.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -23,6 +23,11 @@ */ package pcgen.core; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.StringTokenizer; + import pcgen.cdom.enumeration.FormulaKey; import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.StringKey; @@ -30,8 +35,6 @@ import pcgen.util.Logging; import pcgen.util.enumeration.Visibility; -import java.util.*; - /** * {<code>EquipmentChoice</code>} holds the details of a choice or * choices required for an Equipment. It is a java bean with a @@ -481,10 +484,9 @@ * Add the current character stats as defined in the game mode to the chooser */ public void addStats() { - for (int x = 0; x < SettingsHandler.getGame().s_ATTRIBSHORT.length; x++) + for (PCStat stat : Globals.getContext().ref.getConstructedCDOMObjects(PCStat.class)) { - this.getAvailableList().add( - SettingsHandler.getGame().s_ATTRIBSHORT[x]); + this.getAvailableList().add(stat.getAbb()); } } Modified: sandbox/cdomui/code/src/java/pcgen/core/GameMode.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/GameMode.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/GameMode.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -132,10 +132,6 @@ private int checksMaxLvl = Integer.MAX_VALUE; //20 private int displayOrder = Integer.MAX_VALUE; private List<PCStat> statList = new ArrayList<PCStat>(); - /** String array of Attributes in long format */ - public String[] s_ATTRIBLONG; - /** String array of Attributes in short format */ - public String[] s_ATTRIBSHORT; private final List<PCCheck> checkList = new ArrayList<PCCheck>(); private final List<PCAlignment> alignmentList = new ArrayList<PCAlignment>(15); private final List<String> schoolsList = new ArrayList<String>(20); @@ -1608,69 +1604,6 @@ statList.clear(); } - - /** - * Set the long description of attributes - * @param s - */ - public void setAttribLong(final String[] s) - { - s_ATTRIBLONG = s; - } - - /** - * Set the long description of a particular attribute - * @param index - * @param s - */ - public void setAttribLong(final int index, final String s) - { - s_ATTRIBLONG[index] = s; - } - - /** - * Set the short description of attributes - * @param s - */ - public void setAttribShort(final String[] s) - { - s_ATTRIBSHORT = s; - } - - /** - * Set the short description of a particular attribute - * @param s - * @param index - */ - public void setAttribShort(final int index, final String s) - { - s_ATTRIBSHORT[index] = s; - } - - /** - * Returns the index of the requested attribute abbreviation, - * The attributes used are loaded from a lst file - * - * @param attributeAbbreviation to find the index of - * @return the index of the attribute - * returns -1 if the attribute is not matched (or null) - */ - public int getStatFromAbbrev(final String attributeAbbreviation) - { - if (s_ATTRIBSHORT != null) - { - for (int stat = 0; stat < s_ATTRIBSHORT.length; ++stat) - { - if (attributeAbbreviation.equalsIgnoreCase(s_ATTRIBSHORT[stat])) - { - return stat; - } - } - } - - return -1; - } - //CHECKLIST /** @@ -3332,6 +3265,7 @@ { resolveReferenceManufacturer(referenceContext, rm); } + referenceContext.copyAbbreviationsFrom(gameRefContext); context = new RuntimeLoadContext(referenceContext, masterLCS); } @@ -3347,7 +3281,7 @@ } } - private <T extends CDOMObject> void resolveReferenceManufacturer( + public static <T extends CDOMObject> void resolveReferenceManufacturer( ReferenceContext rc, TransparentReferenceManufacturer<T> rm) { Class<T> c = rm.getReferenceClass(); Modified: sandbox/cdomui/code/src/java/pcgen/core/Globals.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/Globals.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/Globals.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -108,7 +108,7 @@ /** NOTE: The defaultPath is duplicated in LstSystemLoader. */ private static final String defaultPath = System.getProperty("user.dir"); //$NON-NLS-1$ - private static final String defaultPcgPath = getDefaultPath() + File.separator + "characters"; //$NON-NLS-1$ + private static final String defaultPcgPath = Globals.getUserFilesPath() + File.separator + "characters"; //$NON-NLS-1$ private static final String backupPcgPath = Constants.EMPTY_STRING; /** These are for the Internationalization project. */ @@ -647,6 +647,15 @@ } /** + * Get the default path + * @return default path + */ + public static String getUserFilesPath() + { + return expandRelativePath(System.getProperty("user.home") + File.separator + ".pcgen"); + } + + /** * Get the backup pcg path * @return backup pcg path */ Modified: sandbox/cdomui/code/src/java/pcgen/core/PCClass.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/PCClass.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/PCClass.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -396,21 +396,13 @@ (int) aPC.getTotalBonusTo("SPELLCAST", "CLASS.Any" + allSpellLevel); - final int index = bonusSpellIndex(); - - final PCStat aStat; - - if ((index != -2) && (index >= 0) && (index < aPC.getStatList().size())) - { - aStat = aPC.getStatList().getStatAt(index); - stat = aPC.getStatList().getTotalStatFor(aStat.getAbb()); - } - + PCStat aStat = bonusSpellStat(); String statString = Constants.s_NONE; - if (index >= 0) + if (aStat != null) { - statString = SettingsHandler.getGame().s_ATTRIBSHORT[index]; + stat = aPC.getStatList().getTotalStatFor(aStat); + statString = aStat.getAbb(); } final int bonusStat = @@ -419,7 +411,7 @@ + (int) aPC.getTotalBonusTo("STAT", "BASESPELLSTAT;CLASS." + getKeyName()); - if ((index > -2) && limitByStat) + if ((!getSafe(ObjectKey.USE_SPELL_SPELL_STAT)) && limitByStat) { PCStat ss = get(ObjectKey.SPELL_STAT); if (ss != null) @@ -1054,11 +1046,10 @@ pcLevel += (int) aPC.getTotalBonusTo("PCLEVEL", "TYPE." + getSpellType()); - final int index = baseSpellIndex(); + PCStat aStat = baseSpellStat(); - if ((index != -2) && (index >= 0) && (index < aPC.getStatList().size())) + if (aStat != null) { - final PCStat aStat = aPC.getStatList().getStatAt(index); final int maxSpellLevel = aPC.getVariableValue("MAXLEVELSTAT=" + aStat.getAbb(), "") .intValue(); @@ -1685,59 +1676,50 @@ * that? or why is the user not just using getSpellBaseStat and processing * the response by itself?? */ - public int baseSpellIndex() + public PCStat baseSpellStat() { if (getSafe(ObjectKey.USE_SPELL_SPELL_STAT)) { - return -2; + return null; } if (getSafe(ObjectKey.CASTER_WITHOUT_SPELL_STAT)) { - return -1; + return null; } PCStat ss = get(ObjectKey.SPELL_STAT); if (ss != null) { - return SettingsHandler.getGame().getStatFromAbbrev(ss.getAbb()); + return ss; } Logging.debugPrint("Found Class: " + getDisplayName() + " that did not have any SPELLSTAT defined"); - return -1; + return null; } /** - * Returns the index of the stat to use for bonus spells. + * Returns the stat to use for bonus spells. * * <p> * The method checks to see if a BONUSSPELLSTAT: has been set for the class. - * If it is set to a stat that stat is returned. If it is set to None -1 is + * If it is set to a stat that stat is returned. If it is set to None null is * returned. If it is set to Default then the BASESPELLSTAT is returned. * - * @return An index into the stat array or -1 if no bonus spells should be - * granted for this class. - * - * TODO - Why doesn't this return a PCStat? + * @return the stat to use for bonus spells. */ - /* - * REFACTOR Why is this returning an INT and not a PCStat or something like - * that? or why is the user not just using getBonusSpellBaseStat and - * processing the response by itself?? - */ - public int bonusSpellIndex() + public PCStat bonusSpellStat() { Boolean hbss = get(ObjectKey.HAS_BONUS_SPELL_STAT); if (hbss == null) { - return baseSpellIndex(); + return baseSpellStat(); } else if (hbss) { - PCStat bss = get(ObjectKey.BONUS_SPELL_STAT); - return SettingsHandler.getGame().getStatFromAbbrev(bss.getAbb()); + return get(ObjectKey.BONUS_SPELL_STAT); } else { - return -1; + return null; } } @@ -2142,19 +2124,13 @@ (int) aPC.getTotalBonusTo("SPELLKNOWN", "CLASS.Any" + allSpellLevel); - final int index = baseSpellIndex(); - - if ((index != -2) && (index >= 0) && (index < aPC.getStatList().size())) - { - final PCStat aStat = aPC.getStatList().getStatAt(index); - stat = aPC.getStatList().getTotalStatFor(aStat.getAbb()); - } - + PCStat aStat = baseSpellStat(); String statString = Constants.s_NONE; - if (index >= 0) + if (aStat != null) { - statString = SettingsHandler.getGame().s_ATTRIBSHORT[index]; + stat = aPC.getStatList().getTotalStatFor(aStat); + statString = aStat.getAbb(); } final int bonusStat = @@ -2163,7 +2139,7 @@ + (int) aPC.getTotalBonusTo("STAT", "BASESPELLKNOWNSTAT;CLASS." + getKeyName()); - if (index > -2) + if (!getSafe(ObjectKey.USE_SPELL_SPELL_STAT)) { final int maxSpellLevel = aPC.getVariableValue("MAXLEVELSTAT=" + statString, "") @@ -3004,7 +2980,7 @@ final PCStat aStat = i.next(); if (aStat.getAbb().equalsIgnoreCase( - statToRollback.getStatAbb())) + statToRollback.getStat().getAbb())) { aPC.setAssoc(aStat, AssociationKey.STAT_SCORE, aPC.getAssoc(aStat, AssociationKey.STAT_SCORE) - statToRollback.getStatMod()); @@ -3228,9 +3204,9 @@ { final PCStat aStat = i.next(); final int iAdjStat = - aPC.getStatList().getTotalStatFor(aStat.getAbb()); + aPC.getStatList().getTotalStatFor(aStat); final int iCurStat = - aPC.getStatList().getBaseStatFor(aStat.getAbb()); + aPC.getStatList().getBaseStatFor(aStat); sStats.append(aStat.getAbb()).append(": ").append(iCurStat); if (iCurStat != iAdjStat) @@ -3239,7 +3215,7 @@ } sStats.append(" (").append( - aPC.getStatList().getStatModFor(aStat.getAbb())).append( + aPC.getStatList().getStatModFor(aStat)).append( ")"); if (allowStacks || !statsAlreadyBonused.contains(aStat.getAbb())) @@ -3278,7 +3254,7 @@ if (aStat.getDisplayName().equalsIgnoreCase( selectedValue.toString())) { - aPC.saveStatIncrease(aStat.getAbb(), 1, isPre); + aPC.saveStatIncrease(aStat, 1, isPre); aPC.setAssoc(aStat, AssociationKey.STAT_SCORE, aPC.getAssoc(aStat, AssociationKey.STAT_SCORE) + 1); aPC.setPoolAmount(aPC.getPoolAmount() - 1); statsAlreadyBonused.add(aStat.getAbb()); Modified: sandbox/cdomui/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/PlayerCharacter.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/PlayerCharacter.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -393,10 +393,8 @@ Globals.setCurrentPC(this); - for (int i = 0, x = SettingsHandler.getGame().s_ATTRIBLONG.length; i < x; ++i) + for (PCStat stat : SettingsHandler.getGame().getUnmodifiableStatList()) { - final PCStat stat = - SettingsHandler.getGame().getUnmodifiableStatList().get(i); statList.addStat(stat); } @@ -547,11 +545,7 @@ if (ss != null) { - String statString = ss.getAbb(); - final int statIndex = getStatList().getIndexOfStatFor(statString); - if (statIndex >= 0) - { - baseSpellStat = getStatList().getTotalStatFor(statString); + baseSpellStat = getStatList().getTotalStatFor(ss); // final List<TypedBonus> bonuses = getBonusesTo("STAT", // "BASESPELLSTAT"); // bonuses.addAll( getBonusesTo("STAT", @@ -563,11 +557,9 @@ (int) getTotalBonusTo("STAT", "BASESPELLSTAT;CLASS." + aClass.getKeyName()); baseSpellStat += - (int) getTotalBonusTo("STAT", "CAST." + statString); + (int) getTotalBonusTo("STAT", "CAST." + ss.getAbb()); baseSpellStat = - getStatList().getModForNumber(baseSpellStat, statIndex); - } - + getStatList().getModForNumber(baseSpellStat, ss); } return baseSpellStat; @@ -6273,29 +6265,29 @@ * * @return true, if is non ability */ - public boolean isNonAbility(final int i) + public boolean isNonAbility(PCStat stat) { //Unlocked overrides any lock to a non ability so check for it first - if (RaceStat.isUnlocked(i, race)) + if (RaceStat.isUnlocked(stat, race)) { return false; } for (PCTemplate template : templateList) { - if (TemplateStat.isUnlocked(template, i)) + if (TemplateStat.isUnlocked(template, stat)) { return false; } } - if (RaceStat.isNonAbility(i, race)) + if (RaceStat.isNonAbility(stat, race)) { return true; } for (PCTemplate template : templateList) { - if (TemplateStat.isNonAbility(template, i)) + if (TemplateStat.isNonAbility(template, stat)) { return true; } @@ -6976,14 +6968,14 @@ * Should stat mods that occurred after levelling be included? * @return The stat as it was at the level */ - public int getTotalStatAtLevel(final String statAbb, final int level, + public int getTotalStatAtLevel(final PCStat stat, final int level, final boolean includePost) { - int curStat = getStatList().getTotalStatFor(statAbb); + int curStat = getStatList().getTotalStatFor(stat); for (int idx = getLevelInfoSize() - 1; idx >= level; --idx) { final int statLvlAdjust = - pcLevelInfo.get(idx).getTotalStatMod(statAbb, true); + pcLevelInfo.get(idx).getTotalStatMod(stat, true); curStat -= statLvlAdjust; } // If the user doesn't want POST changes, we remove any made in the @@ -6991,9 +6983,9 @@ if (!includePost && level > 0) { int statLvlAdjust = - pcLevelInfo.get(level - 1).getTotalStatMod(statAbb, true); + pcLevelInfo.get(level - 1).getTotalStatMod(stat, true); statLvlAdjust -= - pcLevelInfo.get(level - 1).getTotalStatMod(statAbb, false); + pcLevelInfo.get(level - 1).getTotalStatMod(stat, false); curStat -= statLvlAdjust; } @@ -10794,26 +10786,26 @@ return li; } - public void saveStatIncrease(final String statAbb, final int mod, + public void saveStatIncrease(final PCStat stat, final int mod, final boolean isPreMod) { final int idx = getLevelInfoSize() - 1; if (idx >= 0) { - pcLevelInfo.get(idx).addModifiedStat(statAbb, mod, isPreMod); + pcLevelInfo.get(idx).addModifiedStat(stat, mod, isPreMod); } setDirty(true); } - public int getStatIncrease(final String statAbb, final boolean includePost) + public int getStatIncrease(final PCStat stat, final boolean includePost) { final int idx = getLevelInfoSize() - 1; if (idx >= 0) { - return pcLevelInfo.get(idx).getTotalStatMod(statAbb, includePost); + return pcLevelInfo.get(idx).getTotalStatMod(stat, includePost); } return 0; } @@ -14423,15 +14415,15 @@ * Should equipment bonuses be included? * @return The stat as it was at the level */ - public int getPartialStatAtLevel(String statAbb, int level, + public int getPartialStatAtLevel(PCStat stat, int level, boolean usePost, boolean useTemp, boolean useEquip) { int curStat = - getStatList().getPartialStatFor(statAbb, useTemp, useEquip); + getStatList().getPartialStatFor(stat, useTemp, useEquip); for (int idx = getLevelInfoSize() - 1; idx >= level; --idx) { final int statLvlAdjust = - pcLevelInfo.get(idx).getTotalStatMod(statAbb, usePost); + pcLevelInfo.get(idx).getTotalStatMod(stat, usePost); curStat -= statLvlAdjust; } @@ -17477,7 +17469,11 @@ public List<FixedStringList> getDetailedAssociations(CDOMObject obj) { - return assocSupt.getAssocList(obj, AssociationListKey.CHOICES); + List<FixedStringList> list = assocSupt.getAssocList(obj, AssociationListKey.CHOICES); + if (list == null) { + list = Collections.emptyList(); + } + return list; } public List<String> getExpandedAssociations(CDOMObject obj) @@ -17915,7 +17911,7 @@ String spellType = ""; String classKey = ""; int metaDC = 0; - int spellIndex = 0; + PCStat spellStat = null; if (si != null) { @@ -17973,6 +17969,8 @@ } } + boolean useStatFromSpell = false; + if ((aClass != null) || (ow instanceof PCClass)) { if ((aClass == null) || (ow instanceof PCClass)) @@ -17983,13 +17981,14 @@ bonClass = "CLASS." + aClass.getKeyName(); classKey = "CLASS:" + aClass.getKeyName(); spellType = aClass.getSpellType(); - spellIndex = aClass.baseSpellIndex(); + spellStat = aClass.baseSpellStat(); + useStatFromSpell = aClass.getSafe(ObjectKey.USE_SPELL_SPELL_STAT); } if (!(ow instanceof PCClass) && !(ow instanceof Domain)) { // get BASESPELLSTAT from spell itself - spellIndex = -2; + useStatFromSpell = true; } // set the spell Level used in aPC.getVariableValue() @@ -18002,13 +18001,13 @@ + metaDC; dc += (int) getTotalBonusTo("DC", "ALLSPELLS"); - if (spellIndex == -2) + if (useStatFromSpell) { // get the BASESPELLSTAT from the spell itself PCStat stat = sp.get(ObjectKey.SPELL_STAT); if (stat != null) { - dc += getStatList().getStatModFor(stat.getAbb()); + dc += getStatList().getStatModFor(stat); } } Modified: sandbox/cdomui/code/src/java/pcgen/core/SettingsHandler.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/SettingsHandler.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/SettingsHandler.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -1249,9 +1249,9 @@ setPccFilesLocation(new File(expandRelativePath(getPCGenOption("pccFilesLocation", //$NON-NLS-1$ System.getProperty("user.dir") + File.separator + "data")))); //$NON-NLS-1$ //$NON-NLS-2$ setPcgenCustomDir(new File(expandRelativePath(getOptions().getProperty("pcgen.files.pcgenCustomDir", //$NON-NLS-1$ - System.getProperty("user.dir") + File.separator + "data" + File.separator + "customsources")))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + Globals.getUserFilesPath() + File.separator + "customsources")))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ setPcgenVendorDataDir(new File(expandRelativePath(getOptions().getProperty("pcgen.files.pcgenVendorDataDir", //$NON-NLS-1$ - System.getProperty("user.dir") + File.separator + "vendordata")))); //$NON-NLS-1$ //$NON-NLS-2$ + Globals.getUserFilesPath() + File.separator + "vendordata")))); //$NON-NLS-1$ //$NON-NLS-2$ setPcgenDocsDir(new File(expandRelativePath(getOptions().getProperty("pcgen.files.pcgenDocsDir", //$NON-NLS-1$ System.getProperty("user.dir") + File.separator + "docs")))); //$NON-NLS-1$ //$NON-NLS-2$ setPcgenSystemDir(new File(expandRelativePath(getOptions().getProperty("pcgen.files.pcgenSystemDir", //$NON-NLS-1$ @@ -1268,7 +1268,7 @@ Globals.getDefaultPcgPath())))); setBackupPcgPath(new File(expandRelativePath(getOptions().getProperty("pcgen.files.characters.backup", "")))); //$NON-NLS-1$ setPortraitsPath(new File(expandRelativePath(getOptions().getProperty("pcgen.files.portraits", //$NON-NLS-1$ - Globals.getDefaultPath())))); + Globals.getDefaultPcgPath())))); setPostExportCommandStandard(getPCGenOption("postExportCommandStandard", "")); //$NON-NLS-1$ //$NON-NLS-2$ setPostExportCommandPDF(getPCGenOption("postExportCommandPDF", "")); //$NON-NLS-1$ //$NON-NLS-2$ setPrereqFailColor(getPCGenOption("prereqFailColor", Color.red.getRGB())); //$NON-NLS-1$ @@ -1372,6 +1372,7 @@ } setGame(getPCGenOption("game", Constants.e35_MODE)); //$NON-NLS-1$ + game.clearLoadContext(); Globals.createEmptyRace(); @@ -1785,6 +1786,10 @@ */ public static void setPcgPath(final File path) { + if (path != null && !path.exists()) + { + path.mkdirs(); + } pcgPath = path; } @@ -1800,6 +1805,10 @@ public static void setPcgenCustomDir(final File aFile) { + if (aFile != null && !aFile.exists()) + { + aFile.mkdirs(); + } pcgenCustomDir = aFile; } @@ -1810,6 +1819,10 @@ public static void setPcgenVendorDataDir(final File aFile) { + if (aFile != null && !aFile.exists()) + { + aFile.mkdirs(); + } pcgenVendorDataDir = aFile; } Modified: sandbox/cdomui/code/src/java/pcgen/core/Skill.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/Skill.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/Skill.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -165,14 +165,14 @@ * * @return description */ - public String getKeyStatFromStats() + public String getKeyStatFromStats(PlayerCharacter pc) { PCStat stat = get(ObjectKey.KEY_STAT); if (stat == null) { if (Globals.getGameModeHasPointPool()) { - List<PCStat> statList = getKeyStatList(null); + List<PCStat> statList = getKeyStatList(pc, null); StringBuilder sb = new StringBuilder(); boolean needSlash = false; for (PCStat s : statList) @@ -203,18 +203,15 @@ * @param typeList * @return List of stats that apply */ - public List<PCStat> getKeyStatList(List<Type> typeList) + public List<PCStat> getKeyStatList(PlayerCharacter pc, List<Type> typeList) { List<PCStat> aList = new ArrayList<PCStat>(); if (Globals.getGameModeHasPointPool()) { for (Type aType : getTrueTypeList(false)) { - List<PCStat> statList = SettingsHandler.getGame() - .getUnmodifiableStatList(); - for (int idx = statList.size() - 1; idx >= 0; --idx) + for (PCStat stat : pc.getStatList()) { - final PCStat stat = statList.get(idx); // // Get a list of all BONUS:SKILL|TYPE.<type>|x for this // skill that would come from current stat Modified: sandbox/cdomui/code/src/java/pcgen/core/StatList.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/StatList.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/StatList.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -52,16 +52,8 @@ ownerPC = pc; } - public int getBaseStatFor(final String aStat) + public int getBaseStatFor(final PCStat stat) { - final int x = getIndexOfStatFor(aStat); - - if (x == -1) - { - return 0; - } - - final PCStat stat = stats.get(x); final PlayerCharacter aPC = ownerPC; // Only check for a lock if the stat hasn't been unlocked if (!aPC.hasUnlockedStat(stat)) @@ -79,7 +71,6 @@ { return z; } - Integer score = aPC.getAssoc(stat, AssociationKey.STAT_SCORE); return score == null ? 0 : score; } @@ -97,20 +88,8 @@ return aList; } - /** - * @param aNum - * @return the MOD for any given number - */ - public int getModForNumber(final int aNum) + public int getModForNumber(final int aNum, PCStat stat) { - // Use the formula from stat #1 - // (they all use the same formula) - return getModForNumber(aNum, 1); - } - - public int getModForNumber(final int aNum, final int statIndex) - { - final PCStat stat = stats.get(statIndex); String aString = stat.getStatMod(); ///////////////////////////////////////////////////////////////////////// @@ -131,17 +110,8 @@ return ownerPC.getVariableValue(aString, "").intValue(); } - public int getStatModFor(final String aStat) + public int getStatModFor(PCStat stat) { - final int x = getIndexOfStatFor(aStat); - - if (x == -1) - { - return 0; - } - - final PCStat stat = stats.get(x); - return ownerPC.getVariableValue(stat.getStatMod(), "STAT:" + stat.getAbb()).intValue(); } @@ -186,17 +156,10 @@ * @param aStat The abbreviation of the stat to be calculated * @return The value of the stat */ - public int getTotalStatFor(final String aStat) + public int getTotalStatFor(final PCStat stat) { - int y = getBaseStatFor(aStat); - int x = getIndexOfStatFor(aStat); + int y = getBaseStatFor(stat); - if (x == -1) - { - return y; - } - - final PCStat stat = stats.get(x); final PlayerCharacter aPC = ownerPC; // Only check for a lock if the stat hasn't been unlocked if (!aPC.hasUnlockedStat(stat)) @@ -213,25 +176,6 @@ return y; } - public int getIndexOfStatFor(final String aStat) - { - // see if it starts with STATx where x is a number - if (aStat.startsWith("STAT")) - { - final int x = Integer.parseInt(aStat.substring(4)); - - if ((x < 0) || (x >= stats.size())) - { - return -1; - } - - return x; - } - - // otherwise it must be an abbreviation - return SettingsHandler.getGame().getStatFromAbbrev(aStat); - } - /** * Retrieve a correctly calculated attribute value where one or more * types are excluded. @@ -241,17 +185,10 @@ * @param useEquip Should equipment bonuses be included? * @return The value of the stat */ - public int getPartialStatFor(String aStat, boolean useTemp, boolean useEquip) + public int getPartialStatFor(PCStat stat, boolean useTemp, boolean useEquip) { - int y = getBaseStatFor(aStat); - int x = getIndexOfStatFor(aStat); + int y = getBaseStatFor(stat); - if (x == -1) - { - return y; - } - - final PCStat stat = stats.get(x); final PlayerCharacter aPC = ownerPC; Number val = aPC.getLockedStat(stat); if (val != null) Modified: sandbox/cdomui/code/src/java/pcgen/core/analysis/BonusCalc.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/analysis/BonusCalc.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/analysis/BonusCalc.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -1,11 +1,8 @@ package pcgen.core.analysis; -import java.util.List; - import pcgen.core.PCStat; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; -import pcgen.core.SettingsHandler; public class BonusCalc { @@ -16,18 +13,9 @@ * @param aPC * @return stat mod */ - public static int getStatMod(PObject po, final int statIdx, final PlayerCharacter aPC) + public static int getStatMod(PObject po, PCStat stat, final PlayerCharacter aPC) { - final List<PCStat> statList = SettingsHandler.getGame().getUnmodifiableStatList(); - - if ((statIdx < 0) || (statIdx >= statList.size())) - { - return 0; - } - - final String aStat = statList.get(statIdx).getAbb(); - - return (int) po.bonusTo("STAT", aStat, aPC, aPC); + return (int) po.bonusTo("STAT", stat.getAbb(), aPC, aPC); } } Modified: sandbox/cdomui/code/src/java/pcgen/core/analysis/RaceStat.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/analysis/RaceStat.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/analysis/RaceStat.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -19,47 +19,27 @@ */ package pcgen.core.analysis; -import java.util.List; - import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.helper.StatLock; import pcgen.core.PCStat; import pcgen.core.PObject; -import pcgen.core.SettingsHandler; public class RaceStat { - public static boolean isUnlocked(final int statIdx, PObject po) + public static boolean isUnlocked(PCStat stat, PObject po) { - final List<PCStat> statList = SettingsHandler.getGame() - .getUnmodifiableStatList(); - - if ((statIdx < 0) || (statIdx >= statList.size())) - { - return false; - } - - return po.containsInList(ListKey.UNLOCKED_STATS, statList.get(statIdx)); + return po.containsInList(ListKey.UNLOCKED_STATS, stat); } - public static boolean isNonAbility(final int statIdx, PObject po) + public static boolean isNonAbility(PCStat stat, PObject po) { - final List<PCStat> statList = SettingsHandler.getGame() - .getUnmodifiableStatList(); - - if ((statIdx < 0) || (statIdx >= statList.size())) - { - return true; - } - // An unlock will always override a lock, so check it first - if (isUnlocked(statIdx, po)) + if (isUnlocked(stat, po)) { return false; } - PCStat stat = statList.get(statIdx); for (StatLock sl : po.getSafeListFor(ListKey.STAT_LOCKS)) { if (sl.getLockedStat().equals(stat)) Modified: sandbox/cdomui/code/src/java/pcgen/core/analysis/SkillModifier.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/analysis/SkillModifier.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/analysis/SkillModifier.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -53,7 +53,7 @@ PCStat stat = sk.get(ObjectKey.KEY_STAT); if (stat != null) { - bonus = aPC.getStatList().getStatModFor(stat.getAbb()); + bonus = aPC.getStatList().getStatModFor(stat); bonus += aPC.getTotalBonusTo("SKILL", "STAT." + stat.getAbb()); } bonus += aPC.getTotalBonusTo("SKILL", keyName); @@ -129,7 +129,7 @@ if (Globals.getGameModeHasPointPool()) { ArrayList<Type> typeList = new ArrayList<Type>(); - sk.getKeyStatList(typeList); + sk.getKeyStatList(pc, typeList); for (int i = 0; i < typeList.size(); ++i) { statMod += pc.getTotalBonusTo("SKILL", "TYPE." @@ -140,7 +140,7 @@ } else { - return pc.getStatList().getStatModFor(stat.getAbb()); + return pc.getStatList().getStatModFor(stat); } } @@ -215,7 +215,7 @@ PCStat stat = sk.get(ObjectKey.KEY_STAT); if (stat != null) { - bonus = aPC.getStatList().getStatModFor(stat.getAbb()); + bonus = aPC.getStatList().getStatModFor(stat); bonus += aPC.getTotalBonusTo("SKILL", "STAT." + stat.getAbb()); appendBonusDesc(sk, bonusDetails, bonus, "STAT"); } Modified: sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateModifier.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateModifier.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateModifier.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -24,9 +24,9 @@ import pcgen.cdom.enumeration.ListKey; import pcgen.core.DamageReduction; +import pcgen.core.PCStat; import pcgen.core.PCTemplate; import pcgen.core.PlayerCharacter; -import pcgen.core.SettingsHandler; public class TemplateModifier { @@ -45,20 +45,19 @@ // true than 16 // (the default) - for (int x = 0; x < SettingsHandler.getGame().getUnmodifiableStatList() - .size(); ++x) + for (PCStat stat : aPC.getStatList()) { - if (TemplateStat.isNonAbility(pct, x)) + if (TemplateStat.isNonAbility(pct, stat)) { - mods.append(SettingsHandler.getGame().s_ATTRIBSHORT[x]).append(":nonability "); + mods.append(stat.getAbb()).append(":nonability "); } else { - int statMod = BonusCalc.getStatMod(pct, x, aPC); + int statMod = BonusCalc.getStatMod(pct, stat, aPC); if (statMod != 0) { - mods.append(SettingsHandler.getGame().s_ATTRIBSHORT[x]).append(':').append( + mods.append(stat.getAbb()).append(':').append( statMod).append(' '); } } Modified: sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateStat.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateStat.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/analysis/TemplateStat.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -19,20 +19,17 @@ */ package pcgen.core.analysis; -import java.util.List; - import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.helper.StatLock; import pcgen.core.PCStat; import pcgen.core.PCTemplate; -import pcgen.core.SettingsHandler; public class TemplateStat { /** - * Takes an integer input which it uses to access Games mode's "statlist" - * array. If that stat has been locked at 10 then it is considered a + * Takes a stat. + * If that stat has been locked at 10 then it is considered a * non-ability. * XXX This is insanely bad design, it's completely arse about * face. What should have been done was find a way to mark a stat as a @@ -41,28 +38,19 @@ * means there is no way to actually lock a stat at 10. TODO: Fix this mess! * disparaging comments Andrew Wilson 20060308 * - * @param statIdx - * index number of the stat in question + * @param stat + * the stat in question * * @return Whether this has been defined as a non-ability */ - public static boolean isNonAbility(PCTemplate pct, final int statIdx) + public static boolean isNonAbility(PCTemplate pct, PCStat stat) { - final List<PCStat> statList = - SettingsHandler.getGame().getUnmodifiableStatList(); - - if ((statIdx < 0) || (statIdx >= statList.size())) - { - return true; - } - // An unlock will always override a lock, so check it first - if (TemplateStat.isUnlocked(pct, statIdx)) + if (TemplateStat.isUnlocked(pct, stat)) { return false; } - PCStat stat = statList.get(statIdx); for (StatLock sl : pct.getSafeListFor(ListKey.STAT_LOCKS)) { if (sl.getLockedStat().equals(stat)) @@ -81,22 +69,14 @@ * Takes an integer input which it uses to access Games mode's "statlist" * array. Test if that stat has been unlocked via a DEFINE|UNLOCK * - * @param statIdx - * index number of the stat in question + * @param stat + * the stat in question * * @return Whether this has been unlocked */ - public static boolean isUnlocked(PCTemplate pct, final int statIdx) + public static boolean isUnlocked(PCTemplate pct, PCStat stat) { - final List<PCStat> statList = - SettingsHandler.getGame().getUnmodifiableStatList(); - - if ((statIdx < 0) || (statIdx >= statList.size())) - { - return false; - } - - return pct.containsInList(ListKey.UNLOCKED_STATS, statList.get(statIdx)); + return pct.containsInList(ListKey.UNLOCKED_STATS, stat); } } Modified: sandbox/cdomui/code/src/java/pcgen/core/chooser/SpellListChoiceManager.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/chooser/SpellListChoiceManager.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/chooser/SpellListChoiceManager.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -343,7 +343,7 @@ PCStat ss = aClass.get(ObjectKey.SPELL_STAT); if (ss != null) { - int statMod = aPC.getStatList().getStatModFor(ss.getAbb()); + int statMod = aPC.getStatList().getStatModFor(ss); if (statMod > 0) { Modified: sandbox/cdomui/code/src/java/pcgen/core/chooser/StatChoiceManager.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/chooser/StatChoiceManager.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/chooser/StatChoiceManager.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -25,9 +25,12 @@ import java.util.ArrayList; import java.util.List; + +import pcgen.core.Globals; +import pcgen.core.PCStat; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; -import pcgen.core.SettingsHandler; +import pcgen.rules.context.ReferenceContext; /** * This is the chooser that deals with choosing a stat. @@ -63,23 +66,26 @@ final List<String> availableList, final List<String> selectedList) { - final List<String> excludeList = new ArrayList<String>(); + final List<PCStat> excludeList = new ArrayList<PCStat>(); + ReferenceContext ref = Globals.getContext().ref; for ( String sExclude : getChoiceList() ) { - final int iStat = SettingsHandler.getGame().getStatFromAbbrev(sExclude); + PCStat stat = ref.getAbbreviatedObject(PCStat.class, + sExclude); - if (iStat >= 0) + if (stat != null) { - excludeList.add(SettingsHandler.getGame().s_ATTRIBSHORT[iStat]); + excludeList.add(stat); } } - for (int x = 0; x < SettingsHandler.getGame().s_ATTRIBSHORT.length; ++x) + for (PCStat stat : Globals.getContext().ref + .getConstructedCDOMObjects(PCStat.class)) { - if (!excludeList.contains(SettingsHandler.getGame().s_ATTRIBSHORT[x])) + if (!excludeList.contains(stat)) { - availableList.add(SettingsHandler.getGame().s_ATTRIBSHORT[x]); + availableList.add(stat.getAbb()); } } Modified: sandbox/cdomui/code/src/java/pcgen/core/kit/KitStat.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/kit/KitStat.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/kit/KitStat.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -72,10 +72,9 @@ { int sVal = me.getValue().resolve(aPC, "").intValue(); final StatList statList = aPC.getStatList(); - for (int i = 0; i < statList.size(); i++) + for (PCStat currentStat : statList) { - final PCStat currentStat = statList.getStatAt(i); - if (!aPC.isNonAbility(i) + if (!aPC.isNonAbility(currentStat) && currentStat.getAbb().equals(me.getKey().getAbb())) { aPC.setAssoc(currentStat, AssociationKey.STAT_SCORE, sVal); Modified: sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassData.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassData.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassData.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -24,7 +24,6 @@ import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import pcgen.base.util.WeightedCollection; @@ -38,7 +37,6 @@ import pcgen.core.Globals; import pcgen.core.PCClass; import pcgen.core.PCStat; -import pcgen.core.SettingsHandler; import pcgen.core.SubClass; import pcgen.core.spell.Spell; @@ -54,7 +52,7 @@ private PCClass theClass = null; // TODO Can this be a PCStat? - private WeightedCollection<String> theStatWeights = null; + private WeightedCollection<PCStat> theStatWeights = null; private WeightedCollection<SkillChoice> theSkillWeights = null; private Map<AbilityCategory, WeightedCollection<Ability>> theAbilityWeights = null; private WeightedCollection<Deity> theDeityWeights = null; @@ -79,31 +77,30 @@ } /** - * @param aStatAbbr The stat abbreviation to add + * @param stat The stat to add * @param aWeight The weight to associate with it. */ - public void addStat( final String aStatAbbr, final int aWeight ) + public void addStat( final PCStat stat, final int aWeight ) { if ( theStatWeights == null ) { - theStatWeights = new WeightedCollection<String>(); + theStatWeights = new WeightedCollection<PCStat>(); } - theStatWeights.add(aStatAbbr, aWeight); + theStatWeights.add(stat, aWeight); } /** * @return <tt>WeightedCollection</tt> of stat abbreviations. */ - public WeightedCollection<String> getStatWeights() + public WeightedCollection<PCStat> getStatWeights() { // Make sure that we have all the stats - final List<PCStat> statList = SettingsHandler.getGame().getUnmodifiableStatList(); - for ( final PCStat stat : statList ) + for (final PCStat stat : Globals.getContext().ref + .getConstructedCDOMObjects(PCStat.class)) { - if ( theStatWeights == null || !theStatWeights - .contains(stat.getAbb()) ) + if (theStatWeights == null || !theStatWeights.contains(stat)) { - addStat(stat.getAbb(), 1); + addStat(stat, 1); } } return theStatWeights; Modified: sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassDataParser.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassDataParser.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/npcgen/ClassDataParser.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -44,6 +44,7 @@ import pcgen.core.GameMode; import pcgen.core.Globals; import pcgen.core.PCClass; +import pcgen.core.PCStat; import pcgen.core.SettingsHandler; import pcgen.core.Skill; import pcgen.core.SystemCollections; @@ -283,7 +284,9 @@ final String statAbbr = anAttrs.getValue("value"); //$NON-NLS-1$ if ( statAbbr != null ) { - theCurrentData.addStat(statAbbr, weight); + PCStat stat = Globals.getContext().ref + .getAbbreviatedObject(PCStat.class, statAbbr); + theCurrentData.addStat(stat, weight); } } } Modified: sandbox/cdomui/code/src/java/pcgen/core/npcgen/Configuration.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/npcgen/Configuration.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/npcgen/Configuration.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -39,6 +39,7 @@ import pcgen.core.Globals; import pcgen.core.PCAlignment; import pcgen.core.PCClass; +import pcgen.core.PCStat; import pcgen.core.Race; import pcgen.core.SettingsHandler; import pcgen.core.spell.Spell; @@ -260,7 +261,7 @@ return ret; } - public WeightedCollection<String> getStatWeights(final String aKey) + public WeightedCollection<PCStat> getStatWeights(final String aKey) { ClassData data = theClassData.get(aKey); if ( data == null ) Modified: sandbox/cdomui/code/src/java/pcgen/core/npcgen/NPCGenerator.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/npcgen/NPCGenerator.java 2009-09-01 01:18:27 UTC (rev 10368) +++ sandbox/cdomui/code/src/java/pcgen/core/npcgen/NPCGenerator.java 2009-09-01 01:35:09 UTC (rev 10369) @@ -311,20 +311,17 @@ re... [truncated message content] |