2017-03-09 16:08:47 +01:00
|
|
|
package mrbesen.cr.auto.clicker;
|
|
|
|
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileWriter;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.Scanner;
|
|
|
|
|
|
|
|
import javax.swing.JButton;
|
|
|
|
import javax.swing.JCheckBox;
|
|
|
|
import javax.swing.JFrame;
|
|
|
|
import javax.swing.JLabel;
|
|
|
|
import javax.swing.JMenu;
|
|
|
|
import javax.swing.JMenuBar;
|
|
|
|
import javax.swing.JMenuItem;
|
|
|
|
import javax.swing.JPanel;
|
|
|
|
import javax.swing.JSlider;
|
|
|
|
import javax.swing.event.ChangeEvent;
|
|
|
|
import javax.swing.event.ChangeListener;
|
|
|
|
|
|
|
|
public class UI implements ActionListener, ChangeListener{
|
|
|
|
|
|
|
|
JFrame frame = new JFrame("Clash Royale Bot · by MrBesen");;
|
|
|
|
|
|
|
|
JPanel root = new JPanel();
|
|
|
|
JPanel top = new JPanel();
|
|
|
|
JPanel bottom = new JPanel();
|
|
|
|
JPanel slider = new JPanel();
|
|
|
|
|
|
|
|
JMenuBar menubar = new JMenuBar();
|
|
|
|
JMenu file_ = new JMenu("File");
|
|
|
|
JMenuItem load = new JMenuItem();
|
|
|
|
JMenuItem save = new JMenuItem();
|
|
|
|
|
|
|
|
JCheckBox autoplay = new JCheckBox("AutoPlay");
|
|
|
|
JCheckBox doubleplace = new JCheckBox("DoublePlace");
|
|
|
|
|
|
|
|
PosSelector[] posselctors = {
|
|
|
|
new PosSelector(this, "Battle",true, 4),
|
|
|
|
new PosSelector(this, "End Battle",true, 5),
|
|
|
|
new PosSelector(this, "Card1",false, 0),
|
|
|
|
new PosSelector(this, "Card2",false, 1),
|
|
|
|
new PosSelector(this, "Card3",false, 2),
|
|
|
|
new PosSelector(this, "Card4", false, 3),
|
2017-04-01 21:22:13 +02:00
|
|
|
new PosSelector(this, "Playout", false, 6)//,
|
|
|
|
//new PosSelector(this, "Top Left", false, 7)
|
2017-03-09 16:08:47 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
JButton skip = new JButton("SKIP"); // the button, to skip waiting
|
|
|
|
JButton start = new JButton("START");
|
|
|
|
JButton exit = new JButton("EXIT");
|
|
|
|
|
|
|
|
JLabel info = new JLabel("Define positions, to start.");
|
|
|
|
|
2017-04-01 21:22:13 +02:00
|
|
|
JSlider truppenwait = new JSlider(JSlider.HORIZONTAL, 1, 300, 180);
|
|
|
|
JLabel wait = new JLabel("Waittime between playouts: 18.0");
|
2017-03-09 16:08:47 +01:00
|
|
|
|
|
|
|
Clicker bot = new Clicker();
|
|
|
|
|
|
|
|
File file = new File(".profile");
|
|
|
|
|
|
|
|
public UI() {
|
|
|
|
Main.get().ui = this;
|
|
|
|
//init screen
|
|
|
|
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
|
|
|
frame.setSize(620, 140);
|
|
|
|
|
|
|
|
save.setText("Save");
|
|
|
|
save.addActionListener(this);
|
|
|
|
load.setText("Load");
|
|
|
|
load.addActionListener(this);
|
|
|
|
|
|
|
|
file_.add(save);
|
|
|
|
file_.add(load);
|
|
|
|
menubar.add(file_);
|
|
|
|
frame.setJMenuBar(menubar);
|
|
|
|
|
|
|
|
skip.setEnabled(false);
|
|
|
|
start.setEnabled(false);
|
|
|
|
|
2017-04-01 21:22:13 +02:00
|
|
|
doubleplace.setSelected(false);
|
|
|
|
doubleplace.setEnabled(false);
|
|
|
|
|
|
|
|
truppenwait.setEnabled(false);
|
2017-03-09 16:08:47 +01:00
|
|
|
|
|
|
|
skip.addActionListener(this);
|
|
|
|
start.addActionListener(this);
|
|
|
|
exit.addActionListener(this);
|
|
|
|
autoplay.addActionListener(this);
|
|
|
|
doubleplace.addActionListener(this);
|
|
|
|
truppenwait.addChangeListener(this);
|
|
|
|
|
|
|
|
for(PosSelector poss : posselctors) {
|
|
|
|
top.add(poss.button);
|
|
|
|
}
|
|
|
|
|
|
|
|
bottom.add(start);
|
|
|
|
bottom.add(skip);
|
|
|
|
bottom.add(exit);
|
|
|
|
bottom.add(autoplay);
|
|
|
|
bottom.add(doubleplace);
|
|
|
|
bottom.add(info);
|
|
|
|
|
|
|
|
slider.add(truppenwait);
|
|
|
|
slider.add(wait);
|
|
|
|
|
|
|
|
root.add(top);
|
|
|
|
root.add(bottom);
|
|
|
|
root.add(slider);
|
|
|
|
|
|
|
|
frame.add(root);
|
|
|
|
|
|
|
|
frame.setVisible(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
Object src = e.getSource();
|
|
|
|
if(src instanceof JButton) {
|
|
|
|
JButton srcb = (JButton) src;
|
|
|
|
|
|
|
|
//check for the Posselectors
|
|
|
|
for(PosSelector poss : posselctors) {
|
|
|
|
if(poss.button.equals(srcb)) {
|
|
|
|
new Thread(poss, "PositionSelector").start();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(srcb.equals(start)) {
|
|
|
|
if(bot.isRunning()) {//stop!
|
|
|
|
bot.stop();
|
|
|
|
srcb.setText("START");
|
|
|
|
skip.setEnabled(false);
|
|
|
|
info("Stoped!");
|
|
|
|
} else {
|
|
|
|
bot.start();//start!
|
|
|
|
srcb.setText("STOP");
|
|
|
|
skip.setEnabled(true);
|
|
|
|
info("Started!");
|
|
|
|
}
|
|
|
|
} else if(srcb.equals(skip))
|
|
|
|
bot.skip();
|
|
|
|
else if(srcb.equals(exit)) {
|
|
|
|
bot.stop();
|
|
|
|
frame.setVisible(false);
|
|
|
|
System.exit(0);
|
|
|
|
}
|
|
|
|
} else if(src instanceof JMenuItem) {
|
|
|
|
JMenuItem srcI = (JMenuItem) src;
|
|
|
|
if(srcI.equals(load)) {
|
|
|
|
load(true);
|
|
|
|
} else if(srcI.equals(save)) {
|
|
|
|
save();
|
|
|
|
}
|
|
|
|
} else if(src instanceof JCheckBox) {
|
|
|
|
JCheckBox srcb = (JCheckBox) src;
|
2017-04-01 21:22:13 +02:00
|
|
|
if(srcb.equals(autoplay)) {
|
2017-03-09 16:08:47 +01:00
|
|
|
bot.setAutoPlay(srcb.isSelected());
|
2017-04-01 21:22:13 +02:00
|
|
|
if(srcb.isSelected()) {
|
|
|
|
truppenwait.setEnabled(true);
|
|
|
|
doubleplace.setEnabled(true);
|
|
|
|
} else {
|
|
|
|
truppenwait.setEnabled(false);
|
|
|
|
doubleplace.setEnabled(false);
|
|
|
|
}
|
|
|
|
} else if(srcb.equals(doubleplace)) {
|
2017-03-09 16:08:47 +01:00
|
|
|
bot.setDoublePlay(srcb.isSelected());
|
|
|
|
if(srcb.isSelected()) {//*2
|
|
|
|
truppenwait.setValue(truppenwait.getValue()*2);
|
|
|
|
} else {// /2
|
|
|
|
truppenwait.setValue(truppenwait.getValue()/2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void stateChanged(ChangeEvent e) {
|
|
|
|
Object o = e.getSource();
|
|
|
|
if(o instanceof JSlider) {
|
|
|
|
JSlider slider = (JSlider) o;
|
|
|
|
if(slider.equals(truppenwait)) {
|
|
|
|
bot.setWait(slider.getValue());
|
2017-04-01 21:22:13 +02:00
|
|
|
wait.setText("Waittime between playouts: "+(slider.getValue()/10f));
|
2017-03-09 16:08:47 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void load(boolean info) {
|
|
|
|
if(file.exists()) {
|
|
|
|
try {
|
|
|
|
Scanner s = new Scanner(file);
|
|
|
|
while(s.hasNextLine()) {
|
|
|
|
String split[] = s.nextLine().split(" ",2);
|
2017-04-01 21:22:13 +02:00
|
|
|
if(!split[1].equals("null")) {
|
|
|
|
int num = Integer.parseInt(split[0]);
|
|
|
|
if(num > 100) {
|
|
|
|
if(num == 101) {//truppenwait
|
|
|
|
int wait = Integer.parseInt(split[1]);
|
|
|
|
truppenwait.setValue(wait);
|
|
|
|
} else if(num == 102) { // double playout
|
|
|
|
boolean dp = Boolean.parseBoolean(split[1]);
|
|
|
|
if(dp) {
|
|
|
|
autoplay.setSelected(true);
|
|
|
|
doubleplace.setEnabled(true);
|
|
|
|
truppenwait.setEnabled(true);
|
|
|
|
}
|
|
|
|
doubleplace.setSelected(dp);
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
bot.set(new Point(split[1]), num);
|
|
|
|
}
|
2017-03-09 16:08:47 +01:00
|
|
|
}
|
|
|
|
s.close();
|
|
|
|
refresh();
|
|
|
|
if(info)
|
|
|
|
info("loaded!");
|
|
|
|
} catch(IOException | NumberFormatException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
if(info)
|
|
|
|
info("Error.");
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
if(info)
|
|
|
|
info("no profile found.");
|
|
|
|
}
|
|
|
|
|
|
|
|
private void save() {
|
|
|
|
try {
|
|
|
|
if(!file.exists())
|
|
|
|
file.createNewFile();
|
|
|
|
|
|
|
|
FileWriter fw = new FileWriter(file);
|
2017-04-01 21:22:13 +02:00
|
|
|
fw.write(bot.serialize()+"\n101 "+ truppenwait.getValue() + "\n102 " + doubleplace.isSelected());
|
2017-03-09 16:08:47 +01:00
|
|
|
fw.flush();
|
|
|
|
fw.close();
|
|
|
|
|
|
|
|
info("saved!");
|
|
|
|
} catch(IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
info("Error.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void refresh() {
|
|
|
|
if(bot.bothset())
|
|
|
|
start.setEnabled(true);
|
|
|
|
|
|
|
|
for(PosSelector poss : posselctors) {
|
|
|
|
if(bot.isSet(poss.num))
|
|
|
|
poss.green();
|
|
|
|
else
|
|
|
|
poss.red();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void info(String a) {
|
|
|
|
info.setText(a);
|
|
|
|
}
|
|
|
|
}
|