Skip to content

Commit

Permalink
Update to latest XMage (#1)
Browse files Browse the repository at this point in the history
* [STX] Implemented Promising Duskmage

* fixed Blatant Thievery test failure

* [STX] fixed a verify error

* [STX] Pest Summoning - Fixed using wrong token

* [STX] Implemented Beledros Witherbloom

* [KHM] fixed Roots of Wisdom being able to target any card

* [STX] Implemented Honor Troll

* [STX] Implemented Teachings of the Archaics

* [STX] Implemented Tend the Pests

* [STX] Implemented Tome Shredder

* [STX] updated spoiler

* [STX] updated spoiler

* [STX] Implemented Killian, Ink Duelist

* [STX] Implemented Biblioplex Assistant

* [C21] updated spoiler

* [C21] Implemented Excavation Technique

* [C21] Implemented Angel of the Ruins

* [C21] Implemented Monologue Tax

* [STX] Implemented Zimone, Quandrix Prodigy

* [STX] Implemented Zephyr Boots

* [STX] Implemented Spell Satchel

* [STX] Implemented Brackish Trudge

* [STX] Implemented Spiteful Squad

* [C21] updated spoiler and reprints

* [STX] Implemented Galazeth Prismari

* [STX] Implemented Hall of Oracles

* [STX] Implemented Pillardrop Warden

* [STX] Implemented Ardent Dustspeaker (magefree#7717)

* [STX] Implemented Ardent Dustspeaker

* Declare filter as static

* fix: attack ability trigger for opponent creatures (magefree#7697)

The checkTrigger of ZurzothChaosRiderAttackAbility wasn't filtering creatures controlled by Zurzoth's controller

* Fixed compile warning

* [STX] Implemented Blex, Vexing Pest (magefree#7719)

* [STX] Implemented Daemogoth Woe-Eater

* [STX] Implemented Culling Ritual

* [STX] Implemented Mortality Spear

* [STX] Implemented Oriq Loremage

* [STX] Implemented Rushed Rebirth

* [STX] Implemented Silverquill Silencer

* [STX] Implemented Harness Infinity

* [C21] Implemented Bronze Guardian

* [C21] Implemented Adrix and Nev, Twincasters

* [STX] Implemented Willowdusk, Essence Seer

* [C21] updated spoiler and reprints

* [C21] Implemented Veyran, Voice of Duality

* [C21] Implemented Inferno Project

* [C21] Implemented Digsite Engineer

* [C21] Implemented Audacious Reshapers

* [STX] Implemented Mage Hunters' Onslaught

* [STX] Implemented Mercurial Transformation

* [STX] Implemented Deadly Brew

* [STX] Implemented Maelstrom Muse

* [STX] Implemented Infuse with Vitality

* [STX] Implemented Bookwurm

* [STX] Implemented Explosive Welcome

* [STX] Implemented Reject

* [STX] Implemented Test of Talents

* [STX] Implemented Make Your Mark

* fixed an error

* [STX] Implemented Retriever Phoenix

* [STX] Implemented Emergent Sequence

* [C21] updated spoiler

* [STX] Implemented Dina, Soul Steeper

* [C21] Implemented Deekah, Fractal Theorist

* [C21] Implemented Fiery Encore

* [C21] Implemented Guardian Augmenter

* [C21] Implemented Paradox Zone

* [C21] Implemented Oversimplify

* [C21] Implemented Replication Technique

* [C21] Implemented Archaeomancer's Map

* [C21] Implemented Sequence Engine

* [C21] Implemented Perplexing Test

* [C21] Implemented Reinterpret

* [C21] Implemented Octavia, Living Thesis

* [C21] Implemented Spawning Kraken

* [C21] Implemented Curiosity Crafter

* [STX] Implemented Inspiring Refrain

* [C21] Implemented Rousing Refrain

* fixed a test failure

* [STX] Implemented Dramatic Finale

* [C21] updated spoiler and reprints

* [C21] Implemented Incarnation Technique

* additional test fix

* [STX] Implemented Dragon's Approach

* [STX] Implemented Draconic Intervention

* [STX] Implemented Flamescroll Celebrant // Revel in Silence

* [STX] Implemented The Biblioplex

* [STX] Implemented Detention Vortex

* [STX] add more cards (magefree#7720)

* implement AcademicProbation
* implement AugmenterPugilist // EchoingEquation
* Implement BalefulMastery
* implement BasicConjuration
* implement ClosingStatement
* Test framework: added custom effect to return card from any zone to hand;

Co-authored-by: Oleg Agafonov <[email protected]>

* [STX] Implemented Devastating Mastery

* [STX] Implemented Fervent Mastery

* [C21] updated spoiler and reprints

* [C21] updated spoiler and reprints

* [C21] Implemented Pest Infestation

* [C21] Implemented Revival Experiment

* [C21] Implemented Witch's Clinic

* [C21] Implemented Trudge Garden

* [C21] Implemented Veinwitch Coven

* [C21] Implemented Healing Technique

* [C21] Implemented Tivash, Gloom Summoner

* added life gain hints to various cards

* [STX] Implemented Reflective Golem

* [STX] Implemented Velomachus Lorehold

* [STX] Implemented Elemental Expression

* [STX] Implemented Mage Duel

* [STX] Implemented Pestilent Cauldron / Restorative Burst

* fixed a test failure

* [STX] Implement Conspiracy Theorist (magefree#7728)

* [STX] Implement Conspiracy Theorist

* removed temporary test skips

* [STX] Implemented Plumb the Forbidden

* [STX] Implemented Ingenious Mastery

* [STX] Implemented Show of Confidence

* [STX] Implement Devouring Tendrils (magefree#7731)

* [STX] Implement Devouring Tendrils

* [ODY] fixed Aven Windreader effect magefree#7733

* [STX] Implemented Wandering Archaic / Explore the Vastlands

* [STX] Implemented Extus, Oriq Overlord / Awaken the Blood Avatar

* [STX] Implemented Jadzi, Oracle of Arcavios / Journey to the Oracle

* [ODY] fixed Skyshooter not sacrificing itself to activate (fixes magefree#7738)

* [STX] Implemented Expressive Iteration

* [C21] Implemented Alibou, Ancient Witness

* [C21] Implemented Ruin Grinder

* [KHM] fixed Spectral Deluge counting Islands controlled by other players (fixes magefree#7739)

* [C21] Implemented Blight Mound

* added new EachTargetPointer object

* [C21] Implemented Ezzaroot Channeler

* [C21] Implemented Essence Pulse

* [C21] Implemented Triplicate Titan

* [C21] Implemented Felisa, Fang of Silverquill

* [C21] Implemented Ruxa, Patient Professor

* [STX] Implemented Codie, Vociferous Codex

* [C21] Implemented Blossoming Bogbeast

* [C21] Implemented Creative Technique

* [C21] Implemented Fain, the Broker

* [C21] Implemented Gyome, Master Chef

* [C21] Implemented Keen Duelist

* [C21] updated spoiler and reprints

* [STX] Implemented Verdant Mastery

* [STX] Implemented Mila, Crafty Companion / Lukka, Wayward Bonder

* [STX] Implemented Rowan, Scholar of Sparks / Will, Scholar of Frost

* [STX] Implemented Strixhaven Stadium

* [STX] Implemented Radiant Scrollwielder

* [STX] Implemented Hofri Ghostforge

* [C21] Implemented Wake the Past

* [STX] Implement Ecological Appreciation (magefree#7732)

* [STX] Implement Ecological Appreciation

* Add possibility to play less rounds of swiss than xmage suggests (magefree#7729)

* Make it possible to adjust the number of rounds in a swiss tournament to be less than the number of rounds suggested by xmage.

Co-authored-by: sprangg <[email protected]>
Co-authored-by: Oleg Agafonov <[email protected]>

* [C21] Implemented Esix, Fractal Bloom

* [C21] Implemented Inkshield

* [C21] Implemented Nils, Discipline Enforcer

* [C21] Implemented Cursed Mirror

* [C21] Implemented Rionya, Fire Dancer

* [C21] Implemented Zaffai, Thunder Conductor

* [C21] Implemented Scholarship Sponsor

* [C21] Implemented Dazzling Sphinx

* [C21] Implemented Commander's Insight

* [STX] Implemented Mavinda, Students' Advocate

* [STX] fixed Silverquill Command mode not targeting (fixes magefree#7743)

* [STX] fixed Star Pupil not adding counters (fixes magefree#7744)

* [STX] Implemented Elite Spellbinder

* [STX] Semester's End

* [C21] Implemented Tempting Contract

* [C21] Implemented Stinging Study

* [STX] Implemented Strict Proctor

* [STX] Implemented Shadrix Silverquill

* [STX] [C21] updated spoiler

* [STX] Implement Efreet Flamepainter (magefree#7747)

* [STX] Implement Efreet Flamepainter

* Add null check

* Target needs to be chosen before ability resolution

* [READY FOR REVIEW] Implement a "multi-amount" dialog  (magefree#7528)

* Implemented chooseTargetAmount and new GUI dialog (distribute damage, distribute mana)
* Added tests and AI support;
* Test framework: added aliases support in TargetAmount dialogs;

Co-authored-by: Oleg Agafonov <[email protected]>

* [STX] Implemented Uvilda, Dean of Perfect / Nassari, Dean of Expression

* [STX] fixed Rushed Rebirth delayed ability not triggering (fixes magefree#7765)

* removed deprecated method for adding delayed triggered abilities

* [STX] fixed Plumb the Forbidden ability not triggering (fixes magefree#7755)

* [STX] Implement Selfless Glyphweaver (magefree#7754)

* [STX] Implement Selfless Glyphweaver

* static filter, choose on resolution

* [STX] added null check to Selfless Glyphweaver

* [STX] updated spoiler and add all printings

* fixed a test failure

* [STA] text fixes

* replaced all instances of converted mana cost with mana value

* [STX] various text fixes

* fixed Ward ability text (fixes magefree#7715)

* changed ExileSpellEffect from being singleton

* added MTGJSON metadata to verify test

* [STX] more text fixes

* revert change to fix test, will investigate later

* fixed a test failure

* a few more cmc->mana value changes

* un-reverted change, fixed test failure

* [C21] Implemented Bold Plagiarist

* [C21] Implemented Geometric Nexus

* [C21] Implemented Sly Instigator

* [STX] some final text fixes

* some more text fixes

* many find/replace "shuffle" fixes

* if you're having text problems I feel bad for you son, I've got 99 problems and they're all text-related and I've only dealt with a small amount of them

* fix failing test

* more text fixes

* [C21] Implemented Author of Shadows

* [C21] Implemented Cunning Rhetoric

* [C21] Implemented Theoretical Duplication

* moved a misplaced test

* [C21] Implemented Battlemage's Braces

* [C21] Implemented Sproutback Trudge

* fixed some text

* [C21] Implemented Elementalist's Palette

* [C21] Implemented Guardian Archon

* small text update

* C21 cards (magefree#7765)

* initial commit of OsgirTheReconstructor
incomplete

* changed target

* fixed target with adjustment

* made requested changes
changed exiled card to be a cost instead of effect

* [C21] Implemented Surge to Victory

* [C21] added missing card

* more text fixes

* [C21] Implemented Promise of Loyalty

* [C21] Implemented Losheel, Clockwork Scholar

* fixed a test failure

* fixed another test failure

* [STX] fixed Perplexing Test not bouncing nontoken permanents (fixes magefree#7766)

* text fixes

* text fix for ReturnFromGraveyardToBattlefieldTargetEffect

* text fix for fetch lands

* more text fixes

* fixed test failures

* reworked alara heralds

* fix a Layer comparison in Liege of the Tangle

* rewrite loop to stream

* text fixes

* fixed some cards with random effects (fixes magefree#7693)

* [MRD] fixed Hum of the Radix applying to non-artifact spells (fixes magefree#7775)

* [ONS] fixed Thrashing Mudspawn null pointer exception (fixes magefree#7775)

* add RiteOfPassageTest for magefree#7740

* update .gitignore

* Add Deicide Test

* [STX] added booster collation

* rewrite some dies events cards

* test for issue magefree#7772

* [C21] Implemented Muse Vortex

* updated copy implementation to work with stack objects

* [C21] Implemented Radiant Performer

* [C21] Implemented Marshland Bloodcaster

* [STX] fixed a null pointer exemption with Radiant Scrollwielder (fixes magefree#7777, fixes magefree#7778, fixes magefree#7779)

* Fleeting Aven return to Hand no longer optional, fixes magefree#7780

* [C21] Implemented Fractal Harness

* [C21] Implemented Combat Calligrapher

* [C21] Implemented Breena, the Demagogue

* [C21] Implemented Study Hall

* fixed effects counting opponents no longer in the game

* [C21] Implemented Yedora, Grave Gardener

* fixed a change left out from previous commit failure

* use staticfilter for 'a spell'

* remove explicit null checks, match(..) checks on null itself by instanceof calls

* Resizing GUI elements live from the preference menu

* [STX] fixed Reflective Golem triggering off of spells that don't target it (fixes magefree#7782)

* [C21] various text fixes

* Fixing issue with GUI events being triggered prematurely when loading prefs (magefree#7785)

Co-authored-by: Evan Kranzler <[email protected]>
Co-authored-by: Daniel Bomar <[email protected]>
Co-authored-by: Damiano Carradori <[email protected]>
Co-authored-by: htrajan <[email protected]>
Co-authored-by: Oleg Agafonov <[email protected]>
Co-authored-by: sprangg <[email protected]>
Co-authored-by: sprangg <[email protected]>
Co-authored-by: arketec <[email protected]>
Co-authored-by: Ingmar Goudt <[email protected]>
Co-authored-by: Michael Lee <[email protected]>
Co-authored-by: Michael Lee <[email protected]>
  • Loading branch information
12 people authored Apr 30, 2021
1 parent f9b840e commit 5deddd8
Show file tree
Hide file tree
Showing 3,716 changed files with 54,425 additions and 22,042 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
4 changes: 3 additions & 1 deletion .github/workflows/mtg-fetch-cards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ on:
pull_request:
types: [opened]
pull_request_review:
type: [submitted]
types: [submitted]
pull_request_review_comment:
types: [created]

jobs:
fetch-card-references:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ Mage.Server.Plugins/Mage.Player.Human/target
Mage.Server.Plugins/Mage.Tournament.BoosterDraft/target
Mage.Server.Plugins/Mage.Tournament.Constructed/target
Mage.Server.Plugins/Mage.Tournament.Sealed/target
Mage.Server.Plugins/target

# Mage.Sets
Mage.Sets/target
Expand Down
12 changes: 11 additions & 1 deletion Mage.Client/src/main/java/mage/client/cards/CardGrid.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ private void setGUISize() {
cardDimension = GUISizeHelper.editorCardDimension;
}

@Override
public Object getCardsStore() {
return this.cards;
}

@Override
public void clearCardsStoreBeforeUpdate() {
this.cards.clear();
}

@Override
public void loadCards(CardsView showCards, SortSetting sortSetting, BigCard bigCard, UUID gameId) {
this.loadCards(showCards, sortSetting, bigCard, gameId, true);
Expand Down Expand Up @@ -353,7 +363,7 @@ class CardPanelCostComparator implements Comparator<MageCard> {

@Override
public int compare(MageCard o1, MageCard o2) {
int val = Integer.compare(o1.getOriginal().getConvertedManaCost(), o2.getOriginal().getConvertedManaCost());
int val = Integer.compare(o1.getOriginal().getManaValue(), o2.getOriginal().getManaValue());
if (val == 0) {
return o1.getOriginal().getName().compareTo(o2.getOriginal().getName());
} else {
Expand Down
11 changes: 11 additions & 0 deletions Mage.Client/src/main/java/mage/client/cards/CardsList.java
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,17 @@ public void addCardEventListener(Listener<Event> listener) {
mainModel.addCardEventListener(listener);
}

@Override
public Object getCardsStore() {
return this.cards;
}

@Override
public void clearCardsStoreBeforeUpdate() {
this.cards.clear();
this.mageCards.clear();
}

@Override
public void loadCards(CardsView showCards, SortSetting sortSetting, BigCard bigCard, UUID gameId) {
this.loadCards(showCards, sortSetting, bigCard, gameId, true);
Expand Down
15 changes: 4 additions & 11 deletions Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ public void setDeckEditorMode(Constants.DeckEditorMode mode) {
public enum Sort {
NONE("No Sort", new CardViewNoneComparator()),
CARD_TYPE("Card Type", new CardViewCardTypeComparator()),
CMC("Converted Mana Cost", new CardViewCostComparator()),
CMC("Mana Value", new CardViewCostComparator()),
COLOR("Color", new CardViewColorComparator()),
COLOR_IDENTITY("Color Identity", new CardViewColorIdentityComparator()),
RARITY("Rarity", new CardViewRarityComparator()),
Expand Down Expand Up @@ -1398,11 +1398,7 @@ public void reselectBy() {
}
// Casting cost
if (!s) {
String mc = "";
for (String m : card.getManaCost()) {
mc += m;
}
s |= mc.toLowerCase(Locale.ENGLISH).contains(searchStr);
s |= card.getManaCostStr().toLowerCase(Locale.ENGLISH).contains(searchStr);
}
// Rules
if (!s) {
Expand Down Expand Up @@ -1473,16 +1469,13 @@ public void analyseDeck() {
}

// Mana Cost
String mc = "";
for (String m : card.getManaCost()) {
mc += m;
}
String mc = card.getManaCostStr();
mc = mc.replaceAll("\\{([WUBRG]).([WUBRG])\\}", "{$1}{$2}");
mc = mc.replaceAll("\\{", "#");
mc = mc.replaceAll("#2\\/", "#");
mc = mc.replaceAll("p}", "}");
mc = mc.toLowerCase(Locale.ENGLISH);
int cmc = card.getConvertedManaCost();
int cmc = card.getManaValue();

// Do colorless mana pips
Pattern regex = Pattern.compile("#([0-9]+)}");
Expand Down
7 changes: 7 additions & 0 deletions Mage.Client/src/main/java/mage/client/cards/ICardGrid.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,11 @@ public interface ICardGrid {
void refresh();

int cardsSize();

// only for debug, return inner cards list
Object getCardsStore();

// special memory optimization to clean inner cards list before new cards load, so you don't need 2x memory
// WARNING, you must call it in the same code as new cards list prepare
void clearCardsStoreBeforeUpdate();
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package mage.client.components;

import java.awt.BorderLayout;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ private static void generateSpells(CardCriteria criteria, int spellCount) {
while (count < spellCount) {
Card card = cardPool.get(RandomUtil.nextInt(retrievedCount)).getMockCard();
if (genPool.isValidSpellCard(card)) {
int cardCMC = card.getManaCost().convertedManaCost();
int cardCMC = card.getManaValue();
for (DeckGeneratorCMC.CMC deckCMC : deckCMCs) {
if (cardCMC >= deckCMC.min && cardCMC <= deckCMC.max) {
int currentAmount = deckCMC.getAmount();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ public boolean tryAddReserve(Card card, int cardCMC) {
* @return if all the mana symbols fit the chosen colors.
*/
private boolean cardFitsChosenColors(Card card) {
for (String symbol : card.getManaCost().getSymbols()) {
for (String symbol : card.getManaCostSymbols()) {
boolean found = false;
symbol = symbol.replace("{", "").replace("}", "");
if (isColoredManaSymbol(symbol)) {
Expand Down Expand Up @@ -218,7 +218,7 @@ public Map<String, Double> calculateSpellColorPercentages() {

List<Card> fixedSpells = getFixedSpells();
for(Card spell: fixedSpells) {
for (String symbol : spell.getManaCost().getSymbols()) {
for (String symbol : spell.getManaCostSymbols()) {
symbol = symbol.replace("{", "").replace("}", "");
if (isColoredManaSymbol(symbol)) {
for (ColoredManaSymbol allowed : allowedColors) {
Expand Down
53 changes: 44 additions & 9 deletions Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,20 @@
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.filter.predicate.mageobject.ColorlessPredicate;
import mage.filter.predicate.other.CardTextPredicate;
import mage.filter.predicate.other.ExpansionSetPredicate;
import mage.filter.predicate.card.CardTextPredicate;
import mage.filter.predicate.card.ExpansionSetPredicate;
import mage.game.events.Listener;
import mage.view.CardView;
import mage.view.CardsView;
import org.apache.log4j.Logger;
import org.mage.card.arcane.ManaSymbolsCellRenderer;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
import java.awt.event.*;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.util.List;
import java.util.*;

Expand All @@ -43,6 +46,8 @@
*/
public class CardSelector extends javax.swing.JPanel implements ComponentListener, DragCardTarget {

private static final Logger logger = Logger.getLogger(CardSelector.class);

private final java.util.List<Card> cards = new ArrayList<>();
private BigCard bigCard;
private boolean limited = false;
Expand Down Expand Up @@ -412,6 +417,11 @@ private void filterCards() {
FilterCard filter = buildFilter();
MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR));
try {

// debug
//debugObjectMemorySize("Old cards size", this.currentView.getCardsStore());
this.currentView.clearCardsStoreBeforeUpdate();

java.util.List<Card> filteredCards = new ArrayList<>();

if (chkPennyDreadful.isSelected() && pdAllowed.isEmpty()) {
Expand All @@ -426,28 +436,52 @@ private void filterCards() {
}
} else {
java.util.List<CardInfo> foundCards = CardRepository.instance.findCards(buildCriteria());

for (CardInfo cardInfo : foundCards) {
Card card = cardInfo.getMockCard();
if (filter.match(card, null)) {
if (chkPennyDreadful.isSelected()) {
if (!pdAllowed.containsKey(card.getName())) {
continue;
}
// filter by penny
if (chkPennyDreadful.isSelected()) {
if (!pdAllowed.containsKey(cardInfo.getName())) {
continue;
}
filteredCards.add(card);
}
// filter by settings
Card card = cardInfo.getMockCard();
if (!filter.match(card, null)) {
continue;
}
// found
filteredCards.add(card);
}
}

// force to list mode on too much cards
if (currentView instanceof CardGrid && filteredCards.size() > CardGrid.MAX_IMAGES) {
this.toggleViewMode();
}

// debug
//debugObjectMemorySize("New cards size", filteredCards);

this.currentView.loadCards(new CardsView(filteredCards), sortSetting, bigCard, null, false);
this.cardCount.setText(String.valueOf(filteredCards.size()));
} finally {
MageFrame.getDesktop().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}

private void debugObjectMemorySize(String name, Object object) {
// just debug code, don't use it in production
// need 2x memory to find a size
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(object);
logger.info(name + ": " + baos.size());
} catch (Throwable e) {
logger.fatal("Can't find object size: " + e.getMessage(), e);
}
}

public void setCardCount(int value) {
this.cardCount.setText(String.valueOf(value));
}
Expand Down Expand Up @@ -1212,6 +1246,7 @@ private void btnBoosterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
this.limited = true;
cards.clear();
}
// accumulate boosters in one list
ExpansionSet expansionSet = Sets.getInstance().get(sets.get(0));
if (expansionSet != null) {
java.util.List<Card> booster = expansionSet.createBooster();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ private void importChoose(java.awt.event.ActionEvent evt) {
Object[] options = {"From file", "From clipboard (new deck)", "From clipboard (append cards)"};

int n = JOptionPane.showOptionDialog(MageFrame.getDesktop(),
"Where would you like to import from?",
"Choose import location",
"Deck import",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
Expand Down Expand Up @@ -817,7 +817,7 @@ private void exportChoose(java.awt.event.ActionEvent evt) {
Object[] options = {"To file", "To clipboard"};

int n = JOptionPane.showOptionDialog(MageFrame.getDesktop(),
"Where would you like to export?",
"Choose export location",
"Deck export",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ public int compare(CardView a, CardView b) {
break;
// Cost
case 2:
aCom = a.getConvertedManaCost();
bCom = b.getConvertedManaCost();
aCom = a.getManaValue();
bCom = b.getManaValue();
break;
// Color
case 3:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,17 @@ public void clear() {
this.view.clear();
}

@Override
public Object getCardsStore() {
return this.cards;
}

@Override
public void clearCardsStoreBeforeUpdate() {
this.cards.clear();
this.view.clear();
}

@Override
public void loadCards(CardsView showCards, SortSetting sortSetting, BigCard bigCard, UUID gameId) {
this.loadCards(showCards, sortSetting, bigCard, gameId, true);
Expand Down Expand Up @@ -215,7 +226,7 @@ private Object getColumn(Object obj, int column) {
return c.getDisplayFullName(); // show full name in deck editor table, e.g. adventure with spell name
case 2:
// new svg images version
return ManaSymbols.getStringManaCost(c.getManaCost());
return ManaSymbols.getClearManaCost(c.getManaCostStr());
/*
// old html images version
String manaCost = "";
Expand Down
13 changes: 7 additions & 6 deletions Mage.Client/src/main/java/mage/client/dialog/AddLandDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -473,12 +473,13 @@ private void autoAddLands() {
land_number = 0;
}
for (Card cd : cards) {
Mana m = cd.getManaCost().getMana();
red += m.getRed();
green += m.getGreen();
black += m.getBlack();
blue += m.getBlue();
white += m.getWhite();
for (String s : cd.getManaCostSymbols()) {
if (s.contains("W")) white++;
if (s.contains("U")) blue++;
if (s.contains("B")) black++;
if (s.contains("R")) red++;
if (s.contains("G")) green++;
}
}
int total = red + green + black + blue + white;

Expand Down
24 changes: 14 additions & 10 deletions Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -522,23 +522,27 @@ private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:e
return;
}
try {
// join AI
for (TablePlayerPanel player : players) {
if (player.getPlayerType() != PlayerType.HUMAN) {
if (!player.joinTable(roomId, table.getTableId())) {
// error message must be send by the server
SessionHandler.removeTable(roomId, table.getTableId());
table = null;
return;
}
}
}

// join itself
if (SessionHandler.joinTable(
roomId,
table.getTableId(),
this.player1Panel.getPlayerName(),
PlayerType.HUMAN, 1,
DeckImporter.importDeckFromFile(this.player1Panel.getDeckFile(), true),
this.txtPassword.getText())) {
for (TablePlayerPanel player : players) {
if (player.getPlayerType() != PlayerType.HUMAN) {
if (!player.joinTable(roomId, table.getTableId())) {
// error message must be send by the server
SessionHandler.removeTable(roomId, table.getTableId());
table = null;
return;
}
}
}
// all fine, can close create dialog (join dialog will be opened after feedback from server)
this.hideDialog();
return;
}
Expand Down
Loading

0 comments on commit 5deddd8

Please sign in to comment.