diff --git a/DivaBot/liveimage.png b/DivaBot/liveimage.png index 5f79fa2..48312a0 100644 Binary files a/DivaBot/liveimage.png and b/DivaBot/liveimage.png differ diff --git a/DivaBot/rectangle0.png b/DivaBot/rectangle0.png index bb9aa93..125b342 100644 Binary files a/DivaBot/rectangle0.png and b/DivaBot/rectangle0.png differ diff --git a/DivaBot/rectangle1.png b/DivaBot/rectangle1.png index d5dfe52..2a668aa 100644 Binary files a/DivaBot/rectangle1.png and b/DivaBot/rectangle1.png differ diff --git a/DivaBot/rectangle2.png b/DivaBot/rectangle2.png index e812cd0..845c11e 100644 Binary files a/DivaBot/rectangle2.png and b/DivaBot/rectangle2.png differ diff --git a/DivaBot/rectangle3.png b/DivaBot/rectangle3.png index 8634d94..46cf644 100644 Binary files a/DivaBot/rectangle3.png and b/DivaBot/rectangle3.png differ diff --git a/DivaBot/rectangle4.png b/DivaBot/rectangle4.png index f12616a..8215f8f 100644 Binary files a/DivaBot/rectangle4.png and b/DivaBot/rectangle4.png differ diff --git a/DivaBot/src/sig/MyRobot.java b/DivaBot/src/sig/MyRobot.java index d37679b..3f9274f 100644 --- a/DivaBot/src/sig/MyRobot.java +++ b/DivaBot/src/sig/MyRobot.java @@ -202,18 +202,10 @@ public class MyRobot{ overlayHidden=false; p.repaint(0, 0, 1400, 1000); } - /*selectedSong=new SongData("test",new Color[] {}); - difficulty="EXEX";*/ - if ((selectedSong!=null && difficulty!=null) /*|| true*/) { - //Look for the results screen. - //602,217 254,254,254 - //602,260 16,222,202 - //901,460 220-255,220-255,160-220 + if ((selectedSong!=null && difficulty!=null)) { - if (OnResultsScreen() && !recordedResults && !recordingResults && results.size()==0 && false) { + if (OnResultsScreen() && !recordedResults && !recordingResults && results.size()==0) { lastSongSelectTime=System.currentTimeMillis(); - //gotoxy(800,64); - //click(); MYROBOT.setAutoDelay(0); MYROBOT.keyPress(KeyEvent.VK_CONTROL); MYROBOT.keyPress(KeyEvent.VK_SHIFT); @@ -221,13 +213,6 @@ public class MyRobot{ MYROBOT.keyRelease(KeyEvent.VK_F12); MYROBOT.keyRelease(KeyEvent.VK_SHIFT); MYROBOT.keyRelease(KeyEvent.VK_CONTROL); - //1885,761 - //System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,451,115,26)))); - //System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,484,115,26)))); - //System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,518,115,26)))); - //System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,553,115,26)))); - //System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,583,115,26)))); - //System.out.println(typeface2.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1428,361,128,30)))); MYROBOT.refreshScoreScreen(); ImageIO.write(MYROBOT.createNormalScreenCapture(new Rectangle(418,204,1227,690)),"png",new File("scoreimage.png")); File tmp = new File("tmp"); @@ -236,57 +221,47 @@ public class MyRobot{ } else { tmp.mkdir(); } - int[] data = typeface1.getAllData(MYROBOT.createScoreScreenCapture()); - /*int cool = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,451,115,26)),new File(tmp,"cool")); - int fine = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,484,115,26)),new File(tmp,"fine")); - int safe = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,518,115,26)),new File(tmp,"safe")); - int sad = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,553,115,26)),new File(tmp,"sad")); - int worst = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,583,115,26)),new File(tmp,"worst")); - */ - boolean fail = textFailPixel(MYROBOT.createNormalScreenCapture(new Rectangle(952,385,1,1))); - /*try { - ImageIO.write(MYROBOT.createScreenCapture(new Rectangle(1235,583,115,26)),"png",new File("worst.png")); - } catch (IOException e) { - e.printStackTrace(); - }*/ - //TODO PERCENT - //float percent = (float)typeface2.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1428,361,128,30)),new File(tmp,"percent"))/100f; - ImageIO.write(MYROBOT.createNormalScreenCapture(new Rectangle(418,204,1227,690)),"png",new File("test.png")); - if (cool==-1 || fine==-1 || safe==-1 || sad==-1 || worst==-1 || percent==-0.01f) { - System.out.println("Waiting for results to populate..."); - } else - if (fail!=lastfail || cool!=lastcool || lastfine!=fine || lastsafe!=safe || lastsad!=sad || lastworst!=worst /*|| lastpercent!=percent*/){ - System.out.println("Results for "+selectedSong.title+" "+difficulty+": "+cool+"/"+fine+"/"+safe+"/"+sad+"/"+worst+" "+percent+"%"); - - System.out.println("Results for "+selectedSong.title+" "+difficulty+": "+cool+"/"+fine+"/"+safe+"/"+sad+"/"+worst+" "+percent+"%"); - File songFolder = new File(selectedSong.title+"/"+difficulty); - if (!songFolder.exists()) { - songFolder.mkdirs(); + try { + Result data = typeface1.getAllData(MYROBOT.createScoreScreenCapture()); + ImageIO.write(MYROBOT.createNormalScreenCapture(new Rectangle(418,204,1227,690)),"png",new File("test.png")); + if (data.cool==-1 || data.fine==-1 || data.safe==-1 || data.sad==-1 || data.worst==-1 || data.percent<0f || data.percent>110f) { + System.out.println("Waiting for results to populate..."); + } else + if (data.fail!=lastfail || data.cool!=lastcool || lastfine!=data.fine || lastsafe!=data.safe || lastsad!=data.sad || lastworst!=data.worst /*|| lastpercent!=percent*/){ + System.out.println("Results for "+selectedSong.title+" "+difficulty+": "+data.cool+"/"+data.fine+"/"+data.safe+"/"+data.sad+"/"+data.worst+" "+data.percent+"%"); + + System.out.println("Results for "+selectedSong.title+" "+difficulty+": "+data.cool+"/"+data.fine+"/"+data.safe+"/"+data.sad+"/"+data.worst+" "+data.percent+"%"); + File songFolder = new File(selectedSong.title+"/"+difficulty); + if (!songFolder.exists()) { + songFolder.mkdirs(); + } + File[] songFolderFiles = songFolder.listFiles(); + int playId = songFolderFiles.length; + File playFolder = new File(selectedSong.title+"/"+difficulty+"/"+playId); + playFolder.mkdir(); + recordedResults=true; + lastcool=data.cool; + lastfine=data.fine; + lastsafe=data.safe; + lastsad=data.sad; + lastworst=data.worst; + lastpercent=data.percent; + lastfail=data.fail; + new File("scoreimage.png").renameTo(new File(playFolder,selectedSong.title+"_"+difficulty+"play_"+data.cool+"_"+data.fine+"_"+data.safe+"_"+data.sad+"_"+data.worst+"_"+data.percent+".png")); + results.add(new Result(selectedSong.title,difficulty,data.cool,data.fine,data.safe,data.sad,data.worst,data.percent,data.fail)); + SoundUtils.playSound("collect_item.wav"); + //gotoxy(800,64); + //click(); + MYROBOT.setAutoDelay(0); + MYROBOT.keyPress(KeyEvent.VK_CONTROL); + MYROBOT.keyPress(KeyEvent.VK_SHIFT); + MYROBOT.keyPress(KeyEvent.VK_F11); + MYROBOT.keyRelease(KeyEvent.VK_F11); + MYROBOT.keyRelease(KeyEvent.VK_SHIFT); + MYROBOT.keyRelease(KeyEvent.VK_CONTROL); } - File[] songFolderFiles = songFolder.listFiles(); - int playId = songFolderFiles.length; - File playFolder = new File(selectedSong.title+"/"+difficulty+"/"+playId); - playFolder.mkdir(); - recordedResults=true; - lastcool=cool; - lastfine=fine; - lastsafe=safe; - lastsad=sad; - lastworst=worst; - lastpercent=percent; - lastfail=fail; - new File("scoreimage.png").renameTo(new File(playFolder,selectedSong.title+"_"+difficulty+"play_"+cool+"_"+fine+"_"+safe+"_"+sad+"_"+worst+"_"+percent+".png")); - results.add(new Result(selectedSong.title,difficulty,cool,fine,safe,sad,worst,percent,fail)); - SoundUtils.playSound("collect_item.wav"); - //gotoxy(800,64); - //click(); - MYROBOT.setAutoDelay(0); - MYROBOT.keyPress(KeyEvent.VK_CONTROL); - MYROBOT.keyPress(KeyEvent.VK_SHIFT); - MYROBOT.keyPress(KeyEvent.VK_F11); - MYROBOT.keyRelease(KeyEvent.VK_F11); - MYROBOT.keyRelease(KeyEvent.VK_SHIFT); - MYROBOT.keyRelease(KeyEvent.VK_CONTROL); + } catch (IOException|NumberFormatException|IndexOutOfBoundsException e) { + } } else { if (results.size()>0) { @@ -355,64 +330,6 @@ public class MyRobot{ } catch (JSONException | IOException e) { e.printStackTrace(); } - /*MYROBOT.setAutoDelay(0); - MYROBOT.keyPress(KeyEvent.VK_ALT); - MYROBOT.keyPress(KeyEvent.VK_TAB); - MYROBOT.keyRelease(KeyEvent.VK_ALT); - MYROBOT.setAutoDelay(5000); - MYROBOT.keyRelease(KeyEvent.VK_TAB); - boolean first=true; - for (Result r : results) { - if (!first) { - MYROBOT.setAutoDelay(5000); - } else { - first=false; - MYROBOT.setAutoDelay(100); - TYPE_DELAY=50; - } - StringSelection selection = new StringSelection((r.songName.equalsIgnoreCase("PIANOGIRL"))?"PIANO*GIRL":r.songName); - Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - clipboard.setContents(selection, selection); - MYROBOT.keyPress(KeyEvent.VK_CONTROL); - MYROBOT.keyPress(KeyEvent.VK_V); - MYROBOT.keyRelease(KeyEvent.VK_V); - MYROBOT.keyRelease(KeyEvent.VK_CONTROL); - MYROBOT.setAutoDelay(100); - MYROBOT.keyPress(KeyEvent.VK_TAB); - type(Integer.toString(r.cool)); - MYROBOT.keyPress(KeyEvent.VK_TAB); - type(Integer.toString(r.fine)); - MYROBOT.keyPress(KeyEvent.VK_TAB); - type(Integer.toString(r.safe)); - MYROBOT.keyPress(KeyEvent.VK_TAB); - type(Integer.toString(r.sad)); - MYROBOT.keyPress(KeyEvent.VK_TAB); - type(Integer.toString(r.worst)); - MYROBOT.keyPress(KeyEvent.VK_TAB); - type(r.difficulty); - MYROBOT.keyPress(KeyEvent.VK_TAB); - type(Float.toString(r.percent)); - MYROBOT.keyPress(KeyEvent.VK_TAB); - MYROBOT.keyRelease(KeyEvent.VK_TAB); - MYROBOT.setAutoDelay(0); - MYROBOT.keyPress(KeyEvent.VK_CONTROL); - MYROBOT.keyPress(KeyEvent.VK_ALT); - MYROBOT.keyPress(KeyEvent.VK_SHIFT); - MYROBOT.keyPress(KeyEvent.VK_1); - MYROBOT.keyRelease(KeyEvent.VK_1); - MYROBOT.keyRelease(KeyEvent.VK_CONTROL); - MYROBOT.keyRelease(KeyEvent.VK_ALT); - MYROBOT.keyRelease(KeyEvent.VK_SHIFT); - } - results.clear(); - sleep(1000); - MYROBOT.setAutoDelay(0); - MYROBOT.keyPress(KeyEvent.VK_ALT); - MYROBOT.keyPress(KeyEvent.VK_TAB); - MYROBOT.keyRelease(KeyEvent.VK_ALT); - MYROBOT.setAutoDelay(250); - MYROBOT.keyRelease(KeyEvent.VK_TAB); - */ recordingResults=false; } if (!OnResultsScreen() && recordedResults) { @@ -423,13 +340,8 @@ public class MyRobot{ } MYROBOT.refreshScreen(); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } - //572,453 - //Red: 100-200, Blue: 200-255 Purple (EXEX) - //Red: 150-255, Green: < 50 Blue: < 50 (EX) - //Red: 175-225, Green: 135-175 Blue: < 50 (Hard) } private boolean OnResultsScreen() { @@ -482,17 +394,6 @@ public class MyRobot{ SongData.loadSongsFromFile(); - //img.get - //System.out.println("Captured in "+(System.currentTimeMillis()-startTime)+"ms"); - /*for (int i=0;i<200;i++) { - for (int j=0;j<5;j++) { - System.out.println(img.getRGB(i, j)); - } - } - System.out.println("Took "+(System.currentTimeMillis()-startTime)+"ms");*/ - //System.out.println(Arrays.deepToString(SCREEN)); - //460,426 - //Screen = new Color[] System.setProperty("awt.useSystemAAFontSettings","on"); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -505,13 +406,6 @@ public class MyRobot{ typeface1 = null; typeface2=null; try { - /*img1 = ImageUtils.toCompatibleImage(ImageIO.read(new File("typeface1.png"))); - img2 = ImageUtils.toCompatibleImage(ImageIO.read(new File("typeface2.png"))); - typeface1 = new TypeFace2(img1); - typeface2 = new TypeFace2(img2); - typeface2.green_minthreshold=typeface2.blue_minthreshold=100; - typeface2.green_maxthreshold=typeface2.blue_maxthreshold=200; - typeface2.darkFillCheck=false;*/ typeface1 = new TypeFace2( ImageIO.read(new File("typeface.png")), ImageIO.read(new File("typeface2.png")) @@ -540,54 +434,7 @@ public class MyRobot{ //System.out.println(title.getText()); } }); - /*inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "Press"); //DEBUG KEYS. - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), "Identifier"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), "Toggle");*/ - /*actionMap.put("Press", new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - BufferedImage img = ImageUtils.toCompatibleImage(MYROBOT.createScreenCapture(new Rectangle(460,426,WIDTH,HEIGHT))); - Color[] col = new Color[WIDTH*HEIGHT]; - for (int i=0;i=SONGNAMES.length)?"DONE!":SONGNAMES[currentSong]); - //System.out.println(title.getText()); - } - }); - actionMap.put("Identifier", new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - BufferedImage img = ImageUtils.toCompatibleImage(MYROBOT.createScreenCapture(new Rectangle(460,426,WIDTH,HEIGHT))); - Color[] col = new Color[WIDTH*HEIGHT]; - for (int i=0;i=SONGNAMES.length)?"DONE!":SONGNAMES[currentSong].name); SongData s = SongData.getByTitle(SONGNAMES[currentSong].name); - /*BufferedImage bufferedImage = new BufferedImage(TypeFace.WIDTH, TypeFace.HEIGHT, - BufferedImage.TYPE_INT_RGB); - for (int i=0;i125 + //1113,122 HD G>100, R>125 + //1145,104 SD G>100, B>125 + Color modPixel = new Color(img2.getRGB(1082, 101)); + if (modPixel.getRed()>125) {return "HS";} + modPixel = new Color(img2.getRGB(1113, 122)); + if (modPixel.getGreen()>100&&modPixel.getRed()>125) {return "HD";} + modPixel = new Color(img2.getRGB(1145, 104)); + if (modPixel.getGreen()>100&&modPixel.getBlue()>125) {return "SD";} + return ""; + } + + private String getDifficulty(Color difficultyPixel) { + String[] diffs = new String[] {"E","N","H","EX","EXEX"}; + Color[] cols = new Color[] {new Color(95,243,255),new Color(20,234,0),new Color(251,191,0),new Color(253,14,81),new Color(157,0,227),}; + int lowestDistance = Integer.MAX_VALUE; + int lowestIndex = -1; + for (int i=0;i130)) { + if ((pixelCol.getRed()<93 + && pixelCol.getGreen()<176 && pixelCol.getBlue()>130)) { if (debug) { test.setRGB(x, y, pixelCol.getRGB()); } @@ -253,8 +292,8 @@ public class TypeFace2 { } } else if (fontCol.equals(Color.GREEN)) { - if ((pixelCol.getRed()<75 - && pixelCol.getGreen()<170 && pixelCol.getBlue()>130)) { + if ((pixelCol.getRed()<93 + && pixelCol.getGreen()<176 && pixelCol.getBlue()>130)) { if (debug) { test.setRGB(x, y, pixelCol.getRGB()); } @@ -346,7 +385,7 @@ public class TypeFace2 { } } else if (fontCol.equals(Color.GREEN) && (pixelCol.getRed()>166 - || pixelCol.getGreen()>166 || pixelCol.getBlue()>166)) { + || pixelCol.getGreen()>166 || pixelCol.getBlue()>175)) { //Breaks a rule. ruleBreak=true; if (!debug) { diff --git a/DivaBot/testsuite/test10.jpg b/DivaBot/testsuite/test10.jpg new file mode 100644 index 0000000..7b18a2a Binary files /dev/null and b/DivaBot/testsuite/test10.jpg differ diff --git a/DivaBot/testsuite/test11.jpg b/DivaBot/testsuite/test11.jpg new file mode 100644 index 0000000..8e9aaf7 Binary files /dev/null and b/DivaBot/testsuite/test11.jpg differ diff --git a/DivaBot/testsuite/test12.jpg b/DivaBot/testsuite/test12.jpg new file mode 100644 index 0000000..941ffa9 Binary files /dev/null and b/DivaBot/testsuite/test12.jpg differ diff --git a/DivaBot/testsuite/test13.jpg b/DivaBot/testsuite/test13.jpg new file mode 100644 index 0000000..ea89bae Binary files /dev/null and b/DivaBot/testsuite/test13.jpg differ diff --git a/DivaBot/testsuite/test9.jpg b/DivaBot/testsuite/test9.jpg new file mode 100644 index 0000000..ea50395 Binary files /dev/null and b/DivaBot/testsuite/test9.jpg differ diff --git a/DivaBot/typeface.png b/DivaBot/typeface.png index 1d2f125..87da6e7 100644 Binary files a/DivaBot/typeface.png and b/DivaBot/typeface.png differ