From 59ba8c0a80f3026709705c8e50de9274bf08dba8 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 13 Aug 2022 23:44:44 -0500 Subject: [PATCH] Love Live Number parsing implemented (#1) Co-authored-by: sigonasr2 --- ArcadeReader.java | 2 +- readers/LoveLiveReader.java | 102 ++++++++++++++++++++++-------------- readers/fonts/Font.java | 9 +++- result.png | Bin 8344 -> 33689 bytes sigPlace.java | 2 +- sub.png | Bin 1162 -> 683 bytes 6 files changed, 71 insertions(+), 44 deletions(-) diff --git a/ArcadeReader.java b/ArcadeReader.java index 5d34a90..d288478 100644 --- a/ArcadeReader.java +++ b/ArcadeReader.java @@ -59,6 +59,6 @@ public class ArcadeReader { * */ public static void retrieveData(Path img) { - new ITGReader().interpretBoxes(img); + new LoveLiveReader().interpretBoxes(img); } } diff --git a/readers/LoveLiveReader.java b/readers/LoveLiveReader.java index de0d9d2..af9d80b 100644 --- a/readers/LoveLiveReader.java +++ b/readers/LoveLiveReader.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,27 +13,31 @@ import java.util.regex.Pattern; import javax.imageio.ImageIO; +import readers.fonts.Font; +import readers.fonts.Glyph; + public class LoveLiveReader extends Reader{ List extraRegions = new ArrayList<>(); static int lastJump=0; public LoveLiveReader(){ - readRegions.add(new Box(713,401,232,50)); //score[0] - readRegions.add(new Box(613,290,65,36)); //rank[1] + addRegion(new Box(713,401,232,50),NUMBER); //score[0] + addRegion(new Box(613,290,65,36)); //rank[1] extraRegions.add(new Box(65,604,250,53)); //perfect outline[0] extraRegions.add(new Box(65,680,250,53)); //great outline[1] extraRegions.add(new Box(65,760,250,53)); //good outline[2] extraRegions.add(new Box(65,840,250,53)); //bad outline[3] extraRegions.add(new Box(65,920,250,53)); //miss outline[4] - readRegions.add(new Box(509,604,190,54)); //notes[2] - readRegions.add(new Box(509,680,190,54)); //notes[3] - readRegions.add(new Box(509,760,190,54)); //notes[4] - readRegions.add(new Box(509,840,190,54)); //notes[5] - readRegions.add(new Box(509,920,190,54)); //notes[6] - readRegions.add(new Box(26,374,265,36)); //difficulty[7] - readRegions.add(new Box(277,165,572,40)); //title[8] - readRegions.add(new Box(716,502,226,45)); //pct[9] - readRegions.add(new Box(782,452,158,50)); //maxcombo[10] - readRegions.add(new Box(100,470,84,42)); //difficultylv[11] + addRegion(new Box(509,604,190,54),NUMBER); //notes[2] + addRegion(new Box(509,680,190,54),NUMBER); //notes[3] + addRegion(new Box(509,760,190,54),NUMBER); //notes[4] + addRegion(new Box(509,840,190,54),NUMBER); //notes[5] + addRegion(new Box(509,920,190,54),NUMBER); //notes[6] + addRegion(new Box(26,374,265,36)); //difficulty[7] + addRegion(new Box(277,165,572,40)); //title[8] + addRegion(new Box(716,502,226,45),NUMBER); //pct[9] + addRegion(new Box(782,452,158,50),NUMBER); //maxcombo[10] + addRegion(new Box(100,470,84,42)); //difficultylv[11] + init(); } void ColorFilter(int[] arr,int region,int width) { @@ -187,6 +192,7 @@ public class LoveLiveReader extends Reader{ int regionHeights = 0; int maxWidth = 0; + int counter = 0; for (int i=0;imaxWidth) { @@ -199,35 +205,21 @@ public class LoveLiveReader extends Reader{ Graphics2D g = cutImg.createGraphics(); int currentHeight=0; for (int i=0;i=2&&i<=6) { - int[] arr2 = originalImg.getRGB(extraRegions.get(i-2).x, extraRegions.get(i-2).y, extraRegions.get(i-2).w, extraRegions.get(i-2).h, null, 0, extraRegions.get(i-2).w); - int rightMost=0; - ColorFilter(arr2,400+i-2,extraRegions.get(i-2).w); - for (int j=0;jrightMost) { - rightMost=j%extraRegions.get(i-2).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-2).w,extraRegions.get(i-2).h,arr2,0,extraRegions.get(i-2).w); - final int PADDING = 8; - for (int x=leftMost;x glyphs = Glyph.split(cutImg); + return f.convertGlyphs(glyphs); + } + case 2: + case 3: + case 4: + case 5: + case 6:{ + Font f = Font.FONT_LOVELIVE_NOTECOUNT; + List glyphs = Glyph.split(cutImg); + return f.convertGlyphs(glyphs); + } + case 9:{ + Font f = Font.FONT_LOVELIVE_PCT; + List glyphs = Glyph.split(cutImg); + glyphs.remove(glyphs.size()-3); + glyphs.remove(glyphs.size()-1); + String res = f.convertGlyphs(glyphs,true); + return res.substring(0,glyphs.size()-1)+"."+res.substring(glyphs.size()-1,glyphs.size()); + } + } + return ""; + } + void interpretResults(String[] finalData) { for (int i=0;i glyphs) { + return convertGlyphs(glyphs,false); + } + + public String convertGlyphs(List glyphs,boolean debug) { StringBuilder sb = new StringBuilder(); for (int i=0;ibestScore) { bestScore=score; bestGlyph=j; - //System.out.println("Glyph "+j+" has a score of "+bestScore+"."); + if (debug) { + System.out.println("Glyph "+j+" has a score of "+bestScore+"."); + } } } sb.append(bestGlyph); diff --git a/result.png b/result.png index 8de097c65962ee377a2e68f68e25e6f4973d93d5..396c7cf66cff37ff75a7d62af27e686953151e56 100644 GIT binary patch literal 33689 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
1bFIv}3s-L=2!SE8 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 data; try { diff --git a/sub.png b/sub.png index c564cfa904c5fad4d7c9b240f4f33eea0dc6feff..83bd2393ad0cf961d0ce580a205950462d46e24e 100644 GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^AwaCf!3HFCoofmh7?_GYT^vIy;@)1knDxX!z~$o4 z|MSmHQWW0OKJ7~G_BNKHg>i3IY2WNWF8#BjrbfcLUgXE`neiom8-(q*oK{}G=l@@p z`=ORkUwznX@wE1m?)wiF%h&yW`RY^M;w{cK#~;V06>dNLSLdCV#%|p|i(Y-?oB5)n zU~*@lNmm}X{)3xSUr23??p!D0mF9Fm)#zRLj@54WxvQ_fxV`8=$gZ?IX$A9pr`#JsQhj7#mz?wr}X)@&OH4*t;FTbFFW(a$=#1N zuJ-=bvswPyCwBWDu0iH{ls^_o&8<)aj*0~VVI8!4x z-hH#K>E1fylG4ig8f!Z4rj$pPl+Rtf`t)y?MAujAHr-u#9qc9j;?NiGx{_P{z>eO3 zMs()%jz`P7_UUb3r}y4G^yV8OyX%s+vlku*tKRS8x@C96`{RCJa@zR7I{s_iJe`tzpt(Mc$fW#F*q#iW#TNlX8XU900)OXoBpn@ z+mcu7+O)q{SpVA)d*{F5gY&CguIDfQYyHRZ>WkmGJ@-HIKM2n9Wo5ek4VVZSJYD@< J);T3K0RU7LX6XO` literal 1162 zcmZXTdrVt(6vux|L9;sl(3rUmMg%8@nl7OV1B7M5#%mO06fCbUKzkF0Fm0g_pe55~ znIcaM6u52B6_l1TxMR?j0YL+DftH7b-3?lFxh)jhjPA?NPrn9$mp_dPKbKgPVO~6!ho5=Pb$HMz zEvdflGWAvLOb@^ISh7pnooA7IMOlh%jVBTH;$*B@B}0NL6nRUN2@Sf4aNv%S>a=FsSgsiCC*dK!ZTAY;A20E2aJ0oNGYldrm{n{SRSkj5>;AS zu$_a@hRPhrZx@C4Ywz=*v}ba4s#YnhTU}8*EIa@P5-A>9TaC!KB+BPoDF zX8xl{CPj+VabK)K=pY}MxRu3)aW2=m`)dgR8Sgh#BChXBpzk()F(iwY#6H_v0tE!j z!QE>_UkMZs#?r+xhNhB1-izZ}Cl~1~ripD;yMoVZNfDHH7?4O1H&8f_WX(rAzZtkv z$Yevpy&E(`4DTcu_J#LOKE<6S4%*-0zlx2+#DNVT_HopXJpYOdY7faQd z)Znv1T6G#}bAVx9G5YLh!GmXtG7f|0xafb(0q*!5>`ohxUrKR8?C6=!s ze0PGeEGD8o|L)tc5@m+Ok$IItd+=my9n4}IZ_wNbc3SC=a|`3Q5b*{Bnupg#16>{K zu_6iG?&+6Iw;uwzz4wZ^+d-o5C*qR~UGk?DHk}L|q+*vUNdPLSu1F6DFha|bV-6^<4p