/**
*
*/
package de.urszeidler.shr5.ecp.printer;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.nebula.paperclips.core.BreakPrint;
import org.eclipse.nebula.paperclips.core.EmptyPrint;
import org.eclipse.nebula.paperclips.core.ImagePrint;
import org.eclipse.nebula.paperclips.core.LinePrint;
import org.eclipse.nebula.paperclips.core.Print;
import org.eclipse.nebula.paperclips.core.border.Border;
import org.eclipse.nebula.paperclips.core.border.BorderPrint;
import org.eclipse.nebula.paperclips.core.border.LineBorder;
import org.eclipse.nebula.paperclips.core.grid.DefaultGridLook;
import org.eclipse.nebula.paperclips.core.grid.GridPrint;
import org.eclipse.nebula.paperclips.core.text.TextPrint;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import de.urszeidler.eclipse.shr5.AbstaktFernKampfwaffe;
import de.urszeidler.eclipse.shr5.AbstraktGegenstand;
import de.urszeidler.eclipse.shr5.AbstraktPersona;
import de.urszeidler.eclipse.shr5.AstraleProjektion;
import de.urszeidler.eclipse.shr5.Beschreibbar;
import de.urszeidler.eclipse.shr5.FernkampfwaffeModifikator;
import de.urszeidler.eclipse.shr5.Fertigkeit;
import de.urszeidler.eclipse.shr5.FertigkeitsGruppe;
import de.urszeidler.eclipse.shr5.Feuerwaffe;
import de.urszeidler.eclipse.shr5.GeldWert;
import de.urszeidler.eclipse.shr5.KiAdept;
import de.urszeidler.eclipse.shr5.KiKraft;
import de.urszeidler.eclipse.shr5.KoerperPersona;
import de.urszeidler.eclipse.shr5.Koerpermods;
import de.urszeidler.eclipse.shr5.ModSetter;
import de.urszeidler.eclipse.shr5.Nahkampfwaffe;
import de.urszeidler.eclipse.shr5.PersonaEigenschaft;
import de.urszeidler.eclipse.shr5.PersonaFertigkeit;
import de.urszeidler.eclipse.shr5.PersonaFertigkeitsGruppe;
import de.urszeidler.eclipse.shr5.PersonaZauber;
import de.urszeidler.eclipse.shr5.Shr5Package;
import de.urszeidler.eclipse.shr5.Spezies;
import de.urszeidler.eclipse.shr5.Vertrag;
import de.urszeidler.eclipse.shr5.Wissensfertigkeit;
import de.urszeidler.eclipse.shr5.Zauberer;
import de.urszeidler.eclipse.shr5.impl.FertigkeitImpl;
import de.urszeidler.eclipse.shr5.util.AdapterFactoryUtil;
import de.urszeidler.eclipse.shr5.util.ShadowrunTools;
import de.urszeidler.eclipse.shr5Management.Changes;
import de.urszeidler.eclipse.shr5Management.CharacterAdvancementSystem;
import de.urszeidler.eclipse.shr5Management.CharacterGenerator;
import de.urszeidler.eclipse.shr5Management.CharacterGroup;
import de.urszeidler.eclipse.shr5Management.Connection;
import de.urszeidler.eclipse.shr5Management.FreeStyleGenerator;
import de.urszeidler.eclipse.shr5Management.GruntGroup;
import de.urszeidler.eclipse.shr5Management.GruntMembers;
import de.urszeidler.eclipse.shr5Management.KarmaGenerator;
import de.urszeidler.eclipse.shr5Management.ManagedCharacter;
import de.urszeidler.eclipse.shr5Management.Shr5Generator;
import de.urszeidler.eclipse.shr5Management.Shr5managementPackage;
import de.urszeidler.eclipse.shr5Management.util.ShadowrunManagmentTools;
import de.urszeidler.eclipse.shr5Management.util.Shr5managementSwitch;
import de.urszeidler.shr5.ecp.editor.widgets.PersonaFertigkeitenWidget;
import de.urszeidler.shr5.ecp.editor.widgets.PersonaFertigkeitenWidget.GroupWrapper;
import de.urszeidler.shr5.ecp.preferences.PreferenceConstants;
import de.urszeidler.shr5.ecp.util.ShadowrunEditingTools;
/**
* @author urs
*/
public class PersonaPrinter extends BasicPrinter {
private static PersonaPrinter instance;
/**
* The singleton instance access.
*
* @return
*/
public static PersonaPrinter getInstance() {
if (instance == null)
instance = new PersonaPrinter();
return instance;
}
public PersonaPrinter() {
super();
initalizePrinter();
}
/**
* Returns the factory to create a new print of the character.
*
* @param c
* @return
*/
public PrintFactory createPrintFactory(final ManagedCharacter c) {
return new PrintFactory() {
private ManagedCharacter character = c;
@Override
public Print createPrinter() {
return createPagePrint(printCharacterSheet(character));
}
@Override
public String getPrintTitel() {
return Messages.PersonaPrinter_Character_sheet + c.getPersona().getName();
}
};
}
/**
* Returns the factory to create a new print of the character.
*
* @param c
* @return
*/
public PrintFactory createGruntPrintFactory(final GruntGroup c) {
return new PrintFactory() {
private GruntGroup character = c;
@Override
public Print createPrinter() {
return createPagePrint(printGruntGroupSheet(character));
}
@Override
public String getPrintTitel() {
return Messages.PersonaPrinter_Grunt_sheet + c.getName();
}
};
}
/**
* Returns the factory to create a new print of the character.
*
* @param c
* @return
*/
public PrintFactory createShr5CharacterGeneratorPrintFactory(final CharacterGenerator<?> c) {
return new PrintFactory() {
private CharacterGenerator<?> shrGenerator = c;
@Override
public Print createPrinter() {
Shr5managementSwitch<Print> shr5managementSwitch = new Shr5managementSwitch<Print>() {
@Override
public Print caseShr5Generator(Shr5Generator object) {
return createPagePrint(printShr5GeneratorSheet(object));
}
@SuppressWarnings("rawtypes")
@Override
public Print caseKarmaGenerator(KarmaGenerator object) {
return createPagePrint(printShr5GeneratorSheet(object));
}
@Override
public Print caseFreeStyleGenerator(FreeStyleGenerator object) {
return createPagePrint(printShr5GeneratorSheet(object));
}
};
return shr5managementSwitch.doSwitch(shrGenerator);
//
// return createPagePrint(printShr5GeneratorSheet(shrGenerator));
}
@Override
public String getPrintTitel() {
return toName(shrGenerator.eClass()) + ONE_SPACE + shrGenerator.getCharacterName(); // Messages.PersonaPrinter_Shr_character_generator
// + c.getCharacterName();
}
};
}
/**
* Returns the factory to create a new print of the character.
*
* @param c
* @return
*/
public PrintFactory createCharacterGroupPrintFactory(final CharacterGroup c) {
return new PrintFactory() {
private CharacterGroup characterGroup = c;
@Override
public Print createPrinter() {
return createPagePrint(printCharacterGroupSheet(characterGroup));
}
@Override
public String getPrintTitel() {
return Messages.PersonaPrinter_Character_Group_sheet + c.getName();
}
};
}
/**
* Prints the sheets for all {@link ManagedCharacter} in the {@link CharacterGroup}.
*
* @param group
* @return
*/
protected Print printCharacterGroupSheet(CharacterGroup group) {
LineBorder border = new LineBorder();
border.setLineWidth(1);
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint body = new GridPrint("d:g", look);//$NON-NLS-1$
body.add(printBeschreibbar(group));
EList<ManagedCharacter> members = group.getMembers();
for (ManagedCharacter managedCharacter : members) {
body.add(printCharacterSheet(managedCharacter));
}
return body;
}
/**
* Prints the decription as a header.
*
* @param group
* @return
*/
private Print printBeschreibbar(Beschreibbar descr) {
LineBorder border = new LineBorder();
border.setLineWidth(1);
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g", look);//$NON-NLS-1$
return grid;
}
/**
* Prints the gamemaster sheet for a grount group.
*
* @param grunts
* @return
*/
protected Print printGruntGroupSheet(GruntGroup grunts) {
LineBorder border = new LineBorder();
border.setLineWidth(1);
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint body = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
body.add(new BorderPrint(printGruntsData(grunts), border), 2);
if (grunts.getLeader() != null && grunts.getLeader().getNsc() != null) {
if (grunts.getLeader().getNsc().getPersona().getName() != null) {
body.add(SWT.LEFT, SWT.BOTTOM, new TextPrint(grunts.getLeader().getNsc().getPersona().getName(), attributeFont));
Image imageScaledBy = AdapterFactoryUtil.getInstance().getImageScaledBy(SMALL_SCALE,
grunts.getLeader().getNsc().getPersona().getImage());
if (imageScaledBy != null)
body.add(SWT.RIGHT, SWT.TOP, new ImagePrint(imageScaledBy.getImageData()));
else
body.add(SWT.RIGHT, SWT.TOP, new EmptyPrint());
}
body.add(new BorderPrint(printGruntMembersData(grunts.getLeader()), border), 2);
}
body.add(new BreakPrint(), GridPrint.REMAINDER);
EList<GruntMembers> mebers = grunts.getMembers();
for (GruntMembers gruntMenbers : mebers) {
if (gruntMenbers.getNsc() != null && gruntMenbers.getNsc().getPersona() != null) {
body.add(SWT.LEFT, SWT.BOTTOM, new TextPrint(gruntMenbers.getNsc().getPersona().getName(), attributeFont));
Image imageScaledBy = AdapterFactoryUtil.getInstance().getImageScaledBy(SMALL_SCALE, gruntMenbers.getNsc().getPersona().getImage());
if (imageScaledBy != null)
body.add(SWT.RIGHT, SWT.TOP, new ImagePrint(imageScaledBy.getImageData()));
else
body.add(SWT.RIGHT, SWT.TOP, new EmptyPrint());
}
body.add(new BorderPrint(printGruntMembersData(gruntMenbers), border), 2);
}
return body;
}
/**
* Print the Attributes and the condition monitors.
*
* @param gruntMembers
* @return
*/
private Print printGruntMembersData(GruntMembers gruntMembers) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d:g,d,d,d:g", look);//$NON-NLS-1$
int zustandKoerperlichMax = 8;
AbstraktPersona persona = gruntMembers.getNsc().getPersona();
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
zustandKoerperlichMax = kp.getZustandKoerperlichMax();
}
grid.add(printPersonaAttributes(persona), 2);
for (int i = 0; i < gruntMembers.getCount(); i++) {
grid.add(SWT.LEFT, SWT.TOP,
printConditionMonitor(gruntMembers.getNsc().getPersona().getName() + ONE_SPACE + (i + 1), zustandKoerperlichMax));
}
grid.add(new EmptyPrint(), GridPrint.REMAINDER);
grid.add(printPersonaWeaponsDetailList(gruntMembers.getNsc()), 5);
grid.add(new LinePrint(SWT.HORIZONTAL), GridPrint.REMAINDER);
DefaultGridLook look1 = new DefaultGridLook(5, 5);
look.setHeaderGap(0);
GridPrint grid1 = new GridPrint("d,d,d", look1);//$NON-NLS-1$
grid1.add(printPersonaCombatAttributes(persona));
grid1.add(printPersonaSkills(persona));
grid1.add(printGegenstandList(gruntMembers.getNsc().getInventar(), Messages.Printer_Items));
grid.add(grid1, GridPrint.REMAINDER);
return grid;
}
/**
* Prints the basic grunt data.
*
* @param gruntGroup
* @return
*/
private Print printGruntsData(GruntGroup gruntGroup) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(EMPTY, attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.PersonaPrinter_Grunts, headFontData), 1);
GridPrint innerGrid = new GridPrint("d,d", look);//$NON-NLS-1$
innerGrid.add(new TextPrint(Messages.Printer_Name, attributeFont));
innerGrid.add(new TextPrint(printString(gruntGroup.getName()), attributeFont), 1);
innerGrid.add(new TextPrint(Messages.PersonaPrinter_Professinal_rating, attributeFont));
innerGrid.add(new TextPrint(printInteger(gruntGroup.getProfessionalRating()), attributeFont), 1);
grid.add(innerGrid);
innerGrid = new GridPrint("d,d,d,d,d", look);//$NON-NLS-1$
Image imageScaledBy = AdapterFactoryUtil.getInstance().getImageScaledBy(SMALL_SCALE, gruntGroup.getImage());
if (imageScaledBy != null) {
innerGrid.add(SWT.RIGHT, SWT.TOP, new ImagePrint(imageScaledBy.getImageData()));
}
grid.add(innerGrid);
return grid;
}
/**
* Print the generator sheet.
*
* @param character
* @return
*/
protected Print printShr5GeneratorSheet(FreeStyleGenerator generator) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
if (generator == null || generator.getCharacter() == null || generator.getCharacter().getPersona() == null)
return grid;
ManagedCharacter character = generator.getCharacter();
AbstraktPersona persona = character.getPersona();
grid.add(new BorderPrint(printFreeStyleGenerator(generator, character), border), GridPrint.REMAINDER);
printGeneratorAttributesSkills(generator, grid, border, persona);
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
grid.add(printGeneratorKoerperPersona(border, kp), GridPrint.REMAINDER);
}
if (persona instanceof Zauberer) {
Zauberer z = (Zauberer)persona;
printGeneratorSpells(grid, border, z);
}
if (persona instanceof KiAdept) {
KiAdept ka = (KiAdept)persona;
printGeneratorKiPowers(grid, border, ka.getKikraft());
}
printResourcesForGenerator(grid, border, character, persona);
GridPrint characterConnections = printAllCharacterConnections(character);
characterConnections.add(new LinePrint(), GridPrint.REMAINDER);
characterConnections.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont), 4);
characterConnections.add(SWT.RIGHT,
new TextPrint(printInteger(ShadowrunManagmentTools.calcKarmaSpendByConnections(character)), attributeFont));
grid.add(createBandPrint(new BorderPrint(characterConnections, border)), GridPrint.REMAINDER);
GridPrint printCalculatedKarma = printCalculatedKarma(character);
grid.add(createBandPrint(new BorderPrint(printCalculatedKarma, border)), GridPrint.REMAINDER);
grid.add(new BorderPrint(printCharacterAdvancementsList(character), border), GridPrint.REMAINDER);
return grid;
}
private Print printFreeStyleGenerator(FreeStyleGenerator generator, ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint outerGrid = new GridPrint("d,d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
if (generator == null)
return outerGrid;
outerGrid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint("Shr5 karma generator", headFontData), GridPrint.REMAINDER);
GridPrint grid = new GridPrint("d,d:g", look);//$NON-NLS-1$
grid.add(new TextPrint(Messages.Printer_Name, attributeFont));
grid.add(new TextPrint(printString(generator.getCharacterName()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Choosen_System, attributeFont));
grid.add(new TextPrint(toName(generator.getGenerator()), attributeFont));
if (generator.getSelectedPersona() == null) {
grid.add(new TextPrint("Metatype", attributeFont));
grid.add(new TextPrint(toName(generator.getSelectedSpecies()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint("Character concept", attributeFont));
grid.add(new TextPrint(toName(generator.getSelectedType()), attributeFont), GridPrint.REMAINDER);
} else {
grid.add(new TextPrint("Cloned persona", attributeFont));
grid.add(SWT.RIGHT, new TextPrint(toName(generator.getSelectedPersona()), attributeFont), GridPrint.REMAINDER);
}
// grid.add(new TextPrint(Messages.PersonaPrinter_Karma_to_resources, attributeFont));
// grid.add(SWT.RIGHT, new TextPrint(printInteger(generator.getKarmaToResource()), attributeFont));
// grid.add(new TextPrint(Messages.PersonaPrinter_Karma_in_resources, attributeFont));
// int KarmaToRes = generator.getKarmaToResource() * generator.getGenerator().getKarmaToResourceFactor();
// grid.add(SWT.RIGHT, new TextPrint(printIntegerMoney(new BigDecimal(KarmaToRes)), attributeFont));
//
outerGrid.add(grid);
grid = new GridPrint("d,d:g", look);//$NON-NLS-1$
// grid.add(new TextPrint("Resources spend", attributeFont));
// grid.add(SWT.RIGHT, new TextPrint(printIntegerMoney(generator.getResourceSpend()), attributeFont));
//
// grid.add(new TextPrint(Messages.PersonaPrinter_Start_Karma, attributeFont));
// grid.add(SWT.RIGHT, new TextPrint(printInteger(generator.getStartKarma()), attributeFont));
//
// grid.add(new TextPrint(Messages.PersonaPrinter_Start_Resources, attributeFont));
// grid.add(SWT.RIGHT, new TextPrint(printIntegerMoney(new BigDecimal(generator.getStartResources())), attributeFont));
grid.add(new TextPrint("Karma worth", attributeFont));
grid.add(
SWT.RIGHT,
new TextPrint(printInteger(ShadowrunManagmentTools.calcCompleteKaramaSpend(character, generator.getGenerator()
.getCharacterAdvancements())), attributeFont));
outerGrid.add(grid);
return outerGrid;
}
/**
* Print the generator sheet.
*
* @param character
* @return
*/
protected Print printShr5GeneratorSheet(KarmaGenerator<?> generator) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
if (generator == null || generator.getCharacter() == null || generator.getCharacter().getPersona() == null)
return grid;
ManagedCharacter character = generator.getCharacter();
AbstraktPersona persona = character.getPersona();
grid.add(new BorderPrint(printShr5KarmaGenerator(generator, character), border), GridPrint.REMAINDER);
printGeneratorAttributesSkills(generator, grid, border, persona);
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
grid.add(printGeneratorKoerperPersona(border, kp), GridPrint.REMAINDER);
}
if (persona instanceof Zauberer) {
Zauberer z = (Zauberer)persona;
printGeneratorSpells(grid, border, z);
}
if (persona instanceof KiAdept) {
KiAdept ka = (KiAdept)persona;
printGeneratorKiPowers(grid, border, ka.getKikraft());
}
printResourcesForGenerator(grid, border, character, persona);
GridPrint printCalculatedKarma = printCalculatedKarma(character);
GridPrint characterConnections = printAllCharacterConnections(character);
characterConnections.add(new LinePrint(), GridPrint.REMAINDER);
characterConnections.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont), 3);
characterConnections.add(SWT.RIGHT,
new TextPrint(printInteger(ShadowrunManagmentTools.calcKarmaSpendByConnections(character)), attributeFont));
grid.add(createBandPrint(new BorderPrint(characterConnections, border)), GridPrint.REMAINDER);
grid.add(createBandPrint(new BorderPrint(printCalculatedKarma, border)), GridPrint.REMAINDER);
grid.add(new BorderPrint(printCharacterAdvancementsList(character), border), GridPrint.REMAINDER);
return grid;
}
/**
* Prints the spells for a generator with sum.
*
* @param grid
* @param border
* @param z
*/
private void printGeneratorKiPowers(GridPrint grid, LineBorder border, List<KiKraft> kikraft) {
GridPrint printZauberList = printKiKraftList(kikraft);
printZauberList.add(new LinePrint(), GridPrint.REMAINDER);
int kiPowerSum = ShadowrunTools.calcKiPowerSum(kikraft);
printZauberList.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont));
printZauberList.add(SWT.RIGHT, new TextPrint(essenzToFloat(kiPowerSum), attributeFont));
grid.add(createBandPrint(new BorderPrint(printZauberList, border)), GridPrint.REMAINDER);
}
/**
* Prints the spells for a generator with sum.
*
* @param grid
* @param border
* @param z
*/
private void printGeneratorSpells(GridPrint grid, LineBorder border, Zauberer z) {
GridPrint printZauberList = printZauberList(z.getZauber());
printZauberList.add(new LinePrint(), GridPrint.REMAINDER);
printZauberList.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont));
printZauberList.add(SWT.RIGHT, new TextPrint(printInteger(z.getZauber().size()), attributeFont));
grid.add(createBandPrint(new BorderPrint(printZauberList, border)), GridPrint.REMAINDER);
}
/**
* Print the karma generator head.
*
* @param generator
* @param character
* @return
*/
private Print printShr5KarmaGenerator(KarmaGenerator<?> generator, ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint outerGrid = new GridPrint("d,d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
if (generator == null)
return outerGrid;
outerGrid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint("Shr5 karma generator", headFontData), GridPrint.REMAINDER);
GridPrint grid = new GridPrint("d,d:g", look);//$NON-NLS-1$
grid.add(new TextPrint(Messages.Printer_Name, attributeFont));
grid.add(new TextPrint(printString(generator.getCharacterName()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Choosen_System, attributeFont));
grid.add(new TextPrint(toName(generator.getGenerator()), attributeFont));
grid.add(new TextPrint("Metatype", attributeFont));
grid.add(new TextPrint(toName(generator.getMetaType()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint("Character concept", attributeFont));
grid.add(new TextPrint(toName(generator.getCharacterConcept()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint(Messages.PersonaPrinter_Karma_to_spend, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(generator.getGenerator().getKarmaPoints()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint(Messages.PersonaPrinter_Karma_to_resources, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(generator.getKarmaToResource()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Karma_in_resources, attributeFont));
int KarmaToRes = generator.getKarmaToResource() * generator.getGenerator().getKarmaToResourceFactor();
grid.add(SWT.RIGHT, new TextPrint(printIntegerMoney(new BigDecimal(KarmaToRes)), attributeFont));
outerGrid.add(grid);
grid = new GridPrint("d,d:g", look);//$NON-NLS-1$
grid.add(new TextPrint("Resources spend", attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printIntegerMoney(generator.getResourceSpend()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Start_Karma, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(generator.getStartKarma()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Start_Resources, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printIntegerMoney(new BigDecimal(generator.getStartResources())), attributeFont));
grid.add(new TextPrint("Karma worth", attributeFont));
grid.add(
SWT.RIGHT,
new TextPrint(printInteger(ShadowrunManagmentTools.calcCompleteKaramaSpend(character, generator.getGenerator()
.getCharacterAdvancements())), attributeFont));
outerGrid.add(grid);
return outerGrid;
}
/**
* Print the generator sheet.
*
* @param character
* @return
*/
protected Print printShr5GeneratorSheet(Shr5Generator generator) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
if (generator == null || generator.getCharacter() == null || generator.getCharacter().getPersona() == null)
return grid;
ManagedCharacter character = generator.getCharacter();
AbstraktPersona persona = character.getPersona();
grid.add(new BorderPrint(printShr5Generator(generator, character), border), GridPrint.REMAINDER);
GridPrint gridLeft = new GridPrint("d:g", look);//$NON-NLS-1$
GridPrint gridRight = new GridPrint("d:g", look);//$NON-NLS-1$
grid.add(gridRight, 1);
grid.add(gridLeft, 1);
printGeneratorAttributesSkills(generator, grid, border, persona);
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
grid.add(printGeneratorKoerperPersona(border, kp), GridPrint.REMAINDER);
}
if (persona instanceof Zauberer) {
Zauberer z = (Zauberer)persona;
printGeneratorSpells(grid, border, z);
}
if (persona instanceof KiAdept) {
KiAdept ka = (KiAdept)persona;
printGeneratorKiPowers(grid, border, ka.getKikraft());
}
printResourcesForGenerator(grid, border, character, persona);
GridPrint characterConnections = printAllCharacterConnections(character);
characterConnections.add(new LinePrint(), GridPrint.REMAINDER);
characterConnections.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont), 3);
characterConnections.add(
SWT.RIGHT,
new TextPrint(printInteger(generator.getConnectionSpend()
- ShadowrunManagmentTools.calcConnectionsPoints(character, generator.getGenerator())), attributeFont));
grid.add(createBandPrint(new BorderPrint(characterConnections, border)), GridPrint.REMAINDER);
grid.add(new BorderPrint(printCalculatedKarma(character), border), GridPrint.REMAINDER);
return grid;
}
/**
* @param generator
* @param grid
* @param border
* @param persona
*/
private void printGeneratorAttributesSkills(CharacterGenerator<?> generator, GridPrint grid, LineBorder border, AbstraktPersona persona) {
Print printGeneratorAttributes = printGeneratorAttributes(generator);
EList<PersonaFertigkeit> fertigkeiten = persona.getFertigkeiten();
int sum = 0;
ArrayList<PersonaFertigkeit> arrayList = new ArrayList<PersonaFertigkeit>();
for (PersonaFertigkeit personaFertigkeit : fertigkeiten) {
if (personaFertigkeit.getFertigkeit() != null && personaFertigkeit.getFertigkeit().getClass().equals(FertigkeitImpl.class)) {
arrayList.add(personaFertigkeit);
sum = sum + personaFertigkeit.getStufe();
}
}
String printer_skills = Messages.Printer_skills;
Print skillForGenerator = printPersonaSkillForGenerator(persona, printer_skills, arrayList, sum);
sum = 0;
arrayList = new ArrayList<PersonaFertigkeit>();
for (PersonaFertigkeit personaFertigkeit : fertigkeiten) {
if (personaFertigkeit.getFertigkeit() != null && (personaFertigkeit.getFertigkeit() instanceof Wissensfertigkeit)) {
arrayList.add(personaFertigkeit);
sum = sum + personaFertigkeit.getStufe();
}
if (personaFertigkeit.getFertigkeit() != null && personaFertigkeit.getFertigkeit().getClass().equals(FertigkeitImpl.class)) {
}
}
printer_skills = Messages.PersonaPrinter_Kownlege_skills;
Print skillForGenerator2 = printPersonaSkillForGenerator(persona, printer_skills, arrayList, sum);
grid.add(
createBandPrint(new BorderPrint(printGeneratorAttributes, border), new BorderPrint(skillForGenerator, border), new BorderPrint(
skillForGenerator2, border)), GridPrint.REMAINDER);
}
/**
* Print qualities and bodytec together.
*
* @param grid
* @param border
* @param kp
* @return
*/
private GridPrint printGeneratorKoerperPersona(LineBorder border, KoerperPersona kp) {
EList<PersonaEigenschaft> eigenschaften = kp.getEigenschaften();
GridPrint personaEigenschaften = printPersonaEigenschaften(eigenschaften);
int sum = ShadowrunManagmentTools.calcQuallityKarmaCost(kp.getEigenschaften());
personaEigenschaften.add(new LinePrint(), GridPrint.REMAINDER);
personaEigenschaften.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont));
personaEigenschaften.add(SWT.RIGHT, new TextPrint(printInteger(sum), attributeFont));
GridPrint printPersonaBodyTec = printPersonaBodyTec(kp.getKoerperMods());
int calcEssenceSum = ShadowrunTools.calcEssenceSum(kp.getKoerperMods());
printPersonaBodyTec.add(new LinePrint(), GridPrint.REMAINDER);
printPersonaBodyTec.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont));
printPersonaBodyTec.add(SWT.RIGHT, new TextPrint(essenzToFloat(calcEssenceSum), attributeFont));
return createBandPrint(new BorderPrint(personaEigenschaften, border), new BorderPrint(printPersonaBodyTec, border));
}
/**
* Prints the items, the contracts and the vehicles.
*
* @param grid
* @param border
* @param character
* @param persona
*/
@SuppressWarnings("unchecked")
private void printResourcesForGenerator(GridPrint grid, LineBorder border, ManagedCharacter character, AbstraktPersona persona) {
grid.add(new BorderPrint(printWertListAndSumm(character.getInventar(), Messages.Printer_Items), border), GridPrint.REMAINDER);
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
if (!kp.getKoerperMods().isEmpty())
grid.add(
new BorderPrint(printWertListAndSumm((EList<? extends GeldWert>)kp.getKoerperMods(), Messages.PersonaPrinter_Wares), border),
GridPrint.REMAINDER);
}
if (!character.getVehicels().isEmpty())
grid.add(new BorderPrint(printWertListAndSumm(character.getVehicels(), Messages.PersonaPrinter_Vehicles), border), GridPrint.REMAINDER);
if (!character.getContracts().isEmpty())
grid.add(new BorderPrint(printWertListAndSumm(character.getContracts(), Messages.Printer_contracts), border), GridPrint.REMAINDER);
}
/**
* Prints all persona skills.
*
* @param persona
* @param printer_skills
* @param arrayList
* @param sum
* @return
*/
private Print printPersonaSkillForGenerator(AbstraktPersona persona, String printer_skills, List<PersonaFertigkeit> arrayList, int sum) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d,d,d,d", look);//$NON-NLS-1$
if (persona == null)
return grid;
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printer_skills, headFontData), GridPrint.REMAINDER);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
grid.addHeader(new TextPrint(Messages.Printer_attributes, tableHeaderFontData), 1);
grid.addHeader(new TextPrint(Messages.Printer_rtg, tableHeaderFontData), 1);
grid.addHeader(new TextPrint(Messages.Printer_dice_pool, tableHeaderFontData), 1);
printPersonaFertigkeitsList(grid, persona, arrayList);
// grid.add(new BreakPrint(),GridPrint.REMAINDER);
grid.add(new LinePrint(), GridPrint.REMAINDER);
grid.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont), 3);
grid.add(SWT.RIGHT, new TextPrint(printInteger(sum), attributeFont));
return grid;
}
/**
* Prints the persona attributes for a generator.
*
* @param generator
* @return
*/
private Print printGeneratorAttributes(CharacterGenerator<?> generator) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d,d,r:d", look);//$NON-NLS-1$
if (generator == null || generator.getCharacter() == null || generator.getCharacter().getPersona() == null
|| generator.getCharacter().getPersona().getSpezies() == null)
return grid;
AbstraktPersona persona = generator.getCharacter().getPersona();
Spezies spezies = persona.getSpezies();
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_attributes, headFontData), GridPrint.REMAINDER);
grid.addHeader(new TextPrint(EMPTY, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.PersonaPrinter_base, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.PersonaPrinter_rating, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.PersonaPrinter_cost, tableHeaderFontData));
int sum = 0;
List<EAttribute> orderedAttibutes = ShadowrunTools.getOrderedBaseAttibutes(persona);
for (EAttribute eAttribute : orderedAttibutes) {
Integer min = (Integer)spezies.eGet(ShadowrunTools.base2SpeciesMin(eAttribute));
printGeneratorAttributeLine(grid, persona, eAttribute, min);
Integer value = (Integer)persona.eGet(eAttribute);
sum = sum + value - min;
// TODO : check later
}
grid.add(new LinePrint(), GridPrint.REMAINDER);
grid.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont), 3);
grid.add(SWT.RIGHT, new TextPrint(printInteger(sum), attributeFont));
return grid;
}
/**
* Print a line of attribute.
*
* @param grid the grid to add to
* @param persona the persona
* @param eAttribute the attribute
* @param konstitutionMin the species min values
*/
private void printGeneratorAttributeLine(GridPrint grid, AbstraktPersona persona, EAttribute eAttribute, int min) {
Integer value = (Integer)persona.eGet(eAttribute);
grid.add(new TextPrint(toFeatureName(persona, eAttribute), attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(min), attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(value), attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(value - min), attributeFont));
}
/**
* @param list
* @param header
* @return
*/
private GridPrint printWertListAndSumm(EList<? extends GeldWert> list, String header) {
GridPrint gegenstandList = printGegenstandList(list, header);
gegenstandList.add(new LinePrint(), GridPrint.REMAINDER);
gegenstandList.add(SWT.RIGHT, new TextPrint(Messages.PersonaPrinter_sum, attributeFont), 2);
gegenstandList.add(SWT.RIGHT, new TextPrint(printIntegerMoney(ShadowrunTools.calcListenWert(list)), attributeFont));
return gegenstandList;
}
/**
* Print the choosen priority.
*
* @param generator
* @param character
* @return
*/
private Print printShr5Generator(Shr5Generator generator, ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint outerGrid = new GridPrint("d,d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
if (generator == null)
return outerGrid;
outerGrid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.PersonaPrinter_Shr5_Generator, headFontData), GridPrint.REMAINDER);
GridPrint grid = new GridPrint("d,d:g", look);//$NON-NLS-1$
grid.add(new TextPrint(Messages.Printer_Name, attributeFont));
grid.add(new TextPrint(printString(generator.getCharacterName()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Choosen_System, attributeFont));
grid.add(new TextPrint(toName(generator.getGenerator()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_attributes, attributeFont));
grid.add(new TextPrint(toName(generator.getAttribute()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint(Messages.PersonaPrinter_Metatype, attributeFont));
grid.add(new TextPrint(toName(generator.getMetaType()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint(Messages.PersonaPrinter_Skills, attributeFont));
grid.add(new TextPrint(toName(generator.getSkills()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint(Messages.PersonaPrinter_Magic, attributeFont));
grid.add(new TextPrint(toName(generator.getMagic()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint(Messages.PersonaPrinter_Resources, attributeFont));
grid.add(new TextPrint(toName(generator.getResourcen()), attributeFont), GridPrint.REMAINDER);
grid.add(new TextPrint(Messages.PersonaPrinter_Karma_to_spend, attributeFont));
grid.add(new TextPrint(printInteger(generator.getGenerator().getKarmaPoints()), attributeFont), GridPrint.REMAINDER);
outerGrid.add(grid);
grid = new GridPrint("d,d:g", look);//$NON-NLS-1$
grid.add(new TextPrint(Messages.PersonaPrinter_Karma_to_resources, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(generator.getKarmaToResource()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Karma_in_resources, attributeFont));
grid.add(SWT.RIGHT,
new TextPrint(
printIntegerMoney(new BigDecimal(ShadowrunManagmentTools.calcKarmaToResources(generator, generator.getGenerator()))),
attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Resources_at_all, attributeFont));
grid.add(
SWT.RIGHT,
new TextPrint(printIntegerMoney(new BigDecimal(generator.getResourcen().getResource()
+ ShadowrunManagmentTools.calcKarmaToResources(generator, generator.getGenerator()))), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Connection_with_karma, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(ShadowrunManagmentTools.calcConnectionsPoints(character, generator.getGenerator())),
attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Kownlege_skills, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(ShadowrunManagmentTools.calcKnownlegeSkillPoints(character, generator.getGenerator())),
attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Start_Karma, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(generator.getStartKarma()), attributeFont));
grid.add(new TextPrint(Messages.PersonaPrinter_Start_Resources, attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printIntegerMoney(new BigDecimal(generator.getStartResources())), attributeFont));
grid.add(new TextPrint("Karma worth", attributeFont));
grid.add(
SWT.RIGHT,
new TextPrint(printInteger(ShadowrunManagmentTools.calcCompleteKaramaSpend(character, generator.getGenerator()
.getCharacterAdvancements())), attributeFont));
outerGrid.add(grid);
return outerGrid;
}
/**
* Print the character sheet.
*
* @param character
* @return
*/
protected Print printCharacterSheet(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
if (character.getPersona() == null)
return grid;
AbstraktPersona persona = character.getPersona();
grid.add(new BorderPrint(printPersonaData(character), border), GridPrint.REMAINDER);
// grid.add(printPersonaDetails(persona), 1);
grid.add(new BorderPrint(printPersonaAttributes(persona), border), 1);
grid.add(SWT.LEFT, SWT.FILL, new BorderPrint(printPersonaConditionMonitor(persona), border), 1);
grid.add(new BorderPrint(printPersonaWeaponsDetailList(character), border), GridPrint.REMAINDER);
if (persona instanceof Zauberer) {
Zauberer z = (Zauberer)persona;
grid.add(new BorderPrint(printPersonaZauberList(z.getZauber()), border), GridPrint.REMAINDER);
}
if (store.getBoolean(PreferenceConstants.PRINT_USEABLE_SKILLS))
grid.add(new BorderPrint(printAllPersonaSkills(persona), border), 1);
else
grid.add(new BorderPrint(printPersonaSkills(persona), border), 1);
grid.add(printPersonaFormPart1(character), 1);
grid.add(new BorderPrint(printPersonaRangedWeapons1(character), border), 1);
grid.add(new BorderPrint(printPersonaMeeleWeapons(character), border), 1);
List<AbstraktGegenstand> gList = character.getInventar();
grid.add(new BorderPrint(printGegenstandList(gList, Messages.Printer_Items), border), GridPrint.REMAINDER);
grid.add(new BreakPrint(), GridPrint.REMAINDER);
if (store.getBoolean(PreferenceConstants.PRINT_CHARACTER_ADVACEMENTS))
grid.add(new BorderPrint(printCharacterAdvancementsList(character), border), GridPrint.REMAINDER);
return grid;
}
/**
* Prints next to the fertigkeiten.
*
* @param persona
* @return
*/
private Print printPersonaFormPart1(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
GridPrint grid = new GridPrint("d:g", look);//$NON-NLS-1$
LineBorder border = new LineBorder();
border.setLineWidth(1);
AbstraktPersona persona = character.getPersona();
// grid.add(printPersonaCombatAttributes(persona));
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
EList<PersonaEigenschaft> eigenschaften = kp.getEigenschaften();
if (!eigenschaften.isEmpty())
grid.add(new BorderPrint(printPersonaEigenschaften(eigenschaften), border), GridPrint.REMAINDER);
EList<Koerpermods> koerperMods = kp.getKoerperMods();
if (!koerperMods.isEmpty())
grid.add(new BorderPrint(printPersonaBodyTec(koerperMods), border), GridPrint.REMAINDER);
}
if (persona instanceof KiAdept) {
KiAdept ka = (KiAdept)persona;
EList<KiKraft> kikraft = ka.getKikraft();
if (!kikraft.isEmpty())
grid.add(new BorderPrint(printKiKraftList(kikraft), border), GridPrint.REMAINDER);
}
// if (persona instanceof Zauberer) {
// Zauberer z = (Zauberer)persona;
// EList<PersonaZauber> zauber = z.getZauber();
// if (!zauber.isEmpty())
// grid.add(new BorderPrint(printZauberList(zauber), border), GridPrint.REMAINDER);
//
// }
grid.add(new BorderPrint(printAllCharacterConnections(character), border), GridPrint.REMAINDER);
grid.add(new BorderPrint(printPersonaContracts(character), border), GridPrint.REMAINDER);
grid.add(new BorderPrint(printModList(persona), border), GridPrint.REMAINDER);
return grid;
}
/**
* Print all the modifications active on this persona.
*
* @param persona
* @return
*/
private Print printModList(AbstraktPersona persona) {
DefaultGridLook look = new DefaultGridLook(5, 5);
GridPrint grid = new GridPrint("d:g,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_Active_Modification, headFontData), 2);
ModSetter modManager = persona.getModManager();
Set<Entry<EObject, Integer>> set = modManager.getModificatorMap().entrySet();
for (Entry<EObject, Integer> entry : set) {
grid.add(new TextPrint(toName(entry.getKey()), attributeFont));
grid.add(new TextPrint(printInteger(entry.getValue()), attributeFont));
}
return grid;
}
/**
* Prints a list of {@link GeldWert} with name,avil,cost and source.
*
* @param g the list
* @param headerName the name of the header
* @return
*/
protected GridPrint printGegenstandList(List<? extends GeldWert> g, String headerName) {
DefaultGridLook look = new DefaultGridLook(5, 5);
GridPrint grid = new GridPrint("d:g,d,d,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(headerName, headFontData), 4);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData), 1);
grid.addHeader(new TextPrint(Messages.Printer_available, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.Printer_cost, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.Printer_source, tableHeaderFontData));
for (GeldWert ge : g) {
grid.add(new TextPrint(itemDelegator.getText(ge), attributeFont), 1);
grid.add(new TextPrint(printString(ge.getVerfuegbarkeit()), attributeFont), 1);
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printIntegerMoney(ge.getWert()), attributeFont), 1);
grid.add(new TextPrint(toSource(ge), attributeFont), 1);
}
return grid;
}
/**
* Print a zauber list with all the values.
*
* @param zauber
* @return
*/
private GridPrint printPersonaZauberList(List<PersonaZauber> zauber) {
DefaultGridLook look = new DefaultGridLook(5, 5);
GridPrint grid = new GridPrint("d:g,d,d,d,d,d,d,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_spells, headFontData), GridPrint.REMAINDER);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData));
grid.addHeader(new TextPrint(toName(Shr5Package.Literals.ZAUBER__KATEGORIE), tableHeaderFontData));
grid.addHeader(new TextPrint(toName(Shr5Package.Literals.ZAUBER__ART), tableHeaderFontData));
grid.addHeader(new TextPrint(toName(Shr5Package.Literals.ZAUBER__REICHWEITE), tableHeaderFontData));
grid.addHeader(new TextPrint(toName(Shr5Package.Literals.ZAUBER__SCHADEN), tableHeaderFontData));
grid.addHeader(new TextPrint(toName(Shr5Package.Literals.ZAUBER__DAUER), tableHeaderFontData));
grid.addHeader(new TextPrint(toName(Shr5Package.Literals.ZAUBER__ENTZUG), tableHeaderFontData));
grid.addHeader(new TextPrint(toName(Shr5Package.Literals.ZAUBER__MERKMALE), tableHeaderFontData));
for (PersonaZauber z : zauber) {
grid.add(new TextPrint(toName(z.getFormel()), attributeFont));
grid.add(new TextPrint(toName(z.getFormel().getKategorie()), attributeFont));
grid.add(new TextPrint(toName(z.getFormel().getArt(), z.getFormel(), Shr5Package.Literals.ZAUBER__ART), attributeFont));
grid.add(new TextPrint(toName(z.getFormel().getReichweite(), z.getFormel(), Shr5Package.Literals.ZAUBER__REICHWEITE), attributeFont));
grid.add(new TextPrint(toName(z.getFormel().getSchaden()), attributeFont));
grid.add(new TextPrint(toName(z.getFormel().getDauer(), z.getFormel(), Shr5Package.Literals.ZAUBER__DAUER), attributeFont));
grid.add(new TextPrint(toName(z.getFormel().getEntzug()), attributeFont));
grid.add(new TextPrint(toName(z.getFormel().getMerkmale()), attributeFont));
if (!toName(z.getFormel().getBeschreibung()).isEmpty())
grid.add(new TextPrint(toName(z.getFormel().getBeschreibung()), attributeFont), GridPrint.REMAINDER);
}
return grid;
}
/**
* Print a simple zauber list.
*
* @param zauber
* @return
*/
private GridPrint printZauberList(List<PersonaZauber> zauber) {
DefaultGridLook look = new DefaultGridLook(5, 5);
GridPrint grid = new GridPrint("d:g,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_spells, headFontData), 2);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
for (PersonaZauber z : zauber) {
grid.add(new TextPrint(itemDelegator.getText(z.getFormel()), attributeFont), 2);
}
return grid;
}
private GridPrint printKiKraftList(List<KiKraft> kikraft) {
DefaultGridLook look = new DefaultGridLook(5, 5);
GridPrint grid = new GridPrint("d:g,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_KiPower, headFontData), 2);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
for (KiKraft kiKraft2 : kikraft) {
grid.add(new TextPrint(itemDelegator.getText(kiKraft2), attributeFont));
grid.add(SWT.RIGHT, new TextPrint(essenzToFloat(kiKraft2.getKraftpunkte()), attributeFont));
}
return grid;
}
/**
* Prints the persona bodytec, like bio and cyberware.
*
* @param persona
* @return
*/
private GridPrint printPersonaBodyTec(EList<Koerpermods> koerperMods) {
DefaultGridLook look = new DefaultGridLook(5, 5);
GridPrint grid = new GridPrint("d:g,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_BodyTec, headFontData), GridPrint.REMAINDER);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.Printer_Essence, tableHeaderFontData));
for (Koerpermods koerpermods2 : koerperMods) {
grid.add(new TextPrint(itemDelegator.getText(koerpermods2), attributeFont));
int essencesValue = ShadowrunTools.getEssencesValue(koerpermods2);
grid.add(SWT.RIGHT, new TextPrint(essenzToFloat(essencesValue), attributeFont));
}
return grid;
}
/**
* Prints the karma cost for a managed character.
*
* @param persona
* @return
*/
private GridPrint printCalculatedKarma(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d", look);//$NON-NLS-1$
if (character == null || character.getChracterSource() == null || character.getChracterSource().getGenerator() == null
|| character.getChracterSource().getGenerator().getCharacterAdvancements() == null)
return grid;
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint("Calculated Karma Cost", headFontData), 2);
grid.addHeader(new TextPrint("cost part", tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.Printer_karma, tableHeaderFontData));
CharacterAdvancementSystem advancementSystem = character.getChracterSource().getGenerator().getCharacterAdvancements();
grid.add(new TextPrint("karma spend by attributes", attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(
printInteger(ShadowrunManagmentTools.calcKarmaSpendByAttributes(character, advancementSystem)), attributeFont));
grid.add(new TextPrint("karma spend by quallities", attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(
printInteger(ShadowrunManagmentTools.calcKarmaSpendByQuallities(character, advancementSystem)), attributeFont));
grid.add(new TextPrint("karma spend by skills", attributeFont));
grid.add(
SWT.RIGHT,
SWT.DEFAULT,
new TextPrint(printInteger(ShadowrunManagmentTools.calcKarmaSpendBySkills(character, advancementSystem)
+ ShadowrunManagmentTools.calcKarmaSpendBySkillGroups(character, advancementSystem)
+ ShadowrunManagmentTools.calcKarmaSpendBySpecalism(character, advancementSystem)), attributeFont));
grid.add(new TextPrint("karma spend by spells/forms", attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT,
new TextPrint(printInteger(ShadowrunManagmentTools.calcKarmaSpendBySpellsOrForms(character, advancementSystem)), attributeFont));
grid.add(new TextPrint("karma spend by connections", attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printInteger(ShadowrunManagmentTools.calcKarmaSpendByConnections(character)), attributeFont));
grid.add(new TextPrint("karma spend by resorcen", attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printInteger(ShadowrunManagmentTools.calcKarmaSpendByResources(character)), attributeFont));
grid.add(new LinePrint(), GridPrint.REMAINDER);
grid.add(new TextPrint("karma spend complete", attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printInteger(ShadowrunManagmentTools.calcCompleteKaramaSpend(character, advancementSystem)),
attributeFont));
return grid;
}
/**
* Prints a list of qualities.
*
* @param persona
* @return
*/
private GridPrint printPersonaEigenschaften(EList<PersonaEigenschaft> eigenschaften) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_Edge_Flaws, headFontData), 2);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.Printer_karma, tableHeaderFontData));
for (PersonaEigenschaft personaEigenschaft : eigenschaften) {
grid.add(new TextPrint(itemDelegator.getText(personaEigenschaft), attributeFont));
grid.add(SWT.RIGHT, new TextPrint(printInteger(personaEigenschaft.getKarmaKosten()), attributeFont));
}
return grid;
}
/**
* Prints the character advancement list.
*
* @param persona
* @return
*/
private Print printCharacterAdvancementsList(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d,d,d", look);//$NON-NLS-1$
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.PersonaPrinter_Advacements, headFontData), 4);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.PersonaPrinter_game_date, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.PersonaPrinter_date_applied, tableHeaderFontData));
grid.addHeader(new TextPrint(Messages.PersonaPrinter_Karma, tableHeaderFontData));
EList<Changes> changes = character.getChanges();
for (Changes change : changes) {
grid.add(new TextPrint(itemDelegator.getText(change), attributeFont));
grid.add(new TextPrint(printDate(change.getDate()), attributeFont));
grid.add(new TextPrint(printDate(change.getDateApplied()), attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printInteger(change.getKarmaCost()), attributeFont));
}
return grid;
}
/**
* Prints the ranged weapons.
*
* @param persona
* @return
*/
private Print printPersonaRangedWeapons1(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d,d,d,d,d,d,d", look);//$NON-NLS-1$
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_RagneWeapons, headFontData), 8);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_dmg, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_akk, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_ap, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_modus, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_rc, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_muni, tableHeaderFontData));
EList<AbstraktGegenstand> inventar = character.getInventar();
for (AbstraktGegenstand abstraktGegenstand : inventar) {
if (abstraktGegenstand instanceof AbstaktFernKampfwaffe) {
AbstaktFernKampfwaffe fw = (AbstaktFernKampfwaffe)abstraktGegenstand;
printFernkampWaffeDetail(fw);
grid.add(new TextPrint(itemDelegator.getText(fw), attributeFont), 2);
grid.add(new TextPrint(printString(fw.getSchadenscode()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getPraezision()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getDurchschlagsKraft()), attributeFont));
if (fw instanceof Feuerwaffe) {
Feuerwaffe f = (Feuerwaffe)fw;
printFeuerwaffeDetail(f);
grid.add(new TextPrint(f.getModie().toString(), attributeFont));
grid.add(new TextPrint(printInteger(f.getRueckstoss()), attributeFont));
grid.add(new TextPrint(f.getKapazitaet() + f.getMunitionstyp().getLiteral(), attributeFont));
} else {
grid.add(new TextPrint(EMPTY, attributeFont));
grid.add(new TextPrint(EMPTY, attributeFont));
grid.add(new TextPrint(EMPTY, attributeFont));
}
}
}
return grid;
}
/**
* Prints the weapon in a list with the necessary information for gameplay.
*
* @param persona
* @return
*/
protected Print printPersonaWeaponsDetailList(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(3, 5);
GridPrint grid = new GridPrint("d:g", look);//$NON-NLS-1$
EList<AbstraktGegenstand> inventar = character.getInventar();
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_weapons, headFontData));
for (AbstraktGegenstand abstraktGegenstand : inventar) {
if (abstraktGegenstand instanceof AbstaktFernKampfwaffe) {
AbstaktFernKampfwaffe af = (AbstaktFernKampfwaffe)abstraktGegenstand;
grid.add(printFernkampfwaffeDetailCompact(af));
}
}
DefaultGridLook look1 = new DefaultGridLook(2, 2);
look.setHeaderGap(2);
GridPrint grid1 = new GridPrint("d:g,d:g,d:g,d:g,d:g,d:g", look1);//$NON-NLS-1$
grid1.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
grid1.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_dmg, tableHeaderFontData));
grid1.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_akk, tableHeaderFontData));
grid1.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_ap, tableHeaderFontData));
grid1.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_reach, tableHeaderFontData));
for (AbstraktGegenstand abstraktGegenstand : inventar) {
if (abstraktGegenstand instanceof Nahkampfwaffe) {
Nahkampfwaffe fw = (Nahkampfwaffe)abstraktGegenstand;
// grid.add(printNahkampfwaffeDetail(fw));
grid1.add(new LinePrint(SWT.HORIZONTAL), GridPrint.REMAINDER);
grid1.add(new TextPrint(toName(fw), attributeFont), 2);
grid1.add(new TextPrint(printString(fw.getSchadenscode()), attributeFont));
grid1.add(new TextPrint(printInteger(fw.getPraezision()), attributeFont));
grid1.add(new TextPrint(printInteger(fw.getDurchschlagsKraft()), attributeFont));
grid1.add(new TextPrint(printInteger(fw.getReichweite()), attributeFont));
}
}
grid.add(grid1);
return grid;
}
/**
* Print a detail for a feuerwaffe.
*/
private GridPrint printFernkampfwaffeDetailCompact(AbstaktFernKampfwaffe fernkampfwaffe) {
DefaultGridLook look = new DefaultGridLook(2, 2);
GridPrint grid = new GridPrint("d:g,d:g,d:g,d:g,d:g,d:g,d:g,d:g", look);//$NON-NLS-1$
grid.add(new LinePrint(SWT.HORIZONTAL), GridPrint.REMAINDER);
grid.add(new TextPrint(toName(fernkampfwaffe), attributeFont), 5);
grid.add(new TextPrint(toSimpleName(fernkampfwaffe.getReichweite()), attributeFont), 3);
GridPrint innerGrid = new GridPrint("d:g,d:g,d:g,d:g,d:g,d:g", look);//$NON-NLS-1$
innerGrid.add(new TextPrint(Messages.Printer_dmg, tableHeaderFontData));
innerGrid.add(new TextPrint(Messages.Printer_akk, tableHeaderFontData));
innerGrid.add(new TextPrint(Messages.Printer_ak, tableHeaderFontData));
if (fernkampfwaffe instanceof Feuerwaffe) {
innerGrid.add(new TextPrint(Messages.Printer_modus, tableHeaderFontData));
innerGrid.add(new TextPrint(Messages.Printer_rc, tableHeaderFontData));
innerGrid.add(new TextPrint(Messages.Printer_muni, tableHeaderFontData));
} else
innerGrid.add(new EmptyPrint(), GridPrint.REMAINDER);
innerGrid.add(new TextPrint(printString(fernkampfwaffe.getSchadenscode()), attributeFont));
innerGrid.add(new TextPrint(fernkampfwaffe.getPraezision() + EMPTY, attributeFont));
innerGrid.add(new TextPrint(fernkampfwaffe.getDurchschlagsKraft() + EMPTY, attributeFont));
if (fernkampfwaffe instanceof Feuerwaffe) {
Feuerwaffe fw = (Feuerwaffe)fernkampfwaffe;
innerGrid.add(new TextPrint(toName(fw.getModie(), fernkampfwaffe, Shr5Package.Literals.FEUERWAFFE__MODIE), attributeFont));
innerGrid.add(new TextPrint(fw.getRueckstoss() + EMPTY, attributeFont));
innerGrid.add(new TextPrint(fw.getKapazitaet() + ONE_SPACE
+ toName(fw.getMunitionstyp(), fernkampfwaffe, Shr5Package.Literals.FEUERWAFFE__MUNITIONSTYP), attributeFont));
} else
innerGrid.add(new EmptyPrint(), GridPrint.REMAINDER);
innerGrid.add(new TextPrint(Messages.Printer_short, tableHeaderFontData));
innerGrid.add(new TextPrint(Messages.Printer_medium, tableHeaderFontData));
innerGrid.add(new TextPrint(Messages.Printer_long, tableHeaderFontData));
innerGrid.add(new TextPrint(Messages.Printer_extreme, tableHeaderFontData));
innerGrid.add(new EmptyPrint(), GridPrint.REMAINDER);
if (fernkampfwaffe.getReichweite() != null) {
innerGrid.add(new TextPrint(toReichweite(fernkampfwaffe.getReichweite().getMin(), fernkampfwaffe.getReichweite().getKurz()),
attributeFont));
innerGrid.add(new TextPrint(toReichweite(fernkampfwaffe.getReichweite().getKurz(), fernkampfwaffe.getReichweite().getMittel()),
attributeFont));
innerGrid.add(new TextPrint(toReichweite(fernkampfwaffe.getReichweite().getMittel(), fernkampfwaffe.getReichweite().getWeit()),
attributeFont));
innerGrid.add(new TextPrint(toReichweite(fernkampfwaffe.getReichweite().getWeit(), fernkampfwaffe.getReichweite().getExtrem()),
attributeFont));
innerGrid.add(new EmptyPrint(), GridPrint.REMAINDER);
}
GridPrint innerGrid1 = new GridPrint("d:g", look);//$NON-NLS-1$
innerGrid1.add(new TextPrint(Messages.Printer_addons, tableHeaderFontData));
if (fernkampfwaffe instanceof Feuerwaffe) {
Feuerwaffe fw = (Feuerwaffe)fernkampfwaffe;
innerGrid1.add(new TextPrint(toFWAddon(fw.getEinbau()), attributeFont));
}
grid.add(innerGrid, 6);
grid.add(innerGrid1, 2);
return grid;
}
/**
* Print a detail for a feuerwaffe.
*/
private GridPrint printFeuerwaffeDetail(Feuerwaffe fw) {
DefaultGridLook look = new DefaultGridLook(3, 3);
GridPrint grid = new GridPrint("d:g,d:g,d:g,d:g,d:g,d:g,d:g,d:g", look);//$NON-NLS-1$
if (fw == null)
return grid;
grid.add(new LinePrint(SWT.HORIZONTAL), GridPrint.REMAINDER);
grid.add(new TextPrint(toName(fw), attributeFont), 5);
grid.add(new TextPrint(toName(fw.getReichweite()), attributeFont), 3);
grid.add(new TextPrint(Messages.Printer_dmg, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_akk, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_ak, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_modus, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_rc, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_muni, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_addons, tableHeaderFontData), 2);
grid.add(new TextPrint(printString(fw.getSchadenscode()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getPraezision()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getDurchschlagsKraft()), attributeFont));
grid.add(new TextPrint(fw.getModie().toString(), attributeFont));
grid.add(new TextPrint(printInteger(fw.getRueckstoss()), attributeFont));
grid.add(new TextPrint(fw.getKapazitaet() + fw.getMunitionstyp().getLiteral(), attributeFont));
grid.add(new TextPrint(toFWAddon(fw.getEinbau()), attributeFont), 2);
grid.add(new TextPrint(Messages.Printer_short, tableHeaderFontData), 2);
grid.add(new TextPrint(Messages.Printer_medium, tableHeaderFontData), 2);
grid.add(new TextPrint(Messages.Printer_long, tableHeaderFontData), 2);
grid.add(new TextPrint(Messages.Printer_extreme, tableHeaderFontData), 2);
if (fw.getReichweite() != null) {
grid.add(new TextPrint(toReichweite(fw.getReichweite().getMin(), fw.getReichweite().getKurz()), attributeFont), 2);
grid.add(new TextPrint(toReichweite(fw.getReichweite().getKurz(), fw.getReichweite().getMittel()), attributeFont), 2);
grid.add(new TextPrint(toReichweite(fw.getReichweite().getMittel(), fw.getReichweite().getWeit()), attributeFont), 2);
grid.add(new TextPrint(toReichweite(fw.getReichweite().getWeit(), fw.getReichweite().getExtrem()), attributeFont), 2);
}
return grid;
}
private String toFWAddon(EList<FernkampfwaffeModifikator> einbau) {
StringBuffer buffer = new StringBuffer();
for (FernkampfwaffeModifikator fernkampfwaffeModifikator : einbau) {
buffer.append(fernkampfwaffeModifikator.getName());
buffer.append(EOL);
}
return buffer.toString();
}
// @Deprecated
// private String toMod(EList<AttributModifikatorWert> mods) {
// StringBuffer buffer = new StringBuffer();
//
// for (AttributModifikatorWert attributModifikatorWert : mods) {
// EAttribute attribut = attributModifikatorWert.getAttribut();
// buffer.append(itemDelegator.getText(attribut));
//
// if (attribut.getEType() instanceof EEnum) {
// EEnumLiteral eEnumLiteral = ((EEnum)attribut.getEType()).getEEnumLiteral(attributModifikatorWert.getWert());
// buffer.append(":"); //$NON-NLS-1$
// buffer.append(itemDelegator.getText(eEnumLiteral));
//
// }
// buffer.append(EOL);
// }
//
// return buffer.toString();
// }
private String toReichweite(int min, int max) {
return min + "-" + max;//$NON-NLS-1$
}
private GridPrint printFernkampWaffeDetail(AbstaktFernKampfwaffe fw) {
DefaultGridLook look = new DefaultGridLook(3, 3);
GridPrint grid = new GridPrint("d:g,d:g,d:g,d:g,d:g,d:g,d:g,d:g", look);//$NON-NLS-1$
if (fw == null)
return grid;
grid.add(new LinePrint(SWT.HORIZONTAL), GridPrint.REMAINDER);
grid.add(new TextPrint(toName(fw), attributeFont), 5);
grid.add(new TextPrint(toName(fw.getReichweite()), attributeFont), 3);
grid.add(new TextPrint(Messages.Printer_dmg, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_akk, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_ap, tableHeaderFontData));
grid.add(new TextPrint(EMPTY, tableHeaderFontData));
grid.add(new TextPrint(EMPTY, tableHeaderFontData));
grid.add(new TextPrint(EMPTY, tableHeaderFontData));
grid.add(new TextPrint(Messages.Printer_addons, tableHeaderFontData), 2);
grid.add(new TextPrint(printString(fw.getSchadenscode()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getPraezision()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getDurchschlagsKraft()), attributeFont));
grid.add(new TextPrint(EMPTY, attributeFont));
grid.add(new TextPrint(EMPTY, attributeFont));
grid.add(new TextPrint(EMPTY, attributeFont));
grid.add(new TextPrint(fw.getMods().toString(), attributeFont), 2);
grid.add(new TextPrint(Messages.Printer_short, tableHeaderFontData), 2);
grid.add(new TextPrint(Messages.Printer_medium, tableHeaderFontData), 2);
grid.add(new TextPrint(Messages.Printer_long, tableHeaderFontData), 2);
grid.add(new TextPrint(Messages.Printer_extreme, tableHeaderFontData), 2);
if (fw.getReichweite() != null) {
grid.add(new TextPrint(toReichweite(fw.getReichweite().getMin(), fw.getReichweite().getKurz()), attributeFont), 2);
grid.add(new TextPrint(toReichweite(fw.getReichweite().getKurz(), fw.getReichweite().getMittel()), attributeFont), 2);
grid.add(new TextPrint(toReichweite(fw.getReichweite().getMittel(), fw.getReichweite().getWeit()), attributeFont), 2);
grid.add(new TextPrint(toReichweite(fw.getReichweite().getWeit(), fw.getReichweite().getExtrem()), attributeFont), 2);
}
return grid;
}
/**
* Prints the contracts of the character.
*
* @param persona
* @return
*/
private GridPrint printPersonaContracts(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d", look);//$NON-NLS-1$
if (character == null)
return grid;
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_contracts, headFontData), 2);
grid.addHeader(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
EList<Vertrag> inventar = character.getContracts();
for (Vertrag contract : inventar) {
grid.add(new TextPrint(itemDelegator.getText(contract), attributeFont), 2);
}
return grid;
}
/**
* Prints the ranged weapons.
*
* @param persona
* @return
*/
private Print printPersonaMeeleWeapons(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d,d,d,d,d,", look);//$NON-NLS-1$
if (character == null)
return grid;
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_meele_weapons, headFontData), 6);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_reach, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_dmg, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_akk, tableHeaderFontData));
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_ap, tableHeaderFontData));
EList<AbstraktGegenstand> inventar = character.getInventar();
for (AbstraktGegenstand abstraktGegenstand : inventar) {
if (abstraktGegenstand instanceof Nahkampfwaffe) {
Nahkampfwaffe fw = (Nahkampfwaffe)abstraktGegenstand;
grid.add(new TextPrint(itemDelegator.getText(fw), attributeFont), 2);
grid.add(new TextPrint(printInteger(fw.getReichweite()), attributeFont));
grid.add(new TextPrint(printString(fw.getSchadenscode()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getPraezision()), attributeFont));
grid.add(new TextPrint(printInteger(fw.getDurchschlagsKraft()), attributeFont));
}
}
return grid;
}
/**
* Prints the persona condition monitor.
*
* @param persona
* @return
*/
private Print printPersonaConditionMonitor(AbstraktPersona persona) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d,d:g", look);//$NON-NLS-1$
if (persona == null)
return grid;
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_monitor, headFontData), GridPrint.REMAINDER);
grid.add(SWT.LEFT, SWT.TOP, printConditionMonitor(Messages.Printer_body, kp.getZustandKoerperlichMax()));
grid.add(SWT.RIGHT, SWT.TOP, printConditionMonitor(Messages.Printer_mental, kp.getZustandGeistigMax()));
grid.add(SWT.LEFT, SWT.BOTTOM, printPersonaCombatAttributes(persona), GridPrint.REMAINDER);
grid.add(new BreakPrint(), GridPrint.REMAINDER);
}
return grid;
}
/**
* Prints a condition monitor with the given number and name.
*
* @param persona
* @return
*/
protected Print printConditionMonitor(String monitorName, int number) {
DefaultGridLook look = new DefaultGridLook(2, 2);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("c:p,c:p,c:p,d", look);//$NON-NLS-1$
grid.add(SWT.LEFT, SWT.TOP, new TextPrint(monitorName, tableHeaderFontData), GridPrint.REMAINDER);
Border border = new LineBorder();
int col = number / 3;
for (int i = 0; i < col; i++) {
grid.add(SWT.DEFAULT, SWT.FILL, new BorderPrint(new TextPrint(ONE_SPACE), border), 1);
grid.add(SWT.DEFAULT, SWT.FILL, new BorderPrint(new TextPrint(ONE_SPACE), border), 1);
grid.add(SWT.DEFAULT, SWT.FILL, new BorderPrint(new TextPrint(ONE_SPACE), border), 1);
grid.add(SWT.DEFAULT, SWT.FILL, new TextPrint("-" + (i + 1) + ONE_SPACE), 1); //$NON-NLS-1$
}
int rest = number % 3;
for (int i = 0; i < rest; i++) {
grid.add(SWT.DEFAULT, SWT.TOP, new BorderPrint(new TextPrint(ONE_SPACE), border), 1);
}
grid.add(SWT.LEFT, SWT.TOP, new EmptyPrint(), GridPrint.REMAINDER);
return grid;
}
/**
* Prints all persona connections.
*
* @param persona
* @return
*/
private GridPrint printAllCharacterConnections(ManagedCharacter character) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d,d,d", look);//$NON-NLS-1$
if (character == null)
return grid;
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_connections, headFontData), GridPrint.REMAINDER);
grid.addHeader(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
grid.addHeader(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_loyality, tableHeaderFontData));
grid.addHeader(SWT.LEFT, SWT.DEFAULT, new TextPrint(Messages.Printer_influence, tableHeaderFontData));
//grid.addHeader(SWT.LEFT, SWT.DEFAULT, new TextPrint("---")); //$NON-NLS-1$
EList<Connection> connections = character.getConnections();
for (Connection connection : connections) {
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(itemDelegator.getText(connection), attributeFont), 2);
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printInteger(connection.getLoyality()), attributeFont));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printInteger(connection.getInfluence()), attributeFont));
// grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(toSimpleName(connection.getCharacter().getPersona()), attributeFont)); //$NON-NLS-1$
}
return grid;
}
/**
* Prints all skills usable from the persona.
*
* @param persona
* @return
*/
private Print printAllPersonaSkills(AbstraktPersona persona) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d,d,d,d", look);//$NON-NLS-1$
if (persona == null)
return grid;
grid.addHeader(SWT.LEFT, SWT.DEFAULT, new TextPrint(EMPTY, attributeFont));
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_skills, headFontData), 4);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
grid.addHeader(new TextPrint(Messages.Printer_attributes, tableHeaderFontData), 1);
grid.addHeader(new TextPrint(Messages.Printer_rtg, tableHeaderFontData), 1);
grid.addHeader(new TextPrint(Messages.Printer_dice_pool, tableHeaderFontData), 1);
List<Object> root = PersonaFertigkeitenWidget.createFertigkeitGroupsRoot(persona);
for (Object object : root) {
if (object instanceof FertigkeitsGruppe) {
FertigkeitsGruppe fg = (FertigkeitsGruppe)object;
// printGroup
PersonaFertigkeitsGruppe gruppe = ShadowrunTools.findGruppe(fg, persona);
String stufe = EMPTY;
if (gruppe != null) {
stufe = printInteger(gruppe.getStufe());
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(itemDelegator.getText(fg), attributeFont), 3);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(stufe, attributeFont), 1);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(EMPTY, attributeFont), 1);
}
List<Fertigkeit> fertigkeiten = fg.getFertigkeiten();
printFertigkeitList(grid, fertigkeiten, persona);
} else if (object instanceof GroupWrapper) {
GroupWrapper gw = (GroupWrapper)object;
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(gw.getName(), attributeFont), 3);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(EMPTY, attributeFont), 1);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(EMPTY, attributeFont), 1);
List<Fertigkeit> fertigkeiten = gw.getEntries();
printFertigkeitList(grid, fertigkeiten, persona);
}
}
return grid;
}
/**
* Prints all persona skills.
*
* @param persona
* @return
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected Print printPersonaSkills(AbstraktPersona persona) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d,d,d,d", look);//$NON-NLS-1$
if (persona == null)
return grid;
grid.addHeader(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_skills, headFontData), GridPrint.REMAINDER);
grid.addHeader(new TextPrint(Messages.Printer_Name, tableHeaderFontData), 2);
grid.addHeader(new TextPrint(Messages.Printer_attributes, tableHeaderFontData), 1);
grid.addHeader(new TextPrint(Messages.Printer_rtg, tableHeaderFontData), 1);
grid.addHeader(new TextPrint(Messages.Printer_dice_pool, tableHeaderFontData), 1);
List root = new ArrayList(persona.getFertigkeitsGruppen());
// root.addAll(persona.getFertigkeiten());
for (Object object : root) {
if (object instanceof FertigkeitsGruppe) {
FertigkeitsGruppe fg = (FertigkeitsGruppe)object;
// printGroup
PersonaFertigkeitsGruppe gruppe = ShadowrunTools.findGruppe(fg, persona);
String stufe = EMPTY;
if (gruppe != null) {
stufe = printInteger(gruppe.getStufe());
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(toSimpleName(fg), attributeFont), 3);
grid.add(SWT.RIGHT, new TextPrint(stufe, attributeFont), 1);
grid.add(SWT.RIGHT, new TextPrint(EMPTY, attributeFont), 1);
}
List<Fertigkeit> fertigkeiten = fg.getFertigkeiten();
printFertigkeitList(grid, fertigkeiten, persona);
}
}
printPersonaFertigkeitList(grid, persona);
return grid;
}
/**
* Prints the given list of Persona fertigkeiten
*
* @param grid
* @param persona
*/
private void printPersonaFertigkeitList(GridPrint grid, AbstraktPersona persona) {
List<PersonaFertigkeit> fertigkeiten = persona.getFertigkeiten();
printPersonaFertigkeitsList(grid, persona, fertigkeiten);
}
/**
* Pint the given list of {@link Fertigkeit}.
*
* @param grid
* @param persona
* @param fertigkeiten
*/
private void printPersonaFertigkeitsList(GridPrint grid, AbstraktPersona persona, List<PersonaFertigkeit> fertigkeiten) {
for (PersonaFertigkeit pfertigkeit : fertigkeiten) {
Fertigkeit fertigkeit = pfertigkeit.getFertigkeit();
if (fertigkeit == null)
continue;
Integer value = ShadowrunTools.fertigkeitDicePoolValue(pfertigkeit, persona);
Integer fertigkeitValue = pfertigkeit.getStufe();
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(toFertigkeitAndSpec(pfertigkeit), attributeFont), 2);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(toName(fertigkeit.getAttribut()), attributeFont), 1);
grid.add(SWT.RIGHT, new TextPrint(printInteger(fertigkeitValue), attributeFont), 1);
grid.add(SWT.RIGHT, new TextPrint(printInteger(value), attributeFont), 1);
}
}
/**
* Print the fertigkeit name and the spec.
*
* @param pfertigkeit
* @return
*/
private String toFertigkeitAndSpec(PersonaFertigkeit pfertigkeit) {
if (pfertigkeit == null)
return EMPTY;
String simpleName = toSimpleName(pfertigkeit.getFertigkeit());
if (!pfertigkeit.getSpezialisierungen().isEmpty())
simpleName = simpleName + ONE_SPACE + toName(pfertigkeit.getSpezialisierungen());// .toString();
return simpleName;
}
/**
* Prints the given list of fertigkeiten. And fills the values of the persona fertigkeit if available.
*
* @param grid
* @param fertigkeiten
* @param persona
*/
private void printFertigkeitList(GridPrint grid, List<Fertigkeit> fertigkeiten, AbstraktPersona persona) {
if (persona == null)
return;
final EList<EAttribute> eAllAttributes = persona.eClass().getEAllAttributes();
for (Fertigkeit fertigkeit : fertigkeiten) {
if (!eAllAttributes.contains(fertigkeit.getAttribut()))
continue;
Integer value = (Integer)persona.eGet(fertigkeit.getAttribut());
Integer fertigkeitValue = ShadowrunTools.findFertigkeitValue(fertigkeit, persona);
if (fertigkeitValue < 1 && !fertigkeit.isAusweichen()) {
continue;
} else {
value = value + fertigkeitValue;
}
PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(fertigkeit, persona);
if (personaFertigkeit != null)
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(toFertigkeitAndSpec(personaFertigkeit), attributeFont), 2);
else
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(toSimpleName(fertigkeit), attributeFont), 2);
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(toName(fertigkeit.getAttribut()), attributeFont), 1);
grid.add(SWT.RIGHT, new TextPrint(printInteger(fertigkeitValue), attributeFont), 1);
grid.add(SWT.RIGHT, new TextPrint(printInteger(value), attributeFont), 1);
}
}
/**
* Prints the attributes in one block.
*
* @param persona
* @return
*/
protected Print printPersonaCombatAttributes(AbstraktPersona persona) {
DefaultGridLook look = new DefaultGridLook(10, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d:g", look);//$NON-NLS-1$
if (persona == null)
return grid;
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(EMPTY));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_combat_info, headFontData), 1);
GridPrint grid1 = new GridPrint("d:g,r:d", look);//$NON-NLS-1$
grid1.add(new TextPrint(Messages.Printer_doge, attributeFont));
grid1.add(new TextPrint(printInteger(persona.getAusweichen()), attributeFont));
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
grid1.add(new TextPrint(Messages.Printer_armor, attributeFont));
grid1.add(SWT.RIGHT, new TextPrint(printInteger(kp.getPanzer()), attributeFont));
grid1.add(new TextPrint(Messages.PersonaPrinter_Overflow_damage, attributeFont));
grid1.add(SWT.RIGHT, new TextPrint(printInteger(kp.getZustandGrenze()), attributeFont));
}
if (persona instanceof Zauberer) {
Zauberer z = (Zauberer)persona;
grid1.add(new TextPrint("Drain", attributeFont));
grid1.add(SWT.RIGHT, new TextPrint(printInteger(z.getEnzug()), attributeFont));
}
grid.add(grid1, 2);
return grid;
}
/**
* Prints the attributes in one block.
*
* @param persona
* @return
*/
protected Print printPersonaAttributes(AbstraktPersona persona) {
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
if (persona == null)
return grid;
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(EMPTY));
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_attributes, headFontData), 1);
GridPrint grid1 = new GridPrint("d,d,d,r:d", look);//$NON-NLS-1$
printeAttributes(persona, grid1, ShadowrunTools.getOrderedAttibutes(persona));
// printeAttributes(persona, grid1, Shr5Package.Literals.KOERPERLICHE_ATTRIBUTE.getEAttributes());
// printeAttributes(persona, grid1, Shr5Package.Literals.GEISTIGE_ATTRIBUTE.getEAttributes());
// grid1.add(new TextPrint(Messages.Printer_edge, attributeFont), 2);
// grid1.add(new TextPrint(printInteger(persona.getEdgeBasis()), attributeFont), 1);
grid1.add(new TextPrint(EMPTY, attributeFont), 1);
grid.add(grid1);
GridPrint grid2 = new GridPrint("d,d,d,r:d", look);//$NON-NLS-1$
grid2.add(new TextPrint(Messages.Printer_essence, attributeFont), 3);
grid2.add(new TextPrint(essenzToFloat(persona.getEssenz()), attributeFont), 1);
grid2.add(new TextPrint(Messages.Printer_ini, attributeFont), 3);
grid2.add(new TextPrint(toIni(persona.getInitative(), persona.getInitativWuerfel()), attributeFont), 1);
if (persona instanceof AstraleProjektion) {
AstraleProjektion ap = (AstraleProjektion)persona;
grid2.add(new TextPrint(Messages.Printer_ast_ini, attributeFont), 3);
grid2.add(new TextPrint(toIni(ap.getAstraleInitative(), ap.getAstraleInitativWuerfel()), attributeFont), 1);
}
grid2.add(new TextPrint(Messages.Printer_composure, attributeFont), 3);
grid2.add(new TextPrint(printInteger(persona.getWillenskraft() + persona.getCharisma()), attributeFont), 1);
grid2.add(new TextPrint(Messages.Printer_juge_intetion, attributeFont), 3);
grid2.add(new TextPrint(printInteger(persona.getIntuition() + persona.getCharisma()), attributeFont), 1);
grid2.add(new TextPrint(Messages.Printer_memory, attributeFont), 3);
grid2.add(new TextPrint(printInteger(persona.getWillenskraft() + persona.getLogik()), attributeFont), 1);
grid2.add(new TextPrint(Messages.Printer_lift_carry, attributeFont), 3);
grid2.add(new TextPrint(printLiftCarry(persona), attributeFont), 1);
grid2.add(new TextPrint(Messages.Printer_movement, attributeFont), 3);
grid2.add(new TextPrint(printMovement(persona), attributeFont), 1);
// grid2.add(new TextPrint("Ini", attributeFont), 3);
// grid2.add(new TextPrint(toIni(persona), attributeFont), 1);
// printeAttributes(persona, grid2, Shr5Package.Literals.SPEZIELLE_ATTRIBUTE.getEAttributes());
grid.add(grid2);
if (persona instanceof KoerperPersona) {
KoerperPersona kp = (KoerperPersona)persona;
GridPrint grid3 = new GridPrint("d,d,d,d,d,d", look);//$NON-NLS-1$
grid3.add(new TextPrint(Messages.Printer_physical_limit, attributeFont));
grid3.add(new TextPrint(printInteger(kp.getKoerperlich()), attributeFont));
grid3.add(new TextPrint(Messages.Printer_mental_limit, attributeFont));
grid3.add(new TextPrint(printInteger(kp.getGeistig()), attributeFont));
grid3.add(new TextPrint(Messages.Printer_social_limit, attributeFont));
grid3.add(new TextPrint(printInteger(kp.getSozial()), attributeFont));
grid.add(grid3, 2);
}
return grid;
}
private String printLiftCarry(AbstraktPersona persona) {
if (persona == null)
return EMPTY;
int staerke = persona.getStaerke();
return String.format("%dkg/%dkg", staerke * 15, staerke * 10);//$NON-NLS-1 //$NON-NLS-1$ //$NON-NLS-1$ //$NON-NLS-1$
}
/**
* print the movement to string.
*
* @param persona
* @return
*/
private String printMovement(AbstraktPersona persona) {
if (persona == null)
return EMPTY;
Spezies spezies = persona.getSpezies();
if (spezies != null) {
int geschicklichkeit = persona.getGeschicklichkeit();
return String.format("%d/%d/+%d", geschicklichkeit * spezies.getLaufen(), geschicklichkeit * spezies.getRennen(), spezies.getSprinten());//$NON-NLS-1$
}
return EMPTY;
}
/**
* Prints the ini.
*
* @param persona
* @return
*/
private String toIni(int initative, int initativWuerfel) {
return initative + " + " + initativWuerfel + "W";//$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Create a float string from an int with base 100.
*
* @param essenz
* @return
*/
private String essenzToFloat(int essenz) {
return ShadowrunEditingTools.essenzToFloat(essenz);
}
/**
* Print the basic info like name and karma and the image.
*
* @param character
* @return
*/
private Print printPersonaData(ManagedCharacter character) {
AbstraktPersona persona = character.getPersona();
DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid = new GridPrint("d,d,d,d,d,d", look);//$NON-NLS-1$
if (persona == null)
return grid;
grid.add(new TextPrint(Messages.Printer_Name, attributeFont));
grid.add(new TextPrint(toSimpleName(persona), attributeFont), 3);
grid.add(new TextPrint(Messages.Printer_sex, attributeFont));
grid.add(new TextPrint(toName(character.getSex(), character, Shr5managementPackage.Literals.MANAGED_CHARACTER__SEX), attributeFont));
grid.add(new TextPrint(Messages.Printer_meta, attributeFont));
grid.add(new TextPrint(toSimpleName(persona.getSpezies()), attributeFont), 2);
grid.add(new TextPrint(Messages.Printer_nativ, attributeFont));
grid.add(new TextPrint(toSimpleName(character.getNativeLanguage()), attributeFont), 2);
grid.add(new TextPrint(Messages.Printer_street_cred, attributeFont));
grid.add(new TextPrint(printInteger(character.getStreetCred()), attributeFont), 1);
grid.add(new TextPrint(Messages.Printer_notoriety, attributeFont));
grid.add(new TextPrint(printInteger(character.getNotoriety()), attributeFont), 1);
grid.add(new TextPrint(Messages.Printer_prom, attributeFont));
grid.add(new TextPrint(printInteger(character.getPublicAwareness()), attributeFont), 1);
grid.add(new TextPrint(Messages.Printer_karma, attributeFont));
grid.add(new TextPrint(printInteger(character.getCurrentKarma()), attributeFont), 1);
grid.add(new TextPrint(Messages.Printer_karma_total, attributeFont));
grid.add(new TextPrint(printInteger(character.getKarmaGaint()), attributeFont), 1);
// DefaultGridLook look = new DefaultGridLook(5, 5);
look.setHeaderGap(5);
GridPrint grid1 = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
grid1.add(new EmptyPrint());
Image imageScaledBy = AdapterFactoryUtil.getInstance().getImageScaledBy(BIG_SCALE, persona.getImage());
if (imageScaledBy != null) {
grid1.add(SWT.RIGHT, SWT.TOP, new ImagePrint(imageScaledBy.getImageData()));
}
look.setHeaderGap(5);
GridPrint outerGrid = new GridPrint("d:g,d:g", look);//$NON-NLS-1$
outerGrid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(EMPTY, attributeFont));
outerGrid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(Messages.Printer_data, headFontData));
outerGrid.add(grid);
outerGrid.add(grid1);
if (store.getBoolean(PreferenceConstants.PRINT_PERSONA_DECRIPTION)) {
outerGrid.add(new LinePrint(), GridPrint.REMAINDER);
outerGrid.add(new TextPrint(printString(persona.getBeschreibung()), attributeFont), GridPrint.REMAINDER);
}
return outerGrid;
}
/**
* Simple Print a set of attributes.
*
* @param persona
* @param grid
* @param eAttributes
*/
private void printeAttributes(AbstraktPersona persona, GridPrint grid, List<EAttribute> eAttributes) {
if (persona == null)
return;
for (EAttribute eAttribute : eAttributes) {
EAttribute base2Calced = ShadowrunTools.base2Calced(eAttribute);
if (base2Calced == null)
continue;
// String attName = itemDelegator.getText(base2Calced);
String attName = toFeatureName(persona, base2Calced);
Integer value = (Integer)persona.eGet(eAttribute);
Integer calc = (Integer)persona.eGet(base2Calced);
String a = EMPTY;
if (value != calc)
a = "(" + calc + ")";
grid.add(SWT.LEFT, SWT.DEFAULT, new TextPrint(attName, attributeFont), 2);
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(printInteger(value), attributeFont), 1);
grid.add(SWT.RIGHT, SWT.DEFAULT, new TextPrint(a, attributeFont), 1);
}
}
}