From: <jfr...@us...> - 2008-03-08 20:41:17
|
Revision: 5504 http://pcgen.svn.sourceforge.net/pcgen/?rev=5504&view=rev Author: jfrazierjr Date: 2008-03-08 12:41:21 -0800 (Sat, 08 Mar 2008) Log Message: ----------- Spell point proposal Added parsing token, and InfoSpellstab display of spellpoints components. Issue#: 1834759 Modified Paths: -------------- Trunk/pcgen/code/pluginbuild.xml Trunk/pcgen/code/src/java/pcgen/core/spell/Spell.java Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java Added Paths: ----------- Trunk/pcgen/code/src/java/plugin/lsttokens/spell/SpellPointCostToken.java Modified: Trunk/pcgen/code/pluginbuild.xml =================================================================== --- Trunk/pcgen/code/pluginbuild.xml 2008-03-08 01:09:33 UTC (rev 5503) +++ Trunk/pcgen/code/pluginbuild.xml 2008-03-08 20:41:21 UTC (rev 5504) @@ -4226,6 +4226,13 @@ </patternset> </fileset> </jar> + <jar jarfile="${lstplugins.dir}/SpellLstToken-SpellPointCost.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/spell/SpellPointCostToken.class" /> + </patternset> + </fileset> + </jar> </target> <target name="jar-lst-subclass-plugins" depends="makeplugindirs" description="Build (Link) SubClass Lst Token plugin jar files"> Modified: Trunk/pcgen/code/src/java/pcgen/core/spell/Spell.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/spell/Spell.java 2008-03-08 01:09:33 UTC (rev 5503) +++ Trunk/pcgen/code/src/java/pcgen/core/spell/Spell.java 2008-03-08 20:41:21 UTC (rev 5504) @@ -84,8 +84,15 @@ private int castingThreshold = 0; private int xpCost = 0; private int ppCost = 0; + public enum SpellPointType + { + ACTUALCOST, + EFFECTIVECOST + } + private HashMap<String, HashMap<SpellPointType, Integer>> spellPointCost = new HashMap<String,HashMap<SpellPointType, Integer>>(); static boolean hasPPCost = false; + static boolean hasSpellPointCost = false; /** An enumeration of "Standard" spell components */ public enum Component { @@ -704,6 +711,10 @@ { txt.append("\tPPCOST:").append(getPPCost()); } + if (hasSpellPointCost()) + { + txt.append(getSPCostStrings()); + } txt.append(super.getPCCText(false)); @@ -1253,4 +1264,68 @@ public int hashCode() { return getKeyName().hashCode(); } + + public void clearSpellPointCost() + { + spellPointCost.clear(); + } + + public void setParsedSpellPointCost(String component, final int value) + { + hasSpellPointCost = true; + HashMap<SpellPointType, Integer> costs = new HashMap<SpellPointType, Integer>(); + costs.put(SpellPointType.ACTUALCOST, value); + costs.put(SpellPointType.EFFECTIVECOST, value); + spellPointCost.put(component.toUpperCase(), costs); + } + public static boolean hasSpellPointCost() + { + return hasSpellPointCost; + } + public Map<String,Integer> getSpellPointCostActualParts() + { + Map<String,Integer> spCost = new HashMap<String, Integer>(); + int RunningTotal =0; + + for (String spComponent: spellPointCost.keySet()) + { + HashMap<SpellPointType, Integer> costs = spellPointCost.get(spComponent); + int value = costs.get(SpellPointType.ACTUALCOST); + int translatedValue = value; + spCost.put(spComponent, translatedValue); + } + return spCost; + } + public String getSPCostStrings() + { + Map<String,Integer> spCost = getSpellPointCostActualParts(); + int totalSpellPoints = getSPCostActual(spCost); + StringBuffer sb = new StringBuffer(); + sb.append(totalSpellPoints); + if(spCost.size()==1 && spCost.containsKey("TOTAL")) + { + return sb.toString(); + } + sb.append(" ["); + for (String aComponent: spCost.keySet()) + { + sb.append(aComponent); + sb.append(" "); + sb.append(spCost.get(aComponent)); + sb.append("/"); + } + sb.replace(sb.length()-1, sb.length(), ""); + sb.append("]"); + return sb.toString(); + } + public int getSPCostActual(final Map<String,Integer> spCost) + { + int runnintTotal = 0; + for (String aComponent: spCost.keySet()) + { + runnintTotal += spCost.get(aComponent); + } + return runnintTotal; + } + } Modified: Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2008-03-08 01:09:33 UTC (rev 5503) +++ Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2008-03-08 20:41:21 UTC (rev 5504) @@ -3586,6 +3586,7 @@ InfoSpells.remove.selected=Click to remove selected spell from this spellbook InfoSpellsSubTab.PPCost=PP Cost +InfoSpellsSubTab.SpellPointCost=SpellPoints InfoSpellsSubTab.FindItem=Find item InfoSpellsSubTab.SearchItem=searchItem Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2008-03-08 01:09:33 UTC (rev 5503) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/spells/InfoSpellsSubTab.java 2008-03-08 20:41:21 UTC (rev 5504) @@ -865,7 +865,12 @@ b.appendI18nElement("InfoSpellsSubTab.PPCost", String //$NON-NLS-1$ .valueOf(aSpell.getPPCost())); } - + if (Spell.hasSpellPointCost()) + { + b.appendSpacer(); + b.appendI18nElement("InfoSpellsSubTab.SpellPointCost", String //$NON-NLS-1$ + .valueOf(aSpell.getSPCostStrings())); + } b.appendLineBreak(); b.appendI18nElement("in_descrip", pc.parseSpellString(aSpell, aSpell.getDescription(getPc()), cs.getOwner())); Added: Trunk/pcgen/code/src/java/plugin/lsttokens/spell/SpellPointCostToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/spell/SpellPointCostToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/spell/SpellPointCostToken.java 2008-03-08 20:41:21 UTC (rev 5504) @@ -0,0 +1,88 @@ +package plugin.lsttokens.spell; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.StringTokenizer; + +import pcgen.core.spell.Spell; +import pcgen.core.spell.Spell.SpellPointType; +import pcgen.persistence.lst.SpellLstToken; +import pcgen.util.Logging; + +/** + * Class deals with DURATION Token + */ +public class SpellPointCostToken implements SpellLstToken +{ + + public String getTokenName() + { + return "SPELLPOINTCOST"; + } + + public boolean parse(Spell spell, String value) + { + final StringTokenizer aTok = new StringTokenizer(value, "|", false); + while (aTok.hasMoreTokens()) + { + String token = aTok.nextToken(); + boolean hasSubtokens = false; + + if (token.equals(".CLEAR")) + { + spell.clearSpellPointCost(); + return true; + } + if(token.contains("=")) + { + hasSubtokens = true; + String[] components = token.split("="); + if (components.length != 2 || (components[0] == null || components[1] == null )) + { + Logging.errorPrint("Invalid number of Arguments in " + getTokenName() + "(" + + spell.getDisplayName()+"): " +value); + return false; + + } + else + { + int tempvalue; + try + { + tempvalue = Integer.parseInt(components[1]); + } + catch (NumberFormatException e) + { + Logging.errorPrint("Invalid Value in " + getTokenName() + "(" + + spell.getDisplayName()+"): " + token + ". Value must be an integer."); + return false; + } + + spell.setParsedSpellPointCost(components[0], tempvalue); + } + } + else if(hasSubtokens) + { + Logging.errorPrint("Invalid number of Arguments in " + getTokenName() + "(" + + spell.getDisplayName()+"): " +value); + return false; + } + else + { + int tempvalue; + try + { + tempvalue = Integer.parseInt(token); + } + catch (NumberFormatException e) + { + Logging.errorPrint("Invalid Value in " + getTokenName() + "(" + + spell.getDisplayName()+"): " + token + ". Value must be an integer."); + return false; + } + spell.setParsedSpellPointCost("TOTAL", tempvalue); + } + } + return true; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |