From: <za...@us...> - 2012-02-21 14:16:49
|
Revision: 16258 http://pcgen.svn.sourceforge.net/pcgen/?rev=16258&view=rev Author: zaister Date: 2012-02-21 14:16:38 +0000 (Tue, 21 Feb 2012) Log Message: ----------- Implement functionality to make PCGen able to distinguish between PCs and NPCs Issue#: CODE-1281 Modified Paths: -------------- Trunk/pcgen/code/pluginbuild.xml Trunk/pcgen/code/src/java/applicationContext.xml Trunk/pcgen/code/src/java/pcgen/core/DataSet.java 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/SettingsHandler.java Trunk/pcgen/code/src/java/pcgen/core/facade/CharacterFacade.java Trunk/pcgen/code/src/java/pcgen/core/facade/DataSetFacade.java Trunk/pcgen/code/src/java/pcgen/gui/editor/AdvancedPanel.java Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/prefs/ExperiencePanel.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java Trunk/pcgen/code/src/java/pcgen/io/IOConstants.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java Trunk/pcgen/code/src/java/pcgen/resources/lang/LanguageBundle.properties Trunk/pcgen/code/src/test/pcgen/core/AllJUnitTests.java Trunk/pcgen/code/src/test/pcgen/gui2/facade/MockDataSetFacade.java Trunk/pcgen/outputsheets/base.xml Trunk/pcgen/system/gameModes/35e/miscinfo.lst Trunk/pcgen/system/gameModes/3e/miscinfo.lst Trunk/pcgen/system/gameModes/Darwins_World_2/miscinfo.lst Trunk/pcgen/system/gameModes/Deadlands/miscinfo.lst Trunk/pcgen/system/gameModes/Gaslight/miscinfo.lst Trunk/pcgen/system/gameModes/Legends_of_Excalibur/miscinfo.lst Trunk/pcgen/system/gameModes/Modern/miscinfo.lst Trunk/pcgen/system/gameModes/Pathfinder_RPG/miscinfo.lst Trunk/pcgen/system/gameModes/Sidewinder/miscinfo.lst Trunk/pcgen/system/gameModes/Spycraft/miscinfo.lst Trunk/pcgen/system/gameModes/Xcrawl/miscinfo.lst Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterTypeFacet.java Trunk/pcgen/code/src/java/plugin/exporttokens/CharactertypeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/CharacterTypeToken.java Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreCharactertypeParser.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreCharactertypeTester.java Trunk/pcgen/code/src/java/plugin/pretokens/writer/PreCharactertypeWriter.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCharactertypeTest.java Trunk/pcgen/code/src/utest/plugin/pretokens/PreCharactertypeRoundRobin.java Modified: Trunk/pcgen/code/pluginbuild.xml =================================================================== --- Trunk/pcgen/code/pluginbuild.xml 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/pluginbuild.xml 2012-02-21 14:16:38 UTC (rev 16258) @@ -225,6 +225,13 @@ </patternset> </fileset> </jar> + <jar jarfile="${outputplugins.dir}/ExportToken-CHARACTERTYPE.jar" manifest="${src.java.dir}/plugin/exporttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/exporttokens/CharactertypeToken.class" /> + </patternset> + </fileset> + </jar> <jar jarfile="${outputplugins.dir}/ExportToken-CLASSABB.jar" manifest="${src.java.dir}/plugin/exporttokens/manifest.mf"> <fileset dir="${build.classes.dir}"> <patternset> @@ -1446,6 +1453,15 @@ </patternset> </fileset> </jar> + <jar jarfile="${preplugins.dir}/PreToken-PRECHARACTERTYPE.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/pretokens/parser/PreCharactertypeParser.class" /> + <include name="plugin/pretokens/test/PreCharactertypeTester.class" /> + <include name="plugin/pretokens/writer/PreCharactertypeWriter.class" /> + </patternset> + </fileset> + </jar> <jar jarfile="${preplugins.dir}/PreToken-PRECHECK.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> <fileset dir="${build.classes.dir}"> <patternset> @@ -5254,6 +5270,13 @@ </patternset> </fileset> </jar> + <jar jarfile="${systemlstplugins.dir}/GameModeLstToken-CHARACTERTYPE.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/gamemode/CharacterTypeToken.class" /> + </patternset> + </fileset> + </jar> <jar jarfile="${systemlstplugins.dir}/GameModeLstToken-CHECKSMAXLVL.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> <fileset dir="${build.classes.dir}"> <patternset> Modified: Trunk/pcgen/code/src/java/applicationContext.xml =================================================================== --- Trunk/pcgen/code/src/java/applicationContext.xml 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/applicationContext.xml 2012-02-21 14:16:38 UTC (rev 16258) @@ -114,6 +114,7 @@ <property name="formulaResolvingFacet" ref="formulaResolvingFacet"/> <property name="consolidationFacet" ref="consolidationFacet"/> </bean> + <bean id="characterTypeFacet" class="pcgen.cdom.facet.CharacterTypeFacet"/> <bean id="CheckFacet" class="pcgen.cdom.facet.CheckFacet"> <property name="bonusCheckingFacet" ref="bonusCheckingFacet"/> </bean> Added: Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterTypeFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterTypeFacet.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterTypeFacet.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,38 @@ +/* + * Copyright (c) Thomas Parker, 2009. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package pcgen.cdom.facet; + +import pcgen.cdom.enumeration.CharID; + +/** + * CharacterTypeFacet is a Facet that tracks the character type + * of a character. + */ +public class CharacterTypeFacet extends AbstractItemFacet<String> +{ + + public void setCharacterType(CharID id, String characterType) { + + set(id, characterType); + } + + public String getCharacterType(CharID id) { + + return get(id); + } +} Modified: Trunk/pcgen/code/src/java/pcgen/core/DataSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/DataSet.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/core/DataSet.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -81,6 +81,7 @@ private DefaultListFacade<EquipmentFacade> equipment; private DefaultListFacade<String> xpTableNames; private DefaultListFacade<GearBuySellFacade> gearBuySellSchemes; + private DefaultListFacade<String> characterTypes; public DataSet( LoadContext context, GameMode gameMode, ListFacade<CampaignFacade> campaigns) { @@ -96,6 +97,7 @@ bodyStructures = new DefaultListFacade<BodyStructureFacade>(); equipment = new DefaultListFacade<EquipmentFacade>(); xpTableNames = new DefaultListFacade<String>(); + characterTypes = new DefaultListFacade<String>(); this.context = context; this.gameMode = gameMode; this.campaigns = campaigns; @@ -215,6 +217,10 @@ { xpTableNames.addElement(xpTableName); } + for (String characterType : gameMode.getCharacterTypeList()) + { + characterTypes.addElement(characterType); + } createGearBuySellSchemes(); } @@ -382,6 +388,11 @@ return xpTableNames; } + public ListFacade<String> getCharacterTypes() + { + return characterTypes; + } + /** * {@inheritDoc} */ Modified: Trunk/pcgen/code/src/java/pcgen/core/GameMode.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/core/GameMode.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -177,10 +177,12 @@ private int minDieSize = 4; private List<String> resizableTypeList = new ArrayList<String>(); + private List<String> characterTypeList = new ArrayList<String>(); private Map<Class<?>, Set<String>> hiddenTypes = new HashMap<Class<?>, Set<String>>(); private List<String> xpTableNames = new ArrayList<String>(); private String defaultXPTableName; + private String defaultCharacterType; /** The BioSet used for age calculations */ private BioSet bioSet = new BioSet(); @@ -2356,6 +2358,26 @@ this.resizableTypeList = resizableTypeList; } + /** + * Retrieve the list of character types (e.g. PC or NPC). + * @return the resizableTypeList + */ + public List<String> getCharacterTypeList() + { + return Collections.unmodifiableList(characterTypeList); + } + + /** + * Set the list of equipment types which flag it as able to + * be resized by the automatic resize feature. + * + * @param resizableTypeList the resizableTypeList to set + */ + public void setCharacterTypeList(List<String> characterTypeList) + { + this.characterTypeList = characterTypeList; + } + private ConsolidatedListCommitStrategy masterLCS = new ConsolidatedListCommitStrategy(); private LoadContext context = new RuntimeLoadContext(getRefContext(), masterLCS); private GameReferenceContext gameRefContext = new GameReferenceContext(); @@ -2495,6 +2517,34 @@ } /** + * Gets the name of the currently selected default character type + * + * @return the character type + */ + public String getDefaultCharacterType() + { + if (defaultCharacterType == null || defaultCharacterType.equals("") || !characterTypeList.contains(defaultCharacterType)) + { + if (characterTypeList.isEmpty()) + { + characterTypeList.add("Default"); + } + defaultCharacterType = characterTypeList.get(0); + } + return defaultCharacterType; + } + + /** + * Sets the default character type + * + * @param characterType the new character type + */ + public void setDefaultCharacterType(String characterType) + { + defaultCharacterType = characterType; + } + + /** * Checks if bonus stat stacking is allowed * * @return true, if is bonus stat stacking allowed Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -227,6 +227,7 @@ private WeightFacet weightFacet = FacetLibrary.getFacet(WeightFacet.class); private XPFacet xpFacet = FacetLibrary.getFacet(XPFacet.class); private XPTableFacet xpTableFacet = FacetLibrary.getFacet(XPTableFacet.class); + private CharacterTypeFacet characterTypeFacet = FacetLibrary.getFacet(CharacterTypeFacet.class); //The following are other facets private DomainFacet domainFacet = FacetLibrary.getFacet(DomainFacet.class); @@ -427,6 +428,7 @@ campaignFacet.addAll(id, loadedCampaigns); setXPTable(SettingsHandler.getGame().getDefaultXPTableName()); + setCharacterType(SettingsHandler.getGame().getDefaultCharacterType()); setRace(Globals.s_EMPTYRACE); setName(Constants.EMPTY_STRING); @@ -3063,6 +3065,17 @@ return xpTableFacet.getLevelInfo(id, level); } + public void setCharacterType(final String characterType) + { + characterTypeFacet.setCharacterType(id, characterType); + setDirty(true); + } + + public String getCharacterType() + { + return characterTypeFacet.getCharacterType(id); + } + public void addEquipSet(final EquipSet set) { equipSetFacet.add(id, set); Modified: Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -809,6 +809,7 @@ game.setRollMethod(getPCGenOption("gameMode." + key + ".rollMethod", 0)); //$NON-NLS-1$ game.setDefaultXPTableName(getPCGenOption("gameMode." + key + ".xpTableName", "")); //$NON-NLS-1$ //$NON-NLS-2$ + game.setDefaultCharacterType(getPCGenOption("gameMode." + key + ".characterType", "")); //$NON-NLS-1$ //$NON-NLS-2$ getChosenCampaignFiles(game); } @@ -1682,6 +1683,7 @@ setPCGenOption("gameMode." + gameModeKey + ".rollMethodExpression", gameMode.getRollMethodExpressionName()); //$NON-NLS-1$ setPCGenOption("gameMode." + gameModeKey + ".allStatsValue", gameMode.getAllStatsValue()); setPCGenOption("gameMode." + gameModeKey + ".xpTableName", gameMode.getDefaultXPTableName()); + setPCGenOption("gameMode." + gameModeKey + ".characterType", gameMode.getDefaultCharacterType()); } setRuleChecksInOptions("ruleChecks"); //$NON-NLS-1$ Modified: Trunk/pcgen/code/src/java/pcgen/core/facade/CharacterFacade.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/facade/CharacterFacade.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/core/facade/CharacterFacade.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -491,11 +491,23 @@ public void setXPTable(final String xpTableName); /** + * Set the character's character type. + * * + * @param characterType The character type to be set + */ + public void setCharacterType(String characterType); + + /** * @return A reference to the name of the character's XP table */ public ReferenceFacade<String> getXPTableNameRef(); /** + * @return A reference to the name of the character's type + */ + public ReferenceFacade<String> getCharacterTypeRef(); + + /** * Set the character's age in years. * @param age The new age to be set. */ Modified: Trunk/pcgen/code/src/java/pcgen/core/facade/DataSetFacade.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/facade/DataSetFacade.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/core/facade/DataSetFacade.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -72,6 +72,8 @@ public ListFacade<String> getXPTableNames(); + public ListFacade<String> getCharacterTypes(); + /** * @return The list of possible buy/sell rate schemes for this dataset. */ Modified: Trunk/pcgen/code/src/java/pcgen/gui/editor/AdvancedPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/editor/AdvancedPanel.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/gui/editor/AdvancedPanel.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -257,6 +257,7 @@ "PREBASESIZENEQ", "PREBIRTHPLACE", "PRECITY", + "PRECHARACTERTYPE", "PRECHECK", "PRECHECKBASE", "PRECLASS", Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -191,6 +191,7 @@ private DefaultReferenceFacade<Integer> currentXP; private DefaultReferenceFacade<Integer> xpForNextlevel; private DefaultReferenceFacade<String> xpTableName; + private DefaultReferenceFacade<String> characterType; private DefaultReferenceFacade<Integer> age; private DefaultReferenceFacade<SimpleFacade> ageCategory; private DefaultListFacade<SimpleFacade> ageCategoryList; @@ -295,6 +296,7 @@ } portrait = new DefaultReferenceFacade<File>(portraitFile); cropRect = new RectangleReference(theCharacter.getPortraitThumbnailRect()); + characterType = new DefaultReferenceFacade<String>(pc.getCharacterType()); tabName = new DefaultReferenceFacade<String>(pc.getDisplay().getTabName()); name = new DefaultReferenceFacade<String>(pc.getName()); @@ -2378,6 +2380,17 @@ updateLevelTodo(); } + public ReferenceFacade<String> getCharacterTypeRef() + { + return characterType; + } + + public void setCharacterType(String newType) { + + characterType.setReference(newType); + theCharacter.setCharacterType(newType); + } + /* (non-Javadoc) * @see pcgen.core.facade.CharacterFacade#setAge(int) */ Modified: Trunk/pcgen/code/src/java/pcgen/gui2/prefs/ExperiencePanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/prefs/ExperiencePanel.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/gui2/prefs/ExperiencePanel.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -55,6 +55,7 @@ private static String in_experience = LanguageBundle.getString("in_Prefs_experience"); private JComboBoxEx xpTableCombo = new JComboBoxEx(); + private JComboBoxEx characterTypeCombo = new JComboBoxEx(); /** * Instantiates a new monster panel. @@ -88,6 +89,17 @@ gridbag.setConstraints(xpTableCombo, c); this.add(xpTableCombo); + Utility.buildConstraints(c, 0, 1, 2, 1, 0, 0); + label = + new JLabel(LanguageBundle + .getString("in_Prefs_characterType") + + ": "); + gridbag.setConstraints(label, c); + this.add(label); + Utility.buildConstraints(c, 2, 1, 1, 1, 0, 0); + gridbag.setConstraints(characterTypeCombo, c); + this.add(characterTypeCombo); + Utility.buildConstraints(c, 5, 20, 1, 1, 1, 1); c.fill = GridBagConstraints.BOTH; label = new JLabel(" "); @@ -112,6 +124,7 @@ { final GameMode gameMode = SettingsHandler.getGame(); gameMode.setDefaultXPTableName(String.valueOf(xpTableCombo.getSelectedItem())); + gameMode.setDefaultCharacterType(String.valueOf(characterTypeCombo.getSelectedItem())); } /* (non-Javadoc) @@ -122,15 +135,25 @@ { final GameMode gameMode = SettingsHandler.getGame(); final String xpTableName = gameMode.getDefaultXPTableName(); + final String characterType = gameMode.getDefaultCharacterType(); List<String> xpTableNames = gameMode.getXPTableNames(); + List<String> characterTypes = gameMode.getCharacterTypeList(); + xpTableCombo.removeAllItems(); - for (String name : xpTableNames) { xpTableCombo.addItem(name); } xpTableCombo.setSelectedItem(xpTableName); + + characterTypeCombo.removeAllItems(); + for (String name : characterTypes) + { + characterTypeCombo.addItem(name); + } + characterTypeCombo.setSelectedItem(characterType); + } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -88,6 +88,7 @@ import pcgen.core.facade.event.ReferenceEvent; import pcgen.core.facade.event.ReferenceListener; import pcgen.core.facade.util.DefaultListFacade; +import pcgen.core.facade.util.ListFacade; import pcgen.gui2.UIPropertyContext; import pcgen.gui2.dialog.CharacterHPDialog; import pcgen.gui2.dialog.RandomNameDialog; @@ -127,6 +128,7 @@ private final JPanel racePanel; private final JPanel classPanel; private final JTextField characterNameField; + private final JComboBox characterTypeComboBox; private final JTextField playerNameField; private final JTextField tabLabelField; private final JFormattedTextField ageField; @@ -173,6 +175,7 @@ this.racePanel = new JPanel(); this.classPanel = new JPanel(); this.characterNameField = new JTextField(); + this.characterTypeComboBox = new JComboBox(); this.random = new JButton(); this.playerNameField = new JTextField(); this.expField = new JFormattedTextField(NumberFormat.getIntegerInstance()); @@ -550,6 +553,7 @@ basicsPanel.add(characterNameField, gbc); } Insets insets = new Insets(0, 0, 3, 2); + addGridBagLayer(basicsPanel, labelFont, insets, "Character Type:", characterTypeComboBox); addGridBagLayer(basicsPanel, labelFont, insets, "Player:", playerNameField); addGridBagLayer(basicsPanel, labelFont, insets, "Tab Label:", tabLabelField); if (genderComboBox.getModel().getSize() != 0) @@ -663,7 +667,17 @@ final CharacterComboBoxModel<SimpleFacade> ageCatModel; final FacadeComboBoxModel<ClassFacade> classModel; final CharacterComboBoxModel<String> xpTableModel; + final CharacterComboBoxModel<String> characterTypeModel; + characterTypeModel = new CharacterComboBoxModel<String>() + { + + public void setSelectedItem(Object anItem) + { + character.setCharacterType((String) anItem); + } + + }; genderModel = new CharacterComboBoxModel<GenderFacade>() { @@ -736,6 +750,10 @@ LabelHandler modTotalHandler = new LabelHandler(modTotal); DataSetFacade dataset = character.getDataSet(); + + //initialize character type model + characterTypeModel.setListFacade(dataset.getCharacterTypes()); + characterTypeModel.setReference(character.getCharacterTypeRef()); //initialize alignment model alignmentModel.setListFacade(dataset.getAlignments()); alignmentModel.setReference(character.getAlignmentRef()); @@ -758,7 +776,7 @@ modTotalLabelHandler.setReference(character.getModTotalLabelTextRef()); modTotalHandler.setReference(character.getModTotalTextRef()); - //initialize XP table model + //initialize XP table model xpTableModel.setListFacade(dataset.getXPTableNames()); xpTableModel.setReference(character.getXPTableNameRef()); @@ -870,6 +888,7 @@ }; Hashtable<Object, Object> stateTable = new Hashtable<Object, Object>(); stateTable.put(Models.CharacterNameHandler, charNameHandler); + stateTable.put(Models.CharacterTypeComboBoxModel, characterTypeModel); stateTable.put(Models.PlayerNameHandler, playerNameHandler); stateTable.put(Models.TabNameHandler, tabNameHandler); stateTable.put(Models.GenderComboBoxModel, genderModel); @@ -920,6 +939,7 @@ RandomNameAction, PlayerNameHandler, TabNameHandler, + CharacterTypeComboBoxModel, GenderComboBoxModel, HandsComboBoxModel, AlignmentComboBoxModel, @@ -994,6 +1014,7 @@ ((RollMethodAction) state.get(Models.RollMethodAction)).install(); ((HPHandler) state.get(Models.HPHandler)).install(); + characterTypeComboBox.setModel((ComboBoxModel) state.get(Models.CharacterTypeComboBoxModel)); genderComboBox.setModel((ComboBoxModel) state.get(Models.GenderComboBoxModel)); handsComboBox.setModel((ComboBoxModel) state.get(Models.HandsComboBoxModel)); alignmentComboBox.setModel((ComboBoxModel) state.get(Models.AlignmentComboBoxModel)); Modified: Trunk/pcgen/code/src/java/pcgen/io/IOConstants.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/IOConstants.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/io/IOConstants.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -146,6 +146,9 @@ /** Character Name */ String TAG_CHARACTERNAME = "CHARACTERNAME"; + /** Character Type */ + String TAG_CHARACTERTYPE = "CHARACTERTYPE"; + /** CHOICE */ String TAG_CHOICE = "CHOICE"; Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -175,6 +175,7 @@ appendVersionLine(buffer); appendRollMethodLine(buffer); appendPurchasePointsLine(buffer); + appendCharacterTypeLine(buffer); //appendUnlimitedPoolCheckedLine(buffer); appendPoolPointsLine(buffer); @@ -750,6 +751,14 @@ buffer.append(LINE_SEP); } + private void appendCharacterTypeLine(StringBuffer buffer) + { + buffer.append(TAG_CHARACTERTYPE).append(':'); + buffer.append(thePC.getCharacterType()); + buffer.append(LINE_SEP); + } + + /* * ############################################################### * Character Class(es) methods Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -870,6 +870,11 @@ parsePoolPointsLine2(cache.get(TAG_POOLPOINTSAVAIL).get(0)); } + if (cache.containsKey(TAG_CHARACTERTYPE)) + { + parseCharacterTypeLine(cache.get(TAG_CHARACTERTYPE).get(0)); + } + if (cache.containsKey(TAG_AUTOSPELLS)) { parseAutoSpellsLine(cache.get(TAG_AUTOSPELLS).get(0)); @@ -2511,6 +2516,26 @@ eSet.setTempBonusList(aList); } + private void parseCharacterTypeLine(final String line) + throws PCGParseException + { + final StringTokenizer stok = + new StringTokenizer( + line.substring(TAG_CHARACTERTYPE.length() + 1), TAG_END, false); + + String characterType = stok.nextToken(); + if (!SettingsHandler.getGame().getCharacterTypeList().contains(characterType)) + { + String wantedType = characterType; + characterType = SettingsHandler.getGame().getDefaultCharacterType(); + final String message = + "Character type " + wantedType + " not found. Using " + characterType; //$NON-NLS-1$ + warnings.add(message); + } + thePC.setCharacterType(characterType); + } + + /* * ############################################################### * Character Experience methods Modified: Trunk/pcgen/code/src/java/pcgen/resources/lang/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/resources/lang/LanguageBundle.properties 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/java/pcgen/resources/lang/LanguageBundle.properties 2012-02-21 14:16:38 UTC (rev 16258) @@ -3113,6 +3113,8 @@ in_Prefs_xpTable=Default experience table to be used +in_Prefs_characterType=Default character type + in_Prefs_pcgen=PCGen in_Prefs_pcgenTip=Settings that affect the way PCGen works. Added: Trunk/pcgen/code/src/java/plugin/exporttokens/CharactertypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/exporttokens/CharactertypeToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/exporttokens/CharactertypeToken.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,58 @@ +/* + * CharactertypeToken.java + * Copyright 2003 (C) Devon Jones <sou...@ev...> + * + * 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 December 15, 2003, 12:21 PM + * + * Current Ver: $Revision: 5645 $ + * Last Editor: $Author: karianna $ + * Last Edited: $Date: 2008-03-20 13:57:06 +0100 (Do, 20 Mär 2008) $ + * + */ +package plugin.exporttokens; + +import pcgen.core.PlayerCharacter; +import pcgen.io.ExportHandler; +import pcgen.io.exporttoken.Token; + +/** + * Deal with Charactertype Token + */ +public class CharactertypeToken extends Token +{ + /** Token Name */ + public static final String TOKENNAME = "CHARACTERTYPE"; + + /** + * @see pcgen.io.exporttoken.Token#getTokenName() + */ + @Override + public String getTokenName() + { + return TOKENNAME; + } + + /** + * @see pcgen.io.exporttoken.Token#getToken(java.lang.String, pcgen.core.PlayerCharacter, pcgen.io.ExportHandler) + */ + @Override + public String getToken(String tokenSource, PlayerCharacter pc, + ExportHandler eh) + { + return pc.getCharacterType(); + } +} Added: Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/CharacterTypeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/CharacterTypeToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/CharacterTypeToken.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,70 @@ +/* + * ResizableEquipTypeToken.java + * Copyright 2008 (C) James Dempsey <jde...@us...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on 3/05/2008 + * + * $Id: ResizableEquipTypeToken.java 6171 2008-05-03 12:35:57Z jdempsey $ + */ +package plugin.lsttokens.gamemode; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +import pcgen.core.GameMode; +import pcgen.persistence.lst.GameModeLstToken; + +/** + * <code>ResizableEquipTypeToken</code> parses the list of equipment + * types designated as able to be automatically resized. + * + * Last Editor: $Author: jdempsey $ + * Last Edited: $Date: 2008-05-03 14:35:57 +0200 (Sa, 03 Mai 2008) $ + * + * @author James Dempsey <jde...@us...> + * @version $Revision: 6171 $ + */ +public class CharacterTypeToken implements GameModeLstToken +{ + + /* (non-Javadoc) + * @see pcgen.persistence.lst.LstToken#getTokenName() + */ + public String getTokenName() + { + return "CHARACTERTYPE"; + } + + /* (non-Javadoc) + * @see pcgen.persistence.lst.GameModeLstToken#parse(pcgen.core.GameMode, java.lang.String, java.net.URI) + */ + public boolean parse(GameMode gameMode, String value, URI source) + { + List<String> typelist = new ArrayList<String>(); + final StringTokenizer aTok = new StringTokenizer(value, "|", false); + + while (aTok.hasMoreTokens()) + { + final String aString = aTok.nextToken(); + typelist.add(aString); + } + gameMode.setCharacterTypeList(typelist); + return true; + } +} Added: Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreCharactertypeParser.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreCharactertypeParser.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreCharactertypeParser.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,49 @@ +/* + * PreDomainParser.java + * + * Copyright 2003 (C) Chris Ward <fr...@pu...> + * + * 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 18-Dec-2003 + * + * Current Ver: $Revision: 15054 $ + * + * Last Editor: $Author: nuance $ + * + * Last Edited: $Date: 2011-05-29 17:19:36 +0200 (So, 29 Mai 2011) $ + * + */ +package plugin.pretokens.parser; + +import pcgen.persistence.lst.prereq.AbstractPrerequisiteListParser; +import pcgen.persistence.lst.prereq.PrerequisiteParserInterface; + +/** + * A prerequisite parser class that handles the parsing of pre charactertype tokens. + * + */ +public class PreCharactertypeParser extends AbstractPrerequisiteListParser implements + PrerequisiteParserInterface +{ + /** + * Get the type of prerequisite handled by this token. + * @return the type of prerequisite handled by this token. + */ + public String[] kindsHandled() + { + return new String[]{"CHARACTERTYPE"}; + } +} Added: Trunk/pcgen/code/src/java/plugin/pretokens/test/PreCharactertypeTester.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/test/PreCharactertypeTester.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/pretokens/test/PreCharactertypeTester.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,67 @@ +/* + * PreDomain.java + * Copyright 2001 (C) Bryan McRoberts <mer...@ya...> + * Copyright 2003 (C) Chris Ward <fr...@pu...> + * + * 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 November 28, 2003 + * + * Current Ver: $Revision: 14992 $ + * Last Editor: $Author: nuance $ + * Last Edited: $Date: 2011-05-15 15:23:29 +0200 (So, 15 Mai 2011) $ + * + */ +package plugin.pretokens.test; + +import pcgen.cdom.base.CDOMObject; +import pcgen.core.Domain; +import pcgen.core.Globals; +import pcgen.core.PlayerCharacter; +import pcgen.core.prereq.AbstractPrerequisiteTest; +import pcgen.core.prereq.Prerequisite; +import pcgen.core.prereq.PrerequisiteTest; +import pcgen.util.Logging; + +/** + * @author zaister + * + */ +public class PreCharactertypeTester extends AbstractPrerequisiteTest implements PrerequisiteTest +{ + + /* (non-Javadoc) + * @see pcgen.core.prereq.PrerequisiteTest#passes(pcgen.core.PlayerCharacter) + */ + @Override + public int passes(final Prerequisite prereq, final PlayerCharacter character, CDOMObject source) + { + if (character.getCharacterType().equalsIgnoreCase(prereq.getKey())) + { + return countedTotal(prereq, 1); + } + return countedTotal(prereq, 0); + } + + /** + * Get the type of prerequisite handled by this token. + * @return the type of prerequisite handled by this token. + */ + public String kindHandled() + { + return "CHARACTERTYPE"; //$NON-NLS-1$ + } + +} Added: Trunk/pcgen/code/src/java/plugin/pretokens/writer/PreCharactertypeWriter.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/writer/PreCharactertypeWriter.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/pretokens/writer/PreCharactertypeWriter.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,113 @@ +/* + * PrerequisiteDomainWriter.java + * + * Copyright 2004 (C) Frugal <fr...@pu...> + * + * 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 18-Dec-2003 + * + * Current Ver: $Revision: 5492 $ + * + * Last Editor: $Author: thpr $ + * + * Last Edited: $Date: 2008-03-07 23:26:20 +0100 (Fr, 07 Mär 2008) $ + * + */ +package plugin.pretokens.writer; + +import java.io.IOException; +import java.io.Writer; + +import pcgen.core.prereq.Prerequisite; +import pcgen.core.prereq.PrerequisiteOperator; +import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.lst.output.prereq.AbstractPrerequisiteWriter; +import pcgen.persistence.lst.output.prereq.PrerequisiteWriterInterface; + +public class PreCharactertypeWriter extends AbstractPrerequisiteWriter implements + PrerequisiteWriterInterface +{ + + /* (non-Javadoc) + * @see pcgen.persistence.lst.output.prereq.PrerequisiteWriterInterface#kindHandled() + */ + public String kindHandled() + { + return "CHARACTERTYPE"; + } + + /* (non-Javadoc) + * @see pcgen.persistence.lst.output.prereq.PrerequisiteWriterInterface#operatorsHandled() + */ + public PrerequisiteOperator[] operatorsHandled() + { + return new PrerequisiteOperator[]{PrerequisiteOperator.GTEQ, + PrerequisiteOperator.LT}; + } + + /* (non-Javadoc) + * @see pcgen.persistence.lst.output.prereq.PrerequisiteWriterInterface#write(java.io.Writer, pcgen.core.prereq.Prerequisite) + */ + public void write(Writer writer, Prerequisite prereq) + throws PersistenceLayerException + { + checkValidOperator(prereq, operatorsHandled()); + + try + { + if (prereq.getOperator().equals(PrerequisiteOperator.LT)) + { + writer.write('!'); + } + + writer.write("PRECHARACTERTYPE:"); + writer.write(prereq.getOperand()); + writer.write(','); + writer.write(prereq.getKey()); + } + catch (IOException e) + { + throw new PersistenceLayerException(e.getMessage()); + } + } + + + @Override + public boolean specialCase(Writer writer, Prerequisite prereq) + throws IOException + { + PrerequisiteOperator po = getConsolidateMethod(kindHandled(), prereq, false); + if (po == null) + { + return false; + } + if (!po.equals(prereq.getOperator())) + { + writer.write('!'); + } + + writer.write("PRE" + kindHandled().toUpperCase() + ":" + + (prereq.isOverrideQualify() ? "Q:" : "")); + writer.write(po.equals(PrerequisiteOperator.GTEQ) ? prereq.getOperand() + : "1"); + for (Prerequisite p : prereq.getPrerequisites()) + { + writer.write(','); + writer.write(p.getKey()); + } + return true; + } +} Modified: Trunk/pcgen/code/src/test/pcgen/core/AllJUnitTests.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/core/AllJUnitTests.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/test/pcgen/core/AllJUnitTests.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -91,6 +91,7 @@ suite.addTest(new TestSuite(pcgen.core.prereq.PreAttTest.class)); suite.addTest(new TestSuite(pcgen.core.prereq.PreBaseSizeTest.class)); suite.addTest(new TestSuite(pcgen.core.prereq.PreBirthplaceTest.class)); + suite.addTest(new TestSuite(pcgen.core.prereq.PreCharactertypeTest.class)); suite.addTest(new TestSuite(pcgen.core.prereq.PreCheckBaseTest.class)); suite.addTest(new TestSuite(pcgen.core.prereq.PreCheckTest.class)); suite.addTest(new TestSuite(pcgen.core.prereq.PreCityTest.class)); Added: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCharactertypeTest.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCharactertypeTest.java (rev 0) +++ Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCharactertypeTest.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,90 @@ +/* + * PreDomainTest.java + * + * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + */ +package pcgen.core.prereq; + +import junit.framework.Test; +import junit.framework.TestSuite; +import junit.textui.TestRunner; +import pcgen.AbstractCharacterTestCase; +import pcgen.cdom.base.SimpleAssociatedObject; +import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.helper.ClassSource; +import pcgen.cdom.reference.CDOMDirectSingleRef; +import pcgen.core.Deity; +import pcgen.core.Domain; +import pcgen.core.Globals; +import pcgen.core.PCClass; +import pcgen.core.PlayerCharacter; +import pcgen.persistence.lst.prereq.PreParserFactory; + +/** + * <code>PreDomainTest</code> tests that the PREDOMAIN tag is + * working correctly. + * + * Last Editor: $Author: $ + * Last Edited: $Date: 2010-07-13 21:56:14 +0200 (Di, 13 Jul 2010) $ + * + * @author Aaron Divinsky <boo...@ya...> + * @version $Revision: 12541 $ + */ +public class PreCharactertypeTest extends AbstractCharacterTestCase +{ + private Deity deity; + + public static void main(final String[] args) + { + TestRunner.run(PreCharactertypeTest.class); + } + + /** + * @return Test + */ + public static Test suite() + { + return new TestSuite(PreCharactertypeTest.class); + } + + /** + * Test to make sure it is not looking at deity domains + * @throws Exception + */ + public void testCharactertype() throws Exception + { + final PlayerCharacter character = getCharacter(); + character.setCharacterType("PC"); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + + prereq = factory.parse("PRECHARACTERTYPE:1,PC"); + + assertTrue("Character has character type 'PC'", PrereqHandler.passes( + prereq, character, null)); + + prereq = factory.parse("PRECHARACTERTYPE:1,NPC"); + + assertFalse("Character doesn't have character type 'NPC'", PrereqHandler.passes( + prereq, character, null)); + + } +} Modified: Trunk/pcgen/code/src/test/pcgen/gui2/facade/MockDataSetFacade.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/gui2/facade/MockDataSetFacade.java 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/code/src/test/pcgen/gui2/facade/MockDataSetFacade.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -171,6 +171,15 @@ return null; } + /* (non-Javadoc) + * @see pcgen.core.facade.DataSetFacade#getCharacterTypes() + */ + public ListFacade<String> getCharacterTypes() + { + // TODO Auto-generated method stub + return null; + } + public void addEquipmentLocation(BodyStructureFacade elf) { equipmentLoc.addElement(elf); Added: Trunk/pcgen/code/src/utest/plugin/pretokens/PreCharactertypeRoundRobin.java =================================================================== --- Trunk/pcgen/code/src/utest/plugin/pretokens/PreCharactertypeRoundRobin.java (rev 0) +++ Trunk/pcgen/code/src/utest/plugin/pretokens/PreCharactertypeRoundRobin.java 2012-02-21 14:16:38 UTC (rev 16258) @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package plugin.pretokens; + +import junit.framework.Test; +import junit.framework.TestSuite; +import junit.textui.TestRunner; +import plugin.lsttokens.testsupport.TokenRegistration; +import plugin.pretokens.parser.PreCharactertypeParser; +import plugin.pretokens.writer.PreCharactertypeWriter; + +public class PreCharactertypeRoundRobin extends AbstractBasicRoundRobin +{ + public static void main(String args[]) + { + TestRunner.run(PreCharactertypeRoundRobin.class); + } + + /** + * @return Test + */ + public static Test suite() + { + return new TestSuite(PreCharactertypeRoundRobin.class); + } + + @Override + protected void setUp() throws Exception + { + super.setUp(); + TokenRegistration.register(new PreCharactertypeParser()); + TokenRegistration.register(new PreCharactertypeWriter()); + } + + @Override + public String getBaseString() + { + return "CHARACTERTYPE"; + } + + @Override + public boolean isTypeAllowed() + { + return false; + } + + public void testAny() + { + runRoundRobin("PRE" + getBaseString() + ":1,Any"); + } +} Modified: Trunk/pcgen/outputsheets/base.xml =================================================================== --- Trunk/pcgen/outputsheets/base.xml 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/outputsheets/base.xml 2012-02-21 14:16:38 UTC (rev 16258) @@ -46,6 +46,7 @@ <name>|NAME|</name> <followerof>|FOLLOWEROF|</followerof> <playername>|PLAYERNAME|</playername> + <charactertype>|CHARACTERTYPE|</charactertype> <hero_points>|VAR.HEROPOINTS.INTVAL|</hero_points> <age>|AGE|</age> <alignment> Modified: Trunk/pcgen/system/gameModes/35e/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -291,6 +291,8 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Shield|Weapon|Armor|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC DEFAULTDATASET:3.5 RSRD|SRD 3.5 for Game Masters (includes Monsters) Modified: Trunk/pcgen/system/gameModes/3e/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/3e/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/3e/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -242,6 +242,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Weapon|Armor|Shield|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:3.0 SRD #|SRD 3.0 for Game Masters (includes Monsters) Modified: Trunk/pcgen/system/gameModes/Darwins_World_2/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Darwins_World_2/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Darwins_World_2/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -235,6 +235,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Weapon|Armor|Shield|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:Darwin's World 2nd Edition - Survivors Guide # Modified: Trunk/pcgen/system/gameModes/Deadlands/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Deadlands/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Deadlands/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -229,6 +229,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Weapon|Armor|Shield|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:PE - Deadlands Core Rulebook - Deadlands D20 # Modified: Trunk/pcgen/system/gameModes/Gaslight/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Gaslight/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Gaslight/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -223,6 +223,9 @@ # DIESIZES values are used by the HITEDIE tag to bump up/down HD per level. DIESIZES:1,2,3,MIN=4,6,8,10,MAX=12,20,100,1000 +# Character Types: +CHARACTERTYPE:PC|NPC + # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Shield|Weapon|Armor|Ammunition|Resizable Modified: Trunk/pcgen/system/gameModes/Legends_of_Excalibur/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Legends_of_Excalibur/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Legends_of_Excalibur/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -287,6 +287,8 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Shield|Weapon|Armor|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC DEFAULTDATASET:Legends of Excalibur - Arthurian Adventures Modified: Trunk/pcgen/system/gameModes/Modern/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Modern/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Modern/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -240,6 +240,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Weapon|Armor|Shield|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:MSRD - Basics,MSRD - Arcana,MSRD - Future,MSRD - Menaces|MSRD # Modified: Trunk/pcgen/system/gameModes/Pathfinder_RPG/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Pathfinder_RPG/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Pathfinder_RPG/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -295,6 +295,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Shield|Weapon|Armor|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:Paizo - Pathfinder Roleplaying Game Core Rulebook,Paizo - Pathfinder Roleplaying Game Character Traits Web Enhancement|Pathfinder RPG for Players # # DONE Modified: Trunk/pcgen/system/gameModes/Sidewinder/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Sidewinder/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Sidewinder/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -223,6 +223,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Weapon|Armor|Shield|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:Sidewinder: Recoiled # Modified: Trunk/pcgen/system/gameModes/Spycraft/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Spycraft/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Spycraft/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -236,6 +236,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Weapon|Armor|Shield|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:Spycraft Espionage Handbook # Modified: Trunk/pcgen/system/gameModes/Xcrawl/miscinfo.lst =================================================================== --- Trunk/pcgen/system/gameModes/Xcrawl/miscinfo.lst 2012-02-21 08:56:11 UTC (rev 16257) +++ Trunk/pcgen/system/gameModes/Xcrawl/miscinfo.lst 2012-02-21 14:16:38 UTC (rev 16258) @@ -226,6 +226,9 @@ # Types which automatic resizing is activated on RESIZABLEEQUIPTYPE:Weapon|Armor|Shield|Ammunition|Resizable +# Character Types: +CHARACTERTYPE:PC|NPC + DEFAULTDATASET:Pandahead - XCrawl,3.0 SRD # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |