diff --git a/ArcadeReader.java b/ArcadeReader.java index b7e0753..e3f42e3 100644 --- a/ArcadeReader.java +++ b/ArcadeReader.java @@ -59,6 +59,6 @@ public class ArcadeReader { * */ public static void retrieveData(Path img) { - new PopnReader().interpretBoxes(img); + new SoundVoltexReader().interpretBoxes(img); } } diff --git a/readers/SoundVoltexReader.java b/readers/SoundVoltexReader.java index b9b703a..a4e1f81 100644 --- a/readers/SoundVoltexReader.java +++ b/readers/SoundVoltexReader.java @@ -2,6 +2,7 @@ package readers; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; +import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; @@ -12,34 +13,37 @@ import java.util.regex.Pattern; import javax.imageio.ImageIO; +import readers.fonts.Font; +import readers.fonts.Glyph; + public class SoundVoltexReader extends Reader{ final static int REGION_PADDING = 32; List extraRegions = new ArrayList<>(); static int lastJump=0; public SoundVoltexReader(){ - readRegions.add(new Box(430,1006,454,29)); //title[0] - readRegions.add(new Box(458,1075,240,57)); //bigscore[1] - readRegions.add(new Box(697,1096,146,34)); //score[2] - readRegions.add(new Box(630,1142,110,16)); //exscore[3] - readRegions.add(new Box(932,1194,55,19)); //health percentage[4] - readRegions.add(new Box(617,1237,70,23)); //early error[5] - readRegions.add(new Box(617,1268,70,23)); //early near[6] - readRegions.add(new Box(617,1300,70,23)); //early critical[7] - readRegions.add(new Box(617,1330,70,23)); //s-critical[8] - readRegions.add(new Box(617,1362,70,23)); //late critical[9] - readRegions.add(new Box(617,1393,70,23)); //late near[10] - readRegions.add(new Box(617,1424,70,23)); //late error[11] - readRegions.add(new Box(188,1231,70,23)); //chip s-critical[12] - readRegions.add(new Box(188,1262,70,23)); //chip critical[13] - readRegions.add(new Box(188,1294,70,23)); //chip near[14] - readRegions.add(new Box(188,1324,70,23)); //chip error[15] - readRegions.add(new Box(266,1231,70,23)); //long s-critical[16] - readRegions.add(new Box(266,1324,70,23)); //long error[17] - readRegions.add(new Box(345,1231,70,23)); //vol s-critical[18] - readRegions.add(new Box(345,1324,70,23)); //vol error[19] - readRegions.add(new Box(304,1364,70,23)); //max combo[20] - readRegions.add(new Box(233,880,84,20)); //difficulty[21] - readRegions.add(new Box(875,1046,125,82)); //rating[22] + addRegion(new Box(385,1006,454,29)); //title[0] + addRegion(new Box(476,1075,242,57),NUMBER); //bigscore[1] + addRegion(new Box(717,1096,146,34),NUMBER); //score[2] + addRegion(new Box(630,1142,110,16),NUMBER); //exscore[3] + addRegion(new Box(932,1194,55,19)); //health percentage[4] + addRegion(new Box(617,1237,70,23),NUMBER); //early error[5] + addRegion(new Box(617,1268,70,23),NUMBER); //early near[6] + addRegion(new Box(617,1300,70,23),NUMBER); //early critical[7] + addRegion(new Box(617,1330,70,23),NUMBER); //s-critical[8] + addRegion(new Box(617,1362,70,23),NUMBER); //late critical[9] + addRegion(new Box(617,1393,70,23),NUMBER); //late near[10] + addRegion(new Box(617,1424,70,23),NUMBER); //late error[11] + addRegion(new Box(188,1231,70,23),NUMBER); //chip s-critical[12] + addRegion(new Box(188,1262,70,23),NUMBER); //chip critical[13] + addRegion(new Box(188,1294,70,23),NUMBER); //chip near[14] + addRegion(new Box(188,1324,70,23),NUMBER); //chip error[15] + addRegion(new Box(266,1231,70,23),NUMBER); //long s-critical[16] + addRegion(new Box(266,1324,70,23),NUMBER); //long error[17] + addRegion(new Box(345,1231,70,23),NUMBER); //vol s-critical[18] + addRegion(new Box(345,1324,70,23),NUMBER); //vol error[19] + addRegion(new Box(304,1364,70,23),NUMBER); //max combo[20] + addRegion(new Box(58,862,132,26)); //difficulty[21] + addRegion(new Box(875,1046,125,82)); //rating[22] @@ -61,6 +65,8 @@ public class SoundVoltexReader extends Reader{ extraRegions.add(new Box(62,1230,119,24)); //s-critical extra text[15] extraRegions.add(new Box(62,1325,119,24)); //error extra text[16] extraRegions.add(new Box(71,1365,171,22)); //maximum chain text[17] + + init(); } void ColorFilter(int[] arr,int region,int width) { @@ -302,6 +308,7 @@ public class SoundVoltexReader extends Reader{ int regionHeights = 0; int maxWidth = 0; + int counter = 0; for (int i=0;imaxWidth) { @@ -314,71 +321,21 @@ public class SoundVoltexReader extends Reader{ Graphics2D g = cutImg.createGraphics(); int currentHeight=0; for (int i=0;i10) { - found=true; - reachedPoint=x; - System.out.println(reachedPoint+"-"+pixelGapStart); - break; - } - pixelGap=0; - pixelGapStart=x; - break; - } - } - if (found) { - break; - } - pixelGap++; - } - final int PADDING = 14; - //From the pixelGapStart X, cut down the pixels to reach the point next to the previous pixels. - for (int x=reachedPoint;x=3&&i<=20) { - int[] arr2 = originalImg.getRGB(extraRegions.get(i-3).x, extraRegions.get(i-3).y, extraRegions.get(i-3).w, extraRegions.get(i-3).h, null, 0, extraRegions.get(i-3).w); - int rightMost=0; - ColorFilter(arr2,400+i-3,extraRegions.get(i-3).w); - for (int j=0;jrightMost) { - rightMost=j%extraRegions.get(i-3).w; - } - } - //cutImg.setRGB(rightMost-leftMost,currentHeight,readRegions.get(i).w,readRegions.get(i).h,arr,0,readRegions.get(i).w); - cutImg.setRGB(0,currentHeight,extraRegions.get(i-3).w,extraRegions.get(i-3).h,arr2,0,extraRegions.get(i-3).w); - final int PADDING = 4; - for (int x=leftMost;x glyphs = Glyph.split(cutImg); + return f.convertGlyphs(glyphs); + } + case 2:{ + Font f = Font.FONT_SDVX_LITTLESCORE; + List glyphs = Glyph.split(cutImg); + return f.convertGlyphs(glyphs); + } + case 3:{ + Font f = Font.FONT_SDVX_EXSCORE; + List glyphs = Glyph.split(cutImg); + return f.convertGlyphs(glyphs); + } + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20:{ + Font f = Font.FONT_SDVX_NOTECOUNT; + List glyphs = Glyph.split(cutImg); + return f.convertGlyphs(glyphs); + } + } + return ""; + } + @Override void interpretResults(String[] finalData) { for (int i=0;i data; try { diff --git a/sub.png b/sub.png index 2819cb6..04bb6eb 100644 Binary files a/sub.png and b/sub.png differ diff --git a/test.png b/test.png index 6ecce7c..baed8e5 100644 Binary files a/test.png and b/test.png differ