Search in sources :

Example 76 with PCStat

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

the class StatTokenTest method setUp.

@Override
@Before
public void setUp() throws PersistenceLayerException, URISyntaxException {
    super.setUp();
    ps = BuildUtilities.createStat("Strength", "STR");
    primaryContext.getReferenceContext().importObject(ps);
    PCStat pi = BuildUtilities.createStat("Intelligence", "INT");
    primaryContext.getReferenceContext().importObject(pi);
    PCStat ss = BuildUtilities.createStat("Strength", "STR");
    secondaryContext.getReferenceContext().importObject(ss);
    PCStat si = BuildUtilities.createStat("Intelligence", "INT");
    secondaryContext.getReferenceContext().importObject(si);
}
Also used : PCStat(pcgen.core.PCStat) Before(org.junit.Before)

Example 77 with PCStat

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

the class StatApplication method askForStatIncrease.

//
// Ask user to select a stat to increment. This can happen before skill
// points
// are calculated, so an increase to the appropriate stat can give more
// skill points
//
public static int askForStatIncrease(final PlayerCharacter aPC, final int statsToChoose, final boolean isPre) {
    //
    if (isPre) {
        if (!Globals.checkRule(RuleConstants.INTBEFORE)) {
            return statsToChoose;
        }
    }
    String titleKey = "in_statTitle";
    if (isPre && !Globals.checkRule(RuleConstants.RETROSKILL)) {
        titleKey = "in_statTitleWithSkill";
    }
    int iCount = 0;
    Set<PCStat> statsAlreadyBonused = new HashSet<>();
    boolean allowStacks = SettingsHandler.getGame().isBonusStatAllowsStack();
    DecimalFormat formatter = PrettyIntegerFormat.getFormat();
    for (int ix = 0; ix < statsToChoose; ++ix) {
        final List<String> selectableStats = new ArrayList<>();
        for (PCStat aStat : aPC.getDisplay().getStatSet()) {
            final StringBuilder sStats = new StringBuilder(100);
            final int iAdjStat = aPC.getTotalStatFor(aStat);
            final int iCurStat = aPC.getBaseStatFor(aStat);
            sStats.append(aStat.getDisplayName()).append(":  ").append(iCurStat);
            if (iCurStat != iAdjStat) {
                sStats.append(" adjusted: ").append(iAdjStat);
            }
            sStats.append(" (").append(formatter.format(aPC.getStatModFor(aStat))).append(")");
            if (allowStacks || !statsAlreadyBonused.contains(aStat)) {
                selectableStats.add(sStats.toString());
            } else {
                sStats.append(" * Already incremented.");
                selectableStats.add(sStats.toString());
            }
        }
        CDOMChooserFacadeImpl<String> chooserFacade = new CDOMChooserFacadeImpl<>(//$NON-NLS-1$
        LanguageBundle.getString(titleKey), //$NON-NLS-1$
        selectableStats, new ArrayList<>(), 1);
        chooserFacade.setDefaultView(ChooserTreeViewType.NAME);
        chooserFacade.setPreferRadioSelection(true);
        chooserFacade.setInfoFactory(new Gui2InfoFactory(aPC));
        ChooserFactory.getDelegate().showGeneralChooser(chooserFacade);
        final List<String> selectedValues = chooserFacade.getFinalSelected();
        final String selectedValue = selectedValues.isEmpty() ? null : selectedValues.get(0);
        if (selectedValue != null) {
            for (PCStat aStat : aPC.getStatSet()) {
                if (selectedValue.startsWith(aStat.getDisplayName())) {
                    aPC.saveStatIncrease(aStat, 1, isPre);
                    aPC.setStat(aStat, aPC.getStat(aStat) + 1);
                    aPC.setPoolAmount(aPC.getPoolAmount() - 1);
                    statsAlreadyBonused.add(aStat);
                    ++iCount;
                    break;
                }
            }
        }
    }
    return statsToChoose - iCount;
}
Also used : CDOMChooserFacadeImpl(pcgen.core.chooser.CDOMChooserFacadeImpl) DecimalFormat(java.text.DecimalFormat) ArrayList(java.util.ArrayList) Gui2InfoFactory(pcgen.gui2.facade.Gui2InfoFactory) PCStat(pcgen.core.PCStat) HashSet(java.util.HashSet)

Example 78 with PCStat

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

the class LockedStat method getDescription.

@Override
public String getDescription() {
    AbstractReferenceContext rc = Globals.getContext().getReferenceContext();
    final PCStat pcstat = rc.silentlyGetConstructedCDOMObject(PCStat.class, getBonusInfo());
    if (pcstat != null) {
        return pcstat.getName() + " (locked)";
    }
    return super.getDescription();
}
Also used : AbstractReferenceContext(pcgen.rules.context.AbstractReferenceContext) PCStat(pcgen.core.PCStat)

Aggregations

PCStat (pcgen.core.PCStat)78 CDOMObject (pcgen.cdom.base.CDOMObject)10 GameMode (pcgen.core.GameMode)10 Before (org.junit.Before)9 Race (pcgen.core.Race)9 PCClass (pcgen.core.PCClass)7 PlayerCharacter (pcgen.core.PlayerCharacter)7 AbstractReferenceContext (pcgen.rules.context.AbstractReferenceContext)7 CDOMSingleRef (pcgen.cdom.reference.CDOMSingleRef)6 PCTemplate (pcgen.core.PCTemplate)6 Skill (pcgen.core.Skill)6 ArrayList (java.util.ArrayList)5 StatLock (pcgen.cdom.helper.StatLock)5 BonusObj (pcgen.core.bonus.BonusObj)5 Test (org.junit.Test)4 Formula (pcgen.base.formula.Formula)4 CharID (pcgen.cdom.enumeration.CharID)4 LoadContext (pcgen.rules.context.LoadContext)4 StringTokenizer (java.util.StringTokenizer)3 Type (pcgen.cdom.enumeration.Type)3