mirror of
https://github.com/magefree/mage.git
synced 2025-12-24 20:41:58 -08:00
* Adventure cards - improved game logs (card hint works with adventure spell now, added original card info to cast's log);
This commit is contained in:
parent
713110eb03
commit
862fe69b53
9 changed files with 141 additions and 62 deletions
|
|
@ -1,31 +1,27 @@
|
|||
package mage.client.components;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.MouseInfo;
|
||||
import java.awt.Point;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
import javax.swing.JEditorPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.HyperlinkEvent.EventType;
|
||||
import javax.swing.text.html.HTMLDocument;
|
||||
import javax.swing.text.html.HTMLEditorKit;
|
||||
|
||||
import mage.cards.repository.CardInfo;
|
||||
import mage.cards.repository.CardRepository;
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.dialog.PreferencesDialog;
|
||||
import mage.client.util.gui.GuiDisplayUtil;
|
||||
import mage.components.CardInfoPane;
|
||||
import mage.util.CardUtil;
|
||||
import mage.utils.ThreadUtils;
|
||||
import mage.view.CardView;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.HyperlinkEvent.EventType;
|
||||
import javax.swing.text.SimpleAttributeSet;
|
||||
import javax.swing.text.html.HTMLDocument;
|
||||
import javax.swing.text.html.HTMLEditorKit;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Enhanced {@link JTextPane} with text highlighting support.
|
||||
*
|
||||
|
|
@ -50,8 +46,37 @@ public class ColorPane extends JEditorPane {
|
|||
if (tooltipDelay == 0) {
|
||||
return;
|
||||
}
|
||||
String name = e.getDescription().substring(1);
|
||||
CardInfo card = CardRepository.instance.findCard(name);
|
||||
|
||||
// finds extra data in html element like object_id, alternative_name, etc
|
||||
Map<String, String> extraData = new HashMap<>();
|
||||
if (e.getSourceElement() instanceof HTMLDocument.RunElement) {
|
||||
HTMLDocument.RunElement el = (HTMLDocument.RunElement) e.getSourceElement();
|
||||
Enumeration attNames = el.getAttributeNames();
|
||||
while (attNames.hasMoreElements()) {
|
||||
Object attName = attNames.nextElement();
|
||||
Object attValue = el.getAttribute(attName);
|
||||
// custom attributes in SimpleAttributeSet element
|
||||
if (attValue instanceof SimpleAttributeSet) {
|
||||
SimpleAttributeSet attReal = (SimpleAttributeSet) attValue;
|
||||
Enumeration attRealNames = attReal.getAttributeNames();
|
||||
while (attRealNames.hasMoreElements()) {
|
||||
Object attRealName = attRealNames.nextElement();
|
||||
Object attRealValue = attReal.getAttribute(attRealName);
|
||||
String name = attRealName.toString();
|
||||
String value = attRealValue.toString();
|
||||
extraData.put(name, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String cardName = e.getDescription().substring(1);
|
||||
String alternativeName = CardUtil.urlDecode(extraData.getOrDefault("alternative_name", ""));
|
||||
if (!alternativeName.isEmpty()) {
|
||||
cardName = alternativeName;
|
||||
}
|
||||
|
||||
CardInfo card = CardRepository.instance.findCard(cardName);
|
||||
try {
|
||||
final Component container = MageFrame.getUI().getComponent(MageComponents.POPUP_CONTAINER);
|
||||
if (e.getEventType() == EventType.EXITED) {
|
||||
|
|
@ -152,9 +177,9 @@ public class ColorPane extends JEditorPane {
|
|||
super.paintChildren(g);
|
||||
}
|
||||
|
||||
public void enableHyperlinks(){
|
||||
public void enableHyperlinks() {
|
||||
hyperlinkEnabled = true;
|
||||
addHyperlinkHandlers();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package org.mage.plugins.card.dl.sources;
|
|||
import mage.client.MageFrame;
|
||||
import mage.remote.Connection;
|
||||
import mage.remote.Connection.ProxyType;
|
||||
import mage.util.CardUtil;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
|
|
@ -13,7 +14,10 @@ import org.mage.plugins.card.images.CardDownloadData;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Proxy;
|
||||
import java.net.URL;
|
||||
import java.util.*;
|
||||
import java.util.prefs.Preferences;
|
||||
|
||||
|
|
@ -298,7 +302,7 @@ public enum MythicspoilerComSource implements CardImageSource {
|
|||
Preferences prefs = MageFrame.getPreferences();
|
||||
Connection.ProxyType proxyType = Connection.ProxyType.valueByText(prefs.get("proxyType", "None"));
|
||||
for (String setName : setNames.split("\\^")) {
|
||||
String URLSetName = URLEncoder.encode(setName, "UTF-8");
|
||||
String URLSetName = CardUtil.urlEncode(setName);
|
||||
String baseUrl = "http://mythicspoiler.com/" + URLSetName + '/';
|
||||
|
||||
Map<String, String> pageLinks = getSetLinksFromPage(cardSet, aliasesStart, prefs, proxyType, baseUrl, baseUrl);
|
||||
|
|
|
|||
|
|
@ -7,17 +7,16 @@ import com.google.gson.JsonParser;
|
|||
import mage.cards.ExpansionSet;
|
||||
import mage.cards.Sets;
|
||||
import mage.client.util.CardLanguage;
|
||||
import mage.util.CardUtil;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.mage.plugins.card.dl.DownloadServiceInfo;
|
||||
import org.mage.plugins.card.images.CardDownloadData;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.Proxy;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
|
|
@ -96,12 +95,7 @@ public enum ScryfallImageSource implements CardImageSource {
|
|||
}
|
||||
}
|
||||
|
||||
try {
|
||||
scryfallCollectorId = URLEncoder.encode(scryfallCollectorId, "utf-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// URL failed to encode, this will cause download to miss in certain environments
|
||||
}
|
||||
|
||||
scryfallCollectorId = CardUtil.urlEncode(scryfallCollectorId);
|
||||
baseUrl = "https://api.scryfall.com/cards/" + formatSetName(card.getSet(), isToken) + "/"
|
||||
+ scryfallCollectorId + "/" + localizedCode + "?format=image";
|
||||
alternativeUrl = "https://api.scryfall.com/cards/" + formatSetName(card.getSet(), isToken) + "/"
|
||||
|
|
@ -227,7 +221,7 @@ public enum ScryfallImageSource implements CardImageSource {
|
|||
}
|
||||
|
||||
private String searchCard(Proxy proxy, String set, String name) throws Exception {
|
||||
final URL searchUrl = new URL("https://api.scryfall.com/cards/search?q=s:" + URLEncoder.encode(set + " " + name, "UTF-8"));
|
||||
final URL searchUrl = new URL("https://api.scryfall.com/cards/search?q=s:" + CardUtil.urlEncode(set + " " + name));
|
||||
URLConnection request = proxy == null ? searchUrl.openConnection() : searchUrl.openConnection(proxy);
|
||||
request.connect();
|
||||
|
||||
|
|
|
|||
|
|
@ -522,7 +522,6 @@ public enum WizardCardsImageSource implements CardImageSource {
|
|||
}
|
||||
|
||||
for (String setName : setNames.split("\\^")) {
|
||||
// String URLSetName = URLEncoder.encode(setName, "UTF-8");
|
||||
String URLSetName = setName.replaceAll(" ", "%20");
|
||||
int page = 0;
|
||||
int firstMultiverseIdLastPage = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue