Processing the screenshot is now threaded to prevent holdups.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2 3 years ago
parent 161a56201e
commit 54dff58f17
  1. 82
      ArcadeReader.java

@ -697,49 +697,48 @@ public class ArcadeReader {
BufferedImage img;
try {
img = ImageIO.read(p.toFile());
Reader newImg = interpret(img);
newImg.result_screenshot=p;
//Path getGamePath = gamePath(newImg);
newImg.interpretBoxes(p);
HashMap<String,HashMap<String,List<String>>> DATA = sigPlace.SONG_DATABASE;
List<String> RECENT_PLAYS = sigPlace.RECENT_PLAYS;
List<String> RECENT_RECORDS = sigPlace.RECENT_RECORDS;
HashMap<String,List<String>> SONG_DATA=DATA.getOrDefault(newImg.getClass().getSimpleName(),new HashMap<>());
List<String> RECORDS = SONG_DATA.getOrDefault(convertTitle(newImg.getTitle()),new ArrayList<>());
boolean found=false;
for (int i=0;i<RECORDS.size();i++) {
String s = RECORDS.get(i);
int score = getScore(s);
if (score<newImg.getScore()) {
//Insert here.
found=true;
if (i==0) {
final Reader newImg = interpret(img);
Thread t = new Thread(){
public void run() {
newImg.result_screenshot=p;
//Path getGamePath = gamePath(newImg);
newImg.interpretBoxes(p);
HashMap<String,HashMap<String,List<String>>> DATA = sigPlace.SONG_DATABASE;
List<String> RECENT_PLAYS = sigPlace.RECENT_PLAYS;
List<String> RECENT_RECORDS = sigPlace.RECENT_RECORDS;
HashMap<String,List<String>> SONG_DATA=DATA.getOrDefault(newImg.getClass().getSimpleName(),new HashMap<>());
List<String> RECORDS = SONG_DATA.getOrDefault(convertTitle(newImg.getTitle()),new ArrayList<>());
boolean found=false;
for (int i=0;i<RECORDS.size();i++) {
String s = RECORDS.get(i);
int score = getScore(s);
if (score<newImg.getScore()) {
//Insert here.
found=true;
if (i==0) {
RECENT_RECORDS.add(0,newImg.toStringWithScreenshot());
}
RECENT_PLAYS.add(0,newImg.toStringWithScreenshot());
if (RECENT_PLAYS.size()>20) {
RECENT_PLAYS.remove(RECENT_PLAYS.size()-1);
}
RECORDS.add(i, newImg.toStringWithScreenshot());
break;
}
}
if (!found) {
RECORDS.add(newImg.toStringWithScreenshot());
RECENT_RECORDS.add(0,newImg.toStringWithScreenshot());
RECENT_PLAYS.add(0,newImg.toStringWithScreenshot());
if (RECENT_PLAYS.size()>20) {
RECENT_PLAYS.remove(RECENT_PLAYS.size()-1);
}
}
RECENT_PLAYS.add(0,newImg.toStringWithScreenshot());
if (RECENT_PLAYS.size()>20) {
RECENT_PLAYS.remove(RECENT_PLAYS.size()-1);
if (RECENT_RECORDS.size()>20) {
RECENT_RECORDS.remove(RECENT_RECORDS.size()-1);
}
RECORDS.add(i, newImg.toStringWithScreenshot());
break;
}
}
if (!found) {
RECORDS.add(newImg.toStringWithScreenshot());
RECENT_RECORDS.add(0,newImg.toStringWithScreenshot());
RECENT_PLAYS.add(0,newImg.toStringWithScreenshot());
if (RECENT_PLAYS.size()>20) {
RECENT_PLAYS.remove(RECENT_PLAYS.size()-1);
}
}
if (RECENT_RECORDS.size()>20) {
RECENT_RECORDS.remove(RECENT_RECORDS.size()-1);
}
SONG_DATA.put(convertTitle(newImg.getTitle()),RECORDS);
DATA.put(newImg.getClass().getSimpleName(),SONG_DATA);
new Thread(){
public void run() {
SONG_DATA.put(convertTitle(newImg.getTitle()),RECORDS);
DATA.put(newImg.getClass().getSimpleName(),SONG_DATA);
//Threaded database update.
for (String reader : sigPlace.SONG_DATABASE.keySet()) {
for (String song : sigPlace.SONG_DATABASE.get(reader).keySet()) {
@ -765,7 +764,8 @@ public class ArcadeReader {
e.printStackTrace();
}
}
}.start();
};
t.start();
} catch (IOException e) {
e.printStackTrace();
}

Loading…
Cancel
Save