Difference between revisions of "Architecture Changes 5.17"

From PCGen Wiki
Jump to: navigation, search
(CHOOSE Rebuild)
(Player Character Facets)
 
(93 intermediate revisions by 2 users not shown)
Line 23: Line 23:
 
These are major token changes that need to take place to sufficiently clean up the data syntax to avoid strange effects and requirements on the code.
 
These are major token changes that need to take place to sufficiently clean up the data syntax to avoid strange effects and requirements on the code.
  
# Domain's CHOOSE:WEAPONPROF can have [WEAPONPROF], should be AUTO:WEAPONPROF:%LIST [https://sourceforge.net/tracker/?func=detail&aid=1683356&group_id=25576&atid=384722 FREQ 1683356]
+
# <s>Domain's CHOOSE:WEAPONPROF can have [WEAPONPROF], should be AUTO:WEAPONPROF:%LIST [https://sourceforge.net/tracker/?func=detail&aid=1683356&group_id=25576&atid=384722 FREQ 1683356]</s>
# Domain's CHOOSE:WEAPONPROF can have [FEAT=x] should get something like: AUTO:FEAT|x(%LIST) [https://sourceforge.net/tracker/?func=detail&aid=1683356&group_id=25576&atid=384722 FREQ 1683356]
+
# <s>Domain's CHOOSE:WEAPONPROF can have [FEAT=x] should get something like: AUTO:FEAT|x(%LIST) [https://sourceforge.net/tracker/?func=detail&aid=1683356&group_id=25576&atid=384722 FREQ 1683356]</s>
 
# CHOOSE:SPELLLEVEL can have funky arguments (BONUS), should be separate and use %LIST [https://sourceforge.net/tracker/?func=detail&aid=2713306&group_id=25576&atid=384722 FREQ 2713306]
 
# CHOOSE:SPELLLEVEL can have funky arguments (BONUS), should be separate and use %LIST [https://sourceforge.net/tracker/?func=detail&aid=2713306&group_id=25576&atid=384722 FREQ 2713306]
  
Line 40: Line 40:
 
# <s>PCStat fields maxValue, minValue can be in IntegerKey</s> [https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314] (DONE - SVN 9786)
 
# <s>PCStat fields maxValue, minValue can be in IntegerKey</s> [https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314] (DONE - SVN 9786)
 
# <s>PCStat field rolled can be in ObjectKey</s> [https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314] (DONE - SVN 9786)
 
# <s>PCStat field rolled can be in ObjectKey</s> [https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314] (DONE - SVN 9786)
# Kit statList can be in ListKey [https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314]
+
# <s>Kit statList can be in ListKey </s>[https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314] (DONE - SVN 10116)
# Kit tableMap can be in MapKey [https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314]
+
# <s>Kit tableMap can be in MapKey </s>[https://sourceforge.net/tracker/?func=detail&aid=2713314&group_id=25576&atid=384722 FREQ 2713314] (DONE - SVN 10116)
 
# Global TEMPLATE supports .REMOVE suffix, should really be of the form REMOVE:TEMPLATE [https://sourceforge.net/tracker/index.php?func=detail&aid=1916482&group_id=25576&atid=384722 FREQ 1916482]
 
# Global TEMPLATE supports .REMOVE suffix, should really be of the form REMOVE:TEMPLATE [https://sourceforge.net/tracker/index.php?func=detail&aid=1916482&group_id=25576&atid=384722 FREQ 1916482]
# Campaign isLoaded and isInitted are load-based (not static) and thus should be moved into CampaignLoader vs. stored in the Campaign itself [https://sourceforge.net/tracker/?func=detail&aid=2713309&group_id=25576&atid=384722 FREQ 2713309]
+
# <s>Campaign isLoaded and isInitted are load-based (not static) and thus should be moved into CampaignLoader vs. stored in the Campaign itself [https://sourceforge.net/tracker/?func=detail&aid=2713309&group_id=25576&atid=384722 FREQ 2713309]</s> (DONE - SVN 10126, 10128)
  
 
==CHOOSE Rebuild==
 
==CHOOSE Rebuild==
Line 53: Line 53:
 
Each of these are items that need to be built as "new" CHOOSE tokens:
 
Each of these are items that need to be built as "new" CHOOSE tokens:
  
# [[Type Safe Constant Proposals#CHOOSE:NOCHOICE|CHOOSE:NOCHOICE]] (syntax remains unchanged)
+
# <s>[[Simple_CDOMObject_Proposals#CHOOSE:CHECK|CHOOSE:CHECK]]</s> (DONE - SVN 10027)
# [[Type Safe Constant Proposals#CHOOSE:STRING|CHOOSE:STRING]] (syntax remains unchanged)
+
# <s>[[Simple_CDOMObject_Proposals#CHOOSE:SIZE|CHOOSE:SIZE]] </s> (DONE - SVN 10029)
# [[Type Safe Constant Proposals#CHOOSE:SCHOOLS|CHOOSE:SCHOOLS]]
+
# <s>[[Qualified_CDOMObject_Proposals#CHOOSE:FEAT|CHOOSE:FEAT]]</s> (DONE - SVN 11809-13, 11824)
# [[Simple_CDOMObject_Proposals#CHOOSE:PCSTAT|CHOOSE:PCSTAT]]
+
# <s>[[Qualified_CDOMObject_Proposals#CHOOSE:ABILITY|CHOOSE:ABILITY]]</s> -- [https://sourceforge.net/tracker/index.php?func=detail&aid=2204717&group_id=25576&atid=384722 FREQ 2204717] (DONE - SVN 11828)
# [[Simple_CDOMObject_Proposals#CHOOSE:CHECK|CHOOSE:CHECK]]
+
# <s>[[Qualified_CDOMObject_Proposals#CHOOSE:EQUIPMENT|CHOOSE:EQUIPMENT]]</s> (DONE - SVN 10085, 11788)
# [[Simple_CDOMObject_Proposals#CHOOSE:SIZE|CHOOSE:SIZE]]
+
# <s>[[Qualified_CDOMObject_Proposals#CHOOSE:TEMPLATE|CHOOSE:TEMPLATE]] </s> (DONE - SVN 10018-10021)
# [[Simple_CDOMObject_Proposals#CHOOSE:ALIGNMENT|CHOOSE:ALIGNMENT]]
+
# <s>[[Unique_Primitive_CDOMObject_Proposals#CHOOSE:ARMORPROFICIENCY|CHOOSE:ARMORPROFICIENCY]]</s> (DONE - SVN 10086-87, 11782, 11825)
# [[Qualified_CDOMObject_Proposals#CHOOSE:FEAT|CHOOSE:FEAT]]
+
# <s>[[Unique_Primitive_CDOMObject_Proposals#CHOOSE:SHIELDPROFICIENCY|CHOOSE:SHIELDPROFICIENCY]]</s> (DONE - SVN 10088, 11783, 11825)
# [[Qualified_CDOMObject_Proposals#CHOOSE:ABILITY|CHOOSE:ABILITY]] -- [https://sourceforge.net/tracker/index.php?func=detail&aid=2204717&group_id=25576&atid=384722 FREQ 2204717]
+
# <s>[[Unique_Primitive_CDOMObject_Proposals#CHOOSE:DOMAIN|CHOOSE:DOMAIN]]</s> (DONE - SVN 11781, 11823)
# [[Qualified_CDOMObject_Proposals#CHOOSE:LANG|CHOOSE:LANG]]  -- [https://sourceforge.net/tracker/?func=detail&aid=2703701&group_id=25576&atid=384722 FREQ 2703701]
+
# <s>[[Unique_Primitive_CDOMObject_Proposals#CHOOSE:DEITY|CHOOSE:DEITY]] -- [https://sourceforge.net/tracker/?func=detail&aid=1738608&group_id=25576&atid=384722 FREQ 1738608]</s> (DONE - SVN 10091, 10094, 10098, 10105)
# [[Qualified_CDOMObject_Proposals#CHOOSE:EQUIPMENT|CHOOSE:EQUIPMENT]]
+
# <s>[[Unique_Primitive_CDOMObject_Proposals#CHOOSE:CLASS|CHOOSE:CLASS]]</s> (DONE - SVN 11787, 11795)
# [[Qualified_CDOMObject_Proposals#CHOOSE:TEMPLATE|CHOOSE:TEMPLATE]]
+
# <s>[[Unique_Primitive_CDOMObject_Proposals#CHOOSE:RACE|CHOOSE:RACE]]</s> (DONE - SVN 11794)
# [[Unique_Primitive_CDOMObject_Proposals#CHOOSE:SPELLS|CHOOSE:SPELLS]] (syntax remains unchanged)
+
# <s>[[Complex_CDOMObject_Proposals#CHOOSE:SKILL|CHOOSE:SKILL]] -- [https://sourceforge.net/tracker/index.php?func=detail&aid=1001527&group_id=25576&atid=384722 FREQ 1001527]</s> (DONE - SVN 10092-93, 10108, 11789-92, 11826-7)
# [[Unique_Primitive_CDOMObject_Proposals#CHOOSE:ARMORPROFICIENCY|CHOOSE:ARMORPROFICIENCY]]
+
# <s>CHOOSE:ARMORTYPE To be deprecated - see [https://sourceforge.net/tracker/?func=detail&aid=2713374&group_id=25576&atid=384722 FREQ 2713374]</s> (DONE - SVN 10090)
# [[Unique_Primitive_CDOMObject_Proposals#CHOOSE:SHIELDPROFICIENCY|CHOOSE:SHIELDPROFICIENCY]]
+
# <s>CHOOSE:SALIST to be deprecated [http://tech.groups.yahoo.com/group/pcgen_experimental/message/7364 _exp 7364]</s> (DONE - SVN 10089, 11793, 11796)
# [[Unique_Primitive_CDOMObject_Proposals#CHOOSE:DOMAIN|CHOOSE:DOMAIN]]
+
# <s>[[Type Safe Constant Proposals#CHOOSE:STRING|CHOOSE:STRING]] (syntax remains unchanged)</s> (DONE - SVN 11831)
# [[Unique_Primitive_CDOMObject_Proposals#CHOOSE:DEITY|CHOOSE:DEITY]] -- [https://sourceforge.net/tracker/?func=detail&aid=1738608&group_id=25576&atid=384722 FREQ 1738608]
+
# <s>[[Type Safe Constant Proposals#CHOOSE:SCHOOLS|CHOOSE:SCHOOLS]]</s> (DONE - SVN 11831, 11914, 12003)
# [[Unique_Primitive_CDOMObject_Proposals#CHOOSE:CLASS|CHOOSE:CLASS]]
+
# <s>CHOOSE:HP</s> (Deprecated in favor of CHOOSE:STRING - SVN 11865)
# [[Unique_Primitive_CDOMObject_Proposals#CHOOSE:RACE|CHOOSE:RACE]]
+
# <s>ADD FEAT= target primitive (CHOOSE:FEAT=, CHOOSE:WEAPONFOCUS, [https://sourceforge.net/tracker/index.php?func=detail&aid=902288&group_id=25576&atid=384722 FREQ 902288])</s> (DONE - SVN 11911, 12003)
# [[Complex_CDOMObject_Proposals#CHOOSE:SKILL|CHOOSE:SKILL]] -- [https://sourceforge.net/tracker/index.php?func=detail&aid=1001527&group_id=25576&atid=384722 FREQ 1001527]
+
# <s>[[Unique_Primitive_CDOMObject_Proposals#CHOOSE:SPELLS|CHOOSE:SPELLS]] (syntax remains unchanged)</s> (DONE - SVN 11915)
# [[Complex_CDOMObject_Proposals#CHOOSE:WEAPONPROFICIENCY|CHOOSE:WEAPONPROFICIENCY]] -- [https://sourceforge.net/tracker/index.php?func=detail&aid=1102455&group_id=25576&atid=384722 FREQ 1102455]
+
# <s>[[Qualified_CDOMObject_Proposals#CHOOSE:LANG|CHOOSE:LANG]]  -- [https://sourceforge.net/tracker/?func=detail&aid=2703701&group_id=25576&atid=384722 FREQ 2703701]</s> (DONE - SVN 10083-4, 10098, 11920)
# CHOOSE:USERINPUT
+
# <s>[[Complex_CDOMObject_Proposals#CHOOSE:WEAPONPROFICIENCY|CHOOSE:WEAPONPROFICIENCY]] -- [https://sourceforge.net/tracker/index.php?func=detail&aid=1102455&group_id=25576&atid=384722 FREQ 1102455]</s> (DONE - SVN 10088, 10098, 11825, 11828, 11865, 11911, 11939)
# ADD FEAT= target primitive (CHOOSE:FEAT=, CHOOSE:WEAPONFOCUS, [https://sourceforge.net/tracker/index.php?func=detail&aid=902288&group_id=25576&atid=384722 FREQ 902288])
+
# <s>[[Simple_CDOMObject_Proposals#CHOOSE:PCSTAT|CHOOSE:PCSTAT]]</s> (SVN 10023-10024, 11786, 12003)
# CHOOSE:ARMORTYPE To be deprecated - see [https://sourceforge.net/tracker/?func=detail&aid=2713374&group_id=25576&atid=384722 FREQ 2713374]
+
# <s>[[Simple_CDOMObject_Proposals#CHOOSE:ALIGNMENT|CHOOSE:ALIGNMENT]]</s> (SVN 10081, 12003)
# CHOOSE:SALIST to be deprecated, unless we can find a valid usage - see [http://tech.groups.yahoo.com/group/pcgen_experimental/message/7364 _exp 7364]
+
# <s>[[Type Safe Constant Proposals#CHOOSE:NOCHOICE|CHOOSE:NOCHOICE]]</s> (SVN 12182)
# CHOOSE:SPELLLEVEL can be deprecated and replaced by CHOOSE:SPELLS if [[Architecture Changes 5.17#Major Token Changes|the BONUS issue]] is addressed.
+
# <s>CHOOSE:USERINPUT</s> (SVN 12182)
 +
# CHOOSE:SPELLLIST can be deprecated and replaced by CHOOSE:SPELLS
 +
# [[Qualified_CDOMObject_Proposals#CHOOSE:FEATSELECTION|CHOOSE:FEATSELECTION]]
 +
# [[Complex_CDOMObject_Proposals#CHOOSE:SPELLLEVEL|CHOOSE:SPELLLEVEL]]
  
The following have not been folded into the above proposals yet:
+
==Make Choice Selection Actions Type Safe==
  
 +
The following items are forced to convert the result of a CHOOSE from a String into a type safe object.  Once the CHOOSE tokens are type safe, these can be converted to be type safe as well:
  
# CHOOSE:HP
+
# Global CSKILL
# CHOOSE:SPELLLIST
+
# Global CCSKILL
 +
# AUTO:ARMORPROF
 +
# AUTO:EQUIP
 +
# AUTO:SHIELDPROF
 +
# AUTO:WEAPONPROF
 +
# Race FAVCLASS
 +
# Template FAVOREDCLASS
 +
# Race MONCSKILL
 +
# AUTO:LANG
  
 
==Leverage GroupingState==
 
==Leverage GroupingState==
Line 90: Line 102:
 
The following tokens use error detection that could consider leveraging the GroupingState system.  Note that some of these will not benefit and should probably not be changed.
 
The following tokens use error detection that could consider leveraging the GroupingState system.  Note that some of these will not benefit and should probably not be changed.
  
# Global CCSKILL, COMPANIONLIST, CSKILL, KIT, LANGAUTO, QUALIFY
+
# <s>Global CCSKILL, COMPANIONLIST, CSKILL, KIT, LANGAUTO, QUALIFY</s> (DONE - SVN 10129)
# Add ABILITY, CLASSSKILLS (both), FEAT, LANGUAGE, SKILL, SPELLCASTER, VFEAT
+
# <s>Add ABILITY, CLASSSKILLS (both), FEAT, LANGUAGE, SKILL, SPELLCASTER, VFEAT</s> (DONE - SVN 10130)
# Auto ARMORPROF, SHIELDPROF, WEAPONPROF
+
# <s>Auto ARMORPROF, SHIELDPROF, WEAPONPROF</s>
# Deity DEITYWEAP, DOMAINS
+
# <s>Deity DEITYWEAP, DOMAINS</s>
# Class LANGBONUS, SKILLLIST, SPELLLIST, WEAPONBONUS
+
# <s>Class LANGBONUS, SKILLLIST, SPELLLIST, WEAPONBONUS</s> (DONE - SVN 10131)
# Race CHOOSE:LANGAUTO, FAVCLASS, LANGBONUS, MONCCSKILL, MONCSKILL, WEAPONBONUS
+
# <s>Race CHOOSE:LANGAUTO, FAVCLASS, LANGBONUS, MONCCSKILL, MONCSKILL, WEAPONBONUS</s> (DONE - SVN 10132)
# Remove FEAT
+
# <s>Remove FEAT</s>
# Skill CLASSES (doesn't check error right now!)
+
# <s>Skill CLASSES</s>
# Template CHOOSE:LANGAUTO, FAVOREDCLASS, LANGBONUS, WEAPONBONUS
+
# <s>Template CHOOSE:LANGAUTO, FAVOREDCLASS, LANGBONUS, WEAPONBONUS</s> (DONE - SVN 10133)
 
 
  
 
=Primary Goals - Core=
 
=Primary Goals - Core=
Line 128: Line 139:
 
Currently, Equipment and EquipmentModifier objects have been scoped out of PCGen 5.17 in order to minimize the required changes to the core
 
Currently, Equipment and EquipmentModifier objects have been scoped out of PCGen 5.17 in order to minimize the required changes to the core
  
# Eliminate Key/ABB comparison of PCStat objects
+
# <s>Eliminate Key/ABB comparison of PCStat object</s> (DONE - SVN 9884-6, 9888-90, 9893-5, 9897, 9899, 9900)
# Eliminate Key comparison of Skill objects
+
# <s>Eliminate Key comparison of Skill objects</s> (DONE - SVN 9991, 9997)
# Eliminate Key comparison of Race objects
+
# <s>Eliminate Key comparison of Race objects</s> (DONE - SVN 9989)
 
# Eliminate Key comparison of CompanionMod objects
 
# Eliminate Key comparison of CompanionMod objects
# Eliminate Key comparison of Template objects
+
# <s>Eliminate Key comparison of Template objects</s> (DONE - SVN 9993)
# Eliminate Key comparison of Spell objects
+
# <s>Eliminate Key comparison of Spell objects</s> (DONE - SVN 10001)
 
# Eliminate Key comparison of Domain objects
 
# Eliminate Key comparison of Domain objects
 
# Eliminate Key comparison of PCClass objects
 
# Eliminate Key comparison of PCClass objects
# Eliminate Key comparison of SizeAdjustment objects
+
# <s>Eliminate Key comparison of SizeAdjustment objects</s> (DONE - SVN 9990)
# Eliminate Key comparison of PCAlignment objects
+
# <s>Eliminate Key comparison of PCAlignment objects</s> (DONE - SVN 9994)
# Eliminate Key comparison of Language objects
+
# <s>Eliminate Key comparison of Language objects</s> (DONE - SVN 9995)
# Eliminate Key comparison of PCClass objects
+
# <s>Eliminate Key comparison of Check (PObject) objects</s> (DONE - SVN 10006)
# Eliminate Key comparison of Check (PObject) objects
 
 
# Eliminate Key comparison of Feat/Ability objects
 
# Eliminate Key comparison of Feat/Ability objects
 +
# <s>Eliminate Key comparison of WeaponProf objects</s> (DONE - SVN 9998, 9999)
 
# <s>Eliminate Key comparison of EquipmentModifier objects</s> (OUT OF SCOPE)
 
# <s>Eliminate Key comparison of EquipmentModifier objects</s> (OUT OF SCOPE)
 
# <s>Eliminate Key comparison of Equipment objects</s> (OUT OF SCOPE)
 
# <s>Eliminate Key comparison of Equipment objects</s> (OUT OF SCOPE)
  
==Player Character Subsystems==
+
==Player Character Facets==
  
# PC Subsystem for PCStat objects
+
# <s>PC facet for PCStat objects</s> (SVN 10328)
# PC Subsystem for Skill objects
+
# <s>PC facet for Skill objects</s> (SVN 10329)
# PC Subsystem for Race objects
+
# <s>PC facet for Race objects</s> (SVN 10326)
# PC Subsystem for CompanionMod objects
+
# <s>PC facet for CompanionMod objects</s> (SVN 10327)
# PC Subsystem for Template objects
+
# <s>PC facet for Template objects</s> (SVN 10326)
# PC Subsystem for Spell objects
+
# PC facet for PCStat objects (SVN 12177)
# PC Subsystem for Domain objects
+
# PC facet for Spell objects
# PC Subsystem for PCClass objects
+
# <s>PC facet for Domain objects</s> (SVN 10240)
# PC Subsystem for SizeAdjustment objects
+
# <s>PC facet for Deity</s> (SVN 10330, 10391)
# PC Subsystem for PCAlignment objects
+
# PC facet for PCClass/PCClassLevel objects (SVN 10354, 10356, 10359-10361, 10367)
# PC Subsystem for Language objects
+
# <s>PC facet for SizeAdjustment objects</s> (SVN 10379)
# PC Subsystem for PCClass/PCClassLevel objects
+
# <s>PC facet for PCAlignment objects</s> (SVN 10331)
# PC Subsystem for Check (PObject) objects
+
# PC facet for Language objects (SVN 10352)
# PC Subsystem for Feat/Ability objects
+
# <s>PC facet for Check (PObject) objects</s> (SVN 10353)
# PC Subsystem for CompanionMod objects
+
# PC facet for Feat/Ability objects (SVN 10406)
# PC Subsystem for Proficiency objects
+
# <s>PC facet for CompanionMod objects</s> (SVN 10327)
# PC Subsystem for Variables
+
# PC facet for Campaign objects (SVN 10393)
# PC Subsystem for Bonuses
+
# PC facet for BioSet objects (SVN 10394)
# PC Subsystem for XP
+
# PC facet for Equipment (SVN 10396)
# PC Subsystem for Levels
+
# <s>PC facet for Kit objects</s> (SVN 10414)
# PC Subsystem for Pure Facts
+
# <s>PC facet for Armor Profs</s> (SVN 11947)
# PC Subsystem for Movement
+
# <s>PC facet for Shield Profs</s> (SVN 11947)
# PC Subsystem for AC
+
# PC facet for Weapon Profs
# <s>PC Subsystem for Equipment</s> (OUT OF SCOPE)
+
# PC facet for Variables (SVN 12179)
 +
# PC facet for Bonuses
 +
# PC facet for XP (SVN 10415)
 +
# PC facet for Levels (SVN 10357)
 +
# PC facet for Movement
 +
# PC facet for AC
 +
# PC facet for Spell Info (books, etc.) (SVN 12178)
 +
# PC facet for Race Type (SVN 10327)
 +
# PC facet for Race Sub Type (SVN 10327)
 +
# PC facet for Legs (SVN 10327)
 +
# PC facet for Reach (SVN 10390)
 +
# PC facet for Hands (SVN 10327)
 +
# PC facet for Face (SVN 10327)
 +
# PC facet for Region/SubRegion (SVN 10383)
 +
# PC facet for Non Prof Penalty (SVN 10389)
 +
# PC facet for SubRace (SVN 10327)
 +
# PC facet for Gender (SVN 10381) [needs event]
 +
# PC facet for Character Level
 +
# PC facet for Skill Cost
 +
# PC facet for Bonus Starting Languages
 +
# PC facet for Ability Pool
 +
# PC facet for SR (SVN 12160)
 +
# PC facet for CR (SVN 10388)
 +
# PC facet for DR
 +
# PC facet for Vision (SVN 12169)
 +
# PC facet for Load (SVN 12161)
 +
# PC facet for Followers (SVN 12163-4)
 +
# PC facet for Special Abilities
 +
# PC facet for Attack
 +
# PC facet for Initiative (SVN 10389)
 +
# PC facet for Money (SVN 10387) [needs event]
 +
# PC facet for Age
 +
# PC facet for HP
 +
# PC facet for Stat Locking (SVN 12176)
 +
# PC facet for Qualification (SVN 11966)
 +
# PC facet for Height (SVN 10382, 10409) [needs event]
 +
# PC facet for Weight (SVN 10382, 10409) [needs event]
  
 
==Storage==
 
==Storage==
Line 198: Line 245:
 
These are architecture refactoring issues that generally involve breaking tangles and other work that is helpful to cleaning up the structure of the code
 
These are architecture refactoring issues that generally involve breaking tangles and other work that is helpful to cleaning up the structure of the code
  
# CharacterDomain is a useless class - delete
+
# <s>CharacterDomain is a useless class - delete</s> (DONE - SVN 10000, 10010)
# StatList is a useless class - delete
+
# <s>StatList is a useless class - delete</s> (DONE - SVN 9996)
# UnconstructedValidator should be an interface, not a class
+
# <s>UnconstructedValidator should be an interface, not a class</s> (DONE - SVN 10187)
# Qualifier (in cdom.helper) is used in .reference, thus it should be in .reference, not .helper
+
# <s>Qualifier (in cdom.helper) is used in .reference, thus it should be in .reference, not .helper</s> (DONE - SVN 10177)
# CDOMObject methods addAdds, removeAdds, checkRemovals, driveChoice cause tangles, and should be in CDOMObjectUtilities not in CDOMObject
+
# <s>CDOMObject methods addAdds, removeAdds, checkRemovals, driveChoice cause tangles, and should be in CDOMObjectUtilities not in CDOMObject</s> (DONE - SVN 10136)
 
# LoadContext should be an interface, not a class
 
# LoadContext should be an interface, not a class
 
# PersistentChoiceActor decodeChoice often references the LoadContext, and should be discouraged from using Globals.  This method should take the LoadContext as an argument.
 
# PersistentChoiceActor decodeChoice often references the LoadContext, and should be discouraged from using Globals.  This method should take the LoadContext as an argument.
# Give CDOMObject (or a utility class) a method of consolidating out all of the ListKey-based joins in pcgen.core.spell.Spell.java
+
# <s>Give CDOMObject (or a utility class) a method of consolidating out all of the ListKey-based joins in pcgen.core.spell.Spell.java</s> (DONE - SVN 10181)
# Ability.Nature should be in pcgen.cdom.enumeration
+
# <s>Ability.Nature should be in pcgen.cdom.enumeration</s> (DONE - SVN 10135)
# Spell Components should be in pcgen.cdom.enumeration
+
# <s>Spell Components should be in pcgen.cdom.enumeration</s> (DONE - SVN 10181, 10183)
 
# StatList getModForNumber(int, int) does a String replacement directly prior to a Formula evaluation, this should be moveable into a JEP variable for SCORE that is specific to stats.  Actually, need to have the "SOURCE" field for TermEvaluatorBuilderPCVar COMPLETE_PC_SCORE be able to distinguish between STAT:Foo and BASESTAT:Foo and then this replacement would not be necessary.
 
# StatList getModForNumber(int, int) does a String replacement directly prior to a Formula evaluation, this should be moveable into a JEP variable for SCORE that is specific to stats.  Actually, need to have the "SOURCE" field for TermEvaluatorBuilderPCVar COMPLETE_PC_SCORE be able to distinguish between STAT:Foo and BASESTAT:Foo and then this replacement would not be necessary.
  
Line 237: Line 284:
  
 
This is surfaced starting at this message: http://tech.groups.yahoo.com/group/pcgen_experimental/message/8133
 
This is surfaced starting at this message: http://tech.groups.yahoo.com/group/pcgen_experimental/message/8133
 +
 +
[[User:AllenCohn|AllenCohn]] 21:57, 6 January 2010 (UTC)Allen Cohn 1/6/2010 I hope I'm doing this correctly and in the correct place... I saw Karianna's request for feedback. Concerning prerequisites, I am still, to this day, surprised that prerequisites are implemented as multiple individual keyword statements instead of a single PREREQUISITE(boolean statement) form. The boolean statement could, of course, access any internal variables and use any generally known boolean operators. I can't help but think that this approach would be much more flexible and less confusing.

Latest revision as of 00:46, 17 June 2010

Primary Goals - Token/Loader

Prepare for LST Editor

These items benefit the LST editor system and are required in order to allow the editor system a "clean" round-robin of the data stored in PCC/LST files

  1. Eliminate PCClass ABB being recognized by LoadContext as source-dependent FREQ 2671886 (DONE - SVN 9734)
  2. Make .COPY in LST-files editor friendly FREQ 2700709 (DONE - SVN 9735)
  3. Make .MOD in LST-files editor friendly FREQ 2700750 (DONE - SVN 9778)
  4. Make .FORGET editor friendly FREQ 2715783 (DONE - SVN 9782)
  5. Make PCClassLevel REPEATLEVEL in LST-files editor friendly FREQ 2687293
  6. Rebuild/rename UDAM token to not "cross-pollute" in PCClassLevel FREQ 2671881
  7. Make Ability CATEGORY recognized by LoadContext as source-dependent FREQ 2671888
  8. Make Global KEY recognized by LoadContext as source dependent FREQ 2713303

Major Token Changes

These are major token changes that need to take place to sufficiently clean up the data syntax to avoid strange effects and requirements on the code.

  1. Domain's CHOOSE:WEAPONPROF can have [WEAPONPROF], should be AUTO:WEAPONPROF:%LIST FREQ 1683356
  2. Domain's CHOOSE:WEAPONPROF can have [FEAT=x] should get something like: AUTO:FEAT|x(%LIST) FREQ 1683356
  3. CHOOSE:SPELLLEVEL can have funky arguments (BONUS), should be separate and use %LIST FREQ 2713306

(also See UDAM in Editor preparation)

Continue Token/Field Cleanup

These are cleanups similar to the major work that was done in PCGen 5.16. These are generally minor refactoring and cleanup, and most are non-invasive. Few of these are critical for the 5.17 cycle and could be ignored if necessary

  1. ALL String based tokens (use StringKey) that support .CLEAR do so in a rather "different" way that is potentially not stable long-term. This should be reconsidered as to whether it is appropriate.
  2. PCAlignment fields validForDeity, validForFollower can be in ObjectKey FREQ 2713314 (DONE - SVN 9784)
  3. SizeAdjustment fields abbreviation, isDefaultSize can be in StringKey, ObjectKey FREQ 2713314 (DONE - SVN 9785)
  4. PCStat fields abbreviation, statMod can be in StringKey FREQ 2713314 (DONE - SVN 9786)
  5. PCStat field penaltyVar is useless - eliminate FREQ 2713314 (DONE - SVN 9786)
  6. PCStat fields maxValue, minValue can be in IntegerKey FREQ 2713314 (DONE - SVN 9786)
  7. PCStat field rolled can be in ObjectKey FREQ 2713314 (DONE - SVN 9786)
  8. Kit statList can be in ListKey FREQ 2713314 (DONE - SVN 10116)
  9. Kit tableMap can be in MapKey FREQ 2713314 (DONE - SVN 10116)
  10. Global TEMPLATE supports .REMOVE suffix, should really be of the form REMOVE:TEMPLATE FREQ 1916482
  11. Campaign isLoaded and isInitted are load-based (not static) and thus should be moved into CampaignLoader vs. stored in the Campaign itself FREQ 2713309 (DONE - SVN 10126, 10128)

CHOOSE Rebuild

This is the major token rebuild of CHOOSE, as proposed.

There is a significant discussion about separators for CHOOSE Separator Characters

Each of these are items that need to be built as "new" CHOOSE tokens:

  1. CHOOSE:CHECK (DONE - SVN 10027)
  2. CHOOSE:SIZE (DONE - SVN 10029)
  3. CHOOSE:FEAT (DONE - SVN 11809-13, 11824)
  4. CHOOSE:ABILITY -- FREQ 2204717 (DONE - SVN 11828)
  5. CHOOSE:EQUIPMENT (DONE - SVN 10085, 11788)
  6. CHOOSE:TEMPLATE (DONE - SVN 10018-10021)
  7. CHOOSE:ARMORPROFICIENCY (DONE - SVN 10086-87, 11782, 11825)
  8. CHOOSE:SHIELDPROFICIENCY (DONE - SVN 10088, 11783, 11825)
  9. CHOOSE:DOMAIN (DONE - SVN 11781, 11823)
  10. CHOOSE:DEITY -- FREQ 1738608 (DONE - SVN 10091, 10094, 10098, 10105)
  11. CHOOSE:CLASS (DONE - SVN 11787, 11795)
  12. CHOOSE:RACE (DONE - SVN 11794)
  13. CHOOSE:SKILL -- FREQ 1001527 (DONE - SVN 10092-93, 10108, 11789-92, 11826-7)
  14. CHOOSE:ARMORTYPE To be deprecated - see FREQ 2713374 (DONE - SVN 10090)
  15. CHOOSE:SALIST to be deprecated _exp 7364 (DONE - SVN 10089, 11793, 11796)
  16. CHOOSE:STRING (syntax remains unchanged) (DONE - SVN 11831)
  17. CHOOSE:SCHOOLS (DONE - SVN 11831, 11914, 12003)
  18. CHOOSE:HP (Deprecated in favor of CHOOSE:STRING - SVN 11865)
  19. ADD FEAT= target primitive (CHOOSE:FEAT=, CHOOSE:WEAPONFOCUS, FREQ 902288) (DONE - SVN 11911, 12003)
  20. CHOOSE:SPELLS (syntax remains unchanged) (DONE - SVN 11915)
  21. CHOOSE:LANG -- FREQ 2703701 (DONE - SVN 10083-4, 10098, 11920)
  22. CHOOSE:WEAPONPROFICIENCY -- FREQ 1102455 (DONE - SVN 10088, 10098, 11825, 11828, 11865, 11911, 11939)
  23. CHOOSE:PCSTAT (SVN 10023-10024, 11786, 12003)
  24. CHOOSE:ALIGNMENT (SVN 10081, 12003)
  25. CHOOSE:NOCHOICE (SVN 12182)
  26. CHOOSE:USERINPUT (SVN 12182)
  27. CHOOSE:SPELLLIST can be deprecated and replaced by CHOOSE:SPELLS
  28. CHOOSE:FEATSELECTION
  29. CHOOSE:SPELLLEVEL

Make Choice Selection Actions Type Safe

The following items are forced to convert the result of a CHOOSE from a String into a type safe object. Once the CHOOSE tokens are type safe, these can be converted to be type safe as well:

  1. Global CSKILL
  2. Global CCSKILL
  3. AUTO:ARMORPROF
  4. AUTO:EQUIP
  5. AUTO:SHIELDPROF
  6. AUTO:WEAPONPROF
  7. Race FAVCLASS
  8. Template FAVOREDCLASS
  9. Race MONCSKILL
  10. AUTO:LANG

Leverage GroupingState

The following tokens use error detection that could consider leveraging the GroupingState system. Note that some of these will not benefit and should probably not be changed.

  1. Global CCSKILL, COMPANIONLIST, CSKILL, KIT, LANGAUTO, QUALIFY (DONE - SVN 10129)
  2. Add ABILITY, CLASSSKILLS (both), FEAT, LANGUAGE, SKILL, SPELLCASTER, VFEAT (DONE - SVN 10130)
  3. Auto ARMORPROF, SHIELDPROF, WEAPONPROF
  4. Deity DEITYWEAP, DOMAINS
  5. Class LANGBONUS, SKILLLIST, SPELLLIST, WEAPONBONUS (DONE - SVN 10131)
  6. Race CHOOSE:LANGAUTO, FAVCLASS, LANGBONUS, MONCCSKILL, MONCSKILL, WEAPONBONUS (DONE - SVN 10132)
  7. Remove FEAT
  8. Skill CLASSES
  9. Template CHOOSE:LANGAUTO, FAVOREDCLASS, LANGBONUS, WEAPONBONUS (DONE - SVN 10133)

Primary Goals - Core

Eliminate Cloning

Cloning takes place when a PlayerCharacter uses an object and results in extra memory and a minor performance issue. However, once clones are removed, additional type safety work can be done to vastly improve performance.

Currently, Equipment and EquipmentModifier objects have been scoped out of PCGen 5.17 in order to minimize the required changes to the core

  1. Eliminate Cloning of PCStat objects (Ability Scores) (DONE - SVN 9690)
  2. Eliminate Cloning of Skill objects (DONE - SVN 9696)
  3. Eliminate Cloning of Race objects (DONE - SVN 9700)
  4. Eliminate Cloning of CompanionMod objects (DONE - SVN 9704)
  5. Eliminate Cloning of Template objects (DONE - SVN 9705)
  6. Eliminate Cloning of Spell objects (DONE - SVN 9707)
  7. Eliminate Cloning of Domain objects (DONE - SVN 9709)
  8. Eliminate Cloning of PCClass objects
  9. Eliminate Cloning of Feat/Ability objects
  10. Eliminate Cloning of EquipmentModifier objects (OUT OF SCOPE)
  11. Eliminate Cloning of Equipment objects (OUT OF SCOPE)

Drive Type Safety and Performance

This represents the additional type safety work around performance for these object types. These changes cannot be done at the same time as the changes above, because they are significantly invasive, and must wait for a stable PCGen 5.16.0 where multi-version patching is no longer required.

Currently, Equipment and EquipmentModifier objects have been scoped out of PCGen 5.17 in order to minimize the required changes to the core

  1. Eliminate Key/ABB comparison of PCStat object (DONE - SVN 9884-6, 9888-90, 9893-5, 9897, 9899, 9900)
  2. Eliminate Key comparison of Skill objects (DONE - SVN 9991, 9997)
  3. Eliminate Key comparison of Race objects (DONE - SVN 9989)
  4. Eliminate Key comparison of CompanionMod objects
  5. Eliminate Key comparison of Template objects (DONE - SVN 9993)
  6. Eliminate Key comparison of Spell objects (DONE - SVN 10001)
  7. Eliminate Key comparison of Domain objects
  8. Eliminate Key comparison of PCClass objects
  9. Eliminate Key comparison of SizeAdjustment objects (DONE - SVN 9990)
  10. Eliminate Key comparison of PCAlignment objects (DONE - SVN 9994)
  11. Eliminate Key comparison of Language objects (DONE - SVN 9995)
  12. Eliminate Key comparison of Check (PObject) objects (DONE - SVN 10006)
  13. Eliminate Key comparison of Feat/Ability objects
  14. Eliminate Key comparison of WeaponProf objects (DONE - SVN 9998, 9999)
  15. Eliminate Key comparison of EquipmentModifier objects (OUT OF SCOPE)
  16. Eliminate Key comparison of Equipment objects (OUT OF SCOPE)

Player Character Facets

  1. PC facet for PCStat objects (SVN 10328)
  2. PC facet for Skill objects (SVN 10329)
  3. PC facet for Race objects (SVN 10326)
  4. PC facet for CompanionMod objects (SVN 10327)
  5. PC facet for Template objects (SVN 10326)
  6. PC facet for PCStat objects (SVN 12177)
  7. PC facet for Spell objects
  8. PC facet for Domain objects (SVN 10240)
  9. PC facet for Deity (SVN 10330, 10391)
  10. PC facet for PCClass/PCClassLevel objects (SVN 10354, 10356, 10359-10361, 10367)
  11. PC facet for SizeAdjustment objects (SVN 10379)
  12. PC facet for PCAlignment objects (SVN 10331)
  13. PC facet for Language objects (SVN 10352)
  14. PC facet for Check (PObject) objects (SVN 10353)
  15. PC facet for Feat/Ability objects (SVN 10406)
  16. PC facet for CompanionMod objects (SVN 10327)
  17. PC facet for Campaign objects (SVN 10393)
  18. PC facet for BioSet objects (SVN 10394)
  19. PC facet for Equipment (SVN 10396)
  20. PC facet for Kit objects (SVN 10414)
  21. PC facet for Armor Profs (SVN 11947)
  22. PC facet for Shield Profs (SVN 11947)
  23. PC facet for Weapon Profs
  24. PC facet for Variables (SVN 12179)
  25. PC facet for Bonuses
  26. PC facet for XP (SVN 10415)
  27. PC facet for Levels (SVN 10357)
  28. PC facet for Movement
  29. PC facet for AC
  30. PC facet for Spell Info (books, etc.) (SVN 12178)
  31. PC facet for Race Type (SVN 10327)
  32. PC facet for Race Sub Type (SVN 10327)
  33. PC facet for Legs (SVN 10327)
  34. PC facet for Reach (SVN 10390)
  35. PC facet for Hands (SVN 10327)
  36. PC facet for Face (SVN 10327)
  37. PC facet for Region/SubRegion (SVN 10383)
  38. PC facet for Non Prof Penalty (SVN 10389)
  39. PC facet for SubRace (SVN 10327)
  40. PC facet for Gender (SVN 10381) [needs event]
  41. PC facet for Character Level
  42. PC facet for Skill Cost
  43. PC facet for Bonus Starting Languages
  44. PC facet for Ability Pool
  45. PC facet for SR (SVN 12160)
  46. PC facet for CR (SVN 10388)
  47. PC facet for DR
  48. PC facet for Vision (SVN 12169)
  49. PC facet for Load (SVN 12161)
  50. PC facet for Followers (SVN 12163-4)
  51. PC facet for Special Abilities
  52. PC facet for Attack
  53. PC facet for Initiative (SVN 10389)
  54. PC facet for Money (SVN 10387) [needs event]
  55. PC facet for Age
  56. PC facet for HP
  57. PC facet for Stat Locking (SVN 12176)
  58. PC facet for Qualification (SVN 11966)
  59. PC facet for Height (SVN 10382, 10409) [needs event]
  60. PC facet for Weight (SVN 10382, 10409) [needs event]

Storage

  1. Source-based (CDOM) storage of PCStat objects
  2. Source-based (CDOM) storage of Skill objects
  3. Source-based (CDOM) storage of Race objects
  4. Source-based (CDOM) storage of CompanionMod objects
  5. Source-based (CDOM) storage of Template objects
  6. Source-based (CDOM) storage of Spell objects
  7. Source-based (CDOM) storage of Domain objects
  8. Source-based (CDOM) storage of PCClass objects
  9. Source-based (CDOM) storage of SizeAdjustment objects
  10. Source-based (CDOM) storage of PCAlignment objects
  11. Source-based (CDOM) storage of Language objects
  12. Source-based (CDOM) storage of PCClass objects
  13. Source-based (CDOM) storage of Proficiency objects
  14. Source-based (CDOM) storage of CompanionMod objects
  15. Source-based (CDOM) storage of Check (PObject) objects
  16. Source-based (CDOM) storage of Feat/Ability objects
  17. Eliminate Key comparison of EquipmentModifier objects (OUT OF SCOPE)
  18. Eliminate Key comparison of Equipment objects (OUT OF SCOPE)


Refactoring

These are architecture refactoring issues that generally involve breaking tangles and other work that is helpful to cleaning up the structure of the code

  1. CharacterDomain is a useless class - delete (DONE - SVN 10000, 10010)
  2. StatList is a useless class - delete (DONE - SVN 9996)
  3. UnconstructedValidator should be an interface, not a class (DONE - SVN 10187)
  4. Qualifier (in cdom.helper) is used in .reference, thus it should be in .reference, not .helper (DONE - SVN 10177)
  5. CDOMObject methods addAdds, removeAdds, checkRemovals, driveChoice cause tangles, and should be in CDOMObjectUtilities not in CDOMObject (DONE - SVN 10136)
  6. LoadContext should be an interface, not a class
  7. PersistentChoiceActor decodeChoice often references the LoadContext, and should be discouraged from using Globals. This method should take the LoadContext as an argument.
  8. Give CDOMObject (or a utility class) a method of consolidating out all of the ListKey-based joins in pcgen.core.spell.Spell.java (DONE - SVN 10181)
  9. Ability.Nature should be in pcgen.cdom.enumeration (DONE - SVN 10135)
  10. Spell Components should be in pcgen.cdom.enumeration (DONE - SVN 10181, 10183)
  11. StatList getModForNumber(int, int) does a String replacement directly prior to a Formula evaluation, this should be moveable into a JEP variable for SCORE that is specific to stats. Actually, need to have the "SOURCE" field for TermEvaluatorBuilderPCVar COMPLETE_PC_SCORE be able to distinguish between STAT:Foo and BASESTAT:Foo and then this replacement would not be necessary.

Primary Goals - LST Editor

Primary Goals - UI

Other

Unresolved Architectural Issues

Variables under Cloning

Certain items, such as variables that are dependent upon an object's name, are ill defined on cloning. Should the key name be swapped out, or should it remain intact. Behavior is inconsistent across objects. This problem is also apparent if KEY or CATEGORY is used in a .MOD

Languages with matching Key

The MSRD has multiple languages (some TYPE:Spoken, some TYPE:Read.Write) that share an identical key. Eventually this will become a significant problem, and it may need to be addressed during 5.17

Spells with matching Key

Similar to the TYPE issue for Languages above, the SRD has multiple "spells" (typically one Magical and one Psionic) that have the same name. They are distinguished by TYPE (Divine vs. Psionic, for example). This should be changed to something more intelligent than type, restoring KEY as a unique identifier. (One option here is to allow a form of CATEGORY for Spells - although the sharing of Arcane and Divine Types makes this a wee bit more complicated than just using CATEGORY as we know it today in Abilities)

Retroactivity

Much of this issue is discussed in this thread: http://tech.groups.yahoo.com/group/pcgen_experimental/message/6864

Prerequisite behavior

This is surfaced starting at this message: http://tech.groups.yahoo.com/group/pcgen_experimental/message/8133

AllenCohn 21:57, 6 January 2010 (UTC)Allen Cohn 1/6/2010 I hope I'm doing this correctly and in the correct place... I saw Karianna's request for feedback. Concerning prerequisites, I am still, to this day, surprised that prerequisites are implemented as multiple individual keyword statements instead of a single PREREQUISITE(boolean statement) form. The boolean statement could, of course, access any internal variables and use any generally known boolean operators. I can't help but think that this approach would be much more flexible and less confusing.