Search in sources :

Example 16 with Vision

use of pcgen.core.Vision in project pcgen by PCGen.

the class PreVisionTest method testVisionZeroZero.

/**
	 * @throws Exception
	 */
public void testVisionZeroZero() throws Exception {
    final PlayerCharacter character = getCharacter();
    final PCTemplate template = new PCTemplate();
    final Prerequisite prereq = new Prerequisite();
    prereq.setKind("vision");
    prereq.setKey("darkvision");
    prereq.setOperator(PrerequisiteOperator.GTEQ);
    prereq.setOperand("0");
    boolean passes = PrereqHandler.passes(prereq, character, null);
    assertTrue(passes);
    template.putToList(Vision.VISIONLIST, CDOMDirectSingleRef.getRef(new Vision(VisionType.getVisionType("Darkvision"), FormulaFactory.ZERO)), new SimpleAssociatedObject());
    character.addTemplate(template);
    passes = PrereqHandler.passes(prereq, character, null);
    assertTrue(passes);
}
Also used : PlayerCharacter(pcgen.core.PlayerCharacter) Vision(pcgen.core.Vision) PCTemplate(pcgen.core.PCTemplate) SimpleAssociatedObject(pcgen.cdom.base.SimpleAssociatedObject)

Example 17 with Vision

use of pcgen.core.Vision in project pcgen by PCGen.

the class PreVisionTest method testVisionFail.

/**
	 * @throws Exception
	 */
public void testVisionFail() throws Exception {
    final PlayerCharacter character = getCharacter();
    final PCTemplate template = new PCTemplate();
    template.putToList(Vision.VISIONLIST, CDOMDirectSingleRef.getRef(new Vision(VisionType.getVisionType("Normal"), FormulaFactory.getFormulaFor(60))), new SimpleAssociatedObject());
    character.addTemplate(template);
    final Prerequisite prereq = new Prerequisite();
    prereq.setKind("vision");
    prereq.setKey("darkvision");
    prereq.setOperator(PrerequisiteOperator.GTEQ);
    prereq.setOperand("30");
    final boolean passes = PrereqHandler.passes(prereq, character, null);
    assertFalse(passes);
}
Also used : PlayerCharacter(pcgen.core.PlayerCharacter) Vision(pcgen.core.Vision) PCTemplate(pcgen.core.PCTemplate) SimpleAssociatedObject(pcgen.cdom.base.SimpleAssociatedObject)

Example 18 with Vision

use of pcgen.core.Vision in project pcgen by PCGen.

the class VisionLst method unparse.

@Override
public String[] unparse(LoadContext context, CDOMObject obj) {
    AssociatedChanges<CDOMReference<Vision>> changes = context.getListContext().getChangesInList(getTokenName(), obj, Vision.VISIONLIST);
    List<String> list = new ArrayList<>();
    Collection<CDOMReference<Vision>> removedItems = changes.getRemoved();
    if (changes.includesGlobalClear()) {
        if (removedItems != null && !removedItems.isEmpty()) {
            context.addWriteMessage("Non-sensical relationship in " + getTokenName() + ": global .CLEAR and local .CLEAR. performed");
            return null;
        }
        list.add(Constants.LST_DOT_CLEAR);
    } else if (removedItems != null && !removedItems.isEmpty()) {
        list.add(Constants.LST_DOT_CLEAR_DOT + ReferenceUtilities.joinLstFormat(removedItems, "|.CLEAR."));
    }
    MapToList<CDOMReference<Vision>, AssociatedPrereqObject> mtl = changes.getAddedAssociations();
    if (mtl != null && !mtl.isEmpty()) {
        MapToList<Set<Prerequisite>, Vision> m = new HashMapToList<>();
        for (CDOMReference<Vision> ab : mtl.getKeySet()) {
            for (AssociatedPrereqObject assoc : mtl.getListFor(ab)) {
                m.addAllToListFor(new HashSet<>(assoc.getPrerequisiteList()), ab.getContainedObjects());
            }
        }
        Set<String> set = new TreeSet<>();
        for (Set<Prerequisite> prereqs : m.getKeySet()) {
            StringBuilder sb = new StringBuilder(StringUtil.join(m.getListFor(prereqs), Constants.PIPE));
            if (prereqs != null && !prereqs.isEmpty()) {
                sb.append(Constants.PIPE);
                sb.append(getPrerequisiteString(context, prereqs));
            }
            set.add(sb.toString());
        }
        list.addAll(set);
    }
    if (list.isEmpty()) {
        return null;
    }
    return list.toArray(new String[list.size()]);
}
Also used : TreeSet(java.util.TreeSet) HashSet(java.util.HashSet) Set(java.util.Set) ArrayList(java.util.ArrayList) HashMapToList(pcgen.base.util.HashMapToList) Vision(pcgen.core.Vision) TreeSet(java.util.TreeSet) CDOMReference(pcgen.cdom.base.CDOMReference) AssociatedPrereqObject(pcgen.cdom.base.AssociatedPrereqObject) Prerequisite(pcgen.core.prereq.Prerequisite)

Example 19 with Vision

use of pcgen.core.Vision in project pcgen by PCGen.

the class VisionDisplay method getVision.

public static String getVision(final PlayerCharacter aPC, CDOMObject cdo) {
    if (aPC == null) {
        return "";
    }
    Collection<CDOMReference<Vision>> mods = cdo.getListMods(Vision.VISIONLIST);
    if (mods == null) {
        return "";
    }
    StringBuilder visionString = new StringBuilder(25);
    for (CDOMReference<Vision> ref : mods) {
        for (Vision v : ref.getContainedObjects()) {
            if (visionString.length() > 0) {
                visionString.append(';');
            }
            visionString.append(v.toString(aPC));
        }
    }
    return visionString.toString();
}
Also used : Vision(pcgen.core.Vision) CDOMReference(pcgen.cdom.base.CDOMReference)

Example 20 with Vision

use of pcgen.core.Vision in project pcgen by PCGen.

the class PreVisionTester method passes.

/**
	 * @see pcgen.core.prereq.PrerequisiteTest#passes(pcgen.core.PlayerCharacter)
	 */
@Override
public int passes(final Prerequisite prereq, final CharacterDisplay display, CDOMObject source) {
    String range = prereq.getOperand();
    VisionType requiredVisionType = VisionType.getVisionType(prereq.getKey());
    int runningTotal = 0;
    if (range.equals("ANY")) {
        Vision v = display.getVision(requiredVisionType);
        if (v == null) {
            runningTotal += prereq.getOperator().compare(0, 1);
        } else {
            runningTotal += prereq.getOperator().compare(1, 0);
        }
    } else {
        int requiredRange = Integer.parseInt(range);
        Vision v = display.getVision(requiredVisionType);
        if (v == null) {
            runningTotal += prereq.getOperator().compare(0, requiredRange);
        } else {
            int visionRange = Integer.parseInt(v.getDistance().toString());
            runningTotal += prereq.getOperator().compare(visionRange, requiredRange);
        }
    }
    return countedTotal(prereq, runningTotal);
}
Also used : VisionType(pcgen.util.enumeration.VisionType) Vision(pcgen.core.Vision)

Aggregations

Vision (pcgen.core.Vision)20 SimpleAssociatedObject (pcgen.cdom.base.SimpleAssociatedObject)12 PCTemplate (pcgen.core.PCTemplate)12 PlayerCharacter (pcgen.core.PlayerCharacter)11 AssociatedPrereqObject (pcgen.cdom.base.AssociatedPrereqObject)5 CDOMObject (pcgen.cdom.base.CDOMObject)4 ArrayList (java.util.ArrayList)3 Set (java.util.Set)3 TreeSet (java.util.TreeSet)3 CDOMReference (pcgen.cdom.base.CDOMReference)3 QualifiedObject (pcgen.core.QualifiedObject)3 Prerequisite (pcgen.core.prereq.Prerequisite)3 VisionType (pcgen.util.enumeration.VisionType)3 HashMap (java.util.HashMap)2 Map (java.util.Map)2 StringTokenizer (java.util.StringTokenizer)2 Formula (pcgen.base.formula.Formula)2 CDOMDirectSingleRef (pcgen.cdom.reference.CDOMDirectSingleRef)2 HashSet (java.util.HashSet)1 HashMapToList (pcgen.base.util.HashMapToList)1