update desktop editor

This commit is contained in:
Anthony Calosa
2024-11-13 13:43:47 +08:00
parent 31abd61a3f
commit 8fd521b949
5 changed files with 27 additions and 1 deletions

View File

@@ -436,6 +436,9 @@ public class CardView extends GameEntityView {
public List<String> getChosenColorSpire() {
return get(TrackableProperty.ChosenColorSpire);
}
public void updateChosenColorSpire(List<String> chosen) {
set(TrackableProperty.ChosenColorSpire, chosen);
}
void updateChosenColorSpire(Card c) {
set(TrackableProperty.ChosenColorSpire, c.getChosenColorSpire());
}

View File

@@ -30,6 +30,7 @@ import javax.swing.SwingUtilities;
import com.google.common.collect.Iterables;
import forge.card.MagicColor;
import forge.deck.CardPool;
import forge.deck.Deck;
import forge.deck.DeckBase;
@@ -65,6 +66,7 @@ import forge.toolbox.FLabel;
import forge.toolbox.FSkin;
import forge.util.Aggregates;
import forge.util.ItemPool;
import forge.util.Lang;
import forge.util.Localizer;
import forge.view.FView;
@@ -576,5 +578,23 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
InputEvent.SHIFT_DOWN_MASK | Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
InputEvent.ALT_DOWN_MASK | Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
}
public void addSetColorSpire() {
String label = localizer.getMessage("lblColorIdentity");
CardManager cardManager = (CardManager) CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckManager();
PaperCard existingCard = cardManager.getSelectedItem();
if (!"Cryptic Spires".equalsIgnoreCase(existingCard.getCardName()))
return;
GuiUtils.addMenuItem(menu, label, null, () -> {
List<String> colors = GuiChoose.getChoices(localizer.getMessage("lblChooseNColors", Lang.getNumeral(2)), 2, 2, MagicColor.Constant.ONLY_COLORS);
// make a foiled version based on the original
PaperCard updated = existingCard.getSpireVersion(colors);
// remove *quantity* instances of existing card
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, 1);
// add *quantity* into the deck and set them as selected
cardManager.addItem(updated, 1);
cardManager.setSelectedItem(updated);
}, true, true);
}
}
}

View File

@@ -375,6 +375,7 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
if (foilAvailable) {
cmb.addMakeFoils();
}
cmb.addSetColorSpire();
}
/* (non-Javadoc)

View File

@@ -69,6 +69,8 @@ public class CDetailPicture {
c.getCurrentState().setFoilIndexOverride(1);
}
}
if (paperCard.getSpireColors() != null && c.getChosenColorSpire() == null)
c.updateChosenColorSpire(paperCard.getSpireColors());
showCard(c, isDisplayAlt);
} else {
currentView = null;

View File

@@ -1154,7 +1154,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
}
// spire colors
if (!spireColor.isEmpty()) {
textRenderer.drawText(g, spireColor.toString(), FSkinFont.forHeight(w / 5), Color.WHITE, x, y, w, h, y, h, false, Align.center, true);
textRenderer.drawText(g, spireColor.toString(), FSkinFont.forHeight(w / 5), Color.WHITE, x, y + h / 4, w, h, y, h, false, Align.center, true);
}
} else if (item instanceof ConquestCommander) {
CardRenderer.drawCard(g, ((ConquestCommander) item).getCard(), x, y, w, h, pos);