Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace vehicle fluff art with cluster table when condensed reference tables enabled #1562

Merged
merged 2 commits into from
Jul 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
title=CLUSTER HITS TABLE
dieRoll2d6=Die Roll\n(2D6)
2d6=2D6
artemisIV.note=Artemis IV FCS: +2
artemisV.note=Artemis V FCS: +3
artemisProto.note=Prototype Artemis FCS: +1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ protected List<ReferenceTable> getRightSideReferenceTables() {
} else {
list.add(new NotesTable(this, 12));
}
ClusterHitsTable table = new ClusterHitsTable(this, tank1);
ClusterHitsTable table = new ClusterHitsTable(this, tank1, false);
if (table.required()) {
list.add(table);
}
Expand Down
2 changes: 1 addition & 1 deletion megameklab/src/megameklab/printing/PrintMech.java
Original file line number Diff line number Diff line change
Expand Up @@ -815,7 +815,7 @@ protected List<ReferenceTable> getRightSideReferenceTables() {
list.add(new PunchLocation(this));
list.add(new KickLocation(this));
list.add(new MekFallTable(this));
ClusterHitsTable table = new ClusterHitsTable(this);
ClusterHitsTable table = new ClusterHitsTable(this, false);
if (table.required()) {
list.add(table);
}
Expand Down
4 changes: 2 additions & 2 deletions megameklab/src/megameklab/printing/PrintSmallUnitSheet.java
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ protected List<ReferenceTable> getRightSideReferenceTables() {
list.add(new AntiMekAttackTable(this));
list.add(new SwarmAttackHitLocation(this));
}
ClusterHitsTable table = new ClusterHitsTable(this, entities);
ClusterHitsTable table = new ClusterHitsTable(this, entities, false);
if (table.required() && table.columnCount() <= 10) {
list.add(table);
}
Expand All @@ -169,7 +169,7 @@ protected List<ReferenceTable> getRightSideReferenceTables() {
@Override
protected void addReferenceCharts(PageFormat pageFormat) {
super.addReferenceCharts(pageFormat);
ClusterHitsTable clusterTable = new ClusterHitsTable(this, entities);
ClusterHitsTable clusterTable = new ClusterHitsTable(this, entities, false);
if (clusterTable.columnCount() > 10) {
printBottomTable(clusterTable, pageFormat);
} else {
Expand Down
28 changes: 21 additions & 7 deletions megameklab/src/megameklab/printing/PrintTank.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.w3c.dom.svg.SVGRectElement;

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.print.PageFormat;
import java.io.File;
import java.util.*;
Expand Down Expand Up @@ -192,13 +193,26 @@ public String formatFeatures() {

@Override
protected void drawFluffImage() {
Image fluffImage = getFluffImage();
if (null != fluffImage) {
Element rect = getSVGDocument().getElementById(FLUFF_IMAGE);
if (rect instanceof SVGRectElement) {
embedImage(fluffImage, (Element) rect.getParentNode(), getRectBBox((SVGRectElement) rect), true);
Element rect = getSVGDocument().getElementById(FLUFF_IMAGE);
if (rect instanceof SVGRectElement) {
if (!options.showCondensedReferenceCharts()) {
Image fluffImage = getFluffImage();
if (null != fluffImage) {
embedImage(fluffImage, (Element) rect.getParentNode(), getRectBBox((SVGRectElement) rect), true);
hideElement(getSVGDocument().getElementById(NOTES));
}
} else {
var table = new ClusterHitsTable(this, true);
if (!table.required()) {
return;
}
Rectangle2D bbox = getRectBBox((SVGRectElement) rect);
placeReferenceCharts(
List.of(table),
rect.getParentNode(), bbox.getX() - 3.0, bbox.getY() - 6.0,
bbox.getWidth() + 6.0, bbox.getHeight() + 12.0);
hideElement(getSVGDocument().getElementById(NOTES));
}
hideElement(getSVGDocument().getElementById(NOTES));
}
}

Expand All @@ -212,7 +226,7 @@ protected List<ReferenceTable> getRightSideReferenceTables() {
List<ReferenceTable> list = new ArrayList<>();
list.add(new GroundToHitMods(this));
list.add(new MovementCost(this));
ClusterHitsTable table = new ClusterHitsTable(this);
ClusterHitsTable table = new ClusterHitsTable(this, false);
if (table.required()) {
list.add(table);
}
Expand Down
21 changes: 16 additions & 5 deletions megameklab/src/megameklab/printing/reference/ClusterHitsTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,36 @@
import megamek.common.weapons.missiles.MissileWeapon;
import megameklab.printing.PrintEntity;
import megameklab.printing.PrintRecordSheet;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.*;

/**
* Table showing the relevant columns of the cluster hits table
*/
public class ClusterHitsTable extends ReferenceTable {
private static final Logger log = LogManager.getLogger(ClusterHitsTable.class);
protected final Set<Integer> clusterSizes = new TreeSet<>();
protected boolean hasATM;
protected boolean hasHAG;
protected boolean condensed;

public ClusterHitsTable(PrintEntity sheet) {
this(sheet, sheet.getEntity());
public ClusterHitsTable(PrintEntity sheet, boolean condensed) {
this(sheet, sheet.getEntity(), condensed);
}

public ClusterHitsTable(PrintRecordSheet sheet, Entity entity) {
public ClusterHitsTable(PrintRecordSheet sheet, Entity entity, boolean condensed) {
super(sheet);
this.condensed = condensed;
calculateClusterSizes(entity);
addTable(entity);
}

public ClusterHitsTable(PrintRecordSheet sheet, List<Entity> entities) {
public ClusterHitsTable(PrintRecordSheet sheet, List<Entity> entities, boolean condensed) {
super(sheet);
this.condensed = condensed;
for (Entity en : entities) {
calculateClusterSizes(en);
}
Expand All @@ -59,7 +66,11 @@ protected void addTable(Entity entity) {
}
setColOffsets(offsets);
List<String> headers = new ArrayList<>();
headers.add(bundle.getString("dieRoll2d6"));
if (!condensed) {
headers.add(bundle.getString("dieRoll2d6"));
} else {
headers.add(bundle.getString("2d6"));
}
for (int size : clusterSizes) {
headers.add(String.valueOf(size));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
public class MekLocationAndClusterTable extends ClusterHitsTable {

public MekLocationAndClusterTable(PrintEntity sheet) {
super(sheet);
super(sheet, true);
}

@Override
Expand Down