implement varied images for booster packs (waiting in branch until images are synced to server)

This commit is contained in:
myk
2013-03-24 14:13:15 +00:00
10 changed files with 427 additions and 208 deletions

1
.gitattributes vendored
View File

@@ -12,7 +12,6 @@
/pom.xml svneol=native#text/xml
res/ai/Default.ai -text
res/blockdata/blocks.txt svneol=native#text/plain
res/blockdata/boosters.txt -text
res/blockdata/fantasyblocks.txt -text
res/blockdata/fatpacks.txt -text
res/blockdata/formats.txt -text

View File

@@ -1,79 +1,79 @@
Set:10E|LandSet:10E|Commons:10|Uncommons:3|Rares:1
Set:2ED|Commons:11|Uncommons:3|Rares:1
Set:3ED|Commons:11|Uncommons:3|Rares:1
Set:4ED|Commons:11|Uncommons:3|Rares:1
Set:5DN|Commons:11|Uncommons:3|Rares:1
Set:5ED|Commons:11|Uncommons:3|Rares:1
Set:6ED|Commons:11|Uncommons:3|Rares:1
Set:7ED|Commons:10|Uncommons:3|Rares:1
Set:8ED|Commons:10|Uncommons:3|Rares:1
Set:9ED|Commons:10|Uncommons:3|Rares:1
Set:ALA|Commons:10|Uncommons:3|Rares:1
Set:ALL|Commons:8|Uncommons:3|Rares:1
Set:APC|Commons:11|Uncommons:3|Rares:1
Set:ARB|LandSet:ALA|Commons:10|Uncommons:3|Rares:1
Set:ARN|Commons:6|Uncommons:2
Set:ATQ|Commons:5|Uncommons:2|Rares:1
Set:AVR|Commons:10|Uncommons:3|Rares:1
Set:BOK|Commons:11|Uncommons:3|Rares:1
Set:CFX|LandSet:ALA|Commons:10|Uncommons:3|Rares:1
Set:CHK|Commons:11|Uncommons:3|Rares:1
Set:CHR|Commons:9|Uncommons:3
Set:CSP|Commons:11|Uncommons:3|Rares:1
Set:DIS|Commons:11|Uncommons:3|Rares:1
Set:DRK|Commons:6|Rares:2
Set:DST|Commons:11|Uncommons:3|Rares:1
Set:EVE|Commons:11|Uncommons:3|Rares:1
Set:EXO|Commons:11|Uncommons:3|Rares:1
Set:FEM|Commons:5|Uncommons:2|Rares:1
Set:FUT|Commons:11|Uncommons:3|Rares:1
Set:GPT|Commons:11|Uncommons:3|Rares:1
Set:GTC|Commons:10|Uncommons:3|Rares:1
Set:HML|Commons:6|Uncommons:2
Set:ICE|Commons:11|Uncommons:3|Rares:1
Set:INV|Commons:11|Uncommons:3|Rares:1
Set:JUD|Commons:11|Uncommons:3|Rares:1
Set:LEA|Commons:11|Uncommons:3|Rares:1
Set:LEB|Commons:11|Uncommons:3|Rares:1
Set:LEG|Commons:11|Uncommons:3|Rares:1
Set:LGN|Commons:11|Uncommons:3|Rares:1
Set:LRW|Commons:11|Uncommons:3|Rares:1
Set:M10|Commons:10|Uncommons:3|Rares:1
Set:M11|Commons:10|Uncommons:3|Rares:1
Set:M12|Commons:10|Uncommons:3|Rares:1
Set:M13|Commons:10|Uncommons:3|Rares:1
Set:MBS|Commons:10|Uncommons:3|Rares:1
Set:MIR|Commons:11|Uncommons:3|Rares:1
Set:MMQ|Commons:11|Uncommons:3|Rares:1
Set:MOR|Commons:11|Uncommons:3|Rares:1
Set:MRD|Commons:11|Uncommons:3|Rares:1
Set:NMS|Commons:11|Uncommons:3|Rares:1
Set:NPH|Commons:10|Uncommons:3|Rares:1
Set:ODY|Commons:11|Uncommons:3|Rares:1
Set:ONS|Commons:11|Uncommons:3|Rares:1
Set:PO2|Commons:11|Uncommons:3|Rares:1
Set:PCY|Commons:11|Uncommons:3|Rares:1
Set:PLC|Commons:11|Uncommons:3|Rares:1
Set:PLS|Commons:11|Uncommons:3|Rares:1
Set:POR|Commons:11|Uncommons:3|Rares:1
Set:PTK|Commons:5|Uncommons:2|Rares:1
Set:RAV|Commons:11|Uncommons:3|Rares:1
Set:ROE|Commons:10|Uncommons:3|Rares:1
Set:RTR|Commons:10|Uncommons:3|Rares:1
Set:SCG|Commons:11|Uncommons:3|Rares:1
Set:SHM|Commons:11|Uncommons:3|Rares:1
Set:SOK|Commons:11|Uncommons:3|Rares:1
Set:SOM|Commons:10|Uncommons:3|Rares:1
Set:STH|Commons:11|Uncommons:3|Rares:1
Set:TMP|Commons:11|Uncommons:3|Rares:1
Set:TOR|Commons:11|Uncommons:3|Rares:1
Set:TSP|Commons:10|Uncommons:3|Rares:1|Special:1
Set:UDS|Commons:11|Uncommons:3|Rares:1
Set:ULG|Commons:11|Uncommons:3|Rares:1
Set:USG|Commons:11|Uncommons:3|Rares:1
Set:VIS|Commons:11|Uncommons:3|Rares:1
Set:WTH|Commons:11|Uncommons:3|Rares:1
Set:WWK|LandSet:ZEN|Commons:10|Uncommons:3|Rares:1
Set:ZEN|Commons:10|Uncommons:3|Rares:1
Set:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1
Set:DKA|LandSet:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1
Set:10E|LandSet:10E|Commons:10|Uncommons:3|Rares:1|Images:5
Set:2ED|Commons:11|Uncommons:3|Rares:1|Images:1
Set:3ED|Commons:11|Uncommons:3|Rares:1|Images:1
Set:4ED|Commons:11|Uncommons:3|Rares:1|Images:5
Set:5DN|Commons:11|Uncommons:3|Rares:1|Images:3
Set:5ED|Commons:11|Uncommons:3|Rares:1|Images:5
Set:6ED|Commons:11|Uncommons:3|Rares:1|Images:1
Set:7ED|Commons:10|Uncommons:3|Rares:1|Images:5
Set:8ED|Commons:10|Uncommons:3|Rares:1|Images:5
Set:9ED|Commons:10|Uncommons:3|Rares:1|Images:5
Set:ALA|Commons:10|Uncommons:3|Rares:1|Images:5
Set:ALL|Commons:8|Uncommons:3|Rares:1|Images:1
Set:APC|Commons:11|Uncommons:3|Rares:1|Images:1
Set:ARB|LandSet:ALA|Commons:10|Uncommons:3|Rares:1|Images:3
Set:ARN|Commons:6|Uncommons:2|Images:1
Set:ATQ|Commons:5|Uncommons:2|Rares:1|Images:1
Set:AVR|Commons:10|Uncommons:3|Rares:1|Images:5
Set:BOK|Commons:11|Uncommons:3|Rares:1|Images:3
Set:CFX|LandSet:ALA|Commons:10|Uncommons:3|Rares:1|Images:3
Set:CHK|Commons:11|Uncommons:3|Rares:1|Images:5
Set:CHR|Commons:9|Uncommons:3|Images:1
Set:CSP|Commons:11|Uncommons:3|Rares:1|Images:3
Set:DIS|Commons:11|Uncommons:3|Rares:1|Images:3
Set:DKA|LandSet:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1|Images:3
Set:DRK|Commons:6|Rares:2|Images:1
Set:DST|Commons:11|Uncommons:3|Rares:1|Images:3
Set:EVE|Commons:11|Uncommons:3|Rares:1|Images:3
Set:EXO|Commons:11|Uncommons:3|Rares:1|Images:1
Set:FEM|Commons:5|Uncommons:2|Rares:1|Images:1
Set:FUT|Commons:11|Uncommons:3|Rares:1|Images:3
Set:GPT|Commons:11|Uncommons:3|Rares:1|Images:3
Set:GTC|Commons:10|Uncommons:3|Rares:1|Images:5
Set:HML|Commons:6|Uncommons:2|Images:1
Set:ICE|Commons:11|Uncommons:3|Rares:1|Images:5
Set:INV|Commons:11|Uncommons:3|Rares:1|Images:3
Set:ISD|Commons:9|Uncommons:3|DoubleFaced:1|Rares:1|Images:5
Set:JUD|Commons:11|Uncommons:3|Rares:1|Images:1
Set:LEA|Commons:11|Uncommons:3|Rares:1|Images:1
Set:LEB|Commons:11|Uncommons:3|Rares:1|Images:1
Set:LEG|Commons:11|Uncommons:3|Rares:1|Images:1
Set:LGN|Commons:11|Uncommons:3|Rares:1|Images:3
Set:LRW|Commons:11|Uncommons:3|Rares:1|Images:5
Set:M10|Commons:10|Uncommons:3|Rares:1|Images:5
Set:M11|Commons:10|Uncommons:3|Rares:1|Images:5
Set:M12|Commons:10|Uncommons:3|Rares:1|Images:5
Set:M13|Commons:10|Uncommons:3|Rares:1|Images:5
Set:MBS|Commons:10|Uncommons:3|Rares:1|Images:3
Set:MIR|Commons:11|Uncommons:3|Rares:1|Images:5
Set:MMQ|Commons:11|Uncommons:3|Rares:1|Images:3
Set:MOR|Commons:11|Uncommons:3|Rares:1|Images:3
Set:MRD|Commons:11|Uncommons:3|Rares:1|Images:5
Set:NMS|Commons:11|Uncommons:3|Rares:1|Images:1
Set:NPH|Commons:10|Uncommons:3|Rares:1|Images:3
Set:ODY|Commons:11|Uncommons:3|Rares:1|Images:3
Set:ONS|Commons:11|Uncommons:3|Rares:1|Images:5
Set:PCY|Commons:11|Uncommons:3|Rares:1|Images:1
Set:PLC|Commons:11|Uncommons:3|Rares:1|Images:3
Set:PLS|Commons:11|Uncommons:3|Rares:1|Images:1
Set:PO2|Commons:11|Uncommons:3|Rares:1|Images:1
Set:POR|Commons:11|Uncommons:3|Rares:1|Images:5
Set:PTK|Commons:5|Uncommons:2|Rares:1|Images:1
Set:RAV|Commons:11|Uncommons:3|Rares:1|Images:5
Set:ROE|Commons:10|Uncommons:3|Rares:1|Images:5
Set:RTR|Commons:10|Uncommons:3|Rares:1|Images:5
Set:SCG|Commons:11|Uncommons:3|Rares:1|Images:3
Set:SHM|Commons:11|Uncommons:3|Rares:1|Images:5
Set:SOK|Commons:11|Uncommons:3|Rares:1|Images:3
Set:SOM|Commons:10|Uncommons:3|Rares:1|Images:5
Set:STH|Commons:11|Uncommons:3|Rares:1|Images:1
Set:TMP|Commons:11|Uncommons:3|Rares:1|Images:3
Set:TOR|Commons:11|Uncommons:3|Rares:1|Images:1
Set:TSP|Commons:10|Uncommons:3|Rares:1|Special:1|Images:5
Set:UDS|Commons:11|Uncommons:3|Rares:1|Images:1
Set:ULG|Commons:11|Uncommons:3|Rares:1|Images:1
Set:USG|Commons:11|Uncommons:3|Rares:1|Images:3
Set:VIS|Commons:11|Uncommons:3|Rares:1|Images:1
Set:WTH|Commons:11|Uncommons:3|Rares:1|Images:1
Set:WWK|LandSet:ZEN|Commons:10|Uncommons:3|Rares:1|Images:3
Set:ZEN|Commons:10|Uncommons:3|Rares:1|Images:5

View File

@@ -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/3ED.png
http://www.cardforge.org/fpics/products/boosters/4ED.png
http://www.cardforge.org/fpics/products/boosters/5DN.png
http://www.cardforge.org/fpics/products/boosters/5ED.png
http://www.cardforge.org/fpics/products/boosters/4ED_1.png
http://www.cardforge.org/fpics/products/boosters/4ED_2.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/7ED.png
http://www.cardforge.org/fpics/products/boosters/8ED.png
http://www.cardforge.org/fpics/products/boosters/9ED.png
http://www.cardforge.org/fpics/products/boosters/ALA.png
http://www.cardforge.org/fpics/products/boosters/7ED_1.png
http://www.cardforge.org/fpics/products/boosters/7ED_2.png
http://www.cardforge.org/fpics/products/boosters/7ED_3.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/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/ATQ.png
http://www.cardforge.org/fpics/products/boosters/AVR.png
http://www.cardforge.org/fpics/products/boosters/BOK.png
http://www.cardforge.org/fpics/products/boosters/CFX.png
http://www.cardforge.org/fpics/products/boosters/CHK.png
http://www.cardforge.org/fpics/products/boosters/AVR_1.png
http://www.cardforge.org/fpics/products/boosters/AVR_2.png
http://www.cardforge.org/fpics/products/boosters/AVR_3.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/CSP.png
http://www.cardforge.org/fpics/products/boosters/DIS.png
http://www.cardforge.org/fpics/products/boosters/DKA.png
http://www.cardforge.org/fpics/products/boosters/CSP_1.png
http://www.cardforge.org/fpics/products/boosters/CSP_2.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/DST.png
http://www.cardforge.org/fpics/products/boosters/EVE.png
http://www.cardforge.org/fpics/products/boosters/DST_1.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/FEM.png
http://www.cardforge.org/fpics/products/boosters/FUT.png
http://www.cardforge.org/fpics/products/boosters/GPT.png
http://www.cardforge.org/fpics/products/boosters/GTC.png
http://www.cardforge.org/fpics/products/boosters/FUT_1.png
http://www.cardforge.org/fpics/products/boosters/FUT_2.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/ICE.png
http://www.cardforge.org/fpics/products/boosters/INV.png
http://www.cardforge.org/fpics/products/boosters/ISD.png
http://www.cardforge.org/fpics/products/boosters/ICE_1.png
http://www.cardforge.org/fpics/products/boosters/ICE_2.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/LEA.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/LGN.png
http://www.cardforge.org/fpics/products/boosters/LRW.png
http://www.cardforge.org/fpics/products/boosters/M10.png
http://www.cardforge.org/fpics/products/boosters/M11.png
http://www.cardforge.org/fpics/products/boosters/M12.png
http://www.cardforge.org/fpics/products/boosters/M13.png
http://www.cardforge.org/fpics/products/boosters/MBS.png
http://www.cardforge.org/fpics/products/boosters/MIR.png
http://www.cardforge.org/fpics/products/boosters/MMQ.png
http://www.cardforge.org/fpics/products/boosters/MOR.png
http://www.cardforge.org/fpics/products/boosters/MRD.png
http://www.cardforge.org/fpics/products/boosters/LGN_1.png
http://www.cardforge.org/fpics/products/boosters/LGN_2.png
http://www.cardforge.org/fpics/products/boosters/LGN_3.png
http://www.cardforge.org/fpics/products/boosters/LRW_1.png
http://www.cardforge.org/fpics/products/boosters/LRW_2.png
http://www.cardforge.org/fpics/products/boosters/LRW_3.png
http://www.cardforge.org/fpics/products/boosters/LRW_4.png
http://www.cardforge.org/fpics/products/boosters/LRW_5.png
http://www.cardforge.org/fpics/products/boosters/M10_1.png
http://www.cardforge.org/fpics/products/boosters/M10_2.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/NPH.png
http://www.cardforge.org/fpics/products/boosters/ODY.png
http://www.cardforge.org/fpics/products/boosters/ONS.png
http://www.cardforge.org/fpics/products/boosters/NPH_1.png
http://www.cardforge.org/fpics/products/boosters/NPH_2.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/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/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/RAV.png
http://www.cardforge.org/fpics/products/boosters/ROE.png
http://www.cardforge.org/fpics/products/boosters/RTR.png
http://www.cardforge.org/fpics/products/boosters/RAV_1.png
http://www.cardforge.org/fpics/products/boosters/RAV_2.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/SCG.png
http://www.cardforge.org/fpics/products/boosters/SHM.png
http://www.cardforge.org/fpics/products/boosters/SOK.png
http://www.cardforge.org/fpics/products/boosters/SOM.png
http://www.cardforge.org/fpics/products/boosters/SCG_1.png
http://www.cardforge.org/fpics/products/boosters/SCG_2.png
http://www.cardforge.org/fpics/products/boosters/SCG_3.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/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/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/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/WTH.png
http://www.cardforge.org/fpics/products/boosters/WWK.png
http://www.cardforge.org/fpics/products/boosters/ZEN.png
http://www.cardforge.org/fpics/products/boosters/WWK_1.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

View File

@@ -18,8 +18,10 @@
package forge;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.File;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import javax.imageio.ImageIO;
@@ -70,22 +72,30 @@ public class ImageCache {
public static final String PRECON_PREFIX = "p:";
public static final String TOURNAMENTPACK_PREFIX = "o:";
static private final LoadingCache<String, BufferedImage> CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
private static final BufferedImage emptyImage = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB);
private static BufferedImage defaultImage = emptyImage;
private static final Set<String> _missingIconKeys = new HashSet<String>();
private static final LoadingCache<String, BufferedImage> _CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
private static final BufferedImage _defaultImage;
static {
BufferedImage defImage = null;
try {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
InputStream isNoCardJpg = cl.getResourceAsStream("no_card.jpg");
defaultImage = ImageIO.read(isNoCardJpg);
} catch (IOException e) {
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
e.printStackTrace();
defImage = ImageIO.read(isNoCardJpg);
} catch (Exception e) {
// resource not found; perhaps we're running straight from source
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() {
CACHE.invalidateAll();
_CACHE.invalidateAll();
_missingIconKeys.clear();
}
/**
@@ -99,7 +109,7 @@ public class ImageCache {
} else {
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.
*/
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.
*/
public static ImageIcon getIcon(IHasIcon ihi) {
BufferedImage i = scaleImage(ihi.getIconImageKey(), -1, -1);
if (null == i) {
String imageKey = ihi.getIconImageKey();
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 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)) {
// picture too small or key not defined; return a blank
return null;
}
StringBuilder rsKey = new StringBuilder(key);
rsKey.append("#").append(width).append('x').append(height);
String resizedKey = rsKey.toString();
String resizedKey = String.format("%s#%dx%d", key, width, height);
final BufferedImage cached = CACHE.getIfPresent(resizedKey);
final BufferedImage cached = _CACHE.getIfPresent(resizedKey);
if (null != cached) {
//System.out.println("found cached image: " + resizedKey);
return cached;
}
boolean mayEnlarge = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
BufferedImage original = getImage(key);
if (null == original) {
original = defaultImage;
CACHE.put(key, defaultImage); // This instructs cache to give up finding a picture if it was not found once
}
if (original == emptyImage) { // the found image is a placeholder for missing picture?
return null;
if (!useDefaultImage) {
return null;
}
// henceforth use a default picture for this key if image not found
original = _defaultImage;
_CACHE.put(key, _defaultImage);
}
boolean mayEnlarge = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
double scale = Math.min(
-1 == width ? 1 : (double)width / original.getWidth(),
-1 == height? 1 : (double)height / original.getHeight());
@@ -162,12 +174,22 @@ public class ImageCache {
} else {
int destWidth = (int)(original.getWidth() * scale);
int destHeight = (int)(original.getHeight() * scale);
ResampleOp resampler = new ResampleOp(destWidth, destHeight);
result = resampler.filter(original, null);
CACHE.put(resizedKey, result);
// if this scale has been used before, get the cached version instead of rescaling
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;
}
@@ -176,7 +198,7 @@ public class ImageCache {
*/
private static BufferedImage getImage(final String key) {
try {
return ImageCache.CACHE.get(key);
return ImageCache._CACHE.get(key);
} catch (final ExecutionException ex) {
if (ex.getCause() instanceof NullPointerException) {
return null;
@@ -196,8 +218,11 @@ public class ImageCache {
return getImageKey((CardPrinted)ii, altState, true);
if ( ii instanceof TournamentPack )
return ImageCache.TOURNAMENTPACK_PREFIX + ((TournamentPack)ii).getEdition();
if ( ii instanceof BoosterPack )
return ImageCache.BOOSTER_PREFIX + ((BoosterPack)ii).getEdition();
if ( ii instanceof BoosterPack ) {
BoosterPack bp = (BoosterPack)ii;
String suffix = (1 >= bp.getBoosterData().getArtIndices()) ? "" : ("_" + bp.getArtIndex());
return ImageCache.BOOSTER_PREFIX + bp.getEdition() + suffix;
}
if ( ii instanceof FatPack )
return ImageCache.FATPACK_PREFIX + ((FatPack)ii).getEdition();
if ( ii instanceof PreconDeck )

View File

@@ -16,16 +16,15 @@ public class BoosterData extends PackData {
private final int foilRate;
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
// 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
- nS - nDF : 0, 68);
this(edition, editionLand, nC, nU, nR, nS, nDF, artIndices,
(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,
final int oneFoilPer) {
super(edition0, editionLand, nL > 0 ? nL : 0);
public BoosterData(String edition, String editionLand, int nC, int nU, int nR, int nS, int nDF, int artIndices, int nL, int oneFoilPer) {
super(edition, editionLand, nL > 0 ? nL : 0, artIndices);
this.nCommon = nC;
this.nUncommon = nU;
this.nRare = nR;
@@ -41,6 +40,7 @@ public class BoosterData extends PackData {
public final Predicate<CardPrinted> getEditionFilter() {
return IPaperCard.Predicates.printedInSets(getEdition());
}
public final Predicate<CardPrinted> getLandEditionFilter() {
return IPaperCard.Predicates.printedInSets(getLandEdition());
}
@@ -141,6 +141,7 @@ public class BoosterData extends PackData {
int nR = section.getInt("Rares", 0);
int nS = section.getInt("Special", 0);
int nDf = section.getInt("DoubleFaced", 0);
int artIndices = section.getInt("Images", 1);
int nLand = section.getInt("BasicLands", 0);
int nFoilRate = section.getInt("FoilRate", 68);
String edition = section.get("Set");
@@ -149,7 +150,7 @@ public class BoosterData extends PackData {
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);
}
}
}

View File

@@ -15,7 +15,7 @@ public class FatPackData extends PackData {
public FatPackData(String edition0, String landEdition0, int nBoosters, int nBasicLands)
{
super(edition0, landEdition0, nBasicLands);
super(edition0, landEdition0, nBasicLands, 1);
cntBoosters = nBoosters;
}

View File

@@ -18,29 +18,39 @@
package forge.card;
import org.apache.commons.lang.NullArgumentException;
import com.google.common.base.Function;
public class PackData {
private final String edition;
private final String landEdition;
private final int cntLands;
private final int artIndices;
public final String getEdition() {
return edition;
}
private final String landEdition;
public final String getLandEdition() {
return landEdition == null ? edition : landEdition;
}
private final int cntLands;
public int getCntLands() {
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;
landEdition = landEdition0;
cntLands = nBasicLands;
artIndices = artIndices0;
}
public static final Function<? super PackData, String> FN_GET_CODE = new Function<PackData, String>() {
@@ -49,4 +59,24 @@ public class PackData {
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();
}
}

View File

@@ -46,4 +46,8 @@ public class BoosterPack extends OpenablePack {
public final Object clone() {
return new BoosterPack(name, contents);
}
public BoosterData getBoosterData() {
return contents;
}
}

View File

@@ -28,8 +28,6 @@ import forge.card.CardEdition;
import forge.card.FatPackData;
public class FatPack extends OpenablePack {
/** The Constant fnFromSet. */
public static final Function<CardEdition, FatPack> FN_FROM_SET = new Function<CardEdition, FatPack>() {
@Override
public FatPack apply(final CardEdition arg1) {

View File

@@ -20,6 +20,8 @@ package forge.item;
import java.util.List;
import org.apache.commons.lang.NullArgumentException;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
@@ -28,23 +30,28 @@ import forge.card.BoosterData;
import forge.card.BoosterGenerator;
import forge.card.CardRulesPredicates;
import forge.util.Aggregates;
import forge.util.MyRandom;
public abstract class OpenablePack implements InventoryItemFromSet {
protected final BoosterData contents;
protected final String name;
private final int artIndex;
private final int hash;
private List<CardPrinted> cards = null;
private BoosterGenerator generator = null;
public OpenablePack(final String name0, final BoosterData boosterData) {
this.contents = boosterData;
this.name = name0;
public OpenablePack(String name0, BoosterData boosterData) {
if (null == name0) { throw new NullArgumentException("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
public final String getName() {
return this.name + " " + this.getItemType();
return name + " " + getItemType();
}
public String getDescription() {
@@ -53,23 +60,27 @@ public abstract class OpenablePack implements InventoryItemFromSet {
@Override
public final String getEdition() {
return this.contents.getEdition();
return contents.getEdition();
}
public final int getArtIndex() {
return artIndex;
}
public final List<CardPrinted> getCards() {
if (null == this.cards) {
this.cards = this.generate();
if (null == cards) {
cards = generate();
}
return this.cards;
return cards;
}
public int getTotalCards() {
return this.contents.getTotal();
return contents.getTotal();
}
@Override
public final boolean equals(final Object obj) {
public final boolean equals(Object obj) {
if (this == obj) {
return true;
}
@@ -79,34 +90,25 @@ public abstract class OpenablePack implements InventoryItemFromSet {
if (this.getClass() != obj.getClass()) {
return false;
}
final OpenablePack other = (OpenablePack) obj;
if (this.contents == null) {
if (other.contents != null) {
return false;
}
} else if (!this.contents.equals(other.contents)) {
return false;
}
return true;
OpenablePack other = (OpenablePack)obj;
return name.equals(other.name) && contents.equals(other.contents) && artIndex == other.artIndex;
}
@Override
public final int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result) + ((this.contents == null) ? 0 : this.contents.hashCode());
return result;
System.out.println(String.format("returning hash: %d for edition=%s; idx=%d", hash, getEdition(), getArtIndex()));
return hash;
}
protected List<CardPrinted> generate() {
if (null == this.generator) {
this.generator = new BoosterGenerator(this.contents.getEditionFilter());
if (null == generator) {
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) {
myCards.add(this.getRandomBasicLand(this.contents.getLandEdition()));
myCards.add(getRandomBasicLand(contents.getLandEdition()));
}
return myCards;
}