private int calculateCharmCost( ICharmConfiguration charmConfiguration, ICharm charm, Set<ICharm> charmsCalculated) { ISpecialCharmConfiguration specialCharm = charmConfiguration.getSpecialCharmConfiguration(charm); int charmCost = calculator.getCharmCosts( charm, basicCharacter, traitConfiguration, character.getCharacterTemplate().getMagicTemplate().getFavoringTraitType()); if (specialCharm != null) { int timesLearnedWithExperience = specialCharm.getCurrentLearnCount() - specialCharm.getCreationLearnCount(); int specialCharmCost = timesLearnedWithExperience * charmCost; if (specialCharm instanceof IUpgradableCharmConfiguration) { return (costsExperience(charmConfiguration, charm, charmsCalculated) ? charmCost : 0) + ((IUpgradableCharmConfiguration) specialCharm).getUpgradeXPCost(); } if (!(specialCharm instanceof ISubeffectCharmConfiguration)) { return specialCharmCost; } ISubeffectCharmConfiguration subeffectCharmConfiguration = (ISubeffectCharmConfiguration) specialCharm; int count = Math.max( 0, (subeffectCharmConfiguration.getExperienceLearnedSubeffectCount() - (subeffectCharmConfiguration.getCreationLearnedSubeffectCount() == 0 ? 1 : 0))); int subeffectCost = (int) Math.ceil(count * subeffectCharmConfiguration.getPointCostPerEffect() * 2); return subeffectCost + specialCharmCost; } return costsExperience(charmConfiguration, charm, charmsCalculated) ? charmCost : 0; }
private IFavorableTrait[] getAllAbilities() { List<ITraitType> abilityTypes = new ArrayList<>(); for (GroupedTraitType type : character.getCharacterTemplate().getAbilityGroups()) { abilityTypes.add(type.getTraitType()); } return traitConfiguration.getFavorableTraits( abilityTypes.toArray(new ITraitType[abilityTypes.size()])); }
private int getCharmCosts() { int experienceCosts = 0; ICharmConfiguration charmConfiguration = character.getCharms(); Set<ICharm> charmsCalculated = new HashSet<>(); for (ICharm charm : charmConfiguration.getLearnedCharms(true)) { int charmCosts = calculateCharmCost(charmConfiguration, charm, charmsCalculated); if (charmConfiguration.isAlienCharm(charm)) { charmCosts *= 2; } experienceCosts += charmCosts; charmsCalculated.add(charm); } return experienceCosts; }
private void initTotal(IOverviewCategory category) { totalView = category.addAlotmentView(getString("Overview.Experience.Total"), 4); character .getExperiencePoints() .addExperiencePointConfigurationListener( new IExperiencePointConfigurationListener() { @Override public void entryAdded(IExperiencePointEntry entry) { calculateXPCost(); } @Override public void entryRemoved(IExperiencePointEntry entry) { calculateXPCost(); } @Override public void entryChanged(IExperiencePointEntry entry) { calculateXPCost(); } }); }
public ExperiencedOverviewPresenter( Resources resources, final ICharacter character, CategorizedOverview overview, IExperiencePointManagement experiencePoints) { this.resources = resources; this.character = character; character .getCharacterContext() .getCharacterListening() .addChangeListener( new GlobalCharacterChangeAdapter() { @Override public void characterChanged() { if (character.isExperienced()) { calculateXPCost(); } } }); this.management = experiencePoints; this.view = overview; }
@Override public ICardData[] getCards(ICharacter character, ICardReportResourceProvider resourceProvider) { IEquipmentAdditionalModel model = (IEquipmentAdditionalModel) character .getStatistics() .getCharacterContext() .getAdditionalModel(IEquipmentAdditionalModelTemplate.ID); List<ICardData> data = new ArrayList<ICardData>(); for (IEquipmentItem item : model.getEquipmentItems()) { String title = item.getTitle(); Paragraph headerText = new Paragraph(); if (hasCustomTitle(item)) { headerText.add(new Phrase(item.getTemplateId(), resourceProvider.getNormalFont())); } if (item.getMaterialComposition() == MaterialComposition.Variable) { String itemMaterial = ""; if (hasCustomTitle(item)) itemMaterial += " ("; itemMaterial += item.getMaterial().getId(); if (hasCustomTitle(item)) itemMaterial += ")"; headerText.add(new Phrase(itemMaterial + "\n", resourceProvider.getNormalFont())); } if (item.getCost() != null) { headerText.add(new Phrase(item.getCost().toString(), resourceProvider.getNormalFont())); } List<Phrase> bodyText = new ArrayList<Phrase>(); String description = item.getDescription(); if (description != null && !description.isEmpty()) { bodyText.add(new Phrase(description, resourceProvider.getNormalFont())); bodyText.add(new Phrase("\n", resourceProvider.getNormalFont())); } for (IEquipmentStats stats : item.getStats()) { Paragraph statsParagraph = new Paragraph(); if (stats instanceof IArtifactStats) { IArtifactStats artifactStats = (IArtifactStats) stats; if (artifactStats.getAttuneType() != ArtifactAttuneType.FullyAttuned) { continue; } statsParagraph.add( new Phrase( resources.getString("Equipment.Stats.Short.AttuneCost").trim() + ": ", resourceProvider.getBoldFont())); statsParagraph.add( new Phrase(artifactStats.getAttuneCost() + "m", resourceProvider.getNormalFont())); } else { String statsString = stringBuilder.createString(item, stats); statsParagraph.add(new Phrase(stats.getId() + ": ", resourceProvider.getBoldFont())); statsParagraph.add( new Phrase( statsString.substring(statsString.indexOf(':') + 2), resourceProvider.getNormalFont())); } bodyText.add(statsParagraph); } data.add( new EquipmentCardData( title, headerText, bodyText.toArray(new Phrase[0]), resourceProvider.getNullIcon())); } return data.toArray(new ICardData[0]); }
private int getTotalXP() { return character.getExperiencePoints().getTotalExperiencePoints() + management.getMiscGain(); }
private boolean isSpecialCharm(ICharm charm) { return character.getCharms().getSpecialCharmConfiguration(charm) != null; }
@Override public void doTable(Parse table) { @SuppressWarnings("unchecked") ICharacter character = new CharacterSummary(summary).getCharacter(); character.getStatistics().setExperienced(true); }