mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
implement varied images for booster packs (waiting in branch until images are synced to server)
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -12,7 +12,6 @@
|
|||||||
/pom.xml svneol=native#text/xml
|
/pom.xml svneol=native#text/xml
|
||||||
res/ai/Default.ai -text
|
res/ai/Default.ai -text
|
||||||
res/blockdata/blocks.txt svneol=native#text/plain
|
res/blockdata/blocks.txt svneol=native#text/plain
|
||||||
res/blockdata/boosters.txt -text
|
|
||||||
res/blockdata/fantasyblocks.txt -text
|
res/blockdata/fantasyblocks.txt -text
|
||||||
res/blockdata/fatpacks.txt -text
|
res/blockdata/fatpacks.txt -text
|
||||||
res/blockdata/formats.txt -text
|
res/blockdata/formats.txt -text
|
||||||
|
|||||||
@@ -1,79 +1,79 @@
|
|||||||
Set:10E|LandSet:10E|Commons:10|Uncommons:3|Rares:1
|
Set:10E|LandSet:10E|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:2ED|Commons:11|Uncommons:3|Rares:1
|
Set:2ED|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:3ED|Commons:11|Uncommons:3|Rares:1
|
Set:3ED|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:4ED|Commons:11|Uncommons:3|Rares:1
|
Set:4ED|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:5DN|Commons:11|Uncommons:3|Rares:1
|
Set:5DN|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:5ED|Commons:11|Uncommons:3|Rares:1
|
Set:5ED|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:6ED|Commons:11|Uncommons:3|Rares:1
|
Set:6ED|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:7ED|Commons:10|Uncommons:3|Rares:1
|
Set:7ED|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:8ED|Commons:10|Uncommons:3|Rares:1
|
Set:8ED|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:9ED|Commons:10|Uncommons:3|Rares:1
|
Set:9ED|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:ALA|Commons:10|Uncommons:3|Rares:1
|
Set:ALA|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:ALL|Commons:8|Uncommons:3|Rares:1
|
Set:ALL|Commons:8|Uncommons:3|Rares:1|Images:1
|
||||||
Set:APC|Commons:11|Uncommons:3|Rares:1
|
Set:APC|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:ARB|LandSet:ALA|Commons:10|Uncommons:3|Rares:1
|
Set:ARB|LandSet:ALA|Commons:10|Uncommons:3|Rares:1|Images:3
|
||||||
Set:ARN|Commons:6|Uncommons:2
|
Set:ARN|Commons:6|Uncommons:2|Images:1
|
||||||
Set:ATQ|Commons:5|Uncommons:2|Rares:1
|
Set:ATQ|Commons:5|Uncommons:2|Rares:1|Images:1
|
||||||
Set:AVR|Commons:10|Uncommons:3|Rares:1
|
Set:AVR|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:BOK|Commons:11|Uncommons:3|Rares:1
|
Set:BOK|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:CFX|LandSet:ALA|Commons:10|Uncommons:3|Rares:1
|
Set:CFX|LandSet:ALA|Commons:10|Uncommons:3|Rares:1|Images:3
|
||||||
Set:CHK|Commons:11|Uncommons:3|Rares:1
|
Set:CHK|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:CHR|Commons:9|Uncommons:3
|
Set:CHR|Commons:9|Uncommons:3|Images:1
|
||||||
Set:CSP|Commons:11|Uncommons:3|Rares:1
|
Set:CSP|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:DIS|Commons:11|Uncommons:3|Rares:1
|
Set:DIS|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:DRK|Commons:6|Rares:2
|
Set:DKA|LandSet:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1|Images:3
|
||||||
Set:DST|Commons:11|Uncommons:3|Rares:1
|
Set:DRK|Commons:6|Rares:2|Images:1
|
||||||
Set:EVE|Commons:11|Uncommons:3|Rares:1
|
Set:DST|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:EXO|Commons:11|Uncommons:3|Rares:1
|
Set:EVE|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:FEM|Commons:5|Uncommons:2|Rares:1
|
Set:EXO|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:FUT|Commons:11|Uncommons:3|Rares:1
|
Set:FEM|Commons:5|Uncommons:2|Rares:1|Images:1
|
||||||
Set:GPT|Commons:11|Uncommons:3|Rares:1
|
Set:FUT|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:GTC|Commons:10|Uncommons:3|Rares:1
|
Set:GPT|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:HML|Commons:6|Uncommons:2
|
Set:GTC|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:ICE|Commons:11|Uncommons:3|Rares:1
|
Set:HML|Commons:6|Uncommons:2|Images:1
|
||||||
Set:INV|Commons:11|Uncommons:3|Rares:1
|
Set:ICE|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:JUD|Commons:11|Uncommons:3|Rares:1
|
Set:INV|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:LEA|Commons:11|Uncommons:3|Rares:1
|
Set:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1|Images:5
|
||||||
Set:LEB|Commons:11|Uncommons:3|Rares:1
|
Set:JUD|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:LEG|Commons:11|Uncommons:3|Rares:1
|
Set:LEA|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:LGN|Commons:11|Uncommons:3|Rares:1
|
Set:LEB|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:LRW|Commons:11|Uncommons:3|Rares:1
|
Set:LEG|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:M10|Commons:10|Uncommons:3|Rares:1
|
Set:LGN|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:M11|Commons:10|Uncommons:3|Rares:1
|
Set:LRW|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:M12|Commons:10|Uncommons:3|Rares:1
|
Set:M10|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:M13|Commons:10|Uncommons:3|Rares:1
|
Set:M11|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:MBS|Commons:10|Uncommons:3|Rares:1
|
Set:M12|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:MIR|Commons:11|Uncommons:3|Rares:1
|
Set:M13|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:MMQ|Commons:11|Uncommons:3|Rares:1
|
Set:MBS|Commons:10|Uncommons:3|Rares:1|Images:3
|
||||||
Set:MOR|Commons:11|Uncommons:3|Rares:1
|
Set:MIR|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:MRD|Commons:11|Uncommons:3|Rares:1
|
Set:MMQ|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:NMS|Commons:11|Uncommons:3|Rares:1
|
Set:MOR|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:NPH|Commons:10|Uncommons:3|Rares:1
|
Set:MRD|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:ODY|Commons:11|Uncommons:3|Rares:1
|
Set:NMS|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:ONS|Commons:11|Uncommons:3|Rares:1
|
Set:NPH|Commons:10|Uncommons:3|Rares:1|Images:3
|
||||||
Set:PO2|Commons:11|Uncommons:3|Rares:1
|
Set:ODY|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:PCY|Commons:11|Uncommons:3|Rares:1
|
Set:ONS|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:PLC|Commons:11|Uncommons:3|Rares:1
|
Set:PCY|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:PLS|Commons:11|Uncommons:3|Rares:1
|
Set:PLC|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:POR|Commons:11|Uncommons:3|Rares:1
|
Set:PLS|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:PTK|Commons:5|Uncommons:2|Rares:1
|
Set:PO2|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:RAV|Commons:11|Uncommons:3|Rares:1
|
Set:POR|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:ROE|Commons:10|Uncommons:3|Rares:1
|
Set:PTK|Commons:5|Uncommons:2|Rares:1|Images:1
|
||||||
Set:RTR|Commons:10|Uncommons:3|Rares:1
|
Set:RAV|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:SCG|Commons:11|Uncommons:3|Rares:1
|
Set:ROE|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:SHM|Commons:11|Uncommons:3|Rares:1
|
Set:RTR|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:SOK|Commons:11|Uncommons:3|Rares:1
|
Set:SCG|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:SOM|Commons:10|Uncommons:3|Rares:1
|
Set:SHM|Commons:11|Uncommons:3|Rares:1|Images:5
|
||||||
Set:STH|Commons:11|Uncommons:3|Rares:1
|
Set:SOK|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:TMP|Commons:11|Uncommons:3|Rares:1
|
Set:SOM|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
Set:TOR|Commons:11|Uncommons:3|Rares:1
|
Set:STH|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:TSP|Commons:10|Uncommons:3|Rares:1|Special:1
|
Set:TMP|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:UDS|Commons:11|Uncommons:3|Rares:1
|
Set:TOR|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:ULG|Commons:11|Uncommons:3|Rares:1
|
Set:TSP|Commons:10|Uncommons:3|Rares:1|Special:1|Images:5
|
||||||
Set:USG|Commons:11|Uncommons:3|Rares:1
|
Set:UDS|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:VIS|Commons:11|Uncommons:3|Rares:1
|
Set:ULG|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:WTH|Commons:11|Uncommons:3|Rares:1
|
Set:USG|Commons:11|Uncommons:3|Rares:1|Images:3
|
||||||
Set:WWK|LandSet:ZEN|Commons:10|Uncommons:3|Rares:1
|
Set:VIS|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:ZEN|Commons:10|Uncommons:3|Rares:1
|
Set:WTH|Commons:11|Uncommons:3|Rares:1|Images:1
|
||||||
Set:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1
|
Set:WWK|LandSet:ZEN|Commons:10|Uncommons:3|Rares:1|Images:3
|
||||||
Set:DKA|LandSet:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1
|
Set:ZEN|Commons:10|Uncommons:3|Rares:1|Images:5
|
||||||
|
|||||||
@@ -1,80 +1,240 @@
|
|||||||
http://www.cardforge.org/fpics/products/boosters/10E.png
|
http://www.cardforge.org/fpics/products/boosters/10E_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/10E_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/10E_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/10E_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/10E_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/2ED.png
|
http://www.cardforge.org/fpics/products/boosters/2ED.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/3ED.png
|
http://www.cardforge.org/fpics/products/boosters/3ED.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/4ED.png
|
http://www.cardforge.org/fpics/products/boosters/4ED_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/5DN.png
|
http://www.cardforge.org/fpics/products/boosters/4ED_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/5ED.png
|
http://www.cardforge.org/fpics/products/boosters/4ED_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/4ED_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/4ED_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5DN_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5DN_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5DN_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5ED_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5ED_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5ED_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5ED_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/5ED_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/6ED.png
|
http://www.cardforge.org/fpics/products/boosters/6ED.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/7ED.png
|
http://www.cardforge.org/fpics/products/boosters/7ED_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/8ED.png
|
http://www.cardforge.org/fpics/products/boosters/7ED_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/9ED.png
|
http://www.cardforge.org/fpics/products/boosters/7ED_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ALA.png
|
http://www.cardforge.org/fpics/products/boosters/7ED_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/7ED_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/8ED_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/8ED_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/8ED_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/8ED_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/8ED_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/9ED_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/9ED_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/9ED_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/9ED_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/9ED_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ALA_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ALA_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ALA_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ALA_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ALA_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ALL.png
|
http://www.cardforge.org/fpics/products/boosters/ALL.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/APC.png
|
http://www.cardforge.org/fpics/products/boosters/APC.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ARB.png
|
http://www.cardforge.org/fpics/products/boosters/ARB_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ARB_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ARB_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ARN.png
|
http://www.cardforge.org/fpics/products/boosters/ARN.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ATQ.png
|
http://www.cardforge.org/fpics/products/boosters/ATQ.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/AVR.png
|
http://www.cardforge.org/fpics/products/boosters/AVR_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/BOK.png
|
http://www.cardforge.org/fpics/products/boosters/AVR_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/CFX.png
|
http://www.cardforge.org/fpics/products/boosters/AVR_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/CHK.png
|
http://www.cardforge.org/fpics/products/boosters/AVR_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/AVR_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/BOK_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/BOK_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/BOK_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CFX_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CFX_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CFX_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CHK_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CHK_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CHK_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CHK_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/CHK_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/CHR.png
|
http://www.cardforge.org/fpics/products/boosters/CHR.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/CSP.png
|
http://www.cardforge.org/fpics/products/boosters/CSP_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/DIS.png
|
http://www.cardforge.org/fpics/products/boosters/CSP_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/DKA.png
|
http://www.cardforge.org/fpics/products/boosters/CSP_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/DIS_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/DIS_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/DIS_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/DKA_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/DKA_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/DKA_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/DRK.png
|
http://www.cardforge.org/fpics/products/boosters/DRK.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/DST.png
|
http://www.cardforge.org/fpics/products/boosters/DST_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/EVE.png
|
http://www.cardforge.org/fpics/products/boosters/DST_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/DST_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/EVE_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/EVE_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/EVE_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/EXO.png
|
http://www.cardforge.org/fpics/products/boosters/EXO.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/FEM.png
|
http://www.cardforge.org/fpics/products/boosters/FEM.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/FUT.png
|
http://www.cardforge.org/fpics/products/boosters/FUT_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/GPT.png
|
http://www.cardforge.org/fpics/products/boosters/FUT_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/GTC.png
|
http://www.cardforge.org/fpics/products/boosters/FUT_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GPT_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GPT_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GPT_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GTC_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GTC_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GTC_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GTC_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/GTC_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/HML.png
|
http://www.cardforge.org/fpics/products/boosters/HML.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ICE.png
|
http://www.cardforge.org/fpics/products/boosters/ICE_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/INV.png
|
http://www.cardforge.org/fpics/products/boosters/ICE_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ISD.png
|
http://www.cardforge.org/fpics/products/boosters/ICE_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ICE_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ICE_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/INV_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/INV_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/INV_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ISD_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ISD_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ISD_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ISD_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ISD_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/JUD.png
|
http://www.cardforge.org/fpics/products/boosters/JUD.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/LEA.png
|
http://www.cardforge.org/fpics/products/boosters/LEA.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/LEB.png
|
http://www.cardforge.org/fpics/products/boosters/LEB.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/LEG.png
|
http://www.cardforge.org/fpics/products/boosters/LEG.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/LGN.png
|
http://www.cardforge.org/fpics/products/boosters/LGN_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/LRW.png
|
http://www.cardforge.org/fpics/products/boosters/LGN_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/M10.png
|
http://www.cardforge.org/fpics/products/boosters/LGN_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/M11.png
|
http://www.cardforge.org/fpics/products/boosters/LRW_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/M12.png
|
http://www.cardforge.org/fpics/products/boosters/LRW_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/M13.png
|
http://www.cardforge.org/fpics/products/boosters/LRW_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/MBS.png
|
http://www.cardforge.org/fpics/products/boosters/LRW_4.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/MIR.png
|
http://www.cardforge.org/fpics/products/boosters/LRW_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/MMQ.png
|
http://www.cardforge.org/fpics/products/boosters/M10_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/MOR.png
|
http://www.cardforge.org/fpics/products/boosters/M10_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/MRD.png
|
http://www.cardforge.org/fpics/products/boosters/M10_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M10_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M10_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M11_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M11_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M11_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M11_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M11_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M12_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M12_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M12_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M12_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M12_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M13_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M13_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M13_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M13_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/M13_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MBS_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MBS_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MBS_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MIR_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MIR_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MIR_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MIR_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MIR_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MMQ_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MMQ_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MMQ_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MOR_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MOR_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MOR_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MRD_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MRD_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MRD_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MRD_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/MRD_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/NMS.png
|
http://www.cardforge.org/fpics/products/boosters/NMS.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/NPH.png
|
http://www.cardforge.org/fpics/products/boosters/NPH_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ODY.png
|
http://www.cardforge.org/fpics/products/boosters/NPH_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ONS.png
|
http://www.cardforge.org/fpics/products/boosters/NPH_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ODY_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ODY_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ODY_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ONS_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ONS_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ONS_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ONS_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ONS_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/PCY.png
|
http://www.cardforge.org/fpics/products/boosters/PCY.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/PLC.png
|
http://www.cardforge.org/fpics/products/boosters/PLC_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/PLC_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/PLC_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/PLS.png
|
http://www.cardforge.org/fpics/products/boosters/PLS.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/PO2.png
|
http://www.cardforge.org/fpics/products/boosters/PO2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/POR.png
|
http://www.cardforge.org/fpics/products/boosters/POR_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/POR_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/POR_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/POR_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/POR_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/PTK.png
|
http://www.cardforge.org/fpics/products/boosters/PTK.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/RAV.png
|
http://www.cardforge.org/fpics/products/boosters/RAV_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ROE.png
|
http://www.cardforge.org/fpics/products/boosters/RAV_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/RTR.png
|
http://www.cardforge.org/fpics/products/boosters/RAV_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/RAV_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/RAV_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ROE_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ROE_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ROE_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ROE_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ROE_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/RTR_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/RTR_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/RTR_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/RTR_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/RTR_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/S99.png
|
http://www.cardforge.org/fpics/products/boosters/S99.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/SCG.png
|
http://www.cardforge.org/fpics/products/boosters/SCG_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/SHM.png
|
http://www.cardforge.org/fpics/products/boosters/SCG_2.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/SOK.png
|
http://www.cardforge.org/fpics/products/boosters/SCG_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/SOM.png
|
http://www.cardforge.org/fpics/products/boosters/SHM_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SHM_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SHM_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SHM_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SHM_5.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOK_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOK_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOK_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOM_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOM_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOM_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOM_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/SOM_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/STH.png
|
http://www.cardforge.org/fpics/products/boosters/STH.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/TMP.png
|
http://www.cardforge.org/fpics/products/boosters/TMP_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/TMP_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/TMP_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/TOR.png
|
http://www.cardforge.org/fpics/products/boosters/TOR.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/TSP.png
|
http://www.cardforge.org/fpics/products/boosters/TSP_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/TSP_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/TSP_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/TSP_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/TSP_5.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/UDS.png
|
http://www.cardforge.org/fpics/products/boosters/UDS.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ULG.png
|
http://www.cardforge.org/fpics/products/boosters/ULG.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/USG.png
|
http://www.cardforge.org/fpics/products/boosters/USG_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/USG_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/USG_3.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/VIS.png
|
http://www.cardforge.org/fpics/products/boosters/VIS.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/WTH.png
|
http://www.cardforge.org/fpics/products/boosters/WTH.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/WWK.png
|
http://www.cardforge.org/fpics/products/boosters/WWK_1.png
|
||||||
http://www.cardforge.org/fpics/products/boosters/ZEN.png
|
http://www.cardforge.org/fpics/products/boosters/WWK_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/WWK_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ZEN_1.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ZEN_2.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ZEN_3.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ZEN_4.png
|
||||||
|
http://www.cardforge.org/fpics/products/boosters/ZEN_5.png
|
||||||
|
|||||||
@@ -18,8 +18,10 @@
|
|||||||
package forge;
|
package forge;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
@@ -70,22 +72,30 @@ public class ImageCache {
|
|||||||
public static final String PRECON_PREFIX = "p:";
|
public static final String PRECON_PREFIX = "p:";
|
||||||
public static final String TOURNAMENTPACK_PREFIX = "o:";
|
public static final String TOURNAMENTPACK_PREFIX = "o:";
|
||||||
|
|
||||||
static private final LoadingCache<String, BufferedImage> CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
|
private static final Set<String> _missingIconKeys = new HashSet<String>();
|
||||||
private static final BufferedImage emptyImage = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB);
|
private static final LoadingCache<String, BufferedImage> _CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
|
||||||
private static BufferedImage defaultImage = emptyImage;
|
private static final BufferedImage _defaultImage;
|
||||||
static {
|
static {
|
||||||
|
BufferedImage defImage = null;
|
||||||
try {
|
try {
|
||||||
ClassLoader cl = Thread.currentThread().getContextClassLoader();
|
ClassLoader cl = Thread.currentThread().getContextClassLoader();
|
||||||
InputStream isNoCardJpg = cl.getResourceAsStream("no_card.jpg");
|
InputStream isNoCardJpg = cl.getResourceAsStream("no_card.jpg");
|
||||||
defaultImage = ImageIO.read(isNoCardJpg);
|
defImage = ImageIO.read(isNoCardJpg);
|
||||||
} catch (IOException e) {
|
} catch (Exception e) {
|
||||||
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
|
// resource not found; perhaps we're running straight from source
|
||||||
e.printStackTrace();
|
try {
|
||||||
|
defImage = ImageIO.read(new File("src/main/resources/no_card.jpg"));
|
||||||
|
} catch (Exception ex) {
|
||||||
|
System.err.println("could not load default card image");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
_defaultImage = (null == defImage) ? new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB) : defImage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clear() {
|
public static void clear() {
|
||||||
CACHE.invalidateAll();
|
_CACHE.invalidateAll();
|
||||||
|
_missingIconKeys.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,7 +109,7 @@ public class ImageCache {
|
|||||||
} else {
|
} else {
|
||||||
key = card.getImageKey();
|
key = card.getImageKey();
|
||||||
}
|
}
|
||||||
return scaleImage(key, width, height);
|
return scaleImage(key, width, height, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -107,7 +117,7 @@ public class ImageCache {
|
|||||||
* and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension.
|
* and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension.
|
||||||
*/
|
*/
|
||||||
public static BufferedImage getImage(InventoryItem ii, int width, int height) {
|
public static BufferedImage getImage(InventoryItem ii, int width, int height) {
|
||||||
return scaleImage(getImageKey(ii, false), width, height);
|
return scaleImage(getImageKey(ii, false), width, height, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -115,40 +125,42 @@ public class ImageCache {
|
|||||||
* in the cache and cannot be loaded from disk.
|
* in the cache and cannot be loaded from disk.
|
||||||
*/
|
*/
|
||||||
public static ImageIcon getIcon(IHasIcon ihi) {
|
public static ImageIcon getIcon(IHasIcon ihi) {
|
||||||
BufferedImage i = scaleImage(ihi.getIconImageKey(), -1, -1);
|
String imageKey = ihi.getIconImageKey();
|
||||||
if (null == i) {
|
final BufferedImage i;
|
||||||
|
if (_missingIconKeys.contains(imageKey) ||
|
||||||
|
null == (i = scaleImage(ihi.getIconImageKey(), -1, -1, false))) {
|
||||||
|
_missingIconKeys.add(imageKey);
|
||||||
return FSkin.getIcon(FSkin.InterfaceIcons.ICO_UNKNOWN);
|
return FSkin.getIcon(FSkin.InterfaceIcons.ICO_UNKNOWN);
|
||||||
}
|
}
|
||||||
return new ImageIcon(i);
|
return new ImageIcon(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BufferedImage scaleImage(String key, final int width, final int height) {
|
private static BufferedImage scaleImage(String key, final int width, final int height, boolean useDefaultImage) {
|
||||||
if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) {
|
if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) {
|
||||||
// picture too small or key not defined; return a blank
|
// picture too small or key not defined; return a blank
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder rsKey = new StringBuilder(key);
|
String resizedKey = String.format("%s#%dx%d", key, width, height);
|
||||||
rsKey.append("#").append(width).append('x').append(height);
|
|
||||||
String resizedKey = rsKey.toString();
|
|
||||||
|
|
||||||
final BufferedImage cached = CACHE.getIfPresent(resizedKey);
|
final BufferedImage cached = _CACHE.getIfPresent(resizedKey);
|
||||||
if (null != cached) {
|
if (null != cached) {
|
||||||
|
//System.out.println("found cached image: " + resizedKey);
|
||||||
return cached;
|
return cached;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean mayEnlarge = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
|
|
||||||
BufferedImage original = getImage(key);
|
BufferedImage original = getImage(key);
|
||||||
|
|
||||||
if (null == original) {
|
if (null == original) {
|
||||||
original = defaultImage;
|
if (!useDefaultImage) {
|
||||||
CACHE.put(key, defaultImage); // This instructs cache to give up finding a picture if it was not found once
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (original == emptyImage) { // the found image is a placeholder for missing picture?
|
// henceforth use a default picture for this key if image not found
|
||||||
return null;
|
original = _defaultImage;
|
||||||
|
_CACHE.put(key, _defaultImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean mayEnlarge = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
|
||||||
double scale = Math.min(
|
double scale = Math.min(
|
||||||
-1 == width ? 1 : (double)width / original.getWidth(),
|
-1 == width ? 1 : (double)width / original.getWidth(),
|
||||||
-1 == height? 1 : (double)height / original.getHeight());
|
-1 == height? 1 : (double)height / original.getHeight());
|
||||||
@@ -162,12 +174,22 @@ public class ImageCache {
|
|||||||
} else {
|
} else {
|
||||||
int destWidth = (int)(original.getWidth() * scale);
|
int destWidth = (int)(original.getWidth() * scale);
|
||||||
int destHeight = (int)(original.getHeight() * scale);
|
int destHeight = (int)(original.getHeight() * scale);
|
||||||
ResampleOp resampler = new ResampleOp(destWidth, destHeight);
|
|
||||||
|
|
||||||
result = resampler.filter(original, null);
|
// if this scale has been used before, get the cached version instead of rescaling
|
||||||
CACHE.put(resizedKey, result);
|
String effectiveResizedKey = String.format("%s#%dx%d", key, destWidth, destHeight);
|
||||||
|
result = _CACHE.getIfPresent(effectiveResizedKey);
|
||||||
|
if (null == result) {
|
||||||
|
ResampleOp resampler = new ResampleOp(destWidth, destHeight);
|
||||||
|
result = resampler.filter(original, null);
|
||||||
|
//System.out.println("caching resized image: " + effectiveResizedKey);
|
||||||
|
_CACHE.put(effectiveResizedKey, result);
|
||||||
|
//} else {
|
||||||
|
// System.out.println("retrieved resized image: " + effectiveResizedKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//System.out.println("caching image: " + resizedKey);
|
||||||
|
_CACHE.put(resizedKey, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,7 +198,7 @@ public class ImageCache {
|
|||||||
*/
|
*/
|
||||||
private static BufferedImage getImage(final String key) {
|
private static BufferedImage getImage(final String key) {
|
||||||
try {
|
try {
|
||||||
return ImageCache.CACHE.get(key);
|
return ImageCache._CACHE.get(key);
|
||||||
} catch (final ExecutionException ex) {
|
} catch (final ExecutionException ex) {
|
||||||
if (ex.getCause() instanceof NullPointerException) {
|
if (ex.getCause() instanceof NullPointerException) {
|
||||||
return null;
|
return null;
|
||||||
@@ -196,8 +218,11 @@ public class ImageCache {
|
|||||||
return getImageKey((CardPrinted)ii, altState, true);
|
return getImageKey((CardPrinted)ii, altState, true);
|
||||||
if ( ii instanceof TournamentPack )
|
if ( ii instanceof TournamentPack )
|
||||||
return ImageCache.TOURNAMENTPACK_PREFIX + ((TournamentPack)ii).getEdition();
|
return ImageCache.TOURNAMENTPACK_PREFIX + ((TournamentPack)ii).getEdition();
|
||||||
if ( ii instanceof BoosterPack )
|
if ( ii instanceof BoosterPack ) {
|
||||||
return ImageCache.BOOSTER_PREFIX + ((BoosterPack)ii).getEdition();
|
BoosterPack bp = (BoosterPack)ii;
|
||||||
|
String suffix = (1 >= bp.getBoosterData().getArtIndices()) ? "" : ("_" + bp.getArtIndex());
|
||||||
|
return ImageCache.BOOSTER_PREFIX + bp.getEdition() + suffix;
|
||||||
|
}
|
||||||
if ( ii instanceof FatPack )
|
if ( ii instanceof FatPack )
|
||||||
return ImageCache.FATPACK_PREFIX + ((FatPack)ii).getEdition();
|
return ImageCache.FATPACK_PREFIX + ((FatPack)ii).getEdition();
|
||||||
if ( ii instanceof PreconDeck )
|
if ( ii instanceof PreconDeck )
|
||||||
|
|||||||
@@ -16,16 +16,15 @@ public class BoosterData extends PackData {
|
|||||||
private final int foilRate;
|
private final int foilRate;
|
||||||
private static final int CARDS_PER_BOOSTER = 15;
|
private static final int CARDS_PER_BOOSTER = 15;
|
||||||
|
|
||||||
public BoosterData(final String edition, final String editionLand, final int nC, final int nU, final int nR, final int nS, final int nDF) {
|
public BoosterData(String edition, String editionLand, int nC, int nU, int nR, int nS, int nDF, int artIndices) {
|
||||||
// if this booster has more that 10 cards, there must be a land in
|
// if this booster has more that 10 cards, there must be a land in
|
||||||
// 15th slot unless it's already taken
|
// 15th slot unless it's already taken
|
||||||
this(edition, editionLand, nC, nU, nR, nS, nDF, (nC + nR + nU + nS + nDF) > 10 ? BoosterData.CARDS_PER_BOOSTER - nC - nR - nU
|
this(edition, editionLand, nC, nU, nR, nS, nDF, artIndices,
|
||||||
- nS - nDF : 0, 68);
|
(nC + nR + nU + nS + nDF) > 10 ? BoosterData.CARDS_PER_BOOSTER - nC - nR - nU - nS - nDF : 0, 68);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BoosterData(final String edition0, final String editionLand, final int nC, final int nU, final int nR, final int nS, final int nDF, final int nL,
|
public BoosterData(String edition, String editionLand, int nC, int nU, int nR, int nS, int nDF, int artIndices, int nL, int oneFoilPer) {
|
||||||
final int oneFoilPer) {
|
super(edition, editionLand, nL > 0 ? nL : 0, artIndices);
|
||||||
super(edition0, editionLand, nL > 0 ? nL : 0);
|
|
||||||
this.nCommon = nC;
|
this.nCommon = nC;
|
||||||
this.nUncommon = nU;
|
this.nUncommon = nU;
|
||||||
this.nRare = nR;
|
this.nRare = nR;
|
||||||
@@ -41,6 +40,7 @@ public class BoosterData extends PackData {
|
|||||||
public final Predicate<CardPrinted> getEditionFilter() {
|
public final Predicate<CardPrinted> getEditionFilter() {
|
||||||
return IPaperCard.Predicates.printedInSets(getEdition());
|
return IPaperCard.Predicates.printedInSets(getEdition());
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Predicate<CardPrinted> getLandEditionFilter() {
|
public final Predicate<CardPrinted> getLandEditionFilter() {
|
||||||
return IPaperCard.Predicates.printedInSets(getLandEdition());
|
return IPaperCard.Predicates.printedInSets(getLandEdition());
|
||||||
}
|
}
|
||||||
@@ -141,6 +141,7 @@ public class BoosterData extends PackData {
|
|||||||
int nR = section.getInt("Rares", 0);
|
int nR = section.getInt("Rares", 0);
|
||||||
int nS = section.getInt("Special", 0);
|
int nS = section.getInt("Special", 0);
|
||||||
int nDf = section.getInt("DoubleFaced", 0);
|
int nDf = section.getInt("DoubleFaced", 0);
|
||||||
|
int artIndices = section.getInt("Images", 1);
|
||||||
int nLand = section.getInt("BasicLands", 0);
|
int nLand = section.getInt("BasicLands", 0);
|
||||||
int nFoilRate = section.getInt("FoilRate", 68);
|
int nFoilRate = section.getInt("FoilRate", 68);
|
||||||
String edition = section.get("Set");
|
String edition = section.get("Set");
|
||||||
@@ -149,7 +150,7 @@ public class BoosterData extends PackData {
|
|||||||
editionLand = edition;
|
editionLand = edition;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new BoosterData(edition, editionLand, nC, nU, nR, nS, nDf, nLand, nFoilRate);
|
return new BoosterData(edition, editionLand, nC, nU, nR, nS, nDf, artIndices, nLand, nFoilRate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class FatPackData extends PackData {
|
|||||||
|
|
||||||
public FatPackData(String edition0, String landEdition0, int nBoosters, int nBasicLands)
|
public FatPackData(String edition0, String landEdition0, int nBoosters, int nBasicLands)
|
||||||
{
|
{
|
||||||
super(edition0, landEdition0, nBasicLands);
|
super(edition0, landEdition0, nBasicLands, 1);
|
||||||
cntBoosters = nBoosters;
|
cntBoosters = nBoosters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,29 +18,39 @@
|
|||||||
|
|
||||||
package forge.card;
|
package forge.card;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.NullArgumentException;
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
|
||||||
public class PackData {
|
public class PackData {
|
||||||
private final String edition;
|
private final String edition;
|
||||||
|
private final String landEdition;
|
||||||
|
private final int cntLands;
|
||||||
|
private final int artIndices;
|
||||||
|
|
||||||
public final String getEdition() {
|
public final String getEdition() {
|
||||||
return edition;
|
return edition;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final String landEdition;
|
|
||||||
public final String getLandEdition() {
|
public final String getLandEdition() {
|
||||||
return landEdition == null ? edition : landEdition;
|
return landEdition == null ? edition : landEdition;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final int cntLands;
|
|
||||||
public int getCntLands() {
|
public int getCntLands() {
|
||||||
return cntLands;
|
return cntLands;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PackData(String edition0, String landEdition0, int nBasicLands)
|
public int getArtIndices() {
|
||||||
|
return artIndices;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PackData(String edition0, String landEdition0, int nBasicLands, int artIndices0)
|
||||||
{
|
{
|
||||||
|
if (null == edition0) { throw new NullArgumentException("edition0"); }
|
||||||
edition = edition0;
|
edition = edition0;
|
||||||
landEdition = landEdition0;
|
landEdition = landEdition0;
|
||||||
cntLands = nBasicLands;
|
cntLands = nBasicLands;
|
||||||
|
artIndices = artIndices0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Function<? super PackData, String> FN_GET_CODE = new Function<PackData, String>() {
|
public static final Function<? super PackData, String> FN_GET_CODE = new Function<PackData, String>() {
|
||||||
@@ -49,4 +59,24 @@ public class PackData {
|
|||||||
return arg1.edition;
|
return arg1.edition;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean equals(Object obj) {
|
||||||
|
if (this == obj) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.getClass() != obj.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
PackData other = (PackData)obj;
|
||||||
|
return edition.equals(other.edition);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final int hashCode() {
|
||||||
|
return edition.hashCode();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,4 +46,8 @@ public class BoosterPack extends OpenablePack {
|
|||||||
public final Object clone() {
|
public final Object clone() {
|
||||||
return new BoosterPack(name, contents);
|
return new BoosterPack(name, contents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BoosterData getBoosterData() {
|
||||||
|
return contents;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ import forge.card.CardEdition;
|
|||||||
import forge.card.FatPackData;
|
import forge.card.FatPackData;
|
||||||
|
|
||||||
public class FatPack extends OpenablePack {
|
public class FatPack extends OpenablePack {
|
||||||
|
|
||||||
/** The Constant fnFromSet. */
|
|
||||||
public static final Function<CardEdition, FatPack> FN_FROM_SET = new Function<CardEdition, FatPack>() {
|
public static final Function<CardEdition, FatPack> FN_FROM_SET = new Function<CardEdition, FatPack>() {
|
||||||
@Override
|
@Override
|
||||||
public FatPack apply(final CardEdition arg1) {
|
public FatPack apply(final CardEdition arg1) {
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ package forge.item;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.NullArgumentException;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
@@ -28,23 +30,28 @@ import forge.card.BoosterData;
|
|||||||
import forge.card.BoosterGenerator;
|
import forge.card.BoosterGenerator;
|
||||||
import forge.card.CardRulesPredicates;
|
import forge.card.CardRulesPredicates;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
public abstract class OpenablePack implements InventoryItemFromSet {
|
public abstract class OpenablePack implements InventoryItemFromSet {
|
||||||
protected final BoosterData contents;
|
protected final BoosterData contents;
|
||||||
|
|
||||||
protected final String name;
|
protected final String name;
|
||||||
|
private final int artIndex;
|
||||||
|
private final int hash;
|
||||||
private List<CardPrinted> cards = null;
|
private List<CardPrinted> cards = null;
|
||||||
|
|
||||||
private BoosterGenerator generator = null;
|
private BoosterGenerator generator = null;
|
||||||
|
|
||||||
public OpenablePack(final String name0, final BoosterData boosterData) {
|
public OpenablePack(String name0, BoosterData boosterData) {
|
||||||
this.contents = boosterData;
|
if (null == name0) { throw new NullArgumentException("name0"); }
|
||||||
this.name = name0;
|
if (null == boosterData) { throw new NullArgumentException("boosterData"); }
|
||||||
|
contents = boosterData;
|
||||||
|
name = name0;
|
||||||
|
artIndex = MyRandom.getRandom().nextInt(boosterData.getArtIndices()) + 1;
|
||||||
|
hash = name.hashCode() ^ getClass().hashCode() ^ contents.hashCode() ^ artIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final String getName() {
|
public final String getName() {
|
||||||
return this.name + " " + this.getItemType();
|
return name + " " + getItemType();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
@@ -53,23 +60,27 @@ public abstract class OpenablePack implements InventoryItemFromSet {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final String getEdition() {
|
public final String getEdition() {
|
||||||
return this.contents.getEdition();
|
return contents.getEdition();
|
||||||
|
}
|
||||||
|
|
||||||
|
public final int getArtIndex() {
|
||||||
|
return artIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final List<CardPrinted> getCards() {
|
public final List<CardPrinted> getCards() {
|
||||||
if (null == this.cards) {
|
if (null == cards) {
|
||||||
this.cards = this.generate();
|
cards = generate();
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.cards;
|
return cards;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTotalCards() {
|
public int getTotalCards() {
|
||||||
return this.contents.getTotal();
|
return contents.getTotal();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(final Object obj) {
|
public final boolean equals(Object obj) {
|
||||||
if (this == obj) {
|
if (this == obj) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -79,34 +90,25 @@ public abstract class OpenablePack implements InventoryItemFromSet {
|
|||||||
if (this.getClass() != obj.getClass()) {
|
if (this.getClass() != obj.getClass()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final OpenablePack other = (OpenablePack) obj;
|
OpenablePack other = (OpenablePack)obj;
|
||||||
if (this.contents == null) {
|
return name.equals(other.name) && contents.equals(other.contents) && artIndex == other.artIndex;
|
||||||
if (other.contents != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!this.contents.equals(other.contents)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int hashCode() {
|
public final int hashCode() {
|
||||||
final int prime = 31;
|
System.out.println(String.format("returning hash: %d for edition=%s; idx=%d", hash, getEdition(), getArtIndex()));
|
||||||
int result = 1;
|
return hash;
|
||||||
result = (prime * result) + ((this.contents == null) ? 0 : this.contents.hashCode());
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<CardPrinted> generate() {
|
protected List<CardPrinted> generate() {
|
||||||
if (null == this.generator) {
|
if (null == generator) {
|
||||||
this.generator = new BoosterGenerator(this.contents.getEditionFilter());
|
generator = new BoosterGenerator(contents.getEditionFilter());
|
||||||
}
|
}
|
||||||
final List<CardPrinted> myCards = this.generator.getBoosterPack(this.contents);
|
final List<CardPrinted> myCards = generator.getBoosterPack(contents);
|
||||||
|
|
||||||
final int cntLands = this.contents.getCntLands();
|
final int cntLands = contents.getCntLands();
|
||||||
if (cntLands > 0) {
|
if (cntLands > 0) {
|
||||||
myCards.add(this.getRandomBasicLand(this.contents.getLandEdition()));
|
myCards.add(getRandomBasicLand(contents.getLandEdition()));
|
||||||
}
|
}
|
||||||
return myCards;
|
return myCards;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user