Search in sources :

Example 6 with ShieldProfProvider

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

the class ShieldProfToken method unparse.

@Override
public String[] unparse(LoadContext context, CDOMObject obj) {
    Changes<ShieldProfProvider> changes = context.getObjectContext().getListChanges(obj, ListKey.AUTO_SHIELDPROF);
    Changes<ChooseSelectionActor<?>> listChanges = context.getObjectContext().getListChanges(obj, ListKey.NEW_CHOOSE_ACTOR);
    Collection<ShieldProfProvider> added = changes.getAdded();
    Set<String> set = new TreeSet<>();
    Collection<ChooseSelectionActor<?>> listAdded = listChanges.getAdded();
    boolean foundAny = false;
    boolean foundOther = false;
    if (listAdded != null && !listAdded.isEmpty()) {
        for (ChooseSelectionActor<?> cra : listAdded) {
            if (cra.getSource().equals(getTokenName())) {
                try {
                    set.add(cra.getLstFormat());
                    foundOther = true;
                } catch (PersistenceLayerException e) {
                    context.addWriteMessage("Error writing Prerequisite: " + e);
                    return null;
                }
            }
        }
    }
    if (added != null) {
        for (ShieldProfProvider spp : added) {
            StringBuilder sb = new StringBuilder();
            sb.append(spp.getLstFormat());
            if (spp.hasPrerequisites()) {
                sb.append('|');
                sb.append(getPrerequisiteString(context, spp.getPrerequisiteList()));
            }
            String ab = sb.toString();
            boolean isUnconditionalAll = Constants.LST_ALL.equals(ab);
            foundAny |= isUnconditionalAll;
            foundOther |= !isUnconditionalAll;
            set.add(ab);
        }
    }
    if (foundAny && foundOther) {
        context.addWriteMessage("Non-sensical " + getFullName() + ": Contains ANY and a specific reference: " + set);
        return null;
    }
    if (set.isEmpty()) {
        //okay
        return null;
    }
    return set.toArray(new String[set.size()]);
}
Also used : ChooseSelectionActor(pcgen.cdom.base.ChooseSelectionActor) PersistenceLayerException(pcgen.persistence.PersistenceLayerException) TreeSet(java.util.TreeSet) ShieldProfProvider(pcgen.cdom.helper.ShieldProfProvider)

Example 7 with ShieldProfProvider

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

the class ShieldProfTokenTest method loadAllReference.

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

Aggregations

ShieldProfProvider (pcgen.cdom.helper.ShieldProfProvider)7 ArrayList (java.util.ArrayList)4 CDOMReference (pcgen.cdom.base.CDOMReference)4 Equipment (pcgen.core.Equipment)2 ShieldProf (pcgen.core.ShieldProf)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 ArmorProfProvider (pcgen.cdom.helper.ArmorProfProvider)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