Files
sheepit-shadow-nabber/src/com/sheepit/client/standalone/GuiTextOneLine.java

107 lines
1.9 KiB
Java
Raw Normal View History

package com.sheepit.client.standalone;
2015-01-15 23:20:17 +01:00
import com.sheepit.client.Client;
import com.sheepit.client.Gui;
import sun.misc.Signal;
import sun.misc.SignalHandler;
public class GuiTextOneLine implements Gui {
public static final String type = "oneLine";
private int rendered;
private int remaining;
private int sigIntCount = 0;
private String status;
private String line;
private boolean exiting = false;
private Client client;
public GuiTextOneLine() {
rendered = 0;
remaining = 0;
status = "";
line = "";
}
@Override
public void start() {
if (client != null) {
Signal.handle(new Signal("INT"), new SignalHandler() {
@Override
public void handle(Signal signal) {
sigIntCount++;
if (sigIntCount == 5) {
Signal.raise(new Signal("INT"));
Runtime.getRuntime().halt(0);
}
else if (client.isRunning() && client.isSuspended() == false) {
client.askForStop();
exiting = true;
}
else {
client.stop();
}
}
});
client.run();
client.stop();
}
}
@Override
public void stop() {
Runtime.getRuntime().halt(0);
}
@Override
public void status(String msg_) {
status = msg_;
updateLine();
}
@Override
public void error(String msg_) {
status = "Error " + msg_;
updateLine();
}
@Override
public void AddFrameRendered() {
rendered += 1;
updateLine();
}
@Override
public void framesRemaining(int n_) {
remaining = n_;
updateLine();
}
2015-01-15 23:20:17 +01:00
@Override
public void setClient(Client cli) {
client = cli;
2015-01-15 23:20:17 +01:00
}
@Override
public Client getClient() {
return client;
2015-01-15 23:20:17 +01:00
}
private void updateLine() {
int charToRemove = line.length();
System.out.print("\r");
line = String.format("Frames rendered: %d remaining: %d | %s", rendered, remaining, status) + (exiting ? " (Exiting after this frame)" : "");
System.out.print(line);
for (int i = line.length(); i <= charToRemove; i++) {
System.out.print(" ");
}
}
}