From: <th...@us...> - 2009-07-13 23:56:54
|
Revision: 10087 http://pcgen.svn.sourceforge.net/pcgen/?rev=10087&view=rev Author: thpr Date: 2009-07-13 23:56:53 +0000 (Mon, 13 Jul 2009) Log Message: ----------- add EQUIPMENT qualifier to CHOOSE:ARMORPROFICIENCY Modified Paths: -------------- Trunk/pcgen/code/pluginbuild.xml Added Paths: ----------- Trunk/pcgen/code/src/java/plugin/qualifier/armorprof/ Trunk/pcgen/code/src/java/plugin/qualifier/armorprof/EquipmentToken.java Modified: Trunk/pcgen/code/pluginbuild.xml =================================================================== --- Trunk/pcgen/code/pluginbuild.xml 2009-07-13 23:48:32 UTC (rev 10086) +++ Trunk/pcgen/code/pluginbuild.xml 2009-07-13 23:56:53 UTC (rev 10087) @@ -6373,7 +6373,7 @@ <target name="jar-primitive-plugins" depends="" description="Build (Link) Lst Primitive Token plugin jar files"> </target> - <target name="jar-qualifier-plugins" depends="jar-qualifier-global-plugins,jar-qualifier-transition-plugins" description="Build (Link) Lst Compatibility Token plugin jar files"> + <target name="jar-qualifier-plugins" depends="jar-qualifier-global-plugins,jar-qualifier-armorprof-plugins,jar-qualifier-transition-plugins" description="Build (Link) Lst Compatibility Token plugin jar files"> </target> <target name="jar-qualifier-global-plugins" depends="makeplugindirs" description="Build (Link) Global Qualifier Token plugin jar files"> @@ -6394,6 +6394,17 @@ </jar> </target> + <target name="jar-qualifier-armorprof-plugins" depends="makeplugindirs" description="Build (Link) Armor Prof Qualifier Token plugin jar files"> + <!-- ArmorProf Qualifier tokens--> + <jar jarfile="${lstplugins.dir}/ArmorProfQualifier-EQUIPMENT.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/qualifier/armorprof/EquipmentToken.class" /> + </patternset> + </fileset> + </jar> + </target> + <target name="jar-qualifier-transition-plugins" depends="makeplugindirs" description="Build (Link) Transition Qualifier Token plugin jar files"> <!-- Transition (temporary during CDOM changes) Qualifier tokens--> <jar jarfile="${lstplugins.dir}/TransitionQualifier-PC.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> Added: Trunk/pcgen/code/src/java/plugin/qualifier/armorprof/EquipmentToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/qualifier/armorprof/EquipmentToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/qualifier/armorprof/EquipmentToken.java 2009-07-13 23:56:53 UTC (rev 10087) @@ -0,0 +1,138 @@ +/* + * Copyright 2007 (C) Thomas Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package plugin.qualifier.armorprof; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; + +import pcgen.cdom.base.PrimitiveChoiceFilter; +import pcgen.cdom.enumeration.GroupingState; +import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.enumeration.Type; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.core.ArmorProf; +import pcgen.core.Equipment; +import pcgen.core.PlayerCharacter; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.QualifierToken; +import pcgen.util.Logging; + +public class EquipmentToken implements QualifierToken<ArmorProf> +{ + private static Type ARMOR_TYPE = Type.getConstant("ARMOR"); + + private PrimitiveChoiceFilter<Equipment> pcs = null; + + private boolean negated = false; + + public String getTokenName() + { + return "EQUIPMENT"; + } + + public Class<ArmorProf> getChoiceClass() + { + return ArmorProf.class; + } + + public Set<ArmorProf> getSet(PlayerCharacter pc) + { + Set<ArmorProf> profs = new HashSet<ArmorProf>(); + List<Equipment> equipment = pc.getEquipmentList(); + if (equipment != null) + { + for (Equipment e : equipment) + { + if (e.getListFor(ListKey.TYPE).contains(ARMOR_TYPE)) + { + boolean allow = pcs == null || pcs.allow(pc, e); + if (allow ^ negated) + { + CDOMSingleRef<ArmorProf> prof = e + .get(ObjectKey.ARMOR_PROF); + if (prof != null) + { + profs.add(prof.resolvesTo()); + } + } + } + } + } + return profs; + } + + public String getLSTformat(boolean b) + { + StringBuilder sb = new StringBuilder(); + sb.append(getTokenName()); + if (pcs != null) + { + sb.append('[').append(pcs.getLSTformat()).append(']'); + } + return sb.toString(); + } + + public boolean initialize(LoadContext context, Class<ArmorProf> cl, + String condition, String value, boolean negate) + { + if (condition != null) + { + Logging.addParseMessage(Level.SEVERE, "Cannot make " + + getTokenName() + + " into a conditional Qualifier, remove ="); + return false; + } + if (value != null) + { + pcs = context.getPrimitiveChoiceFilter(Equipment.class, value); + return pcs != null; + } + return true; + } + + @Override + public int hashCode() + { + return pcs == null ? 0 : pcs.hashCode(); + } + + @Override + public boolean equals(Object o) + { + if (o instanceof EquipmentToken) + { + EquipmentToken other = (EquipmentToken) o; + if (pcs == null) + { + return other.pcs == null; + } + return pcs.equals(other.pcs); + } + return false; + } + + public GroupingState getGroupingState() + { + GroupingState gs = pcs == null ? GroupingState.ANY : pcs + .getGroupingState(); + return negated ? gs.negate() : gs; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |