mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48: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
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
static {
|
||||
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 )
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 int getArtIndices() {
|
||||
return artIndices;
|
||||
}
|
||||
|
||||
public PackData(String edition0, String landEdition0, int nBasicLands)
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,4 +46,8 @@ public class BoosterPack extends OpenablePack {
|
||||
public final Object clone() {
|
||||
return new BoosterPack(name, contents);
|
||||
}
|
||||
|
||||
public BoosterData getBoosterData() {
|
||||
return contents;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user