Finished successful implementation of ypointer saving between future

tone and megamix
secondmonitor
sigonasr2 4 years ago
parent d49eee4830
commit ef0afa0292
  1. BIN
      DivaBot/rectangle0.png
  2. BIN
      DivaBot/rectangle1.png
  3. BIN
      DivaBot/rectangle2.png
  4. BIN
      DivaBot/rectangle3.png
  5. BIN
      DivaBot/rectangle4.png
  6. 4
      DivaBot/src/sig/Calibrator2.java
  7. 1
      DivaBot/src/sig/CustomRobot.java
  8. 403
      DivaBot/src/sig/MyRobot.java
  9. 125
      DivaBot/src/sig/TypeFace2.java
  10. BIN
      DivaBot/typeface.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

@ -104,8 +104,8 @@ public class Calibrator2 {
Overlay.OVERLAY.setVisible(true); Overlay.OVERLAY.setVisible(true);
MyRobot.CALIBRATIONSTATUS="Calibration is complete! - X"+(MyRobot.STARTDRAG.x)+" Y"+(MyRobot.STARTDRAG.y)+" W"+(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)+" H"+(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y)+" R"+((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y)); MyRobot.CALIBRATIONSTATUS="Calibration is complete! - X"+(MyRobot.STARTDRAG.x)+" Y"+(MyRobot.STARTDRAG.y)+" W"+(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)+" H"+(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y)+" R"+((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y));
if (((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y))<=16/9f-0.04|| if (((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y))<=16/9f-0.015||
((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y))>=16/9f+0.04) { ((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y))>=16/9f+0.015) {
int dialogResult = JOptionPane.showConfirmDialog (null, "Could not detect the game properly!\n\nYour calibration cut a bit "+((((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y))<=16/9f-0.04)?"more":"less")+" than expected. Do you want to try selecting a more accurate region?","Warning",JOptionPane.YES_NO_OPTION); int dialogResult = JOptionPane.showConfirmDialog (null, "Could not detect the game properly!\n\nYour calibration cut a bit "+((((float)(MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x)/(MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y))<=16/9f-0.04)?"more":"less")+" than expected. Do you want to try selecting a more accurate region?","Warning",JOptionPane.YES_NO_OPTION);
if(dialogResult == JOptionPane.YES_OPTION){ if(dialogResult == JOptionPane.YES_OPTION){
MyRobot.STARTDRAG=null; MyRobot.STARTDRAG=null;

@ -57,6 +57,7 @@ public class CustomRobot extends Robot{
calibration_data[1]=Integer.parseInt(data[1]); calibration_data[1]=Integer.parseInt(data[1]);
calibration_data[2]=Integer.parseInt(data[2]); calibration_data[2]=Integer.parseInt(data[2]);
calibration_data[3]=Integer.parseInt(data[3]); calibration_data[3]=Integer.parseInt(data[3]);
TypeFace2.deepCopyDefaultOfficialYPointers();
} }
private boolean CalibrationDataChanged() { private boolean CalibrationDataChanged() {

@ -309,122 +309,32 @@ public class MyRobot{
private void RunMainLoop() { private void RunMainLoop() {
try { try {
if (CALIBRATION_MODE) { if (CALIBRATION_MODE) {
if (MyRobot.calibrating) { if (MyRobot.calibrating) {
MyRobot.calibrating=false; MyRobot.calibrating=false;
Overlay.OVERLAY.setVisible(false); Overlay.OVERLAY.setVisible(false);
Thread.sleep(1000); Thread.sleep(1000);
Calibrator2 c = new Calibrator2(); Calibrator2 c = new Calibrator2();
}
} else {
//ImageIO.write(MYROBOT.createScreenCapture(),"png",new File("testscreen.png"));
if (checkSongSelect()) {
//System.out.println("On song select");
if (!overlayHidden) {
overlayHidden=true;
MyRobot.p.repaint();
}
GetCurrentSong();
GetCurrentDifficulty();
recordedResults=false;
if (selectedSong!=null && difficulty!=null) {
if (!prevSongTitle.equalsIgnoreCase(selectedSong.title) || !prevDifficulty.equalsIgnoreCase(difficulty)) {
System.out.println("On Song Select Screen: Current Song-"+selectedSong.title+" Diff:"+difficulty);
p.pullData(selectedSong.title,difficulty);
MyRobot.p.refreshAllLabels();
prevSongTitle=selectedSong.title;
prevDifficulty=difficulty;
MyRobot.p.repaint();
if (NEWSONGS.length==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);
}
} }
} } else {
lastSongSelectTime = System.currentTimeMillis(); //ImageIO.write(MYROBOT.createScreenCapture(),"png",new File("testscreen.png"));
} else { if (checkSongSelect()) {
MYROBOT.refreshScoreScreen(); //System.out.println("On song select");
ImageIO.write(MYROBOT.createScoreScreenCapture(),"png",new File("scoreimage.png")); if (!overlayHidden) {
if (overlayHidden) { overlayHidden=true;
overlayHidden=false; MyRobot.p.repaint();
MyRobot.p.repaint();
}
if ((selectedSong!=null && difficulty!=null)) {
if (OnResultsScreen() && !recordedResults && !recordingResults && results.size()==0) {
lastSongSelectTime=System.currentTimeMillis();
MYROBOT.setAutoDelay(0);
if (NEWSONGS.length==0) {
MYROBOT.keyPress(KeyEvent.VK_CONTROL);
MYROBOT.keyPress(KeyEvent.VK_SHIFT);
MYROBOT.keyPress(KeyEvent.VK_F12);
MYROBOT.keyRelease(KeyEvent.VK_F12);
MYROBOT.keyRelease(KeyEvent.VK_SHIFT);
MYROBOT.keyRelease(KeyEvent.VK_CONTROL);
}
MYROBOT.refreshScoreScreen();
ImageIO.write(MYROBOT.createScoreScreenCapture(),"png",new File("scoreimage.png"));
File tmp = new File("tmp");
if (tmp.exists()) {
FileUtils.deleteFile(tmp);
} else {
tmp.mkdir();
} }
try { GetCurrentSong();
final Result data = typeface1.getAllData(MYROBOT.createScoreScreenCapture()); GetCurrentDifficulty();
//ImageIO.write(MYROBOT.,"png",new File("test.png")); recordedResults=false;
if (data.cool==-1 || data.fine==-1 || data.safe==-1 || data.sad==-1 || data.worst==-1 || data.percent<0f || data.percent>110f || data.combo==-1 || data.score==-1) { if (selectedSong!=null && difficulty!=null) {
if (lastData==null || (lastData.cool!=data.cool || data.fine!=lastData.fine || data.safe!=lastData.safe || data.sad!=lastData.sad || data.worst!=lastData.worst || data.percent!=lastData.percent || data.combo!=lastData.combo || data.score!=lastData.score)) { if (!prevSongTitle.equalsIgnoreCase(selectedSong.title) || !prevDifficulty.equalsIgnoreCase(difficulty)) {
System.out.println("Waiting for results to populate..."); System.out.println("On Song Select Screen: Current Song-"+selectedSong.title+" Diff:"+difficulty);
System.out.println(data); p.pullData(selectedSong.title,difficulty);
} MyRobot.p.refreshAllLabels();
if (lastData==null) { prevSongTitle=selectedSong.title;
lastData=new Result("","",-1,-1,-1,-1,-1,-1f); prevDifficulty=difficulty;
} MyRobot.p.repaint();
lastData.cool=data.cool;
lastData.fine=data.fine;
lastData.safe=data.safe;
lastData.sad=data.sad;
lastData.worst=data.worst;
lastData.percent=data.percent;
lastData.combo=data.combo;
lastData.score=data.score;
} else
if ((data.combo!=lastcombo || data.fail!=lastfail || data.cool!=lastcool || lastfine!=data.fine || lastsafe!=data.safe || lastsad!=data.sad || lastworst!=data.worst)
&& data.score!=lastscore /*|| 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+" "+data.difficulty+": "+data.display());
File songFolder = new File(selectedSong.title+"/"+data.difficulty);
if (!songFolder.exists()) {
songFolder.mkdirs();
}
File[] songFolderFiles = songFolder.listFiles();
int playId = songFolderFiles.length;
final File playFolder = new File(selectedSong.title+"/"+data.difficulty+"/"+playId);
playFolder.mkdir();
recordedResults=true;
lastcool=data.cool;
lastfine=data.fine;
lastsafe=data.safe;
lastsad=data.sad;
lastworst=data.worst;
lastpercent=data.percent;
lastcombo=data.combo;
lastscore=data.score;
lastfail=data.fail;
File resultImage=new File(playFolder,selectedSong.title+"_"+data.difficulty+"play_"+data.cool+"_"+data.fine+"_"+data.safe+"_"+data.sad+"_"+data.worst+"_"+data.percent+""
+ "_"+data.combo+"_"+data.score+".png");
new File("scoreimage.png").renameTo(resultImage);
results.add(new Result(selectedSong.title,data.difficulty,data.cool,data.fine,data.safe,data.sad,data.worst,data.percent,data.mod,data.combo,data.score,data.fail,resultImage));
SoundUtils.playSound("collect_item.wav");
//gotoxy(800,64);
//click();
MYROBOT.setAutoDelay(0);
if (NEWSONGS.length==0) { if (NEWSONGS.length==0) {
MYROBOT.keyPress(KeyEvent.VK_CONTROL); MYROBOT.keyPress(KeyEvent.VK_CONTROL);
MYROBOT.keyPress(KeyEvent.VK_SHIFT); MYROBOT.keyPress(KeyEvent.VK_SHIFT);
@ -434,105 +344,191 @@ public class MyRobot{
MYROBOT.keyRelease(KeyEvent.VK_CONTROL); MYROBOT.keyRelease(KeyEvent.VK_CONTROL);
} }
} }
} catch (IOException|NumberFormatException|IndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println(e.getMessage());
} }
lastSongSelectTime = System.currentTimeMillis();
} else { } else {
if (results.size()>0) { if (overlayHidden) {
recordingResults=true; overlayHidden=false;
for (final Result r : results) { MyRobot.p.repaint();
r.songName=r.songName.equalsIgnoreCase("恋ノート")?"恋ノート////":r.songName.equalsIgnoreCase("雨のちSweetDrops")?"雨のちSweet*Drops":r.songName.equalsIgnoreCase("Equation+")?"Equation+**":r.songName.equalsIgnoreCase("PIANOGIRL")?"PIANO*GIRL":(r.songName.equalsIgnoreCase("16 -out of the gravity-"))?"1/6 -out of the gravity-":r.songName; }
HttpClient httpclient = HttpClients.createDefault(); if ((selectedSong!=null && difficulty!=null)) {
HttpPost httppost = new HttpPost("http://45.33.13.215:4501/submit"); if (OnResultsScreen() && !recordedResults && !recordingResults && results.size()==0) {
lastSongSelectTime=System.currentTimeMillis();
// Request parameters and other properties. MYROBOT.setAutoDelay(0);
List<NameValuePair> params = new ArrayList<NameValuePair>(); if (NEWSONGS.length==0) {
params.add(new BasicNameValuePair("song", r.songName)); MYROBOT.keyPress(KeyEvent.VK_CONTROL);
params.add(new BasicNameValuePair("username", USERNAME)); MYROBOT.keyPress(KeyEvent.VK_SHIFT);
params.add(new BasicNameValuePair("authentication_token", AUTHTOKEN)); MYROBOT.keyPress(KeyEvent.VK_F12);
params.add(new BasicNameValuePair("difficulty", r.difficulty)); MYROBOT.keyRelease(KeyEvent.VK_F12);
params.add(new BasicNameValuePair("cool", Integer.toString(r.cool))); MYROBOT.keyRelease(KeyEvent.VK_SHIFT);
params.add(new BasicNameValuePair("fine", Integer.toString(r.fine))); MYROBOT.keyRelease(KeyEvent.VK_CONTROL);
params.add(new BasicNameValuePair("safe", Integer.toString(r.safe))); }
params.add(new BasicNameValuePair("sad", Integer.toString(r.sad))); MYROBOT.refreshScoreScreen();
params.add(new BasicNameValuePair("worst", Integer.toString(r.worst))); ImageIO.write(MYROBOT.createScoreScreenCapture(),"png",new File("scoreimage.png"));
params.add(new BasicNameValuePair("percent", Float.toString(r.percent))); File tmp = new File("tmp");
params.add(new BasicNameValuePair("fail", Boolean.toString(r.fail))); if (tmp.exists()) {
params.add(new BasicNameValuePair("mod", r.mod)); FileUtils.deleteFile(tmp);
params.add(new BasicNameValuePair("combo", Integer.toString(r.combo))); } else {
params.add(new BasicNameValuePair("gameScore", Integer.toString(r.score))); tmp.mkdir();
try {
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} }
//Execute and get the response.
HttpResponse response = null;
try { try {
response = httpclient.execute(httppost); final Result data = typeface1.getAllData(MYROBOT.createScoreScreenCapture());
} catch (IOException e) { if (data.cool==-1 || data.fine==-1 || data.safe==-1 || data.sad==-1 || data.worst==-1 || data.percent<0f || data.percent>110f || data.combo==-1 || data.score==-1) {
if (lastData==null || (lastData.cool!=data.cool || data.fine!=lastData.fine || data.safe!=lastData.safe || data.sad!=lastData.sad || data.worst!=lastData.worst || data.percent!=lastData.percent || data.combo!=lastData.combo || data.score!=lastData.score)) {
System.out.println("Waiting for results to populate...");
System.out.println(data);
}
if (lastData==null) {
lastData=new Result("","",-1,-1,-1,-1,-1,-1f);
}
lastData.cool=data.cool;
lastData.fine=data.fine;
lastData.safe=data.safe;
lastData.sad=data.sad;
lastData.worst=data.worst;
lastData.percent=data.percent;
lastData.combo=data.combo;
lastData.score=data.score;
} else
if ((data.combo!=lastcombo || data.fail!=lastfail || data.cool!=lastcool || lastfine!=data.fine || lastsafe!=data.safe || lastsad!=data.sad || lastworst!=data.worst)
&& data.score!=lastscore /*|| lastpercent!=percent*/){
System.out.println("Results for "+selectedSong.title+" "+data.difficulty+": "+data.display());
TypeFace2.deepCopyOfficialYPointersFromPointers();
File songFolder = new File(selectedSong.title+"/"+data.difficulty);
if (!songFolder.exists()) {
songFolder.mkdirs();
}
File[] songFolderFiles = songFolder.listFiles();
int playId = songFolderFiles.length;
final File playFolder = new File(selectedSong.title+"/"+data.difficulty+"/"+playId);
playFolder.mkdir();
recordedResults=true;
lastcool=data.cool;
lastfine=data.fine;
lastsafe=data.safe;
lastsad=data.sad;
lastworst=data.worst;
lastpercent=data.percent;
lastcombo=data.combo;
lastscore=data.score;
lastfail=data.fail;
File resultImage=new File(playFolder,selectedSong.title+"_"+data.difficulty+"play_"+data.cool+"_"+data.fine+"_"+data.safe+"_"+data.sad+"_"+data.worst+"_"+data.percent+""
+ "_"+data.combo+"_"+data.score+".png");
new File("scoreimage.png").renameTo(resultImage);
results.add(new Result(selectedSong.title,data.difficulty,data.cool,data.fine,data.safe,data.sad,data.worst,data.percent,data.mod,data.combo,data.score,data.fail,resultImage));
SoundUtils.playSound("collect_item.wav");
//gotoxy(800,64);
//click();
MYROBOT.setAutoDelay(0);
if (NEWSONGS.length==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) {
e.printStackTrace(); e.printStackTrace();
System.out.println(e.getMessage());
} }
HttpEntity entity = response.getEntity(); } else {
if (results.size()>0) {
JSONObject report = null; recordingResults=true;
for (final Result r : results) {
if (entity != null) { r.songName=r.songName.equalsIgnoreCase("恋ノート")?"恋ノート////":r.songName.equalsIgnoreCase("雨のちSweetDrops")?"雨のちSweet*Drops":r.songName.equalsIgnoreCase("Equation+")?"Equation+**":r.songName.equalsIgnoreCase("PIANOGIRL")?"PIANO*GIRL":(r.songName.equalsIgnoreCase("16 -out of the gravity-"))?"1/6 -out of the gravity-":r.songName;
try (InputStream instream = entity.getContent()) { HttpClient httpclient = HttpClients.createDefault();
Scanner s = new Scanner(instream).useDelimiter("\\A"); HttpPost httppost = new HttpPost("http://45.33.13.215:4501/submit");
String result = s.hasNext() ? s.next() : "";
report=new JSONObject(result); // Request parameters and other properties.
instream.close(); List<NameValuePair> params = new ArrayList<NameValuePair>();
} catch (UnsupportedOperationException | IOException e) { params.add(new BasicNameValuePair("song", r.songName));
params.add(new BasicNameValuePair("username", USERNAME));
params.add(new BasicNameValuePair("authentication_token", AUTHTOKEN));
params.add(new BasicNameValuePair("difficulty", r.difficulty));
params.add(new BasicNameValuePair("cool", Integer.toString(r.cool)));
params.add(new BasicNameValuePair("fine", Integer.toString(r.fine)));
params.add(new BasicNameValuePair("safe", Integer.toString(r.safe)));
params.add(new BasicNameValuePair("sad", Integer.toString(r.sad)));
params.add(new BasicNameValuePair("worst", Integer.toString(r.worst)));
params.add(new BasicNameValuePair("percent", Float.toString(r.percent)));
params.add(new BasicNameValuePair("fail", Boolean.toString(r.fail)));
params.add(new BasicNameValuePair("mod", r.mod));
params.add(new BasicNameValuePair("combo", Integer.toString(r.combo)));
params.add(new BasicNameValuePair("gameScore", Integer.toString(r.score)));
try {
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//Execute and get the response.
HttpResponse response = null;
try {
response = httpclient.execute(httppost);
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity entity = response.getEntity();
JSONObject report = null;
if (entity != null) {
try (InputStream instream = entity.getContent()) {
Scanner s = new Scanner(instream).useDelimiter("\\A");
String result = s.hasNext() ? s.next() : "";
report=new JSONObject(result);
instream.close();
} catch (UnsupportedOperationException | IOException e) {
e.printStackTrace();
}
}
final JSONObject finalReport=report;
System.out.println("Submitting screenshot for "+r.f);
Thread t = new Thread() {
public void run() {
HashMap<String,String> s = new HashMap<>();
s.put("username",USERNAME);
s.put("authentication_token",AUTHTOKEN);
s.put("playid",Integer.toString(finalReport.getInt("id")));
WebUtils.POSTimage("http://projectdivar.com/upload", r.f, s);
}
};
t.start();
}
results.clear();
try {
JSONObject obj = FileUtils.readJsonFromUrl("http://45.33.13.215:4501/rating/"+USERNAME);
JSONObject obj2 = FileUtils.readJsonFromUrl("http://45.33.13.215:4501/bestplay/"+USERNAME+"/"+URLEncoder.encode(MyRobot.p.songname, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20")+"/"+difficulty);
p.lastRating = p.overallrating;
if (obj2.has("score")) {
double newScore = obj2.getDouble("score");
if (newScore>p.lastScore) {
p.bestPlayTime=System.currentTimeMillis();
}
p.lastScore = newScore;
}
p.overallrating = (int)obj.getDouble("rating");
if (p.lastRating<p.overallrating) {p.ratingTime=System.currentTimeMillis();}
p.pullData(selectedSong.title, difficulty);
} catch (JSONException | IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
recordingResults=false;
} }
if (!OnResultsScreen() && recordedResults) {
final JSONObject finalReport=report; recordedResults=false;
System.out.println("Submitting screenshot for "+r.f);
Thread t = new Thread() {
public void run() {
HashMap<String,String> s = new HashMap<>();
s.put("username",USERNAME);
s.put("authentication_token",AUTHTOKEN);
s.put("playid",Integer.toString(finalReport.getInt("id")));
WebUtils.POSTimage("http://projectdivar.com/upload", r.f, s);
}
};
t.start();
}
results.clear();
try {
JSONObject obj = FileUtils.readJsonFromUrl("http://45.33.13.215:4501/rating/"+USERNAME);
JSONObject obj2 = FileUtils.readJsonFromUrl("http://45.33.13.215:4501/bestplay/"+USERNAME+"/"+URLEncoder.encode(MyRobot.p.songname, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20")+"/"+difficulty);
p.lastRating = p.overallrating;
if (obj2.has("score")) {
double newScore = obj2.getDouble("score");
if (newScore>p.lastScore) {
p.bestPlayTime=System.currentTimeMillis();
}
p.lastScore = newScore;
} }
p.overallrating = (int)obj.getDouble("rating");
if (p.lastRating<p.overallrating) {p.ratingTime=System.currentTimeMillis();}
p.pullData(selectedSong.title, difficulty);
} catch (JSONException | IOException e) {
e.printStackTrace();
} }
recordingResults=false;
}
if (!OnResultsScreen() && recordedResults) {
recordedResults=false;
} }
} }
MYROBOT.refreshScreen();
} }
}
MYROBOT.refreshScreen();
}
}catch(Exception e) { }catch(Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -594,7 +590,6 @@ public class MyRobot{
} }
} }
private void GetCurrentSong() throws IOException { private void GetCurrentSong() throws IOException {
BufferedImage img=null; BufferedImage img=null;
long r=0,g=0,b=0; long r=0,g=0,b=0;
if (!FUTURETONE) { if (!FUTURETONE) {
@ -779,6 +774,8 @@ public class MyRobot{
selectedSong=new SongData("LIKE THE WIND",0,0,0); selectedSong=new SongData("LIKE THE WIND",0,0,0);
difficulty="H"; difficulty="H";
RunTest("test61.png",467,21,0,0,0,103.48f,"EX","HS",488,514440,false,Mode.MEGAMIX);
RunTest("test60.png",430,88,2,0,3,95.05f,"EX","HS",298,538510,false,Mode.MEGAMIX);
RunTest("test59.png",535,114,13,12,28,79.04f,"EXEX","HS",148,540700,false,Mode.MEGAMIX); RunTest("test59.png",535,114,13,12,28,79.04f,"EXEX","HS",148,540700,false,Mode.MEGAMIX);
RunTest("test58.png",314,49,4,1,12,94.94f,"EXEX","HS",185,561682,false,Mode.FUTURETONE); RunTest("test58.png",314,49,4,1,12,94.94f,"EXEX","HS",185,561682,false,Mode.FUTURETONE);
RunTest("test57.png",449,50,2,0,1,101.28f,"EXEX","HS",366,595859,false,Mode.FUTURETONE); RunTest("test57.png",449,50,2,0,1,101.28f,"EXEX","HS",366,595859,false,Mode.FUTURETONE);
@ -895,7 +892,6 @@ public class MyRobot{
System.out.println("Running test "+_img); System.out.println("Running test "+_img);
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
String testdir="testsuite"; String testdir="testsuite";
Point offset = new Point(418,204);
File tmp = new File("tmp"); File tmp = new File("tmp");
if (tmp.exists()) { if (tmp.exists()) {
FileUtils.deleteFile(tmp); FileUtils.deleteFile(tmp);
@ -942,7 +938,6 @@ public class MyRobot{
} }
System.exit(1); System.exit(1);
} }
TypeFace2.deepCopyDefaultYPointers();
System.out.println("\tPassed ("+(System.currentTimeMillis()-startTime)+"ms)!"); System.out.println("\tPassed ("+(System.currentTimeMillis()-startTime)+"ms)!");
} }
@ -957,7 +952,7 @@ public class MyRobot{
System.out.println("Switching to Megamix"); System.out.println("Switching to Megamix");
SongData.loadSongsFromFile(); SongData.loadSongsFromFile();
LASTMODE_FUTURETONE=false; LASTMODE_FUTURETONE=false;
TypeFace2.deepCopyDefaultYPointers(); TypeFace2.deepCopyDefaultOfficialYPointers();
} }
} else } else
{ {
@ -970,7 +965,7 @@ public class MyRobot{
System.out.println("Switching to Future Tone"); System.out.println("Switching to Future Tone");
SongData.loadSongsFromFile(); SongData.loadSongsFromFile();
LASTMODE_FUTURETONE=true; LASTMODE_FUTURETONE=true;
TypeFace2.deepCopyDefaultYPointers(); TypeFace2.deepCopyDefaultOfficialYPointers();
} }
} else { } else {
stillOnSongSelect=0; stillOnSongSelect=0;

@ -67,6 +67,7 @@ public class TypeFace2 {
public final static int[] DEFAULT_YPOINTERS = new int[] {-1,-1,-1,-1,-1,-1,-1,-1}; public final static int[] DEFAULT_YPOINTERS = new int[] {-1,-1,-1,-1,-1,-1,-1,-1};
public static int[] ypointers = new int[] {-1,-1,-1,-1,-1,-1,-1,-1}; public static int[] ypointers = new int[] {-1,-1,-1,-1,-1,-1,-1,-1};
public static int[] officialypointers = new int[] {-1,-1,-1,-1,-1,-1,-1,-1};
public static void deepCopyDefaultYPointers() { public static void deepCopyDefaultYPointers() {
ypointers = new int[DEFAULT_YPOINTERS.length]; ypointers = new int[DEFAULT_YPOINTERS.length];
@ -74,8 +75,21 @@ public class TypeFace2 {
ypointers[i]=DEFAULT_YPOINTERS[i]; ypointers[i]=DEFAULT_YPOINTERS[i];
} }
} }
public static void deepCopyDefaultOfficialYPointers() {
officialypointers = new int[DEFAULT_YPOINTERS.length];
for (int i=0;i<DEFAULT_YPOINTERS.length;i++) {
officialypointers[i]=DEFAULT_YPOINTERS[i];
}
}
public static void deepCopyOfficialYPointersFromPointers() {
officialypointers = new int[ypointers.length];
for (int i=0;i<ypointers.length;i++) {
officialypointers[i]=ypointers[i];
}
}
public Result getAllData(BufferedImage img, boolean debug) throws IOException { public Result getAllData(BufferedImage img, boolean debug) throws IOException {
deepCopyDefaultYPointers();
BufferedImage img2 = ImageUtils.toBufferedImage(img.getScaledInstance(1280 , 720, Image.SCALE_SMOOTH)); BufferedImage img2 = ImageUtils.toBufferedImage(img.getScaledInstance(1280 , 720, Image.SCALE_SMOOTH));
Result result = new Result("","",-1,-1,-1,-1,-1,-1f); Result result = new Result("","",-1,-1,-1,-1,-1,-1f);
int[] finalNumbers = new int[5]; int[] finalNumbers = new int[5];
@ -135,10 +149,10 @@ public class TypeFace2 {
float percent = -1f; float percent = -1f;
switch (result.mode) { switch (result.mode) {
case MEGAMIX:{ case MEGAMIX:{
percent = extractPercentFromImage(img2,debug); percent = extractPercentFromImage(img2,debug,pointerAccumulator);
}break; }break;
case FUTURETONE:{ case FUTURETONE:{
percent = extractFutureTonePercentFromImage(img2,debug); percent = extractFutureTonePercentFromImage(img2,debug,pointerAccumulator);
}break; }break;
} }
ypointers[pointerAccumulator++] = ypointer; ypointers[pointerAccumulator++] = ypointer;
@ -302,11 +316,7 @@ public class TypeFace2 {
return diffs[lowestIndex]; return diffs[lowestIndex];
} }
public float extractPercentFromImage(BufferedImage img) throws IOException { public float extractFutureTonePercentFromImage(BufferedImage img,boolean debug,int iteration) throws IOException {
return extractPercentFromImage(img,false);
}
public float extractFutureTonePercentFromImage(BufferedImage img,boolean debug) throws IOException {
//1180,167 //1180,167
//second part: 1123 //second part: 1123
String decimal = ""; String decimal = "";
@ -315,6 +325,13 @@ public class TypeFace2 {
ypointer=FUTURETONE_RECT_SEARCH_PCT.y; ypointer=FUTURETONE_RECT_SEARCH_PCT.y;
BufferedImage test = null; BufferedImage test = null;
boolean startPointer=officialypointers[iteration]>=0;
if (startPointer) {
ypointer=officialypointers[iteration];
//System.out.println("Found a saved ypointer of "+ypointer);
}
trialloop: trialloop:
while (ypointer<FUTURETONE_RECT_SEARCH_PCT.height+FUTURETONE_RECT_SEARCH_PCT.y) { while (ypointer<FUTURETONE_RECT_SEARCH_PCT.height+FUTURETONE_RECT_SEARCH_PCT.y) {
xpointer=FUTURETONE_RECT_SEARCH_PCT.x; xpointer=FUTURETONE_RECT_SEARCH_PCT.x;
@ -397,7 +414,20 @@ public class TypeFace2 {
if (decimal.length()>0) { if (decimal.length()>0) {
break trialloop; break trialloop;
} }
ypointer++; if (startPointer) {
startPointer=false;
ypointer=FUTURETONE_RECT_SEARCH_PCT.y;
//System.out.println("Could not find with saved ypointer. Switching back to old ypointer.");
} else {
ypointer++;
}
}
startPointer=officialypointers[iteration]>=0;
if (startPointer) {
ypointer=officialypointers[iteration];
//System.out.println("Found a saved ypointer of "+ypointer);
} }
xpointer=FUTURETONE_RECT_SEARCH_PCT2.x; xpointer=FUTURETONE_RECT_SEARCH_PCT2.x;
@ -484,7 +514,13 @@ public class TypeFace2 {
if (integer.length()>0) { if (integer.length()>0) {
break trialloop; break trialloop;
} }
ypointer++; if (startPointer) {
startPointer=false;
ypointer=FUTURETONE_RECT_SEARCH_PCT2.y;
//System.out.println("Could not find with saved ypointer. Switching back to old ypointer.");
} else {
ypointer++;
}
} }
if (integer.length()>0&&decimal.length()>0) { if (integer.length()>0&&decimal.length()>0) {
return Float.parseFloat(integer+"."+decimal); return Float.parseFloat(integer+"."+decimal);
@ -493,7 +529,7 @@ public class TypeFace2 {
} }
} }
public float extractPercentFromImage(BufferedImage img,boolean debug) throws IOException { public float extractPercentFromImage(BufferedImage img,boolean debug,int iteration) throws IOException {
//1180,167 //1180,167
//second part: 1123 //second part: 1123
String decimal = ""; String decimal = "";
@ -502,6 +538,13 @@ public class TypeFace2 {
ypointer=MEGAMIX_RECT_SEARCH_PCT.y; ypointer=MEGAMIX_RECT_SEARCH_PCT.y;
BufferedImage test = null; BufferedImage test = null;
boolean startPointer=officialypointers[iteration]>=0;
if (startPointer) {
ypointer=officialypointers[iteration];
//System.out.println("Found a saved ypointer of "+ypointer);
}
trialloop: trialloop:
while (ypointer<MEGAMIX_RECT_SEARCH_PCT.height+MEGAMIX_RECT_SEARCH_PCT.y) { while (ypointer<MEGAMIX_RECT_SEARCH_PCT.height+MEGAMIX_RECT_SEARCH_PCT.y) {
xpointer=MEGAMIX_RECT_SEARCH_PCT.x; xpointer=MEGAMIX_RECT_SEARCH_PCT.x;
@ -584,7 +627,20 @@ public class TypeFace2 {
if (decimal.length()>0) { if (decimal.length()>0) {
break trialloop; break trialloop;
} }
ypointer++; if (startPointer) {
startPointer=false;
ypointer=MEGAMIX_RECT_SEARCH_PCT.y;
//System.out.println("Could not find with saved ypointer. Switching back to old ypointer.");
} else {
ypointer++;
}
}
startPointer=officialypointers[iteration]>=0;
if (startPointer) {
ypointer=officialypointers[iteration];
//System.out.println("Found a saved ypointer of "+ypointer);
} }
xpointer=MEGAMIX_RECT_SEARCH_PCT2.x; xpointer=MEGAMIX_RECT_SEARCH_PCT2.x;
@ -605,29 +661,6 @@ public class TypeFace2 {
for (int y=0;y<29;y++) { for (int y=0;y<29;y++) {
Color fontCol = new Color(percentfont.getRGB(x+i*24,y)); Color fontCol = new Color(percentfont.getRGB(x+i*24,y));
Color pixelCol = new Color(img.getRGB(xpointer-24+x+1, y+ypointer)); Color pixelCol = new Color(img.getRGB(xpointer-24+x+1, y+ypointer));
/*if (fontCol.equals(Color.RED) && pixelCol.getRed()<50
&& pixelCol.getGreen()<150 && pixelCol.getBlue()>150) {
//Breaks a rule.
ruleBreak=true;
if (!debug) {
break colorloop;
} else {
test.setRGB(x, y, Color.RED.getRGB());
}
} else
if (fontCol.equals(Color.GREEN) && (pixelCol.getRed()>50
|| pixelCol.getGreen()>170 || pixelCol.getBlue()<150)) {
//Breaks a rule.
ruleBreak=true;
if (!debug) {
break colorloop;
} else {
test.setRGB(x, y, Color.GREEN.getRGB());
}
} else
if (debug) {
test.setRGB(x, y, pixelCol.getRGB());
}*/
if (fontCol.equals(Color.RED)) { if (fontCol.equals(Color.RED)) {
if (lightColorCheck(pixelCol)) { if (lightColorCheck(pixelCol)) {
@ -694,7 +727,13 @@ public class TypeFace2 {
if (integer.length()>0) { if (integer.length()>0) {
break trialloop; break trialloop;
} }
ypointer++; if (startPointer) {
startPointer=false;
ypointer=MEGAMIX_RECT_SEARCH_PCT2.y;
//System.out.println("Could not find with saved ypointer. Switching back to old ypointer.");
} else {
ypointer++;
}
} }
if (integer.length()>0&&decimal.length()>0) { if (integer.length()>0&&decimal.length()>0) {
return Float.parseFloat(integer+"."+decimal); return Float.parseFloat(integer+"."+decimal);
@ -726,11 +765,11 @@ public class TypeFace2 {
ypointer=0; ypointer=0;
String total = ""; String total = "";
boolean startPointer=ypointers[iteration]>=0; boolean startPointer=officialypointers[iteration]>=0;
if (startPointer) { if (startPointer) {
ypointer=ypointers[iteration]; ypointer=officialypointers[iteration];
System.out.println("Found a saved ypointer of "+ypointer); //System.out.println("Found a saved ypointer of "+ypointer);
} }
trialloop: trialloop:
@ -808,7 +847,7 @@ public class TypeFace2 {
if (startPointer) { if (startPointer) {
startPointer=false; startPointer=false;
ypointer=0; ypointer=0;
System.out.println("Could not find with saved ypointer. Switching back to old ypointer."); //System.out.println("Could not find with saved ypointer. Switching back to old ypointer.");
} else { } else {
ypointer++; ypointer++;
} }
@ -828,10 +867,10 @@ public class TypeFace2 {
ypointer=0; ypointer=0;
String total = ""; String total = "";
boolean startPointer=ypointers[iteration]>=0; boolean startPointer=officialypointers[iteration]>=0;
if (startPointer) { if (startPointer) {
ypointer=ypointers[iteration]; ypointer=officialypointers[iteration];
} }
trialloop: trialloop:
@ -930,10 +969,10 @@ public class TypeFace2 {
ypointer=0; ypointer=0;
String total = ""; String total = "";
boolean startPointer=ypointers[iteration]>=0; boolean startPointer=officialypointers[iteration]>=0;
if (startPointer) { if (startPointer) {
ypointer=ypointers[iteration]; ypointer=officialypointers[iteration];
} }
trialloop: trialloop:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Loading…
Cancel
Save