diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java index cae2a9f89d1..6deb251355e 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java @@ -10,6 +10,7 @@ import forge.Graphics; import forge.animation.ForgeAnimation; import forge.assets.FImage; import forge.assets.FSkinColor; +import forge.assets.FSkinImage; import forge.card.CardDetailUtil; import forge.card.CardRenderer; import forge.card.CardDetailUtil.DetailColors; @@ -23,6 +24,7 @@ import forge.planarconquest.ConquestLocation; import forge.planarconquest.ConquestPlane; import forge.planarconquest.ConquestPlane.Region; import forge.planarconquest.ConquestPlaneData; +import forge.planarconquest.ConquestRecord; import forge.screens.FScreen; import forge.screens.LoadingOverlay; import forge.toolbox.FScrollPane; @@ -112,6 +114,8 @@ public class ConquestMultiverseScreen extends FScreen implements IConquestEventL int rows = Region.ROWS_PER_REGION; float colWidth = w / cols; float rowHeight = regionHeight / rows; + float eventIconSize = Math.min(colWidth, rowHeight) / 3; + float eventIconOffset = Math.round(eventIconSize * 0.1f); ConquestPlane plane = model.getCurrentPlane(); FCollectionView regions = plane.getRegions(); @@ -161,7 +165,31 @@ public class ConquestMultiverseScreen extends FScreen implements IConquestEventL //draw event icon and overlay based on event record for each event in the region for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { - if (!planeData.hasConquered(i, r, c)) { + x0 = x + c * colWidth; + y0 = y + (rows - r - 1) * rowHeight; + + ConquestRecord eventRecord = planeData.getEventRecord(i, r, c); + if (eventRecord != null && eventRecord.getWins() > 0) { + //draw badge in upper-right corner of conquered squares + FSkinImage badge; + switch (eventRecord.getTier()) { + case 1: + badge = FSkinImage.PW_BADGE_COMMON; + break; + case 2: + badge = FSkinImage.PW_BADGE_UNCOMMON; + break; + case 3: + badge = FSkinImage.PW_BADGE_RARE; + break; + default: + badge = FSkinImage.PW_BADGE_MYTHIC; + break; + } + //shift slightly right to account for transparent edge of icon + g.drawImage(badge, Math.round(x0 + colWidth - eventIconOffset - eventIconSize * 0.9f), Math.round(y0 + eventIconOffset), eventIconSize, eventIconSize); + } + else { //draw fog of war by default if area hasn't been conquered color = FOG_OF_WAR_COLOR; @@ -178,7 +206,7 @@ public class ConquestMultiverseScreen extends FScreen implements IConquestEventL } } - g.fillRect(color, x + c * colWidth, y + (rows - r - 1) * rowHeight, colWidth, rowHeight); + g.fillRect(color, x0, y0, colWidth, rowHeight); } } } diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java b/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java index b5d6558557c..dbb5d0f24c3 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java @@ -8,16 +8,22 @@ import forge.planarconquest.ConquestController.GameRunner; public abstract class ConquestEvent { private final ConquestLocation location; + private final int tier; private Deck opponentDeck; - public ConquestEvent(ConquestLocation location0) { + public ConquestEvent(ConquestLocation location0, int tier0) { location = location0; + tier = tier0; } public ConquestLocation getLocation() { return location; } + public int getTier() { + return tier; + } + public Deck getOpponentDeck() { if (opponentDeck == null) { opponentDeck = buildOpponentDeck(); diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java b/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java index 18d3501cd2f..8948d177727 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java @@ -115,7 +115,7 @@ public class ConquestLocation implements IXmlWritable { public ConquestEvent getEvent() { //TODO: Make this pull from predefined events - return new ConquestEvent(this) { + return new ConquestEvent(this, 1) { private final PaperCard commander = Aggregates.random(getRegion().getCommanders()); @Override diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestPlaneData.java b/forge-gui/src/main/java/forge/planarconquest/ConquestPlaneData.java index d1ce811f293..039297b04fb 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestPlaneData.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestPlaneData.java @@ -38,6 +38,13 @@ public class ConquestPlaneData implements IXmlWritable { return result != null && result.getWins() > 0; } + public ConquestRecord getEventRecord(ConquestLocation loc) { + return getEventRecord(loc.getRegionIndex(), loc.getRow(), loc.getCol()); + } + public ConquestRecord getEventRecord(int regionIndex, int row, int col) { + return eventResults[regionIndex * Region.ROWS_PER_REGION * Region.COLS_PER_REGION + row * Region.COLS_PER_REGION + col]; + } + private ConquestRecord getOrCreateResult(ConquestEvent event) { ConquestLocation loc = event.getLocation(); int index = loc.getRegionIndex() * Region.ROWS_PER_REGION * Region.COLS_PER_REGION + loc.getRow() * Region.COLS_PER_REGION + loc.getCol(); @@ -50,7 +57,7 @@ public class ConquestPlaneData implements IXmlWritable { } public void addWin(ConquestEvent event) { - getOrCreateResult(event).addWin(); + getOrCreateResult(event).addWin(event.getTier()); } public void addLoss(ConquestEvent event) { diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestRecord.java b/forge-gui/src/main/java/forge/planarconquest/ConquestRecord.java index cdae6905f71..03e6747886a 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestRecord.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestRecord.java @@ -5,7 +5,7 @@ import forge.util.XmlWriter; import forge.util.XmlWriter.IXmlWritable; public class ConquestRecord implements IXmlWritable { - private int wins, losses, level; + private int wins, losses, tier; public ConquestRecord() { } @@ -13,13 +13,13 @@ public class ConquestRecord implements IXmlWritable { public ConquestRecord(XmlReader xml) { wins = xml.read("wins", 0); losses = xml.read("losses", 0); - level = xml.read("level", 0); + tier = xml.read("tier", 0); } @Override public void saveToXml(XmlWriter xml) { xml.write("wins", wins); xml.write("losses", losses); - xml.write("level", level); + xml.write("tier", tier); } public int getWins() { @@ -30,19 +30,18 @@ public class ConquestRecord implements IXmlWritable { return losses; } - public int getLevel() { - return level; + public int getTier() { + return tier; } - public void addWin() { + public void addWin(int tier0) { wins++; + if (tier0 > tier) { + tier = tier0; + } } public void addLoss() { losses++; } - - public void levelUp() { - level++; - } }