From: <th...@us...> - 2007-03-25 00:43:43
|
Revision: 2578 http://svn.sourceforge.net/pcgen/?rev=2578&view=rev Author: thpr Date: 2007-03-24 17:43:44 -0700 (Sat, 24 Mar 2007) Log Message: ----------- [ 1683259 ] Skill Editor mangles CHOOSE: Tokens Issue#: 1683259 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Skill.java Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Skill.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-03-25 00:33:45 UTC (rev 2577) +++ Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-03-25 00:43:44 UTC (rev 2578) @@ -151,30 +151,7 @@ return aCheck; } - /** - * Get a list of choices - * @return list of choices - */ - public ArrayList<String> getChoiceStringList() - { - String choiceString = getChoiceString(); - if (choiceString.length() == 0) - { - return null; - } - - final StringTokenizer aTok = new StringTokenizer(choiceString, "|"); - final ArrayList<String> aList = new ArrayList<String>(); - - while (aTok.hasMoreTokens()) - { - aList.add(aTok.nextToken()); - } - - return aList; - } - - /** + /** * Get a list of classes * @return classList */ Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2007-03-25 00:33:45 UTC (rev 2577) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2007-03-25 00:43:44 UTC (rev 2578) @@ -2987,15 +2987,11 @@ break; case EditorConstants.EDIT_SKILL: - final Skill mySkill = (Skill) thisPObject; - final String choiceString = mySkill.getChoiceString(); + final String choiceString = thisPObject.getChoiceString(); if ((choiceString != null) && (choiceString.length() > 0)) { - for (Iterator e = ((Skill) thisPObject).getChoiceStringList().iterator(); e.hasNext();) - { - selectedList.add("CHOOSE:" + e.next()); - } + selectedList.add("CHOOSE:" + choiceString); } break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-04-06 01:59:18
|
Revision: 2669 http://svn.sourceforge.net/pcgen/?rev=2669&view=rev Author: jdempsey Date: 2007-04-05 18:59:19 -0700 (Thu, 05 Apr 2007) Log Message: ----------- Fix bug: ArrayIndexOutOfBoundsException after switching gamemodes Issue#: 1694376 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-04-06 00:21:36 UTC (rev 2668) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-04-06 01:59:19 UTC (rev 2669) @@ -15742,7 +15742,15 @@ // Clear all the categories for (final AbilityCategory cat : theAbilities.getKeySet()) { - setAggregateAbilitiesStable(cat, stable); + // Avoid an infinite loop if there is a faulty entry in the key set + if (cat == null) + { + Logging.errorPrint("Null category entry in character's abilities key set " + String.valueOf(theAbilities.getKeySet())); + } + else + { + setAggregateAbilitiesStable(cat, stable); + } } } setAggregateFeatsStable(stable); Modified: Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java 2007-04-06 00:21:36 UTC (rev 2668) +++ Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java 2007-04-06 01:59:19 UTC (rev 2669) @@ -178,10 +178,25 @@ * @return index of Tab */ public int indexOfTab(String aString) { - return characterInfoTabbedPane.indexOfTab(aString); + int index = characterInfoTabbedPane.indexOfTab(aString); + return index; } /** + * Refresh the names of the character tabs - they may be changed when + * the game mode is changed. + */ + public void refreshCharInfoTabs() + { + for (int i = 0; i < characterInfoTabbedPane.getTabCount(); i++) + { + CharacterInfoTab tab = + (CharacterInfoTab) characterInfoTabbedPane + .getComponentAt(i); + characterInfoTabbedPane.setTitleAt(i, tab.getTabName()); + } + } + /** * Get the info description * @return info description */ Modified: Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java 2007-04-06 00:21:36 UTC (rev 2668) +++ Trunk/pcgen/code/src/java/pcgen/gui/GameModes.java 2007-04-06 01:59:19 UTC (rev 2669) @@ -276,6 +276,7 @@ if (Globals.getRootFrame() != null) { PCGen_Frame1.getInst().setGameModeTitle(); + PCGen_Frame1.getInst().refreshCharInfoTabs(); } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java 2007-04-06 00:21:36 UTC (rev 2668) +++ Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java 2007-04-06 01:59:19 UTC (rev 2669) @@ -3561,4 +3561,16 @@ { pcgenMenuBar.handleAbout(); } + + /** + * Refresh the names of the character tabs - they may be changed when + * the game mode is changed. + */ + public void refreshCharInfoTabs() + { + if (characterPane != null) + { + characterPane.refreshCharInfoTabs(); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-04-06 12:44:32
|
Revision: 2673 http://svn.sourceforge.net/pcgen/?rev=2673&view=rev Author: jdempsey Date: 2007-04-06 05:44:33 -0700 (Fri, 06 Apr 2007) Log Message: ----------- Fix bug: Create new NPC accessible without sources loaded Issue#: 1694373 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/BioSet.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/AlignGeneratorOption.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassData.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassDataParser.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassGeneratorOption.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/NPCGenerator.java Trunk/pcgen/code/src/java/pcgen/core/npcgen/RaceGeneratorOption.java Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties Modified: Trunk/pcgen/code/src/java/pcgen/core/BioSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/BioSet.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/core/BioSet.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -763,7 +763,7 @@ .getRace().getKeyName().trim()); final String rv; - if (line != null) + if (line != null && line.length() > 0) { final StringTokenizer aTok = new StringTokenizer(line, "|"); final List<String> aList = new ArrayList<String>(); Modified: Trunk/pcgen/code/src/java/pcgen/core/npcgen/AlignGeneratorOption.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/npcgen/AlignGeneratorOption.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/core/npcgen/AlignGeneratorOption.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -64,7 +64,10 @@ { Logging.errorPrintLocalised("NPCGen.Options.AlignNotFound", aValue); //$NON-NLS-1$ } - theChoices.add(aWeight, align); + else + { + theChoices.add(aWeight, align); + } } /** Modified: Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassData.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassData.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassData.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -385,10 +385,13 @@ if ( theSubClassWeights == null ) { final PCClass pcClass = Globals.getClassKeyed( theClassKey ); - final List<SubClass> subClasses = pcClass.getSubClassList(); - for ( final SubClass subClass : subClasses ) + if (pcClass != null) { - addSubClass( subClass.getKeyName(), 1 ); + final List<SubClass> subClasses = pcClass.getSubClassList(); + for ( final SubClass subClass : subClasses ) + { + addSubClass( subClass.getKeyName(), 1 ); + } } } return theSubClassWeights; Modified: Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassDataParser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassDataParser.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassDataParser.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -461,6 +461,12 @@ @Override public void endElement(final String uri, final String localName, final String qName) { + // If we aren't in a nested state, ignore the end tag as the + // start tag was obviously ignored. + if ( theState == ParserState.INIT ) + { + return; + } if ( "skills".equals(qName) && theState == ParserState.SKILLDATA ) //$NON-NLS-1$ { if (remainingWeight > 0) @@ -507,16 +513,16 @@ theCurrentCategory = null; theState = ParserState.CLASSDATA; } - else if ( "class".equals(qName) ) //$NON-NLS-1$ + else if ( "class".equals(qName) && theState != ParserState.INIT ) //$NON-NLS-1$ { theList.add(theCurrentData); theState = ParserState.INIT; } - else if ( "stats".equals(qName) ) //$NON-NLS-1$ + else if ( "stats".equals(qName)) //$NON-NLS-1$ { theState = ParserState.CLASSDATA; } - else if ( "level".equals(qName) ) //$NON-NLS-1$ + else if ( "level".equals(qName)) //$NON-NLS-1$ { if ( remainingWeight > 0 ) { Modified: Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassGeneratorOption.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassGeneratorOption.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/core/npcgen/ClassGeneratorOption.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -75,7 +75,10 @@ { Logging.errorPrintLocalised("NPCGen.Options.ClassNotFound", aValue); //$NON-NLS-1$ } - theChoices.add(aWeight, pcClass); + else + { + theChoices.add(aWeight, pcClass); + } } /** Modified: Trunk/pcgen/code/src/java/pcgen/core/npcgen/NPCGenerator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/npcgen/NPCGenerator.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/core/npcgen/NPCGenerator.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -231,6 +231,32 @@ if (pcRanks + ranks > maxRanks) { Logging.debugPrint("NPCGenerator: Skill already at max."); //$NON-NLS-1$ + // Check that there are some skills we can advance in + boolean ranksLeft = false; + for (SkillChoice skillChoice : skillList) + { + Skill chkSkill = skillChoice.getSkill(); + if (chkSkill != null) + { + Skill chkPcSkill = aPC.getSkillKeyed(chkSkill.getKeyName()); + if (chkPcSkill == null) + { + ranksLeft = true; + break; + } + if (chkPcSkill.getRank().doubleValue() < aPC.getMaxRank(chkPcSkill.getKeyName(), aClass). + doubleValue()) + { + ranksLeft = true; + break; + } + } + } + if (!ranksLeft) + { + Logging.errorPrint("Unable to spend all skill points."); + break; + } continue; } } @@ -251,6 +277,10 @@ private int getAlignment(final AlignGeneratorOption option) { + if (option == null) + { + return -1; + } final WeightedList<PCAlignment> options = option.getList(); int val = Globals.getRandomInt(options.size()); return SettingsHandler.getGame().getIndexOfAlignment(options.get(val).getKeyName()); @@ -508,8 +538,10 @@ private void selectSubClass( final PlayerCharacter aPC, final PCClass aClass ) { WeightedList<String> subClasses = theConfiguration.getSubClassWeights( aClass.getKeyName() ); - // TODO - Probably should do some checking here. - aClass.setSubClassKey( subClasses.get( Globals.getRandomInt(subClasses.size()) ) ); + if (subClasses != null && subClasses.size() > 0) + { + aClass.setSubClassKey( subClasses.get( Globals.getRandomInt(subClasses.size()) ) ); + } } /** @@ -551,9 +583,13 @@ for ( int i = 0; i < MAX_RETRIES; i++ ) { final int randAlign = getAlignment( align ); - Logging.debugPrint( "NPCGenerator: Selected " + randAlign + " for alignment " + align ); //$NON-NLS-1$//$NON-NLS-2$ - aPC.setAlignment(randAlign, false); - + if (randAlign > 0) + { + Logging + .debugPrint("NPCGenerator: Selected " + randAlign + " for alignment " + align); //$NON-NLS-1$//$NON-NLS-2$ + aPC.setAlignment(randAlign, false); + } + final Race r = getRace(aRace); if (r == null) { @@ -610,6 +646,8 @@ break; } // TODO Remove a failed class from the list. + aClass = null; + break; } } if (aClass == null) Modified: Trunk/pcgen/code/src/java/pcgen/core/npcgen/RaceGeneratorOption.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/npcgen/RaceGeneratorOption.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/core/npcgen/RaceGeneratorOption.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -76,7 +76,10 @@ { Logging.errorPrintLocalised("NPCGen.Options.RaceNotFound", aValue); //$NON-NLS-1$ } - theChoices.add(aWeight, race); + else + { + theChoices.add(aWeight, race); + } } /** Modified: Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java 2007-04-06 12:44:33 UTC (rev 2673) @@ -659,6 +659,12 @@ toolBar.newItem.setEnabled(itemState); mainPopupMenu.newItem.setEnabled(itemState); pcPopupMenu.getNewItem().setEnabled(itemState); + + // New Random NPC + pcgenMenuBar.newNPCItem.setEnabled(itemState); + toolBar.newNPCItem.setEnabled(itemState); + mainPopupMenu.newNPCItem.setEnabled(itemState); + pcPopupMenu.getNewNPCItem().setEnabled(itemState); } /** @@ -669,12 +675,6 @@ { pcgenMenuBar.openItem.setEnabled(itemState); toolBar.openItem.setEnabled(itemState); - - // TODO WIP please leave boomer70 - pcgenMenuBar.newNPCItem.setEnabled(itemState); - toolBar.newNPCItem.setEnabled(itemState); - mainPopupMenu.newNPCItem.setEnabled(itemState); - pcPopupMenu.getNewNPCItem().setEnabled(itemState); } /** @@ -1381,6 +1381,13 @@ // WIP please leave boomer70 void doNewNPC() { + if (!Globals.displayListsHappy()) + { + ShowMessageDelegate.showMessageDialog(PropertyFactory.getString("in_newCharNoSources"), Constants.s_APPNAME, MessageType.ERROR); + + return; + } + final PlayerCharacter pc = new PlayerCharacter(); final NPCGeneratorDlg genDlg = new NPCGeneratorDlg(); Modified: Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-04-06 10:09:38 UTC (rev 2672) +++ Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-04-06 12:44:33 UTC (rev 2673) @@ -4008,6 +4008,7 @@ NPCGen.Options.AlignNotFound=The specified alignment ({0}) not found. NPCGen.Options.ClassNotFound=The specified class ({0}) not found. +NPCGen.Options.RaceNotFound=The specified race ({0}) not found. NPCGen.Errors.CantSelectDeity=Unable to select deity. Character does not qualify for any deities. # added 2007-01-23 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <za...@us...> - 2007-04-09 12:56:10
|
Revision: 2707 http://svn.sourceforge.net/pcgen/?rev=2707&view=rev Author: zaister Date: 2007-04-09 05:56:10 -0700 (Mon, 09 Apr 2007) Log Message: ----------- [ 1696862 ] Show skill rank breakdown on Skills Tab Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java Trunk/pcgen/code/src/java/pcgen/core/Skill.java Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java Modified: Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2007-04-09 01:23:27 UTC (rev 2706) +++ Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2007-04-09 12:56:10 UTC (rev 2707) @@ -178,6 +178,7 @@ private static boolean showStatDialogAtLevelUp = true; private static boolean showToolBar = true; private static boolean showSkillModifier = false; + private static boolean showSkillRanks = false; private static boolean showWarningAtFirstLevelUp = true; private static String skinLFThemePack = null; private static boolean summaryTabShown = false; @@ -1238,6 +1239,7 @@ setShowTipOfTheDay(getPCGenOption("showTipOfTheDay", true)); //$NON-NLS-1$ setShowToolBar(getPCGenOption("showToolBar", true)); //$NON-NLS-1$ setShowSkillModifier(getPCGenOption("showSkillModifier", true)); //$NON-NLS-1$ + setShowSkillRanks(getPCGenOption("showSkillRanks", true)); //$NON-NLS-1$ setShowWarningAtFirstLevelUp(getPCGenOption("showWarningAtFirstLevelUp", true)); //$NON-NLS-1$ setSingleChoicePreference(getPCGenOption("ChooserSingleChoiceMethod", Constants.CHOOSER_SINGLECHOICEMETHOD_NONE)); //$NON-NLS-1$ setSkillsTab_AvailableListMode(getPCGenOption("SkillsTab.availableListMode", //$NON-NLS-1$ @@ -1570,6 +1572,7 @@ setPCGenOption("showTipOfTheDay", getShowTipOfTheDay()); //$NON-NLS-1$ setPCGenOption("showToolBar", isShowToolBar()); //$NON-NLS-1$ setPCGenOption("showSkillModifier", getShowSkillModifier()); //$NON-NLS-1$ + setPCGenOption("showSkillRanks", getShowSkillRanks()); //$NON-NLS-1$ setPCGenOption("showSingleBoxPerBundle", getShowSingleBoxPerBundle()); //$NON-NLS-1$ setPCGenOption("showWarningAtFirstLevelUp", isShowWarningAtFirstLevelUp()); //$NON-NLS-1$ setPCGenOption("SkillsTab.availableListMode", getSkillsTab_AvailableListMode()); //$NON-NLS-1$ @@ -3015,6 +3018,16 @@ return showSkillModifier; } + public static void setShowSkillRanks(final boolean argShowSkillRanks) + { + showSkillRanks = argShowSkillRanks; + } + + public static boolean getShowSkillRanks() + { + return showSkillRanks; + } + private static void setSpellMarketPriceAdjusted(final boolean aBool) { spellMarketPriceAdjusted = aBool; Modified: Trunk/pcgen/code/src/java/pcgen/core/Skill.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-04-09 01:23:27 UTC (rev 2706) +++ Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-04-09 12:56:10 UTC (rev 2707) @@ -1695,6 +1695,22 @@ return bonusDetails.toString(); } + public String getRanksExplanation() + { + final StringBuffer ranksDetails = new StringBuffer(); + + for ( int i = 0; i < getRankList().size(); i++ ) + { + ranksDetails.append(getRankList().get(i)); + if (i + 1 < getRankList().size()) + { + ranksDetails.append(", "); + } + } + + return ranksDetails.toString(); + } + /** * Append a description of the bonus to the supplied buffer if * the bonus value is not 0. Modified: Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java 2007-04-09 01:23:27 UTC (rev 2706) +++ Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java 2007-04-09 12:56:10 UTC (rev 2707) @@ -263,7 +263,9 @@ private static String in_showImagePreview = PropertyFactory.getString("in_Prefs_showImagePreview"); private static String in_showSkillModifierBreakdown = - PropertyFactory.getString("in_Prefs_showSkillModifierBreakdown"); + PropertyFactory.getString("in_Prefs_showSkillModifierBreakdown"); + private static String in_showSkillRanksBreakdown = + PropertyFactory.getString("in_Prefs_showSkillRanksBreakdown"); private static String in_showSingleBoxPerBundle = PropertyFactory.getString("in_Prefs_showSingleBoxPerBundle"); private static String in_sourceDisplay = @@ -378,6 +380,7 @@ private JCheckBox showSponsors = new JCheckBox(); private JCheckBox statDialogShownAtLevelUp = new JCheckBox(); private JCheckBox showSkillModifier = new JCheckBox(); + private JCheckBox showSkillRanks = new JCheckBox(); private JCheckBox enforceSpendingBeforeLevelUp = new JCheckBox(); private JCheckBox allowOverride = new JCheckBox(); @@ -840,6 +843,7 @@ .getSelectedIndex()); SettingsHandler.setUseFeatBenefits(!featDescriptionShown.isSelected()); SettingsHandler.setShowSkillModifier(showSkillModifier.isSelected()); + SettingsHandler.setShowSkillRanks(showSkillRanks.isSelected()); // Look and Feel int sourceIndex = 500; // XXX - magic number? @@ -1353,6 +1357,7 @@ showMemory.setSelected(SettingsHandler.isShowMemoryArea()); showImagePreview.setSelected(SettingsHandler.isShowImagePreview()); showSkillModifier.setSelected(SettingsHandler.getShowSkillModifier()); + showSkillRanks.setSelected(SettingsHandler.getShowSkillRanks()); showToolbar.setSelected(SettingsHandler.isToolBarShown()); toolTipTextShown.setSelected(SettingsHandler.isToolTipTextShown()); useOutputNamesEquipment.setSelected(SettingsHandler @@ -1768,6 +1773,7 @@ options.put(in_showMemory, showMemory); options.put(in_showImagePreview, showImagePreview); options.put(in_showSkillModifierBreakdown, showSkillModifier); + options.put(in_showSkillRanksBreakdown, showSkillRanks); options.put(in_showToolBar, showToolbar); options.put(in_showToolTips, toolTipTextShown); options.put(in_singleChoiceOption, cmbChoiceMethods); Modified: Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-04-09 01:23:27 UTC (rev 2706) +++ Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-04-09 12:56:10 UTC (rev 2707) @@ -2913,6 +2913,8 @@ in_Prefs_showSkillModifierBreakdown=Show skill modifier breakdown on Skills Tab +in_Prefs_showSkillRanksBreakdown=Show skill rank breakdown on Skills Tab + in_Prefs_showToolTips=Show Tooltip Text in_Prefs_showToolBar=Show Toolbar Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2007-04-09 01:23:27 UTC (rev 2706) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2007-04-09 12:56:10 UTC (rev 2707) @@ -2339,6 +2339,19 @@ } } + if (SettingsHandler.getShowSkillRanks()) + { + final Skill pcSkill = pc.getSkillKeyed(aSkill.getKeyName()); + if (pcSkill != null) + { + bString = pcSkill.getRanksExplanation(); + if (bString.length() != 0) + { + b.append("<br><b>PC Ranks</b>: ").append(bString); + } + } + } + b.append("</html>"); //$NON-NLS-1$ infoLabel.setText(b.toString()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-05-10 12:54:00
|
Revision: 2884 http://svn.sourceforge.net/pcgen/?rev=2884&view=rev Author: jdempsey Date: 2007-05-10 05:54:01 -0700 (Thu, 10 May 2007) Log Message: ----------- Fix bug: NPC Generator doesn't show alignment under 3.0 Issue#: 1715037 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/npcgen/Configuration.java Trunk/pcgen/code/src/java/pcgen/util/chooser/RandomChooser.java Modified: Trunk/pcgen/code/src/java/pcgen/core/npcgen/Configuration.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/npcgen/Configuration.java 2007-05-09 03:31:01 UTC (rev 2883) +++ Trunk/pcgen/code/src/java/pcgen/core/npcgen/Configuration.java 2007-05-10 12:54:01 UTC (rev 2884) @@ -36,6 +36,7 @@ import pcgen.core.Domain; import pcgen.core.GameMode; import pcgen.core.Globals; +import pcgen.core.PCAlignment; import pcgen.core.PCClass; import pcgen.core.Race; import pcgen.core.SettingsHandler; @@ -152,6 +153,26 @@ ret.add((AlignGeneratorOption)opt); } } + for (final PCAlignment align : SettingsHandler.getGame() + .getUnmodifiableAlignmentList()) + { + boolean included = false; + for (AlignGeneratorOption option : ret) + { + if (option.getName().equals(align.getDisplayName())) + { + included = true; + break; + } + } + if (!align.getDisplayName().equals(Constants.s_NONE) && !included) + { + final AlignGeneratorOption opt = new AlignGeneratorOption(); + opt.setName(align.getDisplayName()); + opt.addChoice(1, align.getKeyName()); + ret.add(opt); + } + } return ret; } Modified: Trunk/pcgen/code/src/java/pcgen/util/chooser/RandomChooser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/util/chooser/RandomChooser.java 2007-05-09 03:31:01 UTC (rev 2883) +++ Trunk/pcgen/code/src/java/pcgen/util/chooser/RandomChooser.java 2007-05-10 12:54:01 UTC (rev 2884) @@ -184,7 +184,7 @@ */ public void setVisible(boolean b) { - while (thePool > 0) + while (thePool > 0 && theAvailableList.size() > 0) { selectAvailable(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pe...@us...> - 2007-05-25 15:24:21
|
Revision: 3006 http://svn.sourceforge.net/pcgen/?rev=3006&view=rev Author: perchrh Date: 2007-05-25 08:24:15 -0700 (Fri, 25 May 2007) Log Message: ----------- When traversing the skill list using PlayerCharacter:getSkillList() take a copy of the list before accessing it, or we might have that it changed while reading it. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/Skill.java Trunk/pcgen/code/src/java/pcgen/core/chooser/SkillsChoiceManager.java Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSpecialAbilities.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java Trunk/pcgen/code/src/java/pcgen/io/exporttoken/SkillpointsToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -2939,8 +2939,9 @@ { returnValue += li.getSkillPointsGained(); } - - for (Skill aSkill : getSkillList()) + + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill aSkill : skillList) { for (String bSkill : aSkill.getRankList()) { @@ -3644,7 +3645,8 @@ } } - for (Skill obj : getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill obj : skillList) { final String varInList = checkForVariableInList(obj, variableString, isMax, Constants.EMPTY_STRING, @@ -6410,7 +6412,8 @@ public Skill getSkillKeyed(final String skillKey) { - for (Skill skill : getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill skill : skillList) { if (skill.getKeyName().equalsIgnoreCase(skillKey)) { @@ -6604,7 +6607,8 @@ addSpells(ability); } - for (Skill skill : getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill skill : skillList) { addSpells(skill); } @@ -7646,7 +7650,8 @@ // // First, check to see if skill is already in list // - for (Skill skill : getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill skill : skillList) { if (skill.getKeyName().equals(addSkill.getKeyName())) { @@ -8760,7 +8765,8 @@ SR = Math.max(SR, aFeat.getSR(this)); } - for (Skill skill : getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill skill : skillList) { SR = Math.max(SR, skill.getSR(this)); } @@ -9519,8 +9525,10 @@ public int languageNum(final boolean includeSpeakLanguage) { + int i = (int) getStatBonusTo("LANG", "BONUS"); final Race pcRace = getRace(); + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); if (i < 0) { @@ -9529,7 +9537,7 @@ if (includeSpeakLanguage) { - for (Skill skill : getSkillList()) + for (Skill skill : skillList) { if (skill.getChoiceString().indexOf("Language") >= 0) { @@ -12817,6 +12825,7 @@ private void addNewSkills(final int level) { final List<Skill> addItems = new ArrayList<Skill>(); + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); for (Skill aSkill : Globals.getSkillList()) { @@ -12826,7 +12835,7 @@ * Must do brute force search - no guarantee it's sorted */ boolean found = false; - for (Skill sk : getSkillList()) { + for (Skill sk : skillList) { if (sk.getKeyName().equals(aSkill.getKeyName())) { found = true; break; @@ -14847,7 +14856,8 @@ aClone.primaryWeapons.addAll(getPrimaryWeapons()); aClone.secondaryWeapons.addAll(getSecondaryWeapons()); aClone.shieldProfList.addAll(getShieldProfList()); - for (Skill skill : getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill skill : skillList) { aClone.skillList.add((skill.clone())); } @@ -17018,7 +17028,8 @@ } } - for (Skill skill : getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(getSkillList()); + for (Skill skill : skillList) { final List<Ability> aList = skill.getVirtualFeatList(); Modified: Trunk/pcgen/code/src/java/pcgen/core/Skill.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -243,7 +243,8 @@ } } - for (Skill aSkill : aPC.getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(aPC.getSkillList()); + for (Skill aSkill : skillList) { if (aSkill.hasCSkill(keyName)) { @@ -696,7 +697,8 @@ { Skill languageSkill = null; - for (Skill aSkill : aPC.getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(aPC.getSkillList()); + for (Skill aSkill : skillList) { if (aSkill.getChoiceString().toLowerCase().indexOf("language") >= 0) { @@ -1435,9 +1437,10 @@ } } - for ( Skill skill : aPC.getSkillList() ) + final List<Skill> skillList = new ArrayList<Skill>(aPC.getSkillList()); + for (Skill aSkill : skillList) { - if (skill.hasCcSkill(keyName)) + if (aSkill.hasCcSkill(keyName)) { return true; } Modified: Trunk/pcgen/code/src/java/pcgen/core/chooser/SkillsChoiceManager.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/chooser/SkillsChoiceManager.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/core/chooser/SkillsChoiceManager.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -23,6 +23,7 @@ */ package pcgen.core.chooser; +import java.util.ArrayList; import java.util.List; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; @@ -64,13 +65,14 @@ * @param selectedList */ public void getChoices( - final PlayerCharacter aPc, + final PlayerCharacter aPC, final List<String> availableList, final List<String> selectedList) { - for ( Skill skill : aPc.getSkillList() ) + final List<Skill> skillList = new ArrayList<Skill>(aPC.getSkillList()); + for (Skill aSkill : skillList) { - availableList.add(skill.getKeyName()); + availableList.add(aSkill.getKeyName()); } pobject.addAssociatedTo(selectedList); Modified: Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -25,6 +25,7 @@ import pcgen.core.CharacterDomain; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; +import pcgen.core.Skill; import pcgen.util.DoubleKeyMap; import java.util.HashMap; @@ -112,8 +113,9 @@ buildSpellInfoMap(spellInfoMap, key1, key2, domains.iterator()); } - if (!pc.getSkillList().isEmpty()) { - e = pc.getSkillList().iterator(); + final List<Skill> skillList = new ArrayList<Skill>(pc.getSkillList()); + if (!skillList.isEmpty()) { + e = skillList.iterator(); buildSpellInfoMap(spellInfoMap, key1, key2, e); } @@ -218,9 +220,10 @@ e = pc.getCharacterDomainList().iterator(); buildSpellLevelMap(levelMatch, e); } - - if (!pc.getSkillList().isEmpty()) { - e = pc.getSkillList().iterator(); + + final List<Skill> skillList = new ArrayList<Skill>(pc.getSkillList()); + if (!skillList.isEmpty()) { + e = skillList.iterator(); buildSpellLevelMap(levelMatch, e); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -518,8 +518,8 @@ private int getHighestOutputIndex() { int maxOutputIndex = 0; - - for (Skill bSkill : pc.getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(pc.getSkillList()); + for (Skill bSkill : skillList) { if (bSkill.getOutputIndex() > maxOutputIndex) { Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSpecialAbilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSpecialAbilities.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSpecialAbilities.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -514,8 +514,9 @@ { SortedSet<Language> autoLangs = pc.getAutoLanguages(); Skill speakLanguage = null; - - for (final Skill aSkill : pc.getSkillList()) + + final List<Skill> skillList = new ArrayList<Skill>(pc.getSkillList()); + for (Skill aSkill : skillList) { if (aSkill.getChoiceString().indexOf( PropertyFactory.getString("in_language")) >= 0) Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -2603,7 +2603,8 @@ // // Iterate through all the PC's Skills - for (Skill aSkill : pc.getSkillList()) + List<Skill> skillList = new ArrayList<Skill>(pc.getSkillList()); + for (Skill aSkill : skillList) { for (BonusObj aBonus : aSkill.getBonusList()) { Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -39,6 +39,7 @@ import pcgen.core.utils.ListKey; import java.util.*; + import pcgen.core.pclevelinfo.PCLevelInfoStat; /** @@ -610,7 +611,8 @@ buffer.append(LINE_SEP); } - for (Skill skill : thePC.getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(thePC.getSkillList()); + for (Skill skill : skillList) { if (!skill.containsListFor(selectedArmorProfListKey)) { @@ -1951,8 +1953,9 @@ } thePC.populateSkills(includeSkills); - - for (Skill skill : thePC.getSkillList()) + + final List<Skill> skillList = new ArrayList<Skill>(thePC.getSkillList()); + for (Skill skill : skillList) { if ((skill.getRank().doubleValue() > 0) || (skill.getOutputIndex() != 0)) Modified: Trunk/pcgen/code/src/java/pcgen/io/exporttoken/SkillpointsToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/exporttoken/SkillpointsToken.java 2007-05-25 12:50:37 UTC (rev 3005) +++ Trunk/pcgen/code/src/java/pcgen/io/exporttoken/SkillpointsToken.java 2007-05-25 15:24:15 UTC (rev 3006) @@ -33,6 +33,8 @@ import pcgen.util.Logging; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; import java.util.StringTokenizer; /** @@ -173,7 +175,8 @@ public static int getUsedSkillPoints(PlayerCharacter pc) { float usedPoints = 0; - for (Skill aSkill : pc.getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(pc.getSkillList()); + for (Skill aSkill : skillList) { if ((aSkill.getRank().doubleValue() > 0) || (aSkill.getOutputIndex() != 0)) @@ -208,7 +211,8 @@ } PCClass targetClass = pc.getClassList().get(classNum); float usedPoints = 0; - for (Skill aSkill : pc.getSkillList()) + final List<Skill> skillList = new ArrayList<Skill>(pc.getSkillList()); + for (Skill aSkill : skillList) { if ((aSkill.getRank().doubleValue() > 0) || (aSkill.getOutputIndex() != 0)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-05-26 12:21:51
|
Revision: 3022 http://svn.sourceforge.net/pcgen/?rev=3022&view=rev Author: jdempsey Date: 2007-05-26 05:21:53 -0700 (Sat, 26 May 2007) Log Message: ----------- Fix bug: Cannot change output order on automatic equipment - Copy r3021 from 5.12.x branch Issue#: 1687674 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/PObject.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2007-05-26 12:13:34 UTC (rev 3021) +++ Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2007-05-26 12:21:53 UTC (rev 3022) @@ -3213,7 +3213,8 @@ final Equipment newEq = aEq.clone(); newEq.setQty(1); newEq.setAutomatic(true); - newEq.setOutputIndex(aList.size()); + int index = aPC.getCachedOutputIndex(newEq.getKeyName()); + newEq.setOutputIndex(index >= 0 ? index : aList.size()+1); aList.add(newEq); } } Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-05-26 12:13:34 UTC (rev 3021) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-05-26 12:21:53 UTC (rev 3022) @@ -153,6 +153,7 @@ // List of Equipment private List<Equipment> equipmentList = new ArrayList<Equipment>(); private List<Equipment> equipmentMasterList = new ArrayList<Equipment>(); + private Map<String, Integer> autoEquipOutputOrderCache = new HashMap<String, Integer>(); private List<PCLevelInfo> pcLevelInfo = new ArrayList<PCLevelInfo>(); // TODO This probably should not be a member but should be passed around private List<BonusObj> processedBonusList = new ArrayList<BonusObj>(); @@ -4059,6 +4060,43 @@ } /** + * Cache the output index of an automatic equipment item. + * @param key The key of the equipment item. + * @param index The output index. + */ + public void cacheOutputIndex(String key, int index) + { + Logging.errorPrint("Caching " + key + " - " + index + " direct"); + autoEquipOutputOrderCache.put(key, index); + } + + /** + * Cache the output index of an automatic equipment item. + * @param item The equipment item. + */ + public void cacheOutputIndex(Equipment item) + { + if (item.isAutomatic()) + { + Logging.errorPrint("Caching " + item.getKeyName() + " - " + item + .getOutputIndex() + " item"); + autoEquipOutputOrderCache.put(item.getKeyName(), item + .getOutputIndex()); + } + } + + /** + * Retrieve the cached output idex of the automatic equipment item + * @param key The key of the equipment item. + * @return The output index. + */ + public int getCachedOutputIndex(String key) + { + Integer order = autoEquipOutputOrderCache.get(key); + return order != null ? order : -1; + } + + /** * Update the number of a particular equipment item the character possesses. * Mostly concerned with ensuring that the spellbook objects remain in sync * with the number of equipment spellbooks. Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java 2007-05-26 12:13:34 UTC (rev 3021) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java 2007-05-26 12:21:53 UTC (rev 3022) @@ -902,8 +902,6 @@ if (autoSort.isSelected()) { updatedItem.setOutputIndex(nextOutputIndex); - resortSelected(ResortComparator.RESORT_NAME, - ResortComparator.RESORT_ASCENDING); } else { @@ -911,6 +909,7 @@ { updatedItem .setOutputIndex(getHighestOutputIndex() + 1); + pc.cacheOutputIndex(updatedItem); } } @@ -919,6 +918,11 @@ updatedItem.setQty(qty); updatedItem.setNumberCarried(qty); pc.addEquipment(updatedItem); + if (autoSort.isSelected()) + { + resortSelected(ResortComparator.RESORT_NAME, + ResortComparator.RESORT_ASCENDING); + } // Update the selected table selectedModel.addItemToModel(updatedItem, true); @@ -2495,6 +2499,10 @@ if (item.getOutputIndex() >= 0) { item.setOutputIndex(nextOutputIndex++); + if (item.isAutomatic()) + { + pc.cacheOutputIndex(item); + } } } @@ -3687,6 +3695,11 @@ if (eq != null) { retVal = Integer.valueOf(eq.getOutputIndex()); + if (eq.isAutomatic()) + { + // Automatic equip is onstantly recreated, so grab the cached index + retVal = pc.getCachedOutputIndex(eq.getKeyName()); + } } break; @@ -3805,11 +3818,19 @@ if ((item.getOutputIndex() > -1) && (item != eq)) { item.setOutputIndex(workingIndex++); + if (item.isAutomatic()) + { + pc.cacheOutputIndex(item); + } } } selectedModel.updateTree(); selectedTable.updateUI(); + if (eq.isAutomatic()) + { + pc.cacheOutputIndex(eq); + } pc.setDirty(true); } Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2007-05-26 12:13:34 UTC (rev 3021) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2007-05-26 12:21:53 UTC (rev 3022) @@ -4477,6 +4477,10 @@ } aEquip.setOutputIndex(index); + if (aEquip.isAutomatic()) + { + thePC.cacheOutputIndex(aEquip); + } } else if (TAG_COST.equals(tag)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-07-03 09:57:09
|
Revision: 3296 http://svn.sourceforge.net/pcgen/?rev=3296&view=rev Author: jdempsey Date: 2007-07-03 02:57:11 -0700 (Tue, 03 Jul 2007) Log Message: ----------- Fix bug: Template sorting requires double click to open sub tree Issue#: 1734820 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java Trunk/pcgen/code/src/java/pcgen/gui/utils/LabelTreeCellRenderer.java Modified: Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2007-07-03 01:50:15 UTC (rev 3295) +++ Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2007-07-03 09:57:11 UTC (rev 3296) @@ -1253,6 +1253,8 @@ setSpellsTab_SelectedListMode(getPCGenOption("SpellsTab.selectedListMode", GuiConstants.INFOSPELLS_VIEW_CLASS)); //$NON-NLS-1$ setSummaryTabShown(getPCGenOption("summaryTabShown", true)); //$NON-NLS-1$ setTabPlacement(getOptionTabPlacement("tabPlacement", SwingConstants.BOTTOM)); //$NON-NLS-1$ + setTemplateSelTab_ListMode(getPCGenOption("TemplateTab.selectedListMode", GuiConstants.INFOTEMPLATE_VIEW_NAME)); //$NON-NLS-1$ + setTemplateTab_ListMode(getPCGenOption("TemplateTab.availableListMode", GuiConstants.INFOTEMPLATE_VIEW_NAME)); //$NON-NLS-1$ setToolTipTextShown(getPCGenOption("toolTipTextShown", true)); //$NON-NLS-1$ setUseHigherLevelSlotsDefault(getPCGenOption("useHigherLevelSlotsDefault", false)); //$NON-NLS-1$ setUseWaitCursor(getPCGenOption("useWaitCursor", true)); //$NON-NLS-1$ @@ -1586,6 +1588,8 @@ setPCGenOption("SpellsTab.selectedListMode", getSpellsTab_SelectedListMode()); //$NON-NLS-1$ setPCGenOption("summaryTabShown", isSummaryTabShown()); //$NON-NLS-1$ setPCGenOption("tabPlacement", convertTabPlacementToString(tabPlacement)); //$NON-NLS-1$ + setPCGenOption("TemplateTab.availableListMode", getTemplateTab_ListMode()); //$NON-NLS-1$ + setPCGenOption("TemplateTab.selectedListMode", getTemplateSelTab_ListMode()); //$NON-NLS-1$ setPCGenOption("toolTipTextShown", isToolTipTextShown()); //$NON-NLS-1$ setPCGenOption("useHigherLevelSlotsDefault", isUseHigherLevelSlotsDefault()); //$NON-NLS-1$ setPCGenOption("useMonsterDefault", isUseMonsterDefault()); //$NON-NLS-1$ Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java 2007-07-03 01:50:15 UTC (rev 3295) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTemplates.java 2007-07-03 09:57:11 UTC (rev 3296) @@ -1,5 +1,5 @@ /* - * InfoRace.java + * InfoTemplate.java * Copyright 2002 (C) Bryan McRoberts * * This library is free software; you can redistribute it and/or @@ -346,7 +346,8 @@ // View List Sanity check // int iView = SettingsHandler.getTemplateTab_ListMode(); - if (iView >= GuiConstants.INFOTEMPLATE_VIEW_NAME) + if (iView >= GuiConstants.INFOTEMPLATE_VIEW_NAME + && iView <= GuiConstants.INFOTEMPLATE_VIEW_SOURCE_NAME) { viewMode = iView; } @@ -357,9 +358,10 @@ viewComboBox.setSelectedIndex(viewMode); iView = SettingsHandler.getTemplateSelTab_ListMode(); - if (iView >= GuiConstants.INFOTEMPLATE_VIEW_NAME) + if (iView >= GuiConstants.INFOTEMPLATE_VIEW_NAME + && iView <= GuiConstants.INFOTEMPLATE_VIEW_SOURCE_NAME) { - viewMode = iView; + viewSelMode = iView; } SettingsHandler.setTemplateSelTab_ListMode(viewSelMode); viewSelComboBox.addItem(PropertyFactory.getString("in_nameLabel")); @@ -1052,11 +1054,6 @@ + COL_NAMES[4], false))); } - public boolean isCellEditable(Object node, int column) - { - return false; - } - /** * Returns Class for the column. * @param column Modified: Trunk/pcgen/code/src/java/pcgen/gui/utils/LabelTreeCellRenderer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/utils/LabelTreeCellRenderer.java 2007-07-03 01:50:15 UTC (rev 3295) +++ Trunk/pcgen/code/src/java/pcgen/gui/utils/LabelTreeCellRenderer.java 2007-07-03 09:57:11 UTC (rev 3296) @@ -104,10 +104,22 @@ int bi = stringValue.indexOf("|"); int ei = stringValue.lastIndexOf("|"); + Color tempColor = null; if (bi > -1 && bi != ei) { final String aString = stringValue.substring(bi + 1, ei); - myColor = new Color(Integer.parseInt(aString)); + try + { + tempColor = new Color(Integer.parseInt(aString)); + } + catch (NumberFormatException e) + { + // Ignore - expected. + } + } + if (bi > -1 && bi != ei && tempColor != null) + { + myColor = tempColor; stringValue = stringValue.substring(0, bi) + stringValue.substring(ei + 1); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-07-03 10:48:03
|
Revision: 3298 http://svn.sourceforge.net/pcgen/?rev=3298&view=rev Author: jdempsey Date: 2007-07-03 03:48:04 -0700 (Tue, 03 Jul 2007) Log Message: ----------- Fix bug: Race SKILLMULT interation with game mode SKILLMULTIPLIER Issue#: 1740281 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Globals.java Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/Race.java Trunk/pcgen/code/src/java/pcgen/gui/editor/RaceBasePanel.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Globals.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2007-07-03 10:18:08 UTC (rev 3297) +++ Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2007-07-03 10:48:04 UTC (rev 3298) @@ -3073,7 +3073,7 @@ return rand; } - static int getSkillMultiplierForLevel(final int level) + public static int getSkillMultiplierForLevel(final int level) { final List<String> sml = SettingsHandler.getGame().getSkillMultiplierLevels(); Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-07-03 10:18:08 UTC (rev 3297) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-07-03 10:48:04 UTC (rev 3298) @@ -5731,8 +5731,7 @@ aPC.setPoolAmount(0); } - spMod *= Math.min(Globals.getSkillMultiplierForLevel(total), aPC - .getRace().getInitialSkillMultiplier()); + spMod *= aPC.getRace().getInitialSkillMultiplier(); Globals.getBioSet().randomize("AGE", aPC); } else { spMod *= Globals.getSkillMultiplierForLevel(total); Modified: Trunk/pcgen/code/src/java/pcgen/core/Race.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Race.java 2007-07-03 10:18:08 UTC (rev 3297) +++ Trunk/pcgen/code/src/java/pcgen/core/Race.java 2007-07-03 10:48:04 UTC (rev 3298) @@ -76,7 +76,7 @@ private int hands = 2; private int hitDice = 0; private int hitDiceSize = 0; - private int initialSkillMultiplier = 4; + private Integer initialSkillMultiplier = null; private int langNum = 0; private int legs = 2; private int monsterClassLevels = 0; @@ -332,13 +332,33 @@ this.initMod = initMod; } - public void setInitialSkillMultiplier(final int initialSkillMultiplier) + /** + * Set the initial skill multiplier that should be used for this + * race. Use null to 'unset' the race's value and make it default + * to the game mode value. + * + * @param initialSkillMultiplier The initialSkillMultiplier to set, null if none. + */ + public void setInitialSkillMultiplier(final Integer initialSkillMultiplier) { this.initialSkillMultiplier = initialSkillMultiplier; } + /** + * Returns the initial skill multiplier that should be used for this + * race. Unless this has been explicitly set in the Race definition, + * this will default to the skill multiplier for first level defined + * by the game mode. + * + * @return The skill multiplier to be used first level for this race. + */ public int getInitialSkillMultiplier() { + if (initialSkillMultiplier == null) + { + return Globals.getSkillMultiplierForLevel(1); + } + return initialSkillMultiplier; } @@ -692,7 +712,7 @@ txt.append("\tNATURALATTACKS:").append(buffer.toString()); } - if (initialSkillMultiplier != 4) + if (initialSkillMultiplier != null) { txt.append("\tSKILLMULT:").append(initialSkillMultiplier); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/RaceBasePanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/RaceBasePanel.java 2007-07-03 10:18:08 UTC (rev 3297) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/RaceBasePanel.java 2007-07-03 10:48:04 UTC (rev 3298) @@ -433,7 +433,14 @@ thisRace.setMonsterClassLevels(getMonsterLevel()); thisRace.setSize(getRaceSize()); thisRace.setReach(getReach()); - thisRace.setInitialSkillMultiplier(getSkillMultiplier()); + if (getSkillMultiplier() == Globals.getSkillMultiplierForLevel(1)) + { + thisRace.setInitialSkillMultiplier(null); + } + else + { + thisRace.setInitialSkillMultiplier(getSkillMultiplier()); + } thisRace.setHitDice(getHitDiceNumber()); thisRace.setHitDiceSize(getHitDiceSize()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-07-04 13:00:50
|
Revision: 3308 http://svn.sourceforge.net/pcgen/?rev=3308&view=rev Author: jdempsey Date: 2007-07-04 06:00:50 -0700 (Wed, 04 Jul 2007) Log Message: ----------- Fix bug: 5.12.0 RC4 Domain List Editor Data Loss - Merged from 5.12.x branch r3307 Issue#: 1747541 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Domain.java Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Domain.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Domain.java 2007-07-04 12:58:49 UTC (rev 3307) +++ Trunk/pcgen/code/src/java/pcgen/core/Domain.java 2007-07-04 13:00:50 UTC (rev 3308) @@ -336,7 +336,7 @@ StringBuffer featString = new StringBuffer(); for (Iterator<Categorisable> iter = getFeatIterator(); iter.hasNext();) { - Ability grantedFeat = (Ability)iter.next(); + AbilityInfo grantedFeat = (AbilityInfo)iter.next(); if (featString.length() > 0) { featString.append("|"); Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2007-07-04 12:58:49 UTC (rev 3307) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2007-07-04 13:00:50 UTC (rev 3308) @@ -1327,7 +1327,7 @@ for (Iterator<Categorisable> iter = ((Domain) thisPObject).getFeatIterator(); iter.hasNext();) { - Ability ability = (Ability)iter.next(); + AbilityInfo ability = (AbilityInfo)iter.next(); aString = ability.getKeyName(); if (!selecetdFeatList.contains(aString)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-07-09 00:03:25
|
Revision: 3367 http://svn.sourceforge.net/pcgen/?rev=3367&view=rev Author: jdempsey Date: 2007-07-08 17:03:14 -0700 (Sun, 08 Jul 2007) Log Message: ----------- Fix bug: Bypass Class prereqs house rule also bypasses spell prereqs Issue#: 1749816 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoKnownSpells.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-07-08 23:43:42 UTC (rev 3366) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-07-09 00:03:14 UTC (rev 3367) @@ -4706,7 +4706,7 @@ * PlayerCharacter... (double dispatch) */ public boolean isProhibited(final Spell aSpell, final PlayerCharacter aPC) { - if (!PrereqHandler.passesAll(aSpell.getPreReqList(), aPC, this)) { + if (!PrereqHandler.passesAll(aSpell.getPreReqList(), aPC, aSpell)) { return true; } Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-07-08 23:43:42 UTC (rev 3366) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-07-09 00:03:14 UTC (rev 3367) @@ -7804,6 +7804,13 @@ // } // all the exists checks are done. + // don't allow adding spells which are not qualified for. + if (!PrereqHandler.passesAll(aSpell.getPreReqList(), this, aSpell)) + { + return "You do not qualify for " + acs.getSpell().getDisplayName() + + "."; + } + // don't allow adding spells which are prohibited to known // or prepared lists // But if a spell is both prohibited and in a speciality Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoKnownSpells.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoKnownSpells.java 2007-07-08 23:43:42 UTC (rev 3366) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoKnownSpells.java 2007-07-09 00:03:14 UTC (rev 3367) @@ -909,8 +909,8 @@ Object aComp = avaCPaths[index].getLastPathComponent(); PObjectNode fNode = (PObjectNode) aComp; - addSpellToTarget(fNode, bookName); - if (!"".equals(pc.getSpellBookNameToAutoAddKnown())) //$NON-NLS-1$ + boolean result = addSpellToTarget(fNode, bookName); + if (result && !"".equals(pc.getSpellBookNameToAutoAddKnown())) //$NON-NLS-1$ { addSpellToTarget(fNode, pc.getSpellBookNameToAutoAddKnown()); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2007-07-08 23:43:42 UTC (rev 3366) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2007-07-09 00:03:14 UTC (rev 3367) @@ -512,12 +512,12 @@ * @param fNode * @param bookName */ - protected final void addSpellToTarget(PObjectNode fNode, String bookName) + protected final boolean addSpellToTarget(PObjectNode fNode, String bookName) { List<Object> aList = getInfoFromNode(fNode); if (aList == null) { - return; + return false; } CharacterSpell cs = (CharacterSpell) aList.get(0); String className = (String) aList.get(1); @@ -525,7 +525,7 @@ if (cs == null) { - return; + return false; } List<Ability> featList = new ArrayList<Ability>(); @@ -538,8 +538,9 @@ { ShowMessageDelegate.showMessageDialog(aString, Constants.s_APPNAME, MessageType.ERROR); - return; + return false; } + return true; } protected final List<Object> getInfoFromNode(PObjectNode fNode) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-07-09 03:25:33
|
Revision: 3369 http://svn.sourceforge.net/pcgen/?rev=3369&view=rev Author: jdempsey Date: 2007-07-08 20:25:36 -0700 (Sun, 08 Jul 2007) Log Message: ----------- Fix bug: 5.12.0 RC4 Class Editor Deprecated Syntax Issue#: 1747543 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/gui/editor/ClassAbilityPanel.java Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-07-09 03:23:26 UTC (rev 3368) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-07-09 03:25:36 UTC (rev 3369) @@ -411,7 +411,7 @@ * FINALALLCLASSLEVELS Might as well place this into all PCCLassLevels, since it * does seem to apply to all of them individually */ - private List<String> deityList = new ArrayList<String>(2); + private List<String> deityList = new ArrayList<String>(); /* * FUTURETYPESAFETY This should not be a String, but a member of a Typesafe @@ -3300,12 +3300,12 @@ } pccTxt.append("\tHD:").append(hitDie); - checkAdd(pccTxt, "ANY", "DEITY:", CoreUtility.join(deityList, '|')); + checkAdd(pccTxt, "ANY", "DEITY:", CoreUtility.join(deityList, + Constants.PIPE)); if (attackCycleMap != null) { checkAdd(pccTxt, "", "ATTACKCYCLE", CoreUtility.join(new MapCollection( attackCycleMap), Constants.PIPE)); } - checkAdd(pccTxt, "", "CASTAS:", castAs); if (prohibitedSchools != null) { pccTxt.append('\t').append("PROHIBITED:"); Modified: Trunk/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2007-07-09 03:23:26 UTC (rev 3368) +++ Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2007-07-09 03:25:36 UTC (rev 3369) @@ -2696,10 +2696,14 @@ Set<String> aaKeys = mapChar.getKeySet(MapKey.AUTO_ARRAY); if (aaKeys != null) { - for (String s : aaKeys) + for (String s : aaKeys) { - txt.append("\tAUTO:").append(s).append(Constants.PIPE).append( - mapChar.get(MapKey.AUTO_ARRAY, s)); + String value = mapChar.get(MapKey.AUTO_ARRAY, s); + if (value != null && value.trim().length() > 0) + { + txt.append("\tAUTO:").append(s).append(Constants.PIPE) + .append(value); + } } } @@ -2812,7 +2816,7 @@ if (l != null) { boolean started = false; for (String key : l) { - if (!"alwaysValid".equals(key)) { + if (!"alwaysValid".equals(key) && !"".equals(key)) { if (started) { txt.append(Constants.PIPE); } else { @@ -3971,6 +3975,20 @@ } } + /** + * Clear out the list of bonus weapon proficiency keys that + * this object will grant to characters. + */ + public void clearWeaponProfBonus() + { + weaponProfBonus = null; + } + + /** + * Add an entry to the list of bonus weapon proficiency keys that + * this object will grant to characters. + * @param aString The key of the weapon proficiency to be added. + */ public void addWeaponProfBonus(final String aString) { if ( weaponProfBonus == null ) Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassAbilityPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassAbilityPanel.java 2007-07-09 03:23:26 UTC (rev 3368) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/ClassAbilityPanel.java 2007-07-09 03:25:36 UTC (rev 3369) @@ -56,7 +56,6 @@ private JComboBoxEx spellStat = new JComboBoxEx(); private JComboBoxEx spellType = new JComboBoxEx(); private JTextField attackCycle = new JTextField(); - private JTextField castAs = new JTextField(); private JTextField deity = new JTextField(); private JTextField extraFeats = new JTextField(); private JTextField hitDice = new JTextField(); @@ -124,13 +123,6 @@ obj.setLevelsPerFeat(Integer.valueOf(a)); } - a = castAs.getText().trim(); - - if (a.length() > 0) - { - obj.setCastAs(a); - } - a = knownSpells.getText().trim(); if (a.length() > 0) @@ -216,14 +208,13 @@ attackCycle.setText(CoreUtility.join(mc, Constants.PIPE)); } hitDice.setText(String.valueOf(obj.getBaseHitDie())); - deity.setText(CoreUtility.join(obj.getDeityList(), '|')); + deity.setText(CoreUtility.join(obj.getDeityList(), Constants.PIPE)); itemCreate.setText(obj.getItemCreationMultiplier()); extraFeats.setText(String.valueOf(obj.getInitialFeats())); if (obj.getLevelsPerFeat()!=null) { levelsPerFeat.setText(obj.getLevelsPerFeat().toString()); } - castAs.setText(obj.getCastAs()); knownSpells.setText(CoreUtility.join(obj.getKnownSpellsList(), "|")); memorize.setSelected(obj.getMemorizeSpells()); @@ -389,21 +380,6 @@ add(spellStat, gridBagConstraints); - tempLabel = new JLabel("Cast As:"); - gridBagConstraints = buildConstraints(gridBagConstraints, 0, 4, true); - add(tempLabel, gridBagConstraints); - - gridBagConstraints = buildConstraints(gridBagConstraints, 1, 4, true); - add(castAs, gridBagConstraints); - - tempLabel = new JLabel("Spell List:"); - gridBagConstraints = buildConstraints(gridBagConstraints, 2, 4, true); - add(tempLabel, gridBagConstraints); - - gridBagConstraints = buildConstraints(gridBagConstraints, 3, 4, true); - add(spellList, gridBagConstraints); - - tempLabel = new JLabel("Uses Spell Book:"); gridBagConstraints = buildConstraints(gridBagConstraints, 0, 5, true); add(tempLabel, gridBagConstraints); @@ -427,6 +403,13 @@ //gridBagConstraints = buildConstraints(gridBagConstraints, 1, 6, true); //add(specialtyKnown, gridBagConstraints); + tempLabel = new JLabel("Spell List:"); + gridBagConstraints = buildConstraints(gridBagConstraints, 0, 6, true); + add(tempLabel, gridBagConstraints); + + gridBagConstraints = buildConstraints(gridBagConstraints, 1, 6, true); + add(spellList, gridBagConstraints); + tempLabel = new JLabel("Prohibited:"); gridBagConstraints = buildConstraints(gridBagConstraints, 2, 6, true); add(tempLabel, gridBagConstraints); @@ -443,5 +426,15 @@ gridBagConstraints = buildConstraints(gridBagConstraints, 1, 7, true); gridBagConstraints.gridwidth = 3; add(knownSpells, gridBagConstraints); + + + tempLabel = new JLabel("Deities:"); + gridBagConstraints.gridwidth = 1; + gridBagConstraints = buildConstraints(gridBagConstraints, 0, 8, true); + add(tempLabel, gridBagConstraints); + + gridBagConstraints = buildConstraints(gridBagConstraints, 1, 8, true); + gridBagConstraints.gridwidth = 3; + add(deity, gridBagConstraints); } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2007-07-09 03:23:26 UTC (rev 3368) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/EditorMainForm.java 2007-07-09 03:25:36 UTC (rev 3369) @@ -1095,6 +1095,7 @@ if (editType == EditorConstants.EDIT_CLASS || editType == EditorConstants.EDIT_RACE) { + thisPObject.clearWeaponProfBonus(); for ( int i = 0; i < sel.length; i++ ) { thisPObject.addWeaponProfBonus( (String)sel[i] ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-07-09 08:33:25
|
Revision: 3371 http://svn.sourceforge.net/pcgen/?rev=3371&view=rev Author: jdempsey Date: 2007-07-09 01:33:27 -0700 (Mon, 09 Jul 2007) Log Message: ----------- Fix bug: Spells Editor - Material Comp Cost Doesn't Remove Old Value Issue#: 1750149 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui/utils/WholeNumberField.java Trunk/pcgen/code/src/java/pcgen/util/DecimalNumberField.java Modified: Trunk/pcgen/code/src/java/pcgen/gui/utils/WholeNumberField.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/utils/WholeNumberField.java 2007-07-09 04:38:06 UTC (rev 3370) +++ Trunk/pcgen/code/src/java/pcgen/gui/utils/WholeNumberField.java 2007-07-09 08:33:27 UTC (rev 3371) @@ -84,13 +84,18 @@ try { - retVal = integerFormatter.parse(getText()).intValue(); + String text = getText(); + if (text == null || text.trim().length()==0) + { + text = "0"; + } + retVal = integerFormatter.parse(text).intValue(); } catch (ParseException e) { // This should never happen because insertString allows // only properly formatted data to get in the field. - Logging.errorPrint("", e); + Logging.errorPrint("Failed to parse WholeNumber value.", e); } return retVal; Modified: Trunk/pcgen/code/src/java/pcgen/util/DecimalNumberField.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/util/DecimalNumberField.java 2007-07-09 04:38:06 UTC (rev 3370) +++ Trunk/pcgen/code/src/java/pcgen/util/DecimalNumberField.java 2007-07-09 08:33:27 UTC (rev 3371) @@ -96,7 +96,12 @@ try { - retVal = doubleFormatter.parse(getText()).doubleValue(); + String text = getText(); + if (text == null || text.trim().length()==0) + { + text = "0"; + } + retVal = doubleFormatter.parse(text).doubleValue(); lastVal = retVal; } catch (ParseException e) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-08-04 23:56:18
|
Revision: 3634 http://pcgen.svn.sourceforge.net/pcgen/?rev=3634&view=rev Author: jdempsey Date: 2007-08-04 16:56:19 -0700 (Sat, 04 Aug 2007) Log Message: ----------- Fix bug: .pcc with PCC:http target crashes Issue#: 1767771 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/io/PCGFile.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGFile.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGFile.java 2007-08-04 21:27:08 UTC (rev 3633) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGFile.java 2007-08-04 23:56:19 UTC (rev 3634) @@ -3,6 +3,7 @@ import pcgen.core.Constants; import java.io.File; +import java.net.URI; /** * Common I/O methods specific to files. @@ -73,6 +74,27 @@ } /** + * Checks if the given <var>uri</var> is a PCGen campaign file based on the + * file extension. + * + * @param uri the uri to test + * @return {<code>true</code>} if a PCGen campaign file + * + * @see Constants#s_PCGEN_CAMPAIGN_EXTENSION + */ + public static boolean isPCGenCampaignFile(final URI uri) + { + if ("file".equals(uri.getScheme())) + { + return isPCGenCampaignFile(new File(uri)); + } + + return uri.getPath() != null + && uri.getPath().toLowerCase().endsWith( + Constants.s_PCGEN_CAMPAIGN_EXTENSION); + } + + /** * Checks if the given <var>file</var> is a PCGen list file based on the file * extension. * Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java 2007-08-04 21:27:08 UTC (rev 3633) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java 2007-08-04 23:56:19 UTC (rev 3634) @@ -215,7 +215,7 @@ // Add all sub-files to the main campaign, regardless of exclusions for (URI fName : baseCampaign.getPccFiles()) { - if (PCGFile.isPCGenCampaignFile(new File(fName))) + if (PCGFile.isPCGenCampaignFile(fName)) { Campaign globalSubCampaign = Globals.getCampaignByURI(fName, false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-09-09 05:54:36
|
Revision: 4052 http://pcgen.svn.sourceforge.net/pcgen/?rev=4052&view=rev Author: jdempsey Date: 2007-09-08 22:54:38 -0700 (Sat, 08 Sep 2007) Log Message: ----------- FREQ: Handling Fighter bonus feats and other feat pools - Enhance Ability tab to manage multiple categories in one tab Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbility.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityPoolPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AvailableAbilityPanel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/SelectedAbilityPanel.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/PCAbilityCategory.java Modified: Trunk/pcgen/code/src/java/pcgen/core/GameMode.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -3196,6 +3196,34 @@ } return Collections.unmodifiableCollection(theAbilityCategories); } + + /** + * Returns a <tt>Collection</tt> of <tt>AbilityCategory</tt> objects + * defined by this game mode that match the display location. + * + * @param displayLoc The display location to filter for. + * @return A <tt>Collection</tt> of <tt>AbilityCategory</tt> objects. + */ + public Collection<AbilityCategory> getAllAbilityCatsForDisplayLoc(String displayLoc) + { + if (displayLoc == null) + { + return Collections.emptyList(); + } + List<AbilityCategory> catList = new ArrayList<AbilityCategory>(); + if ( !theAbilityCategories.contains(AbilityCategory.FEAT) ) + { + theAbilityCategories.add(0, AbilityCategory.FEAT); + } + for (AbilityCategory cat : theAbilityCategories) + { + if (displayLoc.equals(cat.getDisplayLocation())) + { + catList.add(cat); + } + } + return Collections.unmodifiableCollection(catList); + } public void setPreviewDir(final String aDir) { Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -16437,6 +16437,11 @@ public BigDecimal getTotalAbilityPool(final AbilityCategory aCategory) { + if (aCategory == AbilityCategory.FEAT) + { + BigDecimal spent = getAbilityPoolSpent(aCategory); + return spent.add(new BigDecimal(getFeats())); + } Float basePool = this.getVariableValue(aCategory.getPoolFormula(), getClass().toString()); if (!aCategory.allowFractionalPool()) Modified: Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-09-09 05:54:38 UTC (rev 4052) @@ -36,6 +36,11 @@ in_racetypeName=Race Type/Name +in_catTypeName=Category/Type/Name +in_catNameLabel=Category/Name +in_catPreReqTree=Category/Pre-Req Tree +in_catSourceName=Category/Source/Name + ## added 04/01/03 in_source=Source Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -24,10 +24,13 @@ package pcgen.gui.tabs; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import pcgen.core.AbilityCategory; import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; +import pcgen.util.Logging; import pcgen.util.enumeration.Tab; /** @@ -51,13 +54,19 @@ { super(aPC); + Map<String, AbilityCategory> acTabs = new HashMap<String, AbilityCategory>(); + final Collection<AbilityCategory> cats = SettingsHandler.getGame().getAllAbilityCategories(); for (AbilityCategory cat : cats) { if (cat.isVisible()) { - addSubTab(new InfoAbility(aPC, cat)); + if (acTabs.get(cat.getDisplayLocation()) == null) + { + acTabs.put(cat.getDisplayLocation(), cat); + addSubTab(new InfoAbility(aPC, cat)); + } } } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbility.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbility.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbility.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -36,6 +36,7 @@ import java.beans.PropertyChangeListener; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.swing.JCheckBox; @@ -116,6 +117,9 @@ private String theOptionKey = "InfoAbility."; //$NON-NLS-1$ + private String theDisplayLocation; + private List<AbilityCategory> categoryList; + /** * Constructor * @@ -126,9 +130,10 @@ { super(pc); theCategory = aCategory; - theOptionKey += theCategory.getKeyName(); + theDisplayLocation = theCategory.getDisplayLocation(); + theOptionKey += theDisplayLocation; - setName(theCategory.getPluralName()); + setName(theDisplayLocation); SwingUtilities.invokeLater(new Runnable() { @@ -389,23 +394,36 @@ // FEAT_FULL_MESSAGE = "You do not have enough remaining " + Globals.getGameModePointPoolName() + " to select this " + getSingularTabName() + "."; } + Collection<AbilityCategory> categoryCol = + SettingsHandler.getGame().getAllAbilityCatsForDisplayLoc( + theDisplayLocation); + categoryList = new ArrayList<AbilityCategory>(categoryCol); + boolean editable = false; + for (AbilityCategory cat : categoryList) + { + if (cat.isEditable()) + { + editable = true; + break; + } + } final JPanel topPane = new JPanel(); topPane.setLayout(new BorderLayout()); //------------------------------------------------------------- // Top Pane - Left Available, Right Selected // - if (theCategory.isEditable()) + if (editable) { theAvailablePane = new AvailableAbilityPanel(getPc(), theCategory); theAvailablePane.addAbilitySelectionListener(this); theAvailablePane.addFilterer(this); } - theSelectedPane = new SelectedAbilityPanel(getPc(), theCategory); + theSelectedPane = new SelectedAbilityPanel(getPc(), categoryList); theSelectedPane.addAbilitySelectionListener(this); theSelectedPane.addFilterer(this); - if (theCategory.isEditable()) + if (editable) { splitTopLeftRight = new FlippingSplitPane(splitOrientation, theAvailablePane, @@ -443,37 +461,37 @@ new AbilityInfoPanel(getPc(), PropertyFactory .getFormattedString( "InfoAbility.Title", theCategory.getDisplayName())); //$NON-NLS-1$ - if (theCategory.isEditable()) - { - thePoolPanel = new AbilityPoolPanel(getPc(), theCategory); - splitBotLeftRight = - new FlippingSplitPane(splitOrientation, theInfoPanel, - thePoolPanel); + // Pool panel + thePoolPanel = new AbilityPoolPanel(getPc(), categoryList, this); - splitBotLeftRight.setOneTouchExpandable(true); + splitBotLeftRight = + new FlippingSplitPane(splitOrientation, theInfoPanel, + thePoolPanel); - splitBotLeftRight.setDividerSize(10); - // Register a listener so that we can save the location each time it - // changes. - splitBotLeftRight.addPropertyChangeListener( - JSplitPane.DIVIDER_LOCATION_PROPERTY, - new PropertyChangeListener() + splitBotLeftRight.setOneTouchExpandable(true); + + splitBotLeftRight.setDividerSize(10); + // Register a listener so that we can save the location each time it + // changes. + splitBotLeftRight.addPropertyChangeListener( + JSplitPane.DIVIDER_LOCATION_PROPERTY, + new PropertyChangeListener() + { + public void propertyChange(PropertyChangeEvent anEvt) { - public void propertyChange(PropertyChangeEvent anEvt) - { - SettingsHandler.setPCGenOption(theOptionKey - + ".splitBotLeftRight", //$NON-NLS-1$ - anEvt.getNewValue().toString()); - } - }); + SettingsHandler.setPCGenOption(theOptionKey + + ".splitBotLeftRight", //$NON-NLS-1$ + anEvt.getNewValue().toString()); + } + }); - botPane.add(splitBotLeftRight, BorderLayout.CENTER); - } - else - { - botPane.add(theInfoPanel, BorderLayout.CENTER); - } + botPane.add(splitBotLeftRight, BorderLayout.CENTER); +// } +// else +// { +// botPane.add(theInfoPanel, BorderLayout.CENTER); +// } //---------------------------------------------------------------------- // Split Top and Bottom @@ -514,6 +532,7 @@ if (theAvailablePane != null) { theAvailablePane.setPC(getPc()); + theAvailablePane.setCategory(theCategory); theAvailablePane.update(); } } @@ -588,7 +607,7 @@ @Override public String getTabName() { - return theCategory.getPluralName(); + return theCategory.getDisplayLocation(); } /** @@ -737,4 +756,10 @@ // setRemoveEnabled(false); return true; } + + public void setCurrentActivityCategory(AbilityCategory cat) + { + theCategory = cat; + forceRefresh(); + } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -23,7 +23,9 @@ package pcgen.gui.tabs.ability; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; @@ -73,7 +75,9 @@ private PlayerCharacter thePC = null; private List<Ability> theAbilityList; - private AbilityCategory theCategory; + //private AbilityCategory theCategory; + private List<AbilityCategory> theCategoryList; + private boolean useCategoryRoot; private IAbilityListFilter theFilter = null; @@ -81,6 +85,7 @@ private PObjectNode typeRoot = null; private PObjectNode sourceRoot = null; + private PObjectNode categoryRoot = null; /** * Creates an AbilityModel. @@ -103,7 +108,9 @@ theViewMode = viewMode; - theCategory = aCategory; + theCategoryList = new ArrayList<AbilityCategory>(); + theCategoryList.add(aCategory); + useCategoryRoot = false; setPanelSpecificDefaults(); for (final Column column : Column.values()) @@ -115,11 +122,45 @@ } /** + * Creates an AbilityModel. + * + * @param aPC The PlayerCharacter this model is for. + * @param aList The list of <tt>Ability</tt> objects to manage + * @param aCategory The <tt>AbilityCategory</tt> this list comes from. + * @param viewMode + * @param anOptionRoot The key to store options under. + * @param splitByCategory Should the list be split by category + */ + public AbilityModel(final PlayerCharacter aPC, final List<Ability> aList, + final List<AbilityCategory> aCategoryList, + final AbilitySelectionPanel.ViewMode viewMode, final String anOptionRoot, + final boolean splitByCategory) + { + super(null); + thePC = aPC; + theAbilityList = aList; + + theOptionsRoot = anOptionRoot; + + theViewMode = viewMode; + + theCategoryList = aCategoryList; + useCategoryRoot = splitByCategory; + + setPanelSpecificDefaults(); + for (final Column column : Column.values()) + { + column.setVisible(SettingsHandler.getPCGenOption(theOptionsRoot + + ".viewcol." + column.toString(), column.isVisible())); //$NON-NLS-1$ + } + resetModel(thePC, viewMode, false); + } + + /** * Set any defaults for the specific panel the model is tied to. */ private void setPanelSpecificDefaults() { - Logging.debugPrint("setPanelSpecificDefaults for " + theOptionsRoot); if (theOptionsRoot.indexOf("selected") >= 0) { Column.CHOICES.setVisible(true); @@ -128,18 +169,34 @@ private void buildDefaultRoots() { + // Even if the category root already exists we need to refresh it + categoryRoot = buildCategoryRoot(); + if (typeRoot != null) { return; } - + typeRoot = new PObjectNode(); sourceRoot = new PObjectNode(); + // We will use the global lists for this + addTypeNodes(typeRoot, Globals.getAbilityList(theCategoryList.get(0))); + addSourceNodes(sourceRoot, Globals.getAbilityList(theCategoryList.get(0))); + } + + /** + * Add nodes for each type to the supplied node. The list of types + * is obtained from the abilities provided. + * + * @param root The node to add source nodes to. + * @param abilityList The list of abilities to obtain types from. + */ + private void addTypeNodes(final PObjectNode root, + final List<Ability> abilityList) + { final SortedSet<String> typeSet = new TreeSet<String>(); - final SortedSet<String> sourceSet = new TreeSet<String>(); - // We will use the global lists for this - for (final Ability ability : Globals.getAbilityList(theCategory)) + for (final Ability ability : abilityList) { if (!((ability.getVisibility() == Visibility.DEFAULT) || (ability .getVisibility() == Visibility.DISPLAY_ONLY))) @@ -148,12 +205,6 @@ } typeSet.addAll(ability.getTypeList(true)); - final String sourceString = - ability.getSourceEntry().getSourceBook().getLongName(); - if (sourceString != null) - { - sourceSet.add(sourceString); - } } final PObjectNode[] ccTypes = new PObjectNode[typeSet.size()]; int i = 0; @@ -161,22 +212,68 @@ { ccTypes[i] = new PObjectNode(); ccTypes[i].setItem(type); - ccTypes[i].setParent(typeRoot); + ccTypes[i].setParent(root); i++; } - typeRoot.setChildren(ccTypes); + root.setChildren(ccTypes); + } + /** + * Add nodes for each source to the supplied node. The list of sources + * is obtained from the abilities provided. + * + * @param root The node to add source nodes to. + * @param abilityList The list of abilities to obtain sources from. + */ + private void addSourceNodes(final PObjectNode root, + final List<Ability> abilityList) + { + final SortedSet<String> sourceSet = new TreeSet<String>(); + // We will use the global lists for this + for (final Ability ability : abilityList) + { + if (!((ability.getVisibility() == Visibility.DEFAULT) || (ability + .getVisibility() == Visibility.DISPLAY_ONLY))) + { + continue; + } + + final String sourceString = + ability.getSourceEntry().getSourceBook().getLongName(); + if (sourceString != null) + { + sourceSet.add(sourceString); + } + } final PObjectNode[] ccSources = new PObjectNode[sourceSet.size()]; - i = 0; + int i = 0; for (final String source : sourceSet) { ccSources[i] = new PObjectNode(); ccSources[i].setItem(source); - ccSources[i].setParent(sourceRoot); + ccSources[i].setParent(root); i++; } - sourceRoot.setChildren(ccSources); + root.setChildren(ccSources); + } + private PObjectNode buildCategoryRoot() + { + PObjectNode catRoot = new PObjectNode(); + final ArrayList<PObjectNode> ccAbilityCats = new ArrayList<PObjectNode>(); + for (final AbilityCategory cat : theCategoryList) + { + if (cat.isVisible(thePC)) + { + PCAbilityCategory pcac = new PCAbilityCategory(cat, thePC); + PObjectNode node = new PObjectNode(); + node.setItem(pcac); + node.setParent(catRoot); + ccAbilityCats.add(node); + } + } + catRoot.setChildren(ccAbilityCats); + return catRoot; } /** @@ -352,15 +449,21 @@ private void buildTreeNameOnly(final boolean showAll) { super.setRoot(new PObjectNode()); + buildSubTreeNameOnly(showAll, (PObjectNode) super.getRoot(), theAbilityList); + } + + private void buildSubTreeNameOnly(final boolean showAll, + final PObjectNode root, List<Ability> abilityList) + { String qFilter = this.getQFilter(); - for (final Ability ability : theAbilityList) + for (final Ability ability : abilityList) { if (showAll == true || theFilter == null || theFilter.accept(theViewMode, ability)) { PObjectNode aFN = new PObjectNode(); - aFN.setParent((PObjectNode) super.getRoot()); + aFN.setParent(root); switch (ability.getFeatType()) { @@ -380,7 +483,7 @@ || (ability.getDisplayName().toLowerCase().indexOf(qFilter) >= 0 || ability .getType().toLowerCase().indexOf(qFilter) >= 0)) { - ((PObjectNode) super.getRoot()).addChild(aFN); + (root).addChild(aFN); } } } @@ -399,9 +502,15 @@ { setRoot(new PObjectNode()); + buildSubTreePrereqTree(showAll, (PObjectNode) super.getRoot(), theAbilityList); + } + + private void buildSubTreePrereqTree(final boolean showAll, + final PObjectNode rootAsPObjectNode, final List<Ability> abilityList) + { // This list initially contains all abilities that pass the filter. final List<Ability> fList = new ArrayList<Ability>(); - for (final Ability ability : theAbilityList) + for (final Ability ability : abilityList) { if (showAll || theFilter == null || theFilter.accept(theViewMode, ability)) @@ -427,7 +536,6 @@ } // Add these abilities to the tree - final PObjectNode rootAsPObjectNode = (PObjectNode) super.getRoot(); if (rootAsPObjectNode == null) { return; @@ -559,7 +667,13 @@ return; } - for (final Ability ability : theAbilityList) + buildSubTreeTypeName(showAll, rootAsPObjectNode, theAbilityList); + } + + private void buildSubTreeTypeName(final boolean showAll, + final PObjectNode rootAsPObjectNode, final List<Ability> abilityList) + { + for (final Ability ability : abilityList) { if (showAll || theFilter == null || theFilter.accept(theViewMode, ability)) @@ -622,7 +736,13 @@ return; } - for (final Ability ability : theAbilityList) + buildSubTreeSourceName(showAll, rootAsPObjectNode, theAbilityList); + } + + private void buildSubTreeSourceName(final boolean showAll, + final PObjectNode rootAsPObjectNode, final List<Ability> abilityList) + { + for (final Ability ability : abilityList) { if (showAll || theFilter == null || theFilter.accept(theViewMode, ability)) @@ -737,10 +857,10 @@ * * @param aList A list of Abilities to manage. */ - public void setAbilityList(final List<Ability> aList) + public void setAbilityList(final List<Ability> aList, PlayerCharacter aPc) { theAbilityList = aList; - resetModel(thePC, theViewMode, false); + resetModel(aPc, theViewMode, false); } /** @@ -759,29 +879,36 @@ // We are going to build and cache the type and source tree roots. buildDefaultRoots(); - switch (mode) + if (useCategoryRoot) { - case TYPENAME: - buildTreeTypeName(showAll); + buildTreeCategory(showAll, mode); + } + else + { + switch (mode) + { + case TYPENAME: + buildTreeTypeName(showAll); - break; + break; - case NAMEONLY: - buildTreeNameOnly(showAll); + case NAMEONLY: + buildTreeNameOnly(showAll); - break; + break; - case PREREQTREE: - buildTreePrereqTree(showAll); + case PREREQTREE: + buildTreePrereqTree(showAll); - break; + break; - case SOURCENAME: - buildTreeSourceName(showAll); + case SOURCENAME: + buildTreeSourceName(showAll); - break; + break; + } } - + if (super.getRoot() != null) { fireTreeNodesChanged(super.getRoot(), new TreePath(super.getRoot())); @@ -789,6 +916,81 @@ } /** + * The plan: + * Allow the model to cope with either a list of ability categories + * or a single category. We do this by having a category root for + * the list and splitting the buildXXXTree methods into two, one to + * set the root, and one to populate a node based on a category. The + * single category can then call the set root and then call the + * populate method, while the multiple one can iterate through + * categories on the category root and call the appropriate populate + * method for the category with the appropriate root. + * + * @param showAll Force displaying of all abilities + * @param mode The display format for each category. + */ + private void buildTreeCategory(boolean showAll, final AbilitySelectionPanel.ViewMode mode) + { + if (categoryRoot == null) + { + return; + } + setRoot(categoryRoot); + + final PObjectNode rootAsPObjectNode = (PObjectNode) super.getRoot(); + + // Split the passed in abilities by category + Map<String, List<Ability>> abilityMap = new HashMap<String, List<Ability>>(); + for (Ability ability : theAbilityList) + { + List<Ability> aList = abilityMap.get(ability.getCategory()); + if (aList == null) + { + aList = new ArrayList<Ability>(); + abilityMap.put(ability.getCategory(), aList); + } + aList.add(ability); + } + + // Loop over the category nodes, adding content to each + for (final PObjectNode catNode : rootAsPObjectNode.getChildren()) + { + PCAbilityCategory pcCat = (PCAbilityCategory) catNode.getItem(); + List<Ability> abilities = + abilityMap.get(pcCat.getCategory().getAbilityCategory()); + if (abilities == null) + { + abilities = new ArrayList<Ability>(); + } + // Pass in specific abilityList + switch (mode) + { + case TYPENAME: + addTypeNodes(catNode, abilities); + buildSubTreeTypeName(showAll, catNode, abilities); + + break; + + case NAMEONLY: + buildSubTreeNameOnly(showAll, catNode, abilities); + + break; + + case PREREQTREE: + buildSubTreePrereqTree(showAll, catNode, abilities); + + break; + + case SOURCENAME: + addSourceNodes(catNode, abilities); + buildSubTreeSourceName(showAll, catNode, abilities); + + break; + } + } + } + + /** * @see pcgen.gui.TableColumnManagerModel#getMColumnList() */ public List<String> getMColumnList() Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityPoolPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityPoolPanel.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityPoolPanel.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -23,9 +23,13 @@ package pcgen.gui.tabs.ability; import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.math.BigDecimal; +import java.util.Collection; import javax.swing.InputVerifier; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; @@ -33,6 +37,7 @@ import pcgen.core.AbilityCategory; import pcgen.core.PlayerCharacter; +import pcgen.gui.tabs.InfoAbility; import pcgen.gui.utils.Utility; import pcgen.util.BigDecimalHelper; import pcgen.util.PropertyFactory; @@ -46,25 +51,36 @@ { private PlayerCharacter thePC; private AbilityCategory theCategory; + private InfoAbility theParent; + + private JComboBox theCategoryField = new JComboBox(); private JTextField theNumAbilitiesField = new JTextField(); /** * Construct the panel and add all the components. * * @param aPC The PC - * @param aCategory The <tt>AbilityCategory</tt> this panel represents. + * @param aCategoryList The <tt>AbilityCategory</tt> this panel represents. */ - public AbilityPoolPanel(final PlayerCharacter aPC, - final AbilityCategory aCategory) + public AbilityPoolPanel(final PlayerCharacter aPC, + final Collection<AbilityCategory> aCategoryList, + final InfoAbility parent) { super(); thePC = aPC; - theCategory = aCategory; + theParent = parent; setLayout(new FlowLayout()); + for (AbilityCategory abilityCategory : aCategoryList) + { + theCategoryField.addItem(abilityCategory); + } + add(theCategoryField); + theCategory = (AbilityCategory) theCategoryField.getSelectedItem(); + final JLabel abilitiesRemainingLabel = new JLabel(); abilitiesRemainingLabel.setText(PropertyFactory.getFormattedString( - "InfoAbility.Remaining.Label", theCategory)); //$NON-NLS-1$ + "InfoAbility.Remaining.Label", "")); //$NON-NLS-1$ add(abilitiesRemainingLabel); theNumAbilitiesField.setInputVerifier(new InputVerifier() @@ -120,10 +136,18 @@ return valueOk; } }); + + theCategoryField.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + categoryFieldActionPerformed(); + } + }); showRemainingAbilityPoints(); theNumAbilitiesField.setColumns(3); - theNumAbilitiesField.setEditable(aCategory.allowPoolMod()); + theNumAbilitiesField.setEditable(theCategory.allowPoolMod()); Utility.setDescription(theNumAbilitiesField, PropertyFactory .getFormattedString("InfoAbility.Pool.Description", //$NON-NLS-1$ theCategory.getDisplayName())); @@ -132,6 +156,26 @@ } /** + * Update the panel based on a change to the selected ability + * category. + */ + private void categoryFieldActionPerformed() + { + // Set the selected category + theCategory = (AbilityCategory) theCategoryField.getSelectedItem(); + + // Adjust the ability points display + showRemainingAbilityPoints(); + theNumAbilitiesField.setEditable(theCategory.allowPoolMod()); + Utility.setDescription(theNumAbilitiesField, PropertyFactory + .getFormattedString("InfoAbility.Pool.Description", //$NON-NLS-1$ + theCategory.getDisplayName())); + + // Tell our parent about the change + theParent.setCurrentActivityCategory(theCategory); + } + + /** * Sets the PlayerCharacter this panel is displaying information for. * * @param aPC The PlayerCharacter to set. @@ -146,7 +190,6 @@ */ public void showRemainingAbilityPoints() { - // theNumAbilitiesField.setText(BigDecimalHelper.trimBigDecimal(new BigDecimal(thePC.getFeats())).toString()); theNumAbilitiesField.setText(BigDecimalHelper.trimBigDecimal( thePC.getAvailableAbilityPool(theCategory)).toString()); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -69,7 +69,7 @@ IFilterableView, IAbilityListFilter { private PlayerCharacter thePC; - private AbilityCategory theCategory; + private List<AbilityCategory> theCategoryList; /** The model that represents the list of abilities to choose from */ protected AbilityModel theModel; @@ -99,9 +99,8 @@ /** * The manner in which to display the tree. - * TODO - Yuck. Why is this in GuiConstants? */ - private ViewMode theViewMode = ViewMode.PREREQTREE; + ViewMode theViewMode = ViewMode.PREREQTREE; /** * This is a temporary used to store the current value of the view mode @@ -124,7 +123,8 @@ final AbilityCategory aCategory) { thePC = aPC; - theCategory = aCategory; + theCategoryList = new ArrayList<AbilityCategory>(); + theCategoryList.add(aCategory); theOptionsRoot += aCategory.getKeyName(); @@ -143,6 +143,36 @@ } /** + * Construct and build a new panel to display a list of abilities. + * + * @param aPC + * @param aCategory + */ + public AbilitySelectionPanel(final PlayerCharacter aPC, + final List<AbilityCategory> aCategoryList) + { + thePC = aPC; + theCategoryList = aCategoryList; + + theOptionsRoot += aCategoryList.get(0).getDisplayLocation(); + + final int vm = + SettingsHandler + .getPCGenOption( + getFullOptionKey() + ".viewmode", getDefaultViewMode().ordinal()); //$NON-NLS-1$ + theViewMode = + (vm >= 0 && vm < ViewMode.values().length) + ? ViewMode.values()[vm] : getDefaultViewMode(); + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + initComponents(); + } + }); + } + + /** * Return the <tt>PlayerCharacter</tt> this panel is displaying info for. * * @return The PC @@ -164,12 +194,12 @@ /** * Return the <tt>AbilityCategory</tt> these abilities come from. - * + * @TODO Convert this to react to current category * @return The Ability category */ public AbilityCategory getCategory() { - return theCategory; + return theCategoryList.get(0); } /** @@ -191,6 +221,16 @@ protected abstract String getOptionKey(); /** + * Return an indicator of whether to split the ability list by + * category or not.. + * + * <p>This method is abstract and must be overridden by subclasses. + * + * @return true if a category split should be used. + */ + protected abstract boolean getSplitByCategory(); + + /** * Initializes the GUI components. * * <p>This method constructs the model from the ability list. It then @@ -202,8 +242,8 @@ protected void initComponents() { theModel = - new AbilityModel(thePC, getAbilityList(), theCategory, - theViewMode, getFullOptionKey()); + new AbilityModel(thePC, getAbilityList(), theCategoryList, + theViewMode, getFullOptionKey(), getSplitByCategory()); theModel.setAbilityFilter(this); @@ -503,12 +543,14 @@ { if (theTable != null) { - theModel.setAbilityList(getAbilityList()); + List<String> pathList = theTable.getExpandedPaths(); + theModel.setAbilityList(getAbilityList(), thePC); if (theSorter != null) { theSorter.sortNodeOnColumn(); } theTable.updateUI(); + theTable.expandPathList(pathList); } } @@ -543,8 +585,18 @@ return true; } - private String getFullOptionKey() + String getFullOptionKey() { return theOptionsRoot + "." + getOptionKey(); //$NON-NLS-1$ } + + /** + * Set a new category to be displayed. + * @param aCategory The ability category + */ + public void setCategory(final AbilityCategory aCategory) + { + theCategoryList = new ArrayList<AbilityCategory>(); + theCategoryList.add(aCategory); + } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AvailableAbilityPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AvailableAbilityPanel.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AvailableAbilityPanel.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -32,6 +32,7 @@ import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; +import javax.swing.table.TableColumn; import pcgen.core.Ability; import pcgen.core.AbilityCategory; @@ -313,6 +314,36 @@ } /** + * This method is overridden so that we can display the + * name of the ability category being displayed in the + * table header. + * + * @see pcgen.gui.tabs.ability.AbilitySelectionPanel#update() + */ + @Override + public void update() + { + if (theTable != null) + { + int nameColIndex = theTable.convertColumnIndexToView(0); + if (nameColIndex < 0) + { + nameColIndex = 0; + } + TableColumn nameCol = + theTable.getColumnModel().getColumn(nameColIndex); + //String curVal = nameCol.getHeaderValue().toString(); + String txt = getCategory().getDisplayName(); + if (txt.startsWith("in_")) + { + txt = PropertyFactory.getFormattedString(txt); + } + nameCol.setHeaderValue(txt); + } + super.update(); + } + + /** * @see pcgen.gui.tabs.ability.AbilitySelectionPanel#getAbilityList() */ @Override @@ -355,4 +386,13 @@ setAddEnabled(false); } } + + /* (non-Javadoc) + * @see pcgen.gui.tabs.ability.AbilitySelectionPanel#getSplitByCategory() + */ + @Override + protected boolean getSplitByCategory() + { + return false; + } } Added: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/PCAbilityCategory.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/PCAbilityCategory.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/PCAbilityCategory.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -0,0 +1,89 @@ +/* + * PCAbilityCategory.java + * Copyright 2007 (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/08/2007 + * + * $Id$ + */ + +package pcgen.gui.tabs.ability; + +import pcgen.core.AbilityCategory; +import pcgen.core.PlayerCharacter; +import pcgen.util.BigDecimalHelper; + +/** + * <code>PCAbilityCategory</code> is a placeholder for a character's + * ability category for a PObjectNode. It's primary purpose is to + * provide custom output for displaying in a tree. + * + * Last Editor: $Author$ + * Last Edited: $Date$ + * + * @author James Dempsey <jde...@us...> + * @version $Revision$ + */ +public class PCAbilityCategory +{ + + private AbilityCategory category; + private PlayerCharacter pc; + + /** + * @param aCategory + * @param aPc + */ + PCAbilityCategory(AbilityCategory aCategory, PlayerCharacter aPc) + { + category = aCategory; + pc = aPc; + } + + @Override + public String toString() + { + StringBuffer result = new StringBuffer(); + result.append(category.getDisplayName()); + result.append(" ("); + result.append(BigDecimalHelper.trimBigDecimal( + pc.getAbilityPoolSpent(category)).toString()); + result.append('/'); + result.append(BigDecimalHelper.trimBigDecimal( + pc.getTotalAbilityPool(category)).toString()); + result.append(')'); + + return result.toString(); + } + + /** + * @return the category + */ + AbilityCategory getCategory() + { + return category; + } + + /** + * @return the pc + */ + PlayerCharacter getPc() + { + return pc; + } + +} Property changes on: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/PCAbilityCategory.java ___________________________________________________________________ Name: svn:keywords + Author Revision Date Id Name: svn:eol-style + native Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/SelectedAbilityPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/SelectedAbilityPanel.java 2007-09-09 05:07:51 UTC (rev 4051) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/SelectedAbilityPanel.java 2007-09-09 05:54:38 UTC (rev 4052) @@ -29,6 +29,7 @@ import java.awt.event.ActionListener; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.swing.JMenuItem; @@ -40,6 +41,8 @@ import pcgen.core.AbilityCategory; import pcgen.core.Globals; import pcgen.core.PlayerCharacter; +import pcgen.core.SettingsHandler; +import pcgen.gui.tabs.ability.AbilitySelectionPanel.ViewMode; import pcgen.gui.tabs.components.FilterPanel; import pcgen.gui.tabs.components.RemoveItemPanel; import pcgen.gui.utils.ClickHandler; @@ -79,9 +82,9 @@ * @see pcgen.gui.tabs.ability.AbilitySelectionPanel */ public SelectedAbilityPanel(final PlayerCharacter aPC, - final AbilityCategory aCategory) + final List<AbilityCategory> aCategoryList) { - super(aPC, aCategory); + super(aPC, aCategoryList); setLayout(new BorderLayout()); @@ -187,6 +190,19 @@ } /** + * @see pcgen.gui.tabs.IFilterableView#getViewChoices() + */ + public List<String> getViewChoices() + { + final List<String> viewChoices = new ArrayList<String>(4); + viewChoices.add(PropertyFactory.getString("in_catTypeName")); //$NON-NLS-1$ + viewChoices.add(PropertyFactory.getString("in_catNameLabel")); //$NON-NLS-1$ + viewChoices.add(PropertyFactory.getString("in_catPreReqTree")); //$NON-NLS-1$ + viewChoices.add(PropertyFactory.getString("in_catSourceName")); //$NON-NLS-1$ + return viewChoices; + } + + /** * Overridden to add a MouseListener and Popup menu. * * @see pcgen.gui.tabs.ability.AbilitySelectionPanel#initComponents() @@ -372,4 +388,14 @@ setRemoveEnabled(false); } } + + /* (non-Javadoc) + * @see pcgen.gui.tabs.ability.AbilitySelectionPanel#getSplitByCategory() + */ + @Override + protected boolean getSplitByCategory() + { + return true; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-09-22 09:32:07
|
Revision: 4122 http://pcgen.svn.sourceforge.net/pcgen/?rev=4122&view=rev Author: jdempsey Date: 2007-09-22 02:32:11 -0700 (Sat, 22 Sep 2007) Log Message: ----------- Correct the type of some log messages produced when processing LST files. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Equipment.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstObjectFileLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/PreParserFactory.java Trunk/pcgen/code/src/java/pcgen/util/Logging.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Equipment.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Equipment.java 2007-09-22 09:29:13 UTC (rev 4121) +++ Trunk/pcgen/code/src/java/pcgen/core/Equipment.java 2007-09-22 09:32:11 UTC (rev 4122) @@ -2447,8 +2447,8 @@ } catch (NumberFormatException ignore) { - Logging.errorPrint("Invalid Weight in Equipment: " + aString - + " item was " + getDisplayName() + " from " + Logging.log(Logging.LST_ERROR, "Invalid Weight in Equipment: " + + aString + " item was " + getDisplayName() + " from " + getDefaultSourceString()); } } @@ -6633,14 +6633,14 @@ containerWeightCapacity = new Float(bString); if (containerWeightCapacity < 0) { - Logging.errorPrint(getKeyName() + Logging.deprecationPrint(getKeyName() + " Weight Capacity must be >= 0: " + bString + "\n use 'UNLIM' (not -1) for unlimited Capacity"); } } catch (NumberFormatException ex) { if (!"UNLIM".equals(bString)) { - Logging.errorPrint("Error in CONTAINS line: " + aString + Logging.log(Logging.LST_ERROR, "Error in CONTAINS line: " + aString + "\n" + " " + bString + " was not a number or 'UNLIM'"); } Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityLoader.java 2007-09-22 09:29:13 UTC (rev 4121) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityLoader.java 2007-09-22 09:32:11 UTC (rev 4122) @@ -163,9 +163,10 @@ } else { - Logging.errorPrint("Attempt to Modify/Copy/Forget an Ability (" + String message = "Attempt to Modify/Copy/Forget an Ability (" + aKey + ") without a CATEGORY=\n" - + " Proper format is CATEGORY=cat|abilityKey"); + + " Proper format is CATEGORY=cat|abilityKey"; + Logging.log(Logging.LST_ERROR, message); return null; } return Globals.getAbilityKeyed(abilityCatName, abilityKey); Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstObjectFileLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstObjectFileLoader.java 2007-09-22 09:29:13 UTC (rev 4121) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstObjectFileLoader.java 2007-09-22 09:32:11 UTC (rev 4122) @@ -598,7 +598,7 @@ String message = PropertyFactory.getFormattedString( "Errors.LstFileLoader.ModObjectNotFound", //$NON-NLS-1$ entry.getSource().getURI(), entry.getLineNumber(), key); - Logging.errorPrint(message); + Logging.log(Logging.LST_ERROR, message); setChanged(); notifyObservers(new Exception(message)); return; Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/PreParserFactory.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/PreParserFactory.java 2007-09-22 09:29:13 UTC (rev 4121) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/PreParserFactory.java 2007-09-22 09:32:11 UTC (rev 4122) @@ -179,7 +179,7 @@ } if (prereq.isDeprecated()) { - Logging.errorPrint("Encountered Deprecated PRExxx Token: " + Logging.deprecationPrint("Encountered Deprecated PRExxx Token: " + prereqStr); } return prereq; Modified: Trunk/pcgen/code/src/java/pcgen/util/Logging.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/util/Logging.java 2007-09-22 09:29:13 UTC (rev 4121) +++ Trunk/pcgen/code/src/java/pcgen/util/Logging.java 2007-09-22 09:32:11 UTC (rev 4122) @@ -307,6 +307,39 @@ } /** + * Log a message, if logging is enabled at the + * supplied level of detail. + * + * @param lvl The detail level of the message + * @param msg String message + */ + public static void log(final Level lvl, final String msg) + { + Logger l = getLogger(); + if (l.isLoggable(lvl)) + { + l.log(lvl, msg); + } + } + + /** + * Log a message with a stack trace, if logging is enabled at the + * supplied level of detail. + * + * @param lvl The detail level of the message + * @param msg String message + * @param thr Throwable stack frame + */ + public static void log(final Level lvl, final String msg, final Throwable thr) + { + Logger l = getLogger(); + if (l.isLoggable(lvl)) + { + l.log(lvl, msg, thr); + } + } + + /** * Print error message with a stack trace if PCGen is * debugging. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2007-09-29 03:20:52
|
Revision: 4168 http://pcgen.svn.sourceforge.net/pcgen/?rev=4168&view=rev Author: thpr Date: 2007-09-28 20:20:55 -0700 (Fri, 28 Sep 2007) Log Message: ----------- [ 1790746 ] AUTO: must take multiple versions of each Subtoken Issue#: 1790746 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/utils/MapKey.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToList.java Trunk/pcgen/code/src/java/pcgen/util/DoubleKeyMapToList.java Removed Paths: ------------- Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToObject.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-09-29 03:13:38 UTC (rev 4167) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-09-29 03:20:55 UTC (rev 4168) @@ -6377,7 +6377,10 @@ { for (String key : s) { - addAutoArray(key, otherClass.getAuto(key)); + for (String value : otherClass.getAuto(key)) + { + addAutoArray(key, value); + } } } Modified: Trunk/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2007-09-29 03:13:38 UTC (rev 4167) +++ Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2007-09-29 03:20:55 UTC (rev 4168) @@ -57,7 +57,7 @@ import pcgen.core.utils.ListKey; import pcgen.core.utils.ListKeyMapToList; import pcgen.core.utils.MapKey; -import pcgen.core.utils.MapKeyMapToObject; +import pcgen.core.utils.MapKeyMapToList; import pcgen.core.utils.MessageType; import pcgen.core.utils.ShowMessageDelegate; import pcgen.core.utils.StringKey; @@ -96,7 +96,7 @@ /** A map of Lists for the object */ protected ListKeyMapToList listChar = new ListKeyMapToList(); - private final MapKeyMapToObject mapChar = new MapKeyMapToObject(); + private final MapKeyMapToList mapChar = new MapKeyMapToList(); /** List of associated items for the object */ // TODO Contains strings or FeatMultipleObjects @@ -2283,7 +2283,7 @@ */ public final void addAutoArray(String arrayName, String item) { - mapChar.put(MapKey.AUTO_ARRAY, arrayName, item); + mapChar.addToListFor(MapKey.AUTO_ARRAY, arrayName, item); } /** @@ -2322,7 +2322,7 @@ */ public final void clearAutoMap() { - mapChar.removeAll(MapKey.AUTO_ARRAY); + mapChar.removeListsFor(MapKey.AUTO_ARRAY); } /** @@ -2332,17 +2332,17 @@ */ public final void clearAutoTag(String tag) { - mapChar.remove(MapKey.AUTO_ARRAY, tag); + mapChar.removeListFor(MapKey.AUTO_ARRAY, tag); } public final Set<String> getAutoMapKeys() { - return mapChar.getKeySet(MapKey.AUTO_ARRAY); + return mapChar.getSecondaryKeySet(MapKey.AUTO_ARRAY); } - public final String getAuto(String tag) + public final List<String> getAuto(String tag) { - return mapChar.get(MapKey.AUTO_ARRAY, tag); + return mapChar.getListFor(MapKey.AUTO_ARRAY, tag); } /** @@ -2697,16 +2697,19 @@ txt.append("\tKEY:").append(getKeyName()); // } - Set<String> aaKeys = mapChar.getKeySet(MapKey.AUTO_ARRAY); + Set<String> aaKeys = mapChar.getSecondaryKeySet(MapKey.AUTO_ARRAY); if (aaKeys != null) { for (String s : aaKeys) { - String value = mapChar.get(MapKey.AUTO_ARRAY, s); - if (value != null && value.trim().length() > 0) + List<String> values = mapChar.getListFor(MapKey.AUTO_ARRAY, s); + for (String value : values) { - txt.append("\tAUTO:").append(s).append(Constants.PIPE) - .append(value); + if (value != null && value.trim().length() > 0) + { + txt.append("\tAUTO:").append(s).append(Constants.PIPE) + .append(value); + } } } } @@ -3150,13 +3153,22 @@ */ public final void addAutoTagsToList(final String tag, final Collection aList, final PlayerCharacter aPC, boolean expandWeaponTypes) { - String aString = mapChar.get(MapKey.AUTO_ARRAY, tag); + List<String> list = mapChar.getListFor(MapKey.AUTO_ARRAY, tag); - if (aString == null) + if (list == null) { return; } + for (String val : list) + { + addAutoTagToList(tag, val, aList, aPC, expandWeaponTypes); + } + } + + private void addAutoTagToList(String tag, String aString, Collection aList, + PlayerCharacter aPC, boolean expandWeaponTypes) + { String preReqTag; final List<Prerequisite> aPreReqList = new ArrayList<Prerequisite>(); final int j1 = aString.lastIndexOf('['); @@ -3164,7 +3176,7 @@ if (j2 < j1) { - j2 = tag.length(); + j2 = aString.length(); } if (j1 >= 0) Modified: Trunk/pcgen/code/src/java/pcgen/core/utils/MapKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/utils/MapKey.java 2007-09-29 03:13:38 UTC (rev 4167) +++ Trunk/pcgen/code/src/java/pcgen/core/utils/MapKey.java 2007-09-29 03:20:55 UTC (rev 4168) @@ -23,6 +23,8 @@ */ package pcgen.core.utils; +import pcgen.core.SpecialAbility; + /** * @author Tom Parker <th...@so...> * @@ -32,6 +34,7 @@ { public static final MapKey<String, String> AUTO_ARRAY = new MapKey<String, String>(); + public static final MapKey<Integer, SpecialAbility> SAB = new MapKey<Integer, SpecialAbility>(); /** Private constructor to prevent instantiation of this class */ private MapKey() Added: Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToList.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToList.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToList.java 2007-09-29 03:20:55 UTC (rev 4168) @@ -0,0 +1,80 @@ +package pcgen.core.utils; + +import java.util.List; +import java.util.Set; + +import pcgen.util.DoubleKeyMapToList; +import pcgen.util.MapToList; + +public class MapKeyMapToList +{ + + private final DoubleKeyMapToList<MapKey<?, ?>, Object, Object> dkm = + new DoubleKeyMapToList<MapKey<?, ?>, Object, Object>(); + + public <K, V> void addToListFor(MapKey<K, V> key1, K key2, V value) + { + dkm.addToListFor(key1, key2, value); + } + + public <K, V> boolean containsInList(MapKey<K, V> key1, K key2, V value) + { + return dkm.containsInList(key1, key2, value); + } + + public <K, V> boolean containsListFor(MapKey<K, V> key1, K key2) + { + return dkm.containsListFor(key1, key2); + } + + public boolean containsListFor(MapKey<?, ?> key1) + { + return dkm.containsListFor(key1); + } + + public int firstKeyCount() + { + return dkm.firstKeyCount(); + } + + public Set<MapKey<?, ?>> getKeySet() + { + return dkm.getKeySet(); + } + + public <K, V> List<V> getListFor(MapKey<K, V> key1, K key2) + { + return (List<V>) dkm.getListFor(key1, key2); + } + + public <K> Set<K> getSecondaryKeySet(MapKey<K, ?> aPrimaryKey) + { + return (Set<K>) dkm.getSecondaryKeySet(aPrimaryKey); + } + + public boolean isEmpty() + { + return dkm.isEmpty(); + } + + public <K, V> boolean removeFromListFor(MapKey<K, V> key1, K key2, V value) + { + return dkm.removeFromListFor(key1, key2, value); + } + + public <K, V> List<V> removeListFor(MapKey<K, V> key1, K key2) + { + return (List<V>) dkm.removeListFor(key1, key2); + } + + public <K, V> MapToList<K, V> removeListsFor(MapKey<K, V> key1) + { + return (MapToList<K, V>) dkm.removeListsFor(key1); + } + + public <K> int sizeOfListFor(MapKey<K, ?> key1, K key2) + { + return dkm.sizeOfListFor(key1, key2); + } + +} Deleted: Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToObject.java 2007-09-29 03:13:38 UTC (rev 4167) +++ Trunk/pcgen/code/src/java/pcgen/core/utils/MapKeyMapToObject.java 2007-09-29 03:20:55 UTC (rev 4168) @@ -1,51 +0,0 @@ -package pcgen.core.utils; - -import java.util.Map; -import java.util.Set; - -import pcgen.util.DoubleKeyMap; - -public class MapKeyMapToObject -{ - - private final DoubleKeyMap<MapKey<?, ?>, Object, Object> dkm = - new DoubleKeyMap<MapKey<?, ?>, Object, Object>(); - - public <SK> boolean containsKey(MapKey<SK, ?> key1, SK key2) - { - return dkm.containsKey(key1, key2); - } - - public boolean containsKey(MapKey<?, ?> key1) - { - return dkm.containsKey(key1); - } - - public <SK, SV> SV get(MapKey<SK, SV> key1, SK key2) - { - return (SV) dkm.get(key1, key2); - } - - public <SK, SV> SV put(MapKey<SK, SV> key1, SK key2, SV value) - { - return (SV) dkm.put(key1, key2, value); - } - - /* - * TODO Need to fix the generics here... - */ - public <SK, SV> Map<Object, Object> removeAll(MapKey<SK, SV> key1) - { - return dkm.removeAll(key1); - } - - public <SK, SV> SV remove(MapKey<SK, SV> key1, SK key2) - { - return (SV) dkm.remove(key1, key2); - } - - public <SK> Set<SK> getKeySet(MapKey<SK, ?> key1) - { - return (Set<SK>) dkm.getSecondaryKeySet(key1); - } -} Added: Trunk/pcgen/code/src/java/pcgen/util/DoubleKeyMapToList.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/util/DoubleKeyMapToList.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/util/DoubleKeyMapToList.java 2007-09-29 03:20:55 UTC (rev 4168) @@ -0,0 +1,423 @@ +/* + * Copyright 2005 (C) Tom Parker <th...@so...> + * + * 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 Jun 16, 2005 + */ +package pcgen.util; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author Thomas Parker (thpr [at] yahoo.com) + * + * Represents a DoubleKeyMap of objects to Lists. List management is done + * internally to this class (while copies are accessible, the lists are kept + * private to this class). + * + * This class is reference-semantic. In appropriate cases (such as calling the + * addToListFor method), DoubleKeyMapToList will maintain a reference to the + * given Object. DoubleKeyMapToList will not modify any of the Objects it is + * passed; however, it reserves the right to return references to Objects it + * contains to other Objects. + * + * However, when any method in which DoubleKeyMapToList returns a Collection, + * ownership of the Collection itself is transferred to the calling Object, but + * the contents of the Collection (keys, values, etc.) are references whose + * ownership should be respected. + * + * @param <K1> + * The type of the primary keys in this DoubleKeyMapToList + * @param <K2> + * The type of the secondary keys in this DoubleKeyMapToList + * @param <V> + * The type of the values in this DoubleKeyMapToList + */ +public class DoubleKeyMapToList<K1, K2, V> implements Cloneable +{ + + /** + * The actual map containing the map to map to Lists + */ + private Map<K1, HashMapToList<K2, V>> mtmtl = + new HashMap<K1, HashMapToList<K2, V>>(); + + /** + * Constructs a new DoubleKeyMapToList + */ + public DoubleKeyMapToList() + { + super(); + } + + /** + * Adds the given value to the List for the given keys. The null value + * cannot be used as a key in a DoubleKeyMapToList. This method will + * automatically initialize the list for the given key if there is not + * already a List for that key. + * + * This method is reference-semantic and this DoubleKeyMapToList will + * maintain a strong reference to both the key object and the value object + * given as arguments to this method. + * + * @param key1 + * The primary key indicating which List the given object should + * be added to. + * @param key2 + * The secondary key indicating which List the given object + * should be added to. + * @param value + * The value to be added to the List for the given keys. + */ + public void addToListFor(K1 key1, K2 key2, V value) + { + HashMapToList<K2, V> localMap = mtmtl.get(key1); + if (localMap == null) + { + localMap = new HashMapToList<K2, V>(); + mtmtl.put(key1, localMap); + } + localMap.addToListFor(key2, value); + } + + /** + * Returns a copy of the List contained in this DoubleKeyMapToList for the + * given keys. This method returns null if the given key is not in this + * DoubleKeyMapToList. + * + * This method is value-semantic in that no changes are made to the object + * passed into the method and ownership of the returned List is transferred + * to the class calling this method. + * + * @param key1 + * The primary key for retrieving the given List + * @param key2 + * The secondary key for retrieving the given List + * @return a copy of the List contained in this DoubleKeyMapToList for the + * given key; null if the given key is not a key in this + * DoubleKeyMapToList. + */ + public List<V> getListFor(K1 key1, K2 key2) + { + HashMapToList<K2, V> localMap = mtmtl.get(key1); + if (localMap == null) + { + return null; + } + return localMap.getListFor(key2); + } + + /** + * Returns true if this DoubleKeyMapToList contains a List for the given + * primary key (and any secondary key). This method returns false if the + * given keys is not in this DoubleKeyMapToList. + * + * This method is value-semantic in that no changes are made to the objects + * passed into the method. + * + * @param key1 + * The primary key for testing presence of a List + * @return true if this DoubleKeyMapToList contains a List for the given + * primary key; false otherwise. + */ + public boolean containsListFor(K1 key1) + { + return mtmtl.containsKey(key1); + } + + /** + * Returns true if this DoubleKeyMapToList contains a List for the given + * keys. This method returns false if the given keys are not in this + * DoubleKeyMapToList. + * + * This method is value-semantic in that no changes are made to the objects + * passed into the method. + * + * @param key1 + * The primary key for testing presence of a List + * @param key2 + * The secondary key for testing presence of a List + * @return true if this DoubleKeyMapToList contains a List for the given + * keys; false otherwise. + */ + public boolean containsListFor(K1 key1, K2 key2) + { + HashMapToList<K2, V> localMap = mtmtl.get(key1); + if (localMap == null) + { + return false; + } + return localMap.containsListFor(key2); + } + + /** + * Removes the Lists for the given primary key. Note there is no requirement + * that the lists for the given primary key be empty before this method is + * called. + * + * Obviously, ownership of the returned Map is transferred to the object + * calling this method. + * + * @param key1 + * The primary key indicating the Lists to remove + * @return The Map representing the secondary keys and lists previously + * stored in this DoubleKeyMapToList for the given primary key + */ + public MapToList<K2, V> removeListsFor(K1 key1) + { + return mtmtl.remove(key1); + } + + /** + * Removes the List for the given keys. Note there is no requirement that + * the list for the given keys be empty before this method is called. + * + * Obviously, ownership of the returned List is transferred to the object + * calling this method. + * + * @param key1 + * The primary key indicating the List to remove + * @param key2 + * The secondary key indicating the List to remove + * @return The List previously mapped to the given keys by this + * DoubleKeyMapToList + */ + public List<V> removeListFor(K1 key1, K2 key2) + { + HashMapToList<K2, V> localMap = mtmtl.get(key1); + if (localMap == null) + { + return null; + } + List<V> o = localMap.removeListFor(key2); + // cleanup! + if (localMap.isEmpty()) + { + mtmtl.remove(key1); + } + return o; + } + + /** + * Removes the given value from the list for the given keys. Returns true if + * the value was successfully removed from the list for the given key. + * Returns false if there is not a list for the given keys or if the list + * for the given keys did not contain the given value object. + * + * @param key1 + * The primary key indicating which List the given object should + * be removed from + * @param key2 + * The secondary key indicating which List the given object + * should be removed from + * @param value + * The value to be removed from the List for the given keys + * @return true if the value was successfully removed from the list for the + * given keys; false otherwise + */ + public boolean removeFromListFor(K1 key1, K2 key2, V value) + { + /* + * Note there is no requirement that a Key is added before this method + * is called + */ + HashMapToList<K2, V> localMap = mtmtl.get(key1); + if (localMap == null) + { + return false; + } + boolean b = localMap.removeFromListFor(key2, value); + // cleanup! + if (b && localMap.isEmpty()) + { + mtmtl.remove(key1); + } + return b; + } + + /** + * Returns a Set indicating the primary Keys of this DoubleKeyMapToList. + * Ownership of the Set is transferred to the calling Object, no association + * is kept between the Set and this MapToList. (Thus, removal of a key from + * the returned Set will not remove that key from this DoubleKeyMapToList) + * + * NOTE: This method returns all of the keys this DoubleKeyMapToList + * contains. It DOES NOT determine whether the Lists defined for the keys + * are empty. Therefore, it is possible that this DoubleKeyMapToList + * contains one or more keys, and all of the lists associated with those + * keys are empty, yet this method will return a non-zero length Set. + * + * @return a Set containing the primary keys in this DoubleKeyMapToList + */ + public Set<K1> getKeySet() + { + // Need to 'clone' the Set, since Map returns a set that is still + // associated with the Map + return new HashSet<K1>(mtmtl.keySet()); + } + + /** + * Returns a Set of the secondary keys for the given primary key in this + * DoubleKeyMapToList + * + * NOTE: This method returns all of the secondary keys this + * DoubleKeyMapToList contains for the given primary key. It DOES NOT + * determine whether the Lists defined for the keys are empty. Therefore, it + * is possible that this DoubleKeyMapToList contains one or more keys, and + * all of the lists associated with those keys are empty, yet this method + * will return a non-zero length Set. + * + * Note: This Set is reference-semantic. The ownership of the Set is + * transferred to the calling Object; therefore, changes to the returned Set + * will NOT impact the DoubleKeyMapToList. + * + * @param aPrimaryKey + * The primary key to retrieve keys for. + * + * @return A <tt>Set</tt> of secondary key objects for the given primary + * key. + */ + public Set<K2> getSecondaryKeySet(final K1 aPrimaryKey) + { + HashMapToList<K2, V> localMap = mtmtl.get(aPrimaryKey); + if (localMap == null) + { + return Collections.emptySet(); + } + return localMap.getKeySet(); + } + + /** + * Clears this DoubleKeyMapToList + */ + public void clear() + { + mtmtl.clear(); + } + + /** + * Returns true if this DoubleKeyMapToList contains no Lists. + * + * NOTE: This method checks whether this DoubleKeyMapToList contains any + * Lists for any key. It DOES NOT test whether all Lists defined for all + * keys are empty. Therefore, it is possible that this DoubleKeyMapToList + * contains one or more keys, and all of the lists associated with those + * keys are empty, yet this method will return false. + * + * @return true if this DoubleKeyMapToList contains no Lists; false + * otherwise + */ + public boolean isEmpty() + { + return mtmtl.isEmpty(); + } + + /** + * Returns the number of primary key maps contained by this + * DoubleKeyMapToList. + * + * NOTE: This method counts the number of Lists this DoubleKeyMapToList + * contains. It DOES NOT determine whether all Lists defined for all keys + * are empty. Therefore, it is possible that this DoubleKeyMapToList + * contains one or more keys, and all of the lists associated with those + * keys are empty, yet this method will return a non-zero value. + * + * @return The number of lists contained by this DoubleKeyMapToList. + */ + public int firstKeyCount() + { + return mtmtl.size(); + } + + @Override + public Object clone() throws CloneNotSupportedException + { + DoubleKeyMapToList<K1, K2, V> dkm = + (DoubleKeyMapToList<K1, K2, V>) super.clone(); + dkm.mtmtl = new HashMap<K1, HashMapToList<K2, V>>(); + for (Iterator<K1> it = mtmtl.keySet().iterator(); it.hasNext();) + { + K1 key = it.next(); + HashMapToList<K2, V> m = mtmtl.get(key); + HashMapToList<K2, V> hmtl = new HashMapToList<K2, V>(); + hmtl.addAllLists(m); + dkm.mtmtl.put(key, hmtl); + } + return dkm; + } + + /** + * Returns true if this DoubleKeyMapToList contains a List for the given + * keys and that list contains the given value. Note, this method returns + * false if the given keys are not in this DoubleKeyMapToList. + * + * This method is value-semantic in that no changes are made to the objects + * passed into the method. + * + * @param key1 + * The primary key for retrieving the List to be checked + * @param key2 + * The secondary key for retrieving the List to be checked + * @param value + * The value to find in the List for the given keys. + * @return true if this DoubleKeyMapToList contains a List for the given + * keys AND that list contains the given value; false otherwise. + */ + public boolean containsInList(K1 key1, K2 key2, V value) + { + return containsListFor(key1, key2) + && mtmtl.get(key1).containsInList(key2, value); + } + + /** + * Returns the number of objects in the List for the given keys. This method + * will throw a NullPointerException if this DoubleKeyMapToList does not + * contain a List for the given key. + * + * This method is value-semantic in that no changes are made to the object + * passed into the method. + * + * @param key1 + * The primary key for retrieving the List to be checked + * @param key2 + * The secondary key for retrieving the List to be checked + * @return the number of objects in the List for the given keys + */ + public int sizeOfListFor(K1 key1, K2 key2) + { + HashMapToList<K2, V> localMap = mtmtl.get(key1); + return localMap == null ? 0 : localMap.sizeOfListFor(key2); + } + + @Override + public int hashCode() + { + return mtmtl.hashCode(); + } + + @Override + public boolean equals(Object o) + { + return o instanceof DoubleKeyMapToList + && mtmtl.equals(((DoubleKeyMapToList<?, ?, ?>) o).mtmtl); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-10-14 01:18:37
|
Revision: 4264 http://pcgen.svn.sourceforge.net/pcgen/?rev=4264&view=rev Author: jdempsey Date: 2007-10-13 18:18:41 -0700 (Sat, 13 Oct 2007) Log Message: ----------- Fix bug: Abilities Excluded from Calculations Issue#: 1813058 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/Skill.java Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-10-14 01:11:54 UTC (rev 4263) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-10-14 01:18:41 UTC (rev 4264) @@ -5700,8 +5700,8 @@ */ public Ability getAbilityMatching(final Ability anAbility) { - return AbilityUtilities.getAbilityFromList(aggregateFeatList(), - anAbility); + return AbilityUtilities.getAbilityFromList(new ArrayList<Ability>( + getFullAbilitySet()), anAbility); } public int getFirstSpellLevel(final Spell aSpell) @@ -8805,7 +8805,7 @@ SR = Math.max(SR, pcClass.getSR(this)); } - for (Ability aFeat : aggregateFeatList()) + for (Ability aFeat : getFullAbilitySet()) { SR = Math.max(SR, aFeat.getSR(this)); } @@ -17188,7 +17188,7 @@ * nature that the PC has. * @return Set of all abilities. */ - private Set<Ability> getFullAbilitySet() + public Set<Ability> getFullAbilitySet() { GameMode gm = SettingsHandler.getGame(); Set<AbilityCategory> catSet = new HashSet<AbilityCategory>(); Modified: Trunk/pcgen/code/src/java/pcgen/core/Skill.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-10-14 01:11:54 UTC (rev 4263) +++ Trunk/pcgen/code/src/java/pcgen/core/Skill.java 2007-10-14 01:18:41 UTC (rev 4264) @@ -235,7 +235,7 @@ return true; } - for (Ability aFeat : aPC.aggregateFeatList()) + for (Ability aFeat : aPC.getFullAbilitySet()) { if (aFeat.hasCSkill(keyName)) { @@ -1429,7 +1429,7 @@ } } - for ( Ability feat : aPC.aggregateFeatList() ) + for ( Ability feat : aPC.getFullAbilitySet() ) { if (feat.hasCcSkill(keyName)) { Modified: Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java 2007-10-14 01:11:54 UTC (rev 4263) +++ Trunk/pcgen/code/src/java/pcgen/core/spell/PCSpellTracker.java 2007-10-14 01:18:41 UTC (rev 4264) @@ -22,6 +22,7 @@ */ package pcgen.core.spell; +import pcgen.core.Ability; import pcgen.core.CharacterDomain; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; @@ -31,6 +32,8 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Set; + import pcgen.core.Domain; import java.util.ArrayList; import java.util.List; @@ -94,8 +97,9 @@ buildSpellInfoMap(spellInfoMap, key1, key2, e); } - if (!pc.aggregateFeatList().isEmpty()) { - e = pc.aggregateFeatList().iterator(); + Set<Ability> abilitySet = pc.getFullAbilitySet(); + if (!abilitySet.isEmpty()) { + e = abilitySet.iterator(); buildSpellInfoMap(spellInfoMap, key1, key2, e); } @@ -206,8 +210,9 @@ buildSpellLevelMap(levelMatch, e); } - if (!pc.aggregateFeatList().isEmpty()) { - e = pc.aggregateFeatList().iterator(); + Set<Ability> abilitySet = pc.getFullAbilitySet(); + if (!abilitySet.isEmpty()) { + e = abilitySet.iterator(); buildSpellLevelMap(levelMatch, e); } Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java 2007-10-14 01:11:54 UTC (rev 4263) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoTempMod.java 2007-10-14 01:18:41 UTC (rev 4264) @@ -2393,8 +2393,8 @@ pNode[5] = new PObjectNode("Skills"); //$NON-NLS-1$ // - // first do PC's feats - for (Ability aFeat : pc.aggregateFeatList()) + // first do PC's feats and other abilities + for (Ability aFeat : pc.getFullAbilitySet()) { for (BonusObj aBonus : aFeat.getBonusList()) { Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2007-10-14 01:11:54 UTC (rev 4263) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2007-10-14 01:18:41 UTC (rev 4264) @@ -624,7 +624,7 @@ buffer.append(LINE_SEP); } - for (Ability ability : thePC.aggregateFeatList()) + for (Ability ability : thePC.getFullAbilitySet()) { if (!ability.containsListFor(selectedArmorProfListKey)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-10-21 12:04:28
|
Revision: 4385 http://pcgen.svn.sourceforge.net/pcgen/?rev=4385&view=rev Author: jdempsey Date: 2007-10-21 05:04:31 -0700 (Sun, 21 Oct 2007) Log Message: ----------- New PCGen icon! Fix crashing dialogs and consolidate icon setting code. Issue#: 953153 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui/AddSpecialAbility.java Trunk/pcgen/code/src/java/pcgen/gui/EQFrame.java Trunk/pcgen/code/src/java/pcgen/gui/HPFrame.java Trunk/pcgen/code/src/java/pcgen/gui/NameGui.java Trunk/pcgen/code/src/java/pcgen/gui/NewWeaponInfoDialog.java Trunk/pcgen/code/src/java/pcgen/gui/PCCCreator.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java Modified: Trunk/pcgen/code/src/java/pcgen/gui/AddSpecialAbility.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/AddSpecialAbility.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/gui/AddSpecialAbility.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -97,10 +97,10 @@ { aPC = pc; setTitle(myGetTitle()); + IconUtilitities.maybeSetIcon(this, + IconUtilitities.RESOURCE_APP_ICON); Toolkit kit = Toolkit.getDefaultToolkit(); - Image img = kit.getImage(getClass().getResource(IconUtilitities.RESOURCE_APP_ICON)); - this.setIconImage(img); // since the Toolkit.getScreenSize() method is broken in the Linux implementation // of Java 5 (it returns double the screen size under xinerama), this method is Modified: Trunk/pcgen/code/src/java/pcgen/gui/EQFrame.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/EQFrame.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/gui/EQFrame.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -54,9 +54,8 @@ this.aPC = aPC; - Toolkit kit = Toolkit.getDefaultToolkit(); - Image img = kit.getImage(getClass().getResource(IconUtilitities.RESOURCE_APP_ICON)); - this.setIconImage(img); + IconUtilitities.maybeSetIcon(this, + IconUtilitities.RESOURCE_APP_ICON); setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); Modified: Trunk/pcgen/code/src/java/pcgen/gui/HPFrame.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/HPFrame.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/gui/HPFrame.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -48,9 +48,8 @@ super(); setTitle(myGetTitle()); + IconUtilitities.maybeSetIcon(this, IconUtilitities.RESOURCE_APP_ICON); Toolkit kit = Toolkit.getDefaultToolkit(); - Image img = kit.getImage(getClass().getResource(IconUtilitities.RESOURCE_APP_ICON)); - this.setIconImage(img); // since the Toolkit.getScreenSize() method is broken in the Linux implementation // of Java 5 (it returns double the screen size under xinerama), this method is Modified: Trunk/pcgen/code/src/java/pcgen/gui/NameGui.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/NameGui.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/gui/NameGui.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -57,8 +57,8 @@ super("Random Name Generator"); this.pc = pc; - // according to the API, the following should *ALWAYS* use '/' - this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource(IconUtilitities.RESOURCE_APP_ICON))); + IconUtilitities.maybeSetIcon(this, + IconUtilitities.RESOURCE_APP_ICON); Utility.centerFrame(this, true); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); Modified: Trunk/pcgen/code/src/java/pcgen/gui/NewWeaponInfoDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/NewWeaponInfoDialog.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/gui/NewWeaponInfoDialog.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -58,9 +58,8 @@ Toolkit kit = Toolkit.getDefaultToolkit(); - // according to the API, the following should *ALWAYS* use '/' - Image img = kit.getImage(getClass().getResource(IconUtilitities.RESOURCE_APP_ICON)); - parent.setIconImage(img); + IconUtilitities.maybeSetIcon(parent, + IconUtilitities.RESOURCE_APP_ICON); initComponents(); setLocationRelativeTo(parent); // centre on parent (Canadian spelling eh?) } Modified: Trunk/pcgen/code/src/java/pcgen/gui/PCCCreator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PCCCreator.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/gui/PCCCreator.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -85,9 +85,8 @@ { mSrc = ms; - Toolkit kit = Toolkit.getDefaultToolkit(); - Image img = kit.getImage(getClass().getResource(IconUtilitities.RESOURCE_APP_ICON)); - this.setIconImage(img); + IconUtilitities.maybeSetIcon(this, + IconUtilitities.RESOURCE_APP_ICON); buildTree(); JButton writeBtn = new JButton("Write .pcc file"); Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -98,6 +98,7 @@ import pcgen.gui.filter.FilterConstants; import pcgen.gui.filter.FilterFactory; import pcgen.gui.utils.FormattedCellEditor; +import pcgen.gui.utils.IconUtilitities; import pcgen.gui.utils.JComboBoxEx; import pcgen.gui.utils.JLabelPane; import pcgen.gui.utils.JTableEx; @@ -2046,16 +2047,8 @@ }); cPanel.add(closeButton); abilitiesFrame.getContentPane().add(cPanel, BorderLayout.SOUTH); - - ClassLoader loader = getClass().getClassLoader(); - Toolkit kit = Toolkit.getDefaultToolkit(); - - // according to the API, the following should *ALWAYS* use '/' - Image img = - kit.getImage(loader - .getResource("pcgen/gui/resource/PcgenIcon.gif")); //$NON-NLS-1$ - loader = null; - abilitiesFrame.setIconImage(img); + IconUtilitities.maybeSetIcon(abilitiesFrame, + IconUtilitities.RESOURCE_APP_ICON); } // Layout the stats pane Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2007-10-21 10:14:32 UTC (rev 4384) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2007-10-21 12:04:31 UTC (rev 4385) @@ -2982,6 +2982,7 @@ { thePC.setPoolAmount(Integer.parseInt(line.substring(TAG_POOLPOINTS .length() + 1))); + thePC.setCostPool(thePC.getPoolAmount()); } catch (NumberFormatException nfe) { @@ -2999,8 +3000,6 @@ { thePC.setPointBuyPoints(Integer.parseInt(line .substring(TAG_POOLPOINTSAVAIL.length() + 1))); - thePC - .setCostPool(thePC.getPointBuyPoints() - thePC.getPoolAmount()); } catch (NumberFormatException nfe) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2007-10-24 22:12:38
|
Revision: 4409 http://pcgen.svn.sourceforge.net/pcgen/?rev=4409&view=rev Author: thpr Date: 2007-10-24 15:12:42 -0700 (Wed, 24 Oct 2007) Log Message: ----------- Use constants that are available Also helps in looking up usage! Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/WeaponEquipment.java Trunk/pcgen/code/src/java/pcgen/gui/EqBuilder.java Modified: Trunk/pcgen/code/src/java/pcgen/core/WeaponEquipment.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/WeaponEquipment.java 2007-10-24 20:44:10 UTC (rev 4408) +++ Trunk/pcgen/code/src/java/pcgen/core/WeaponEquipment.java 2007-10-24 22:12:42 UTC (rev 4409) @@ -442,7 +442,8 @@ private String getWeaponInfo(final String infoType, final boolean bPrimary) { final String it = infoType + "|"; - final EquipmentModifier eqMod = theEquipment.getEqModifierKeyed("PCGENi_WEAPON", bPrimary); + final EquipmentModifier eqMod = theEquipment.getEqModifierKeyed( + Constants.s_INTERNAL_EQMOD_WEAPON, bPrimary); if (eqMod != null) { Modified: Trunk/pcgen/code/src/java/pcgen/gui/EqBuilder.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/EqBuilder.java 2007-10-24 20:44:10 UTC (rev 4408) +++ Trunk/pcgen/code/src/java/pcgen/gui/EqBuilder.java 2007-10-24 22:12:42 UTC (rev 4409) @@ -1709,7 +1709,7 @@ if (!nwid.getWasCancelled()) { - StringBuffer modString = new StringBuffer("PCGENi_WEAPON"); + StringBuffer modString = new StringBuffer(Constants.s_INTERNAL_EQMOD_WEAPON); modString.append("|DAMAGE=").append(nwid.getDamage()); modString.append("|CRITRANGE=").append(nwid.getCritRange()); modString.append("|CRITMULT=").append(nwid.getCritMultiplier()); @@ -1722,7 +1722,7 @@ } } - final String modString = "PCGENi_WEAPON|RANGE="; + final String modString = Constants.s_INTERNAL_EQMOD_WEAPON + "|RANGE="; if (aNewEq.isWeapon() && aNewEq.isRanged()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <za...@us...> - 2007-11-02 01:22:52
|
Revision: 4478 http://pcgen.svn.sourceforge.net/pcgen/?rev=4478&view=rev Author: zaister Date: 2007-11-01 18:22:56 -0700 (Thu, 01 Nov 2007) Log Message: ----------- [ 1816986 ] Add option to "Max HP at first level" for class levels only Issue#: 1816986 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-11-01 16:38:41 UTC (rev 4477) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2007-11-02 01:22:56 UTC (rev 4478) @@ -4978,7 +4978,7 @@ // This is so GMGen can add classes to a person without pcgen flipping // out if (Globals.getUseGUI()) { - rollHP(aPC, level, aPC.getTotalLevels() == 1); + rollHP(aPC, level, (SettingsHandler.isHPMaxAtFirstClassLevel() ? aPC.totalNonMonsterLevels() : aPC.getTotalLevels()) == 1); } if (!aPC.isImporting()) { Modified: Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2007-11-01 16:38:41 UTC (rev 4477) +++ Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2007-11-02 01:22:56 UTC (rev 4478) @@ -105,6 +105,7 @@ private static boolean showMatureOnLoad = true; private static boolean showSponsorsOnLoad = true; private static boolean hpMaxAtFirstLevel = true; + private static boolean hpMaxAtFirstClassLevel = true; private static int hpRollMethod = Constants.HP_STANDARD; private static int hpPct = 100; private static boolean ignoreMonsterHDCap = false; @@ -809,6 +810,16 @@ return hpMaxAtFirstLevel; } + public static void setHPMaxAtFirstClassLevel(final boolean aBool) + { + hpMaxAtFirstClassLevel = aBool; + } + + public static boolean isHPMaxAtFirstClassLevel() + { + return hpMaxAtFirstClassLevel; + } + public static void setHPPct(final int argHPPct) { hpPct = argHPPct; @@ -1172,6 +1183,7 @@ setGUIUsesOutputNameSpells(getPCGenOption("GUIUsesOutputNameSpells", false)); //$NON-NLS-1$ setHideMonsterClasses(getPCGenOption("hideMonsterClasses", false)); //$NON-NLS-1$ setHPMaxAtFirstLevel(getPCGenOption("hpMaxAtFirstLevel", true)); //$NON-NLS-1$ + setHPMaxAtFirstClassLevel(getPCGenOption("hpMaxAtFirstClassLevel", false)); //$NON-NLS-1$ setHPPct(getPCGenOption("hpPct", 100)); //$NON-NLS-1$ setHPRollMethod(getPCGenOption("hpRollMethod", Constants.HP_STANDARD)); //$NON-NLS-1$ setIgnoreMonsterHDCap(getPCGenOption("ignoreMonsterHDCap", false)); //$NON-NLS-1$ @@ -1545,6 +1557,7 @@ setPCGenOption("GUIUsesOutputNameSpells", guiUsesOutputNameSpells()); //$NON-NLS-1$ setPCGenOption("hideMonsterClasses", hideMonsterClasses()); //$NON-NLS-1$ setPCGenOption("hpMaxAtFirstLevel", isHPMaxAtFirstLevel()); //$NON-NLS-1$ + setPCGenOption("hpMaxAtFirstClassLevel", isHPMaxAtFirstClassLevel()); //$NON-NLS-1$ setPCGenOption("hpPct", getHPPct()); //$NON-NLS-1$ setPCGenOption("hpRollMethod", getHPRollMethod()); //$NON-NLS-1$ setPCGenOption("ignoreMonsterHDCap", isIgnoreMonsterHDCap()); //$NON-NLS-1$ Modified: Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java 2007-11-01 16:38:41 UTC (rev 4477) +++ Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java 2007-11-02 01:22:56 UTC (rev 4478) @@ -373,6 +373,7 @@ private JCheckBox ignoreMonsterHDCap = new JCheckBox(); private JCheckBox loadURL = new JCheckBox(); private JCheckBox maxHpAtFirstLevel = new JCheckBox(); + private JCheckBox maxHpAtFirstClassLevel = new JCheckBox(); private JCheckBox printSpellsWithPC = new JCheckBox(); private JCheckBox removeTempFiles; private JCheckBox saveCustom = new JCheckBox(); @@ -689,6 +690,7 @@ SettingsHandler.setHPPct(hpPct.getValue()); SettingsHandler.setHPMaxAtFirstLevel(maxHpAtFirstLevel.isSelected()); + SettingsHandler.setHPMaxAtFirstClassLevel(maxHpAtFirstClassLevel.isSelected()); // House Rules @@ -1242,6 +1244,7 @@ hpPct.setValue(SettingsHandler.getHPPct()); maxHpAtFirstLevel.setSelected(SettingsHandler.isHPMaxAtFirstLevel()); + maxHpAtFirstClassLevel.setSelected(SettingsHandler.isHPMaxAtFirstClassLevel()); // House Rules // crossClassSkillCostCombo.setSelectedIndex(SettingsHandler.getIntCrossClassSkillCost()); @@ -2072,10 +2075,21 @@ + ": "); gridbag.setConstraints(label, c); hitPointsPanel.add(label); - Utility.buildConstraints(c, 2, iRow, 1, 1, 0, 0); + Utility.buildConstraints(c, 2, iRow++, 1, 1, 0, 0); gridbag.setConstraints(maxHpAtFirstLevel, c); hitPointsPanel.add(maxHpAtFirstLevel); + Utility.buildConstraints(c, 0, iRow, 2, 1, 0, 0); + label = + new JLabel(" " + + PropertyFactory.getString("in_Prefs_hpMaxAtFirstClass") + + ": "); + gridbag.setConstraints(label, c); + hitPointsPanel.add(label); + Utility.buildConstraints(c, 2, iRow, 1, 1, 0, 0); + gridbag.setConstraints(maxHpAtFirstClassLevel, c); + hitPointsPanel.add(maxHpAtFirstClassLevel); + Utility.buildConstraints(c, 5, 20, 1, 1, 1, 1); c.fill = GridBagConstraints.BOTH; label = new JLabel(" "); Modified: Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-11-01 16:38:41 UTC (rev 4477) +++ Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2007-11-02 01:22:56 UTC (rev 4478) @@ -2854,6 +2854,8 @@ in_Prefs_hpMaxAtFirst=Maximum HP at First Level +in_Prefs_hpMaxAtFirstClass=Do not apply to Racial Hit Dice + in_Prefs_hpAverageRoundedUp=Average, Rounded Up in_Prefs_houseRules=House Rules This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-11-03 00:27:50
|
Revision: 4479 http://pcgen.svn.sourceforge.net/pcgen/?rev=4479&view=rev Author: jdempsey Date: 2007-11-02 17:27:51 -0700 (Fri, 02 Nov 2007) Log Message: ----------- Fix bug: AbilityAllListToken has FEAT hard coded Issue#: 1820364 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/VariableProcessorPC.java Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/GameMode.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2007-11-02 01:22:56 UTC (rev 4478) +++ Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2007-11-03 00:27:51 UTC (rev 4479) @@ -3225,6 +3225,36 @@ return Collections.unmodifiableCollection(catList); } + + /** + * Returns a <tt>Collection</tt> of <tt>AbilityCategory</tt> objects + * defined by this game mode that match the category key. + * + * @param key The category key to filter for. + * @return A <tt>Collection</tt> of <tt>AbilityCategory</tt> objects. + */ + public Collection<AbilityCategory> getAllAbilityCatsForKey(String key) + { + if (key == null) + { + return Collections.emptyList(); + } + List<AbilityCategory> catList = new ArrayList<AbilityCategory>(); + if ( !theAbilityCategories.contains(AbilityCategory.FEAT) ) + { + theAbilityCategories.add(0, AbilityCategory.FEAT); + } + for (AbilityCategory cat : theAbilityCategories) + { + if (key.equals(cat.getKeyName()) + || key.equals(cat.getAbilityCategory())) + { + catList.add(cat); + } + } + return Collections.unmodifiableCollection(catList); + } + public void setPreviewDir(final String aDir) { thePreviewDir = aDir; Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-11-02 01:22:56 UTC (rev 4478) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2007-11-03 00:27:51 UTC (rev 4479) @@ -25,9 +25,40 @@ */ package pcgen.core; +import java.awt.geom.Point2D; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Observable; +import java.util.Set; +import java.util.SortedSet; +import java.util.StringTokenizer; +import java.util.TreeMap; +import java.util.TreeSet; + import pcgen.core.bonus.Bonus; import pcgen.core.bonus.BonusObj; -import pcgen.core.character.*; +import pcgen.core.character.CharacterSpell; +import pcgen.core.character.CompanionMod; +import pcgen.core.character.EquipSet; +import pcgen.core.character.EquipSlot; +import pcgen.core.character.Follower; +import pcgen.core.character.SpellBook; +import pcgen.core.character.SpellInfo; import pcgen.core.levelability.LevelAbility; import pcgen.core.pclevelinfo.PCLevelInfo; import pcgen.core.prereq.PrereqHandler; @@ -36,23 +67,26 @@ import pcgen.core.spell.PCSpellTracker; import pcgen.core.spell.Spell; import pcgen.core.system.GameModeRollMethod; -import pcgen.core.utils.*; +import pcgen.core.utils.CoreUtility; +import pcgen.core.utils.ListKey; +import pcgen.core.utils.MessageType; +import pcgen.core.utils.ShowMessageDelegate; +import pcgen.core.utils.StringKey; import pcgen.gui.GuiConstants; import pcgen.io.PCGFile; import pcgen.io.exporttoken.BonusToken; import pcgen.persistence.PersistenceLayerException; import pcgen.persistence.lst.prereq.PreParserFactory; -import pcgen.util.*; +import pcgen.util.Delta; +import pcgen.util.DoubleKeyMap; +import pcgen.util.HashMapToList; +import pcgen.util.Logging; +import pcgen.util.PropertyFactory; import pcgen.util.enumeration.AttackType; import pcgen.util.enumeration.Load; import pcgen.util.enumeration.Visibility; import pcgen.util.enumeration.VisionType; -import java.awt.geom.Point2D; -import java.io.*; -import java.math.BigDecimal; -import java.util.*; - /** * <code>PlayerCharacter</code>. * @@ -16035,7 +16069,7 @@ /** - * Get a list of real abiltiies of a particualr AbilityCategory + * Get a list of real abiltiies of a particular AbilityCategory * no matter which AbilityCategory list they reside in. * * @param aCategory The AbilityCategory of the desired abilities. @@ -16905,9 +16939,9 @@ final AbilityCategory aCategory) { final List<Ability> abilities = new ArrayList<Ability>(); - abilities.addAll(getRealAbilitiesListAnyCat(AbilityCategory.FEAT)); - abilities.addAll(getAutomaticAbilityList(AbilityCategory.FEAT)); - abilities.addAll(getVirtualAbilityList(AbilityCategory.FEAT)); + abilities.addAll(getRealAbilitiesListAnyCat(aCategory)); + abilities.addAll(getAutomaticAbilityList(aCategory)); + abilities.addAll(getVirtualAbilityList(aCategory)); final List<Ability> ret = new ArrayList<Ability>(abilities.size()); for (final Ability ability : abilities) { Modified: Trunk/pcgen/code/src/java/pcgen/core/VariableProcessorPC.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/VariableProcessorPC.java 2007-11-02 01:22:56 UTC (rev 4478) +++ Trunk/pcgen/code/src/java/pcgen/core/VariableProcessorPC.java 2007-11-03 00:27:51 UTC (rev 4479) @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.StringTokenizer; @@ -693,41 +694,58 @@ { valString = Integer.toString(countVisibleFeats(getPc().featAutoList(), false, true)); } - else if ("COUNT[FEATSALL]".equals(valString) || "COUNT[FEATSALL.VISIBLE]".equals(valString)) + else if ("COUNT[FEATSALL]".equals(valString) + || "COUNT[FEATSALL.VISIBLE]".equals(valString)) { - valString = Integer.toString(getPc().aggregateVisibleFeatList().size()); + String catKey = AbilityCategory.FEAT.getKeyName(); + valString = + Integer.toString(countVisibleFeats( + getAggregateAbilitiesListForKey(catKey), true, false)); } else if ("COUNT[FEATSALL.ALL]".equals(valString)) { - valString = Integer.toString(getPc().aggregateFeatList().size()); + String catKey = AbilityCategory.FEAT.getKeyName(); + List<Ability> abilityList = getAggregateAbilitiesListForKey(catKey); + valString = Integer.toString(abilityList.size()); } else if ("COUNT[FEATSALL.HIDDEN]".equals(valString)) { - valString = Integer.toString(countVisibleFeats(getPc().aggregateFeatList(), false, true)); + String catKey = AbilityCategory.FEAT.getKeyName(); + valString = + Integer.toString(countVisibleFeats( + getAggregateAbilitiesListForKey(catKey), false, true)); } else if ((valString.startsWith("COUNT[FEATTYPE=") || valString.startsWith("COUNT[FEATTYPE.")) && valString.endsWith(".ALL]")) { + String catKey = AbilityCategory.FEAT.getKeyName(); + List<Ability> abilityList = getAggregateAbilitiesListForKey(catKey); final List<String> featTypes = CoreUtility.split(valString.substring(15, valString.length() - 5), '.'); - valString = Integer.toString(countVisibleFeatTypes(getPc().aggregateFeatList(), featTypes, true, true)); + valString = Integer.toString(countVisibleFeatTypes(abilityList, featTypes, true, true)); } else if ((valString.startsWith("COUNT[FEATTYPE=") || valString.startsWith("COUNT[FEATTYPE.")) && valString.endsWith(".HIDDEN]")) { + String catKey = AbilityCategory.FEAT.getKeyName(); + List<Ability> abilityList = getAggregateAbilitiesListForKey(catKey); final List<String> featTypes = CoreUtility.split(valString.substring(15, valString.length() - 8), '.'); - valString = Integer.toString(countVisibleFeatTypes(getPc().aggregateFeatList(), featTypes, false, true)); + valString = Integer.toString(countVisibleFeatTypes(abilityList, featTypes, false, true)); } else if ((valString.startsWith("COUNT[FEATTYPE=") || valString.startsWith("COUNT[FEATTYPE.")) && valString.endsWith(".VISIBLE]")) { + String catKey = AbilityCategory.FEAT.getKeyName(); + List<Ability> abilityList = getAggregateAbilitiesListForKey(catKey); final List<String> featTypes = CoreUtility.split(valString.substring(15, valString.length() - 9), '.'); - valString = Integer.toString(countVisibleFeatTypes(getPc().aggregateFeatList(), featTypes, true, false)); + valString = Integer.toString(countVisibleFeatTypes(abilityList, featTypes, true, false)); } else if ((valString.startsWith("COUNT[FEATTYPE=") || valString.startsWith("COUNT[FEATTYPE.")) && valString.endsWith("]")) { + String catKey = AbilityCategory.FEAT.getKeyName(); + List<Ability> abilityList = getAggregateAbilitiesListForKey(catKey); final List<String> featTypes = CoreUtility.split(valString.substring(15, valString.length() - 1), '.'); - valString = Integer.toString(countVisibleFeatTypes(getPc().aggregateFeatList(), featTypes, true, false)); + valString = Integer.toString(countVisibleFeatTypes(abilityList, featTypes, true, false)); } // @@ -1318,4 +1336,23 @@ return valString; } + + /** + * Retrieve a list of all abilities in all categories associated with a given key. + * e.g. Fighter feats are included when feats are requested. + * @param catKey The key of the category to be retrieved + * @return List of matching abilities. + */ + private List<Ability> getAggregateAbilitiesListForKey(String catKey) + { + Collection<AbilityCategory> cats = + SettingsHandler.getGame().getAllAbilityCatsForKey(catKey); + List<Ability> abilityList = new ArrayList<Ability>(); + for (AbilityCategory abilityCategory : cats) + { + abilityList.addAll(getPc().getAggregateAbilityList( + abilityCategory)); + } + return abilityList; + } } Modified: Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java 2007-11-02 01:22:56 UTC (rev 4478) +++ Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java 2007-11-03 00:27:51 UTC (rev 4479) @@ -24,6 +24,7 @@ package pcgen.io.exporttoken; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.StringTokenizer; @@ -106,7 +107,12 @@ if (lastPC != pc || !aCategory.equals(lastCategory) || lastPCSerial != pc.getSerial() || !tokenString.equals(lastType)) { - abilityList = getAbilityList(pc, aCategory); + Collection<AbilityCategory> cats = SettingsHandler.getGame().getAllAbilityCatsForKey(aCategory.getKeyName()); + abilityList = new ArrayList<Ability>(); + for (AbilityCategory abilityCategory : cats) + { + abilityList.addAll(getAbilityList(pc, abilityCategory)); + } lastPC = pc; lastCategory = aCategory; lastPCSerial = pc.getSerial(); @@ -167,7 +173,7 @@ AbilityCategory aCategory) { List<Ability> listOfAbilities = new ArrayList<Ability>(); - for (Ability ability : pc.getRealAbilitiesListAnyCat(aCategory)) + for (Ability ability : pc.getRealAbilitiesList(aCategory)) { listOfAbilities.add(ability); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-11-14 08:26:42
|
Revision: 4505 http://pcgen.svn.sourceforge.net/pcgen/?rev=4505&view=rev Author: jdempsey Date: 2007-11-14 00:26:46 -0800 (Wed, 14 Nov 2007) Log Message: ----------- Move point buy definitions to Custom data Issue#: 1831621 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/CustomData.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java Modified: Trunk/pcgen/code/src/java/pcgen/core/CustomData.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/CustomData.java 2007-11-14 05:41:10 UTC (rev 4504) +++ Trunk/pcgen/code/src/java/pcgen/core/CustomData.java 2007-11-14 08:26:46 UTC (rev 4505) @@ -131,6 +131,17 @@ } /** + * Get custom purchase mode path + * @param usePath Should the game mode path be used + * @param gmName The name of the game mode to get the path for + * @return custom purchase mode file set path + */ + public static String customPurchaseModeFilePath(final boolean usePath, String gmName) + { + return getCustomPath("PointBuyMethods", usePath, gmName); + } + + /** * Get customRaceFilePath * @param usePath * @return customRaceFilePath @@ -285,6 +296,7 @@ */ public static void writePurchaseModeConfiguration() { + ensureCustomDirExists(); final BufferedWriter bw = getPurchaseModeWriter(); final SortedMap<Integer, PointBuyCost> pbStatCosts = SettingsHandler.getGame().getPointBuyStatCostMap(); @@ -378,27 +390,28 @@ return getWriter(customEquipmentFilePath()); } - private static String getCustomPath(final String type, final boolean usePath) + private static String getCustomPath(final String type, + final boolean usePath, String gmName) { String aString = ""; if (usePath) { aString = SettingsHandler.getPcgenCustomDir().getAbsolutePath(); - aString += File.separator + SettingsHandler.getGame().getName(); + aString += File.separator + gmName; } return aString + File.separator + "custom" + type + Constants.s_PCGEN_LIST_EXTENSION; } + private static String getCustomPath(final String type, final boolean usePath) + { + return getCustomPath(type, usePath, SettingsHandler.getGame().getName()); + } + private static BufferedWriter getPurchaseModeWriter() { - final String modeFile = SettingsHandler.getPcgenSystemDir() - + File.separator + "gameModes" + File.separator - + SettingsHandler.getGame().getName() + File.separator - + "pointbuymethods.lst"; - - return getWriter(modeFile); + return getWriter(customPurchaseModeFilePath(true, SettingsHandler.getGame().getName())); } private static BufferedReader getReader(final String path) Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2007-11-14 05:41:10 UTC (rev 4504) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2007-11-14 08:26:46 UTC (rev 4505) @@ -1675,8 +1675,7 @@ false); // Load pointbuymethods.lst - loadGameModeLstFile(pointBuyLoader, gmName, gameFile, - "pointbuymethods.lst", false); + loadPointBuyFile(gameFile, gmName); // Load sizeAdjustment.lst loadGameModeLstFile(sizeLoader, gmName, gameFile, @@ -1692,6 +1691,38 @@ } /** + * Load the purchase mode/point buy definitions from either the new + * location under the custom sources folder, or in the old location + * with the game mode. + * + * @param gameFile The location of the game mode directory. + * @param gmName The name of the game mode being loaded. + */ + private void loadPointBuyFile(String gameFile, String gmName) + { + File pointBuyFile = + new File(CustomData.customPurchaseModeFilePath(true, gmName)); + boolean useGameModeFile = true; + if (pointBuyFile.exists()) + { + try + { + pointBuyLoader.loadLstFile(pointBuyFile.toURI(), gmName); + useGameModeFile = false; + } + catch (PersistenceLayerException e) + { + // Ignore - its OK if the file cannot be loaded + } + } + if (useGameModeFile) + { + loadGameModeLstFile(pointBuyLoader, gmName, gameFile, + "pointbuymethods.lst", false); + } + } + + /** * This method processes extra info from a line in a PCC/LST file, * typically of the form INCLUDE or EXCLUDE. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2007-11-22 12:55:24
|
Revision: 4569 http://pcgen.svn.sourceforge.net/pcgen/?rev=4569&view=rev Author: jdempsey Date: 2007-11-22 04:55:27 -0800 (Thu, 22 Nov 2007) Log Message: ----------- Define ABILITYCATEGORIES in lst file - Allow categories displayed in UI to be changed when changing sources or game modes - Allow categories defined in LST files to be unloaded. Issue#: 1834907 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Globals.java Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/TabContainer.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityCategoryLoader.java Property Changed: ---------------- Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Globals.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -2422,6 +2422,7 @@ createEmptyRace(); Equipment.clearEquipmentTypes(); PersistenceManager.getInstance().emptyLists(); + SettingsHandler.getGame().clearLstAbilityCategories(); } /** Modified: Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/gui/CharacterInfo.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -195,7 +195,9 @@ .getComponentAt(i); characterInfoTabbedPane.setTitleAt(i, tab.getTabName()); } + infoAbilities().refreshAbilityCategories(); } + /** * Get the info description * @return info description Modified: Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -133,6 +133,7 @@ private static final int VIEW_PUBLISH = 1; private static final int VIEW_PUBSET = 2; private static final int VIEW_PUBFMTSET = 3; + //private static final int VIEW_RANK = 4; private static int viewMode = VIEW_PUBFMTSET; // keep track of what view mode we're in for Available private static int viewSelectMode = VIEW_PRODUCT; // keep track of what view mode we're in for Selected. defaults to "Name" @@ -142,6 +143,7 @@ private static PObjectNode typePubRoot; private static PObjectNode typePubSetRoot; private static PObjectNode typePubFmtSetRoot; + //private static PObjectNode rankRoot; private final JLabel avaLabel = new JLabel( /*"Available"*/ ); private final JLabel selLabel = new JLabel( /*"Selected"*/ @@ -790,6 +792,7 @@ viewComboBox.addItem("Company"); viewComboBox.addItem("Company/Setting"); viewComboBox.addItem("Comp/Fmt/Setting"); //abbr. here so that all GUI elements will fit when started at default window size + //viewComboBox.addItem("Rank"); Utility.setDescription(viewComboBox, "You can change how the Sources in the Tables are listed."); viewMode = SettingsHandler.getPCGenOption("pcgen.options.sourceTab.availableListMode", VIEW_PUBFMTSET); viewComboBox.setSelectedIndex(viewMode); // must be done before createModels call @@ -1078,6 +1081,12 @@ updateModels(); showSourcesLoaded(oldStatus); + + if (Globals.getRootFrame() != null) + { + PCGen_Frame1.getInst().refreshCharInfoTabs(); + } + } }; @@ -1143,8 +1152,10 @@ typePubRoot = new PObjectNode(); typePubSetRoot = new PObjectNode(); typePubFmtSetRoot = new PObjectNode(); + //rankRoot = new PObjectNode(); Set<String> aList = new TreeSet<String>(); //TYPE list + //Set<Integer> rankList = new TreeSet<Integer>(); //RANK list for (Campaign aCamp : Globals.getCampaignList()) { @@ -1154,6 +1165,7 @@ { aList.add(aCamp.getMyType(0)); //TYPE[0] = Publisher } + //rankList.add(aCamp.getRank()); } } @@ -1164,6 +1176,20 @@ PObjectNode[] p1 = new PObjectNode[size]; PObjectNode[] p2 = new PObjectNode[size]; PObjectNode[] p3 = new PObjectNode[size]; +// PObjectNode[] pRank = new PObjectNode[rankList.size()+1]; +// int arrayIdx = 0; +// for (Integer rank : rankList) +// { +// PObjectNode pon = new PObjectNode(); +// pon.setItem(rank.toString()); +// pon.setParent(rankRoot); +// pRank[arrayIdx++] = pon; +// } +// PObjectNode opon = new PObjectNode(); +// opon.setItem("Other"); +// opon.setParent(rankRoot); +// pRank[arrayIdx++] = opon; +// rankRoot.setChildren(pRank); int arrayIdx = 0; for (String s : aList) @@ -1910,6 +1936,46 @@ break; +// case VIEW_RANK: // by Rank/Product Name +// setRoot((PObjectNode) MainSource.rankRoot.clone()); +// +// for (Campaign aCamp : campList) +// { +// PObjectNode rootAsPObjectNode = (PObjectNode) super.getRoot(); +//// final Campaign aCamp = (Campaign) fI.next(); +// +// // filter out campaigns here +// if (!shouldDisplayThis(aCamp, aPC) || !aCamp.isGameMode(allowedModes)) +// { +// continue; +// } +// +// //don't display selected campaigns in the available table +// if (available && selectedCampaigns.contains(aCamp)) +// { +// continue; +// } +// +// boolean added = false; +// +// for (int i = 0; i < rootAsPObjectNode.getChildCount(); ++i) +// { +// //if we've matched Publisher, or we've reached the last node ("Other") then add it here +// if (String.valueOf(aCamp.getRank()).equals(rootAsPObjectNode.getChild(i).getItem().toString()) +// || (!added && (i == (rootAsPObjectNode.getChildCount() - 1)))) +// { +// PObjectNode aFN = new PObjectNode(); +// aFN.setParent(rootAsPObjectNode.getChild(i)); +// aFN.setItem(aCamp); +// PrereqHandler.passesAll(aCamp.getPreReqList(), aPC, aCamp ); +// rootAsPObjectNode.getChild(i).addChild(aFN); +// added = true; +// } +// } +// } +// +// break; + default: Logging.errorPrint("In MainSource.CampaignlModel.resetModel the mode " + mode + " is not handled."); Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoAbilities.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -53,6 +53,26 @@ { super(aPC); + refreshAbilityCategories(aPC); + } + + /** + * Refresh the display of ability categories + */ + public void refreshAbilityCategories() + { + refreshAbilityCategories(getPc()); + } + + /** + * Refresh the display of ability categories + * @param aPC The character to be displayed + */ + public void refreshAbilityCategories(final PlayerCharacter aPC) + { + // Make sure we are starting form a clean slate + clearSubTabs(); + Map<String, AbilityCategory> acTabs = new HashMap<String, AbilityCategory>(); final Collection<AbilityCategory> cats = Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/TabContainer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/TabContainer.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/TabContainer.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -97,6 +97,18 @@ } /** + * Remove all existing sub tabs ready for the new set. + */ + protected void clearSubTabs() + { + for (BaseCharacterInfoTab subtab : theSubTabs) + { + remove(subtab); + } + theSubTabs.clear(); + } + + /** * @see pcgen.gui.filter.Filterable#getAvailableFilters() */ public List<PObjectFilter> getAvailableFilters() Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilityModel.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -129,8 +129,8 @@ * * @param aPC The PlayerCharacter this model is for. * @param aMap The lists of <tt>Ability</tt> objects by category to manage - * @param aCategory The <tt>AbilityCategory</tt> this list comes from. - * @param viewMode + * @param aCategoryList The list of <tt>AbilityCategories</tt> the list comes from + * @param viewMode The style of view to be used. * @param anOptionRoot The key to store options under. * @param splitByCategory Should the list be split by category */ @@ -867,6 +867,19 @@ typeRoot = null; sourceRoot = null; } + + /** + * Set a new list of ability categories. Used in cases such as a game + * mode or data change. + * @param newCatList The new + */ + public void setAbilityCategories(List<AbilityCategory> newCatList) + { + theCategoryList = newCatList; + currAbilityCat = theCategoryList.get(0); + typeRoot = null; + sourceRoot = null; + } /** * Sets the ability list to use. Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/ability/AbilitySelectionPanel.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -613,4 +613,18 @@ theModel.setCurrentAbilityCategory(aCategory); } } + + /** + * Set a new list of categories to be displayed. + * @param aCategoryList The list of ability categories + */ + public void setCategories(final List<AbilityCategory> aCategoryList) + { + theCategoryList = new ArrayList<AbilityCategory>(); + theCategoryList.addAll(aCategoryList); + if (theModel != null) + { + theModel.setAbilityCategories(aCategoryList); + } + } } Modified: Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -18,7 +18,7 @@ * * Created on 21/11/2006 * - * $Id: $ + * $Id$ */ package pcgen.io.exporttoken; @@ -42,11 +42,11 @@ * y is the category (FEAT, FIGHTER etc, or ALL) * z is an option list of TYPE=<type> - type filter - may be negated * - * Last Editor: $Author: $ - * Last Edited: $Date: $ + * Last Editor: $Author$ + * Last Edited: $Date$ * * @author James Dempsey <jde...@us...> - * @version $Revision: $ + * @version $Revision$ */ public class AbilityListToken extends Token { Property changes on: Trunk/pcgen/code/src/java/pcgen/io/exporttoken/AbilityListToken.java ___________________________________________________________________ Name: keywords - Author Revision Date Id Name: svn:keywords + Author Revision Date Id Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityCategoryLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityCategoryLoader.java 2007-11-22 04:30:48 UTC (rev 4568) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/AbilityCategoryLoader.java 2007-11-22 12:55:27 UTC (rev 4569) @@ -123,7 +123,14 @@ if (cat == null) { cat = new AbilityCategory(value); - aGameMode.addAbilityCategory(cat); + if (fromLst) + { + aGameMode.addLstAbilityCategory(cat); + } + else + { + aGameMode.addAbilityCategory(cat); + } } } else if (token != null) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfr...@us...> - 2007-12-06 23:24:40
|
Revision: 4673 http://pcgen.svn.sourceforge.net/pcgen/?rev=4673&view=rev Author: jfrazierjr Date: 2007-12-06 15:24:43 -0800 (Thu, 06 Dec 2007) Log Message: ----------- Trying to fix commit problems...ugh.. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Globals.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Globals.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2007-12-06 23:23:37 UTC (rev 4672) +++ Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2007-12-06 23:24:43 UTC (rev 4673) @@ -2940,11 +2940,7 @@ return expandRelativePath(defaultPcgPath); } - static int[] getDieSizes() - { - return dieSizes; - } - + /** * returns the location of the "filepaths.ini" file * which could be one of several locations @@ -3636,5 +3632,12 @@ { return raceMap.remove(aKey.toLowerCase()) != null; } - + public static int[] getDieSizes() + { + return SettingsHandler.getGame().getDieSizes(); + } + public static int[] getDefaultDieSizes() + { + return dieSizes; + } } Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2007-12-06 23:23:37 UTC (rev 4672) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2007-12-06 23:24:43 UTC (rev 4673) @@ -1370,6 +1370,13 @@ GameModeLoader.parseMiscGameInfoLine(gameMode, aLine, uri, i + 1); } + int[] dieSizes = gameMode.getDieSizes(); + if (dieSizes == null || dieSizes.length == 0) + { + gameMode.setDieSizes(Globals.getDefaultDieSizes()); + Logging.errorPrint("GameMode (" + gameMode.getName() + ") : MiscInfo.lst did not contain any valid DIESIZES. " + + "Using the system default DIESIZES."); + } return gameMode; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |