Search in sources :

Example 1 with ArmorProfProvider

use of pcgen.cdom.helper.ArmorProfProvider in project pcgen by PCGen.

the class PCClass method inheritAttributesFrom.

/*
	 * REFACTOR Some derivative of this method will be in PCClass only as part
	 * of the factory creation of a PCClassLevel... or perhaps in PCClassLevel
	 * so it can steal some information from other PCClassLevels of that
	 * PCClass. Either way, this will be far from its current form in the final
	 * solution.
	 */
/*
	 * CONSIDER Why does this not inherit classSkillChoices?
	 */
public void inheritAttributesFrom(final PCClass otherClass) {
    Boolean hbss = otherClass.get(ObjectKey.HAS_BONUS_SPELL_STAT);
    if (hbss != null) {
        put(ObjectKey.HAS_BONUS_SPELL_STAT, hbss);
        CDOMSingleRef<PCStat> bss = otherClass.get(ObjectKey.BONUS_SPELL_STAT);
        if (bss != null) {
            put(ObjectKey.BONUS_SPELL_STAT, bss);
        }
    }
    Boolean usbs = otherClass.get(ObjectKey.USE_SPELL_SPELL_STAT);
    if (usbs != null) {
        put(ObjectKey.USE_SPELL_SPELL_STAT, usbs);
    }
    Boolean cwss = otherClass.get(ObjectKey.CASTER_WITHOUT_SPELL_STAT);
    if (cwss != null) {
        put(ObjectKey.CASTER_WITHOUT_SPELL_STAT, cwss);
    }
    CDOMSingleRef<PCStat> ss = otherClass.get(ObjectKey.SPELL_STAT);
    if (ss != null) {
        put(ObjectKey.SPELL_STAT, ss);
    }
    TransitionChoice<CDOMListObject<Spell>> slc = otherClass.get(ObjectKey.SPELLLIST_CHOICE);
    if (slc != null) {
        put(ObjectKey.SPELLLIST_CHOICE, slc);
    }
    List<QualifiedObject<CDOMReference<Equipment>>> e = otherClass.getListFor(ListKey.EQUIPMENT);
    if (e != null) {
        addAllToListFor(ListKey.EQUIPMENT, e);
    }
    List<WeaponProfProvider> wp = otherClass.getListFor(ListKey.WEAPONPROF);
    if (wp != null) {
        addAllToListFor(ListKey.WEAPONPROF, wp);
    }
    QualifiedObject<Boolean> otherWP = otherClass.get(ObjectKey.HAS_DEITY_WEAPONPROF);
    if (otherWP != null) {
        put(ObjectKey.HAS_DEITY_WEAPONPROF, otherWP);
    }
    List<ArmorProfProvider> ap = otherClass.getListFor(ListKey.AUTO_ARMORPROF);
    if (ap != null) {
        addAllToListFor(ListKey.AUTO_ARMORPROF, ap);
    }
    List<ShieldProfProvider> sp = otherClass.getListFor(ListKey.AUTO_SHIELDPROF);
    if (sp != null) {
        addAllToListFor(ListKey.AUTO_SHIELDPROF, sp);
    }
    List<BonusObj> bonusList = otherClass.getListFor(ListKey.BONUS);
    if (bonusList != null) {
        addAllToListFor(ListKey.BONUS, bonusList);
    }
    try {
        ownBonuses(this);
    } catch (CloneNotSupportedException ce) {
        // TODO Auto-generated catch block
        ce.printStackTrace();
    }
    for (VariableKey vk : otherClass.getVariableKeys()) {
        put(vk, otherClass.get(vk));
    }
    if (otherClass.containsListFor(ListKey.CSKILL)) {
        removeListFor(ListKey.CSKILL);
        addAllToListFor(ListKey.CSKILL, otherClass.getListFor(ListKey.CSKILL));
    }
    if (otherClass.containsListFor(ListKey.LOCALCCSKILL)) {
        removeListFor(ListKey.LOCALCCSKILL);
        addAllToListFor(ListKey.LOCALCCSKILL, otherClass.getListFor(ListKey.LOCALCCSKILL));
    }
    removeListFor(ListKey.KIT_CHOICE);
    addAllToListFor(ListKey.KIT_CHOICE, otherClass.getSafeListFor(ListKey.KIT_CHOICE));
    remove(ObjectKey.REGION_CHOICE);
    if (otherClass.containsKey(ObjectKey.REGION_CHOICE)) {
        put(ObjectKey.REGION_CHOICE, otherClass.get(ObjectKey.REGION_CHOICE));
    }
    removeListFor(ListKey.SAB);
    addAllToListFor(ListKey.SAB, otherClass.getSafeListFor(ListKey.SAB));
    /*
		 * TODO Does this need to have things from the Class Level objects?
		 * I don't think so based on deferred processing of levels...
		 */
    addAllToListFor(ListKey.DAMAGE_REDUCTION, otherClass.getListFor(ListKey.DAMAGE_REDUCTION));
    for (CDOMReference<Vision> ref : otherClass.getSafeListMods(Vision.VISIONLIST)) {
        for (AssociatedPrereqObject apo : otherClass.getListAssociations(Vision.VISIONLIST, ref)) {
            putToList(Vision.VISIONLIST, ref, apo);
        }
    }
    /*
		 * TODO This is a clone problem, but works for now - thpr 10/3/08
		 */
    if (otherClass instanceof SubClass) {
        levelMap.clear();
        copyLevelsFrom(otherClass);
    }
    addAllToListFor(ListKey.NATURAL_WEAPON, otherClass.getListFor(ListKey.NATURAL_WEAPON));
    put(ObjectKey.LEVEL_HITDIE, otherClass.get(ObjectKey.LEVEL_HITDIE));
}
Also used : BonusObj(pcgen.core.bonus.BonusObj) CDOMListObject(pcgen.cdom.base.CDOMListObject) WeaponProfProvider(pcgen.cdom.helper.WeaponProfProvider) ArmorProfProvider(pcgen.cdom.helper.ArmorProfProvider) VariableKey(pcgen.cdom.enumeration.VariableKey) ShieldProfProvider(pcgen.cdom.helper.ShieldProfProvider) AssociatedPrereqObject(pcgen.cdom.base.AssociatedPrereqObject)

Example 2 with ArmorProfProvider

use of pcgen.cdom.helper.ArmorProfProvider in project pcgen by PCGen.

the class ArmorProfTokenTest method loadAllReference.

@Override
protected void loadAllReference() {
    List<CDOMReference<ArmorProf>> armorProfs = new ArrayList<>();
    List<CDOMReference<Equipment>> equipTypes = new ArrayList<>();
    armorProfs.add(primaryContext.getReferenceContext().getCDOMAllReference(ArmorProf.class));
    ArmorProfProvider pp = new ArmorProfProvider(armorProfs, equipTypes);
    primaryProf.addToListFor(ListKey.AUTO_ARMORPROF, pp);
}
Also used : ArmorProfProvider(pcgen.cdom.helper.ArmorProfProvider) ArrayList(java.util.ArrayList) ArmorProf(pcgen.core.ArmorProf) CDOMReference(pcgen.cdom.base.CDOMReference)

Example 3 with ArmorProfProvider

use of pcgen.cdom.helper.ArmorProfProvider in project pcgen by PCGen.

the class ArmorProfTokenTest method loadProf.

@Override
protected void loadProf(CDOMSingleRef<ArmorProf> ref) {
    List<CDOMReference<ArmorProf>> armorProfs = new ArrayList<>();
    List<CDOMReference<Equipment>> equipTypes = new ArrayList<>();
    armorProfs.add(ref);
    ArmorProfProvider pp = new ArmorProfProvider(armorProfs, equipTypes);
    primaryProf.addToListFor(ListKey.AUTO_ARMORPROF, pp);
}
Also used : ArmorProfProvider(pcgen.cdom.helper.ArmorProfProvider) ArrayList(java.util.ArrayList) CDOMReference(pcgen.cdom.base.CDOMReference)

Example 4 with ArmorProfProvider

use of pcgen.cdom.helper.ArmorProfProvider in project pcgen by PCGen.

the class ArmorProfTokenTest method loadTypeProf.

@Override
protected void loadTypeProf(String... types) {
    CDOMGroupRef<Equipment> ref = primaryContext.getReferenceContext().getCDOMTypeReference(Equipment.class, types);
    List<CDOMReference<ArmorProf>> armorProfs = new ArrayList<>();
    List<CDOMReference<Equipment>> equipTypes = new ArrayList<>();
    equipTypes.add(ref);
    ArmorProfProvider pp = new ArmorProfProvider(armorProfs, equipTypes);
    primaryProf.addToListFor(ListKey.AUTO_ARMORPROF, pp);
}
Also used : ArmorProfProvider(pcgen.cdom.helper.ArmorProfProvider) Equipment(pcgen.core.Equipment) ArrayList(java.util.ArrayList) CDOMReference(pcgen.cdom.base.CDOMReference)

Example 5 with ArmorProfProvider

use of pcgen.cdom.helper.ArmorProfProvider in project pcgen by PCGen.

the class ArmorProfToken method parseNonEmptyToken.

@Override
protected ParseResult parseNonEmptyToken(LoadContext context, CDOMObject obj, String value) {
    String armorProf;
    // Do not initialize, null is significant!
    Prerequisite prereq = null;
    boolean isPre = false;
    if (value.indexOf("[") == -1) {
        // Supported version of PRExxx using |.  Needs to be at the front of the
        // Parsing code because many objects expect the pre to have been determined
        // Ahead of time.  Until deprecated code is removed, it will have to stay
        // like this.
        armorProf = value;
        StringTokenizer tok = new StringTokenizer(armorProf, Constants.PIPE);
        while (tok.hasMoreTokens()) {
            String token = tok.nextToken();
            if (PreParserFactory.isPreReqString(token)) {
                if (isPre) {
                    String errorText = "Invalid " + getTokenName() + ": " + value + "  PRExxx must be at the END of the Token";
                    Logging.errorPrint(errorText);
                    return new ParseResult.Fail(errorText, context);
                }
                prereq = getPrerequisite(token);
                if (prereq == null) {
                    return new ParseResult.Fail("Error generating Prerequisite " + prereq + " in " + getFullName(), context);
                }
                int preStart = value.indexOf(token) - 1;
                armorProf = value.substring(0, preStart);
                isPre = true;
            }
        }
    } else {
        return new ParseResult.Fail("Use of [] for Prerequisites has been removed. " + "Please use | based standard", context);
    }
    ParseResult pr = checkSeparatorsAndNonEmpty('|', armorProf);
    if (!pr.passed()) {
        return pr;
    }
    boolean foundAny = false;
    boolean foundOther = false;
    StringTokenizer tok = new StringTokenizer(armorProf, Constants.PIPE);
    List<CDOMReference<ArmorProf>> armorProfs = new ArrayList<>();
    List<CDOMReference<Equipment>> equipTypes = new ArrayList<>();
    while (tok.hasMoreTokens()) {
        String aProf = tok.nextToken();
        if (Constants.LST_PERCENT_LIST.equals(aProf)) {
            foundOther = true;
            ChooseSelectionActor<ArmorProf> cra;
            if (prereq == null) {
                cra = this;
            } else {
                ConditionalSelectionActor<ArmorProf> cca = new ConditionalSelectionActor<>(this);
                cca.addPrerequisite(prereq);
                cra = cca;
            }
            context.getObjectContext().addToList(obj, ListKey.NEW_CHOOSE_ACTOR, cra);
        } else if (Constants.LST_ALL.equalsIgnoreCase(aProf)) {
            foundAny = true;
            armorProfs.add(context.getReferenceContext().getCDOMAllReference(ARMORPROF_CLASS));
        } else if (aProf.startsWith("ARMORTYPE.") || aProf.startsWith("ARMORTYPE=")) {
            foundOther = true;
            CDOMReference<Equipment> ref = TokenUtilities.getTypeReference(context, EQUIPMENT_CLASS, "ARMOR." + aProf.substring(10));
            if (ref == null) {
                return ParseResult.INTERNAL_ERROR;
            }
            equipTypes.add(ref);
        } else {
            foundOther = true;
            armorProfs.add(context.getReferenceContext().getCDOMReference(ARMORPROF_CLASS, aProf));
        }
    }
    if (foundAny && foundOther) {
        return new ParseResult.Fail("Non-sensical " + getFullName() + ": Contains ANY and a specific reference: " + value, context);
    }
    if (!armorProfs.isEmpty() || !equipTypes.isEmpty()) {
        ArmorProfProvider pp = new ArmorProfProvider(armorProfs, equipTypes);
        if (prereq != null) {
            pp.addPrerequisite(prereq);
        }
        context.getObjectContext().addToList(obj, ListKey.AUTO_ARMORPROF, pp);
    }
    return ParseResult.SUCCESS;
}
Also used : ParseResult(pcgen.rules.persistence.token.ParseResult) ArrayList(java.util.ArrayList) StringTokenizer(java.util.StringTokenizer) ArmorProfProvider(pcgen.cdom.helper.ArmorProfProvider) ConditionalSelectionActor(pcgen.cdom.content.ConditionalSelectionActor) Equipment(pcgen.core.Equipment) ArmorProf(pcgen.core.ArmorProf) CDOMReference(pcgen.cdom.base.CDOMReference) Prerequisite(pcgen.core.prereq.Prerequisite)

Aggregations

ArmorProfProvider (pcgen.cdom.helper.ArmorProfProvider)7 ArrayList (java.util.ArrayList)4 CDOMReference (pcgen.cdom.base.CDOMReference)4 ArmorProf (pcgen.core.ArmorProf)2 Equipment (pcgen.core.Equipment)2 StringTokenizer (java.util.StringTokenizer)1 TreeSet (java.util.TreeSet)1 AssociatedPrereqObject (pcgen.cdom.base.AssociatedPrereqObject)1 CDOMListObject (pcgen.cdom.base.CDOMListObject)1 CDOMObject (pcgen.cdom.base.CDOMObject)1 ChooseSelectionActor (pcgen.cdom.base.ChooseSelectionActor)1 ConditionalSelectionActor (pcgen.cdom.content.ConditionalSelectionActor)1 VariableKey (pcgen.cdom.enumeration.VariableKey)1 ShieldProfProvider (pcgen.cdom.helper.ShieldProfProvider)1 WeaponProfProvider (pcgen.cdom.helper.WeaponProfProvider)1 BonusObj (pcgen.core.bonus.BonusObj)1 Prerequisite (pcgen.core.prereq.Prerequisite)1 PersistenceLayerException (pcgen.persistence.PersistenceLayerException)1 ParseResult (pcgen.rules.persistence.token.ParseResult)1