Search in sources :

Example 11 with Language

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

the class AutoLangListTest method testFromTemplate.

@Test
public void testFromTemplate() throws PersistenceLayerException {
    PCTemplate source = create(PCTemplate.class, "Source");
    Language granted = createGrantedObject();
    processToken(source);
    assertEquals(0, getCount());
    templateInputFacet.directAdd(id, source, getAssoc());
    assertTrue(containsExpected(granted));
    assertEquals(1, getCount());
    templateInputFacet.remove(id, source);
    assertEquals(0, getCount());
    assertTrue(cleanedSideEffects());
}
Also used : Language(pcgen.core.Language) PCTemplate(pcgen.core.PCTemplate) Test(org.junit.Test) AbstractTokenModelTest(tokenmodel.testsupport.AbstractTokenModelTest)

Example 12 with Language

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

the class AutoLangListTest method testFromRace.

@Test
public void testFromRace() throws PersistenceLayerException {
    Race source = create(Race.class, "Source");
    Language granted = createGrantedObject();
    processToken(source);
    assertEquals(0, getCount());
    raceFacet.directSet(id, source, getAssoc());
    assertTrue(containsExpected(granted));
    assertEquals(1, getCount());
    raceFacet.remove(id);
    assertEquals(0, getCount());
    assertTrue(cleanedSideEffects());
}
Also used : Language(pcgen.core.Language) Race(pcgen.core.Race) Test(org.junit.Test) AbstractTokenModelTest(tokenmodel.testsupport.AbstractTokenModelTest)

Example 13 with Language

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

the class PCClassLangbonusTest method testSimple.

@Test
public void testSimple() throws PersistenceLayerException {
    PCClass source = create(PCClass.class, "Source");
    Language granted = create(Language.class, "Granted");
    ParseResult result = token.parseToken(context, source, "Granted");
    if (result != ParseResult.SUCCESS) {
        result.printMessages();
        fail("Test Setup Failed");
    }
    finishLoad();
    assertEquals(0, startingLanguageFacet.getCount(id));
    classFacet.addClass(id, source);
    assertTrue(startingLanguageFacet.contains(id, granted));
    assertEquals(1, startingLanguageFacet.getCount(id));
    classFacet.removeClass(id, source);
    assertEquals(0, startingLanguageFacet.getCount(id));
}
Also used : Language(pcgen.core.Language) ParseResult(pcgen.rules.persistence.token.ParseResult) PCClass(pcgen.core.PCClass) Test(org.junit.Test) AbstractTokenModelTest(tokenmodel.testsupport.AbstractTokenModelTest)

Example 14 with Language

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

the class LanguageChooserFacadeImpl method commit.

/**
	 * @see pcgen.core.facade.LanguageChooserFacade#commit()
	 */
@Override
@SuppressWarnings("unchecked")
public void commit() {
    ChoiceManagerList<Language> choiceManager = ChooserUtilities.getChoiceManager(source, theCharacter);
    List<Language> selected = new ArrayList<>(selectedList.getSize());
    for (LanguageFacade langFacade : selectedList) {
        selected.add((Language) langFacade);
    }
    choiceManager.applyChoices(theCharacter, selected);
    // Update list on character facade
    pcFacade.refreshLanguageList();
}
Also used : Language(pcgen.core.Language) ArrayList(java.util.ArrayList) LanguageFacade(pcgen.facade.core.LanguageFacade)

Example 15 with Language

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

the class KitSkill method addRanks.

private KitSkillAdd addRanks(PlayerCharacter pc, PCClass pcClass, Skill aSkill, double ranksLeftToAdd, boolean isFree, List<String> warnings) {
    if (!isFree && pcClass.getSkillPool(pc) == 0) {
        return null;
    }
    double curRank = 0.0;
    if (pc.hasSkill(aSkill)) {
        curRank = pc.getRank(aSkill).doubleValue();
    }
    double ranksToAdd = ranksLeftToAdd;
    if (!Globals.checkRule(RuleConstants.SKILLMAX) && (ranksToAdd > 0.0)) {
        ranksToAdd = Math.min(pc.getMaxRank(aSkill, pcClass).doubleValue(), curRank + ranksLeftToAdd);
        ranksToAdd -= curRank;
        if (!CoreUtility.doublesEqual(ranksToAdd, ranksLeftToAdd)) {
            warnings.add("SKILL: Could not add " + (ranksLeftToAdd - ranksToAdd) + " to " + aSkill.getDisplayName() + ". Exceeds MAXRANK of " + pc.getMaxRank(aSkill, pcClass) + ".");
        }
    }
    int ptsToSpend = 0;
    int[] points = new int[pc.getLevelInfoSize()];
    if (!isFree) {
        double ranksAdded = 0.0;
        int skillCost = pc.getSkillCostForClass(aSkill, pcClass).getCost();
        ptsToSpend = (int) (ranksToAdd * skillCost);
        for (int i = 0; i < pc.getLevelInfoSize(); i++) {
            PCLevelInfo info = pc.getLevelInfo(i);
            if (info.getClassKeyName().equals(pcClass.getKeyName())) {
                // We are spending this class' points.
                points[i] = info.getSkillPointsRemaining();
            } else {
                points[i] = -1;
            }
        }
        for (int i = 0; i < points.length; i++) {
            int remaining = points[i];
            if (remaining <= 0) {
                continue;
            }
            int left = remaining - Math.min(remaining, ptsToSpend);
            points[i] = left;
            int spent = (remaining - left);
            ptsToSpend -= spent;
            ranksAdded += ((double) spent / (double) skillCost);
            if (ranksAdded == ranksToAdd || ptsToSpend <= 0) {
                break;
            }
        }
        ranksToAdd = ranksAdded;
        ptsToSpend = (int) (ranksToAdd * skillCost);
    }
    String ret = SkillRankControl.modRanks(ranksToAdd, pcClass, false, pc, aSkill);
    if (!ret.isEmpty()) {
        if (isFree && ret.indexOf("You do not have enough skill points.") != -1) {
            SkillRankControl.modRanks(ranksToAdd, pcClass, true, pc, aSkill);
        } else {
            warnings.add(ret);
            return null;
        }
    }
    if (!isFree) {
        for (int i = 0; i < pc.getLevelInfoSize(); i++) {
            PCLevelInfo info = pc.getLevelInfo(i);
            if (points[i] >= 0) {
                info.setSkillPointsRemaining(points[i]);
            }
        }
    }
    List<Language> langList = new ArrayList<>();
    if (ChooseActivation.hasNewChooseToken(aSkill) && !selection.isEmpty()) {
        ChoiceManagerList<Language> controller = ChooserUtilities.getConfiguredController(aSkill, pc, null, new ArrayList<>());
        int limit = (int) ranksToAdd;
        for (CDOMSingleRef<Language> ref : selection) {
            Language lang = ref.get();
            if (controller.conditionallyApply(pc, lang)) {
                langList.add(lang);
                limit--;
            }
            if (limit <= 0) {
                break;
            }
        }
    }
    return new KitSkillAdd(aSkill, ranksToAdd, ptsToSpend, langList, pcClass);
}
Also used : Language(pcgen.core.Language) ArrayList(java.util.ArrayList) PCLevelInfo(pcgen.core.pclevelinfo.PCLevelInfo)

Aggregations

Language (pcgen.core.Language)37 ArrayList (java.util.ArrayList)9 Test (org.junit.Test)9 CDOMObject (pcgen.cdom.base.CDOMObject)7 CNAbility (pcgen.cdom.content.CNAbility)7 ParseResult (pcgen.rules.persistence.token.ParseResult)6 AbstractTokenModelTest (tokenmodel.testsupport.AbstractTokenModelTest)6 Ability (pcgen.core.Ability)5 PCTemplate (pcgen.core.PCTemplate)4 StringTokenizer (java.util.StringTokenizer)3 CDOMReference (pcgen.cdom.base.CDOMReference)3 Race (pcgen.core.Race)3 ChooseSelectionActor (pcgen.cdom.base.ChooseSelectionActor)2 CharID (pcgen.cdom.enumeration.CharID)2 QualifiedObject (pcgen.core.QualifiedObject)2 PCLevelInfo (pcgen.core.pclevelinfo.PCLevelInfo)2 Prerequisite (pcgen.core.prereq.Prerequisite)2 LanguageFacade (pcgen.facade.core.LanguageFacade)2 PersistenceLayerException (pcgen.persistence.PersistenceLayerException)2 StringWriter (java.io.StringWriter)1