mirror of
https://github.com/sirjonasxx/G-Earth.git
synced 2024-11-23 00:40:51 +01:00
scheduler almost done, need Save & Load implementation
This commit is contained in:
parent
1204666dd8
commit
19c7643519
@ -1,4 +1,4 @@
|
||||
package main;
|
||||
package main.misc;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
@ -1,4 +1,4 @@
|
||||
package main;
|
||||
package main.misc;
|
||||
|
||||
public class OSValidator {
|
||||
|
15
src/main/misc/StringifyAble.java
Normal file
15
src/main/misc/StringifyAble.java
Normal file
@ -0,0 +1,15 @@
|
||||
package main.misc;
|
||||
|
||||
/**
|
||||
* Created by Jonas on 14/06/18.
|
||||
* This interface defines an object which can FULLY be represented as a String (all fields). An object must be able to be recreated having the String representation
|
||||
*/
|
||||
public interface StringifyAble {
|
||||
|
||||
String stringify();
|
||||
|
||||
//the object before calling this function will typically have no real point, this is some kind of constructor
|
||||
// (this implies that the Object should probably have a constructor just calling this function)
|
||||
void constructFromString(String str);
|
||||
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package main.protocol.hostreplacer;
|
||||
|
||||
import main.OSValidator;
|
||||
import main.misc.OSValidator;
|
||||
|
||||
/**
|
||||
* Created by Jonas on 04/04/18.
|
||||
|
@ -1,6 +1,6 @@
|
||||
package main.protocol.memory.habboclient;
|
||||
|
||||
import main.OSValidator;
|
||||
import main.misc.OSValidator;
|
||||
import main.protocol.memory.habboclient.linux.LinuxHabboClient;
|
||||
|
||||
/**
|
||||
|
@ -4,6 +4,7 @@ import javafx.beans.InvalidationListener;
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
import javafx.beans.property.SimpleIntegerProperty;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import main.misc.StringifyAble;
|
||||
import main.protocol.HMessage;
|
||||
import main.protocol.HPacket;
|
||||
|
||||
@ -13,15 +14,19 @@ import java.util.List;
|
||||
/**
|
||||
* Created by Jonas on 07/04/18.
|
||||
*/
|
||||
public class ScheduleItem {
|
||||
public class ScheduleItem implements StringifyAble {
|
||||
|
||||
private SimpleIntegerProperty indexProperty;
|
||||
private SimpleBooleanProperty pausedProperty;
|
||||
private SimpleObjectProperty<Interval> delayProperty;
|
||||
private SimpleObjectProperty<HPacket> packetProperty;
|
||||
private SimpleObjectProperty<HMessage.Side> destinationProperty;
|
||||
private SimpleIntegerProperty indexProperty = null;
|
||||
private SimpleBooleanProperty pausedProperty = null;
|
||||
private SimpleObjectProperty<Interval> delayProperty = null;
|
||||
private SimpleObjectProperty<HPacket> packetProperty = null;
|
||||
private SimpleObjectProperty<HMessage.Side> destinationProperty = null;
|
||||
|
||||
ScheduleItem (int index, boolean paused, Interval delay, HPacket packet, HMessage.Side destination) {
|
||||
construct(index, paused, delay, packet, destination);
|
||||
}
|
||||
|
||||
private void construct(int index, boolean paused, Interval delay, HPacket packet, HMessage.Side destination) {
|
||||
this.indexProperty = new SimpleIntegerProperty(index);
|
||||
this.pausedProperty = new SimpleBooleanProperty(paused);
|
||||
this.delayProperty = new SimpleObjectProperty<>(delay);
|
||||
@ -29,6 +34,10 @@ public class ScheduleItem {
|
||||
this.destinationProperty = new SimpleObjectProperty<>(destination);
|
||||
}
|
||||
|
||||
ScheduleItem(String stringifyAbleRepresentation) {
|
||||
constructFromString(stringifyAbleRepresentation);
|
||||
}
|
||||
|
||||
public SimpleIntegerProperty getIndexProperty() {
|
||||
return indexProperty;
|
||||
}
|
||||
@ -90,4 +99,33 @@ public class ScheduleItem {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String stringify() {
|
||||
StringBuilder b = new StringBuilder();
|
||||
b .append(indexProperty.get())
|
||||
.append("\t")
|
||||
.append(pausedProperty.get() ? "true" : "false")
|
||||
.append("\t")
|
||||
.append(delayProperty.get().toString())
|
||||
.append("\t")
|
||||
.append(packetProperty.get().toString())
|
||||
.append("\t")
|
||||
.append(destinationProperty.get().name());
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void constructFromString(String str) {
|
||||
String[] parts = str.split("\t");
|
||||
if (parts.length == 5) {
|
||||
int index = Integer.parseInt(parts[0]);
|
||||
boolean paused = parts[1].equals("true");
|
||||
Interval delay = new Interval(parts[2]);
|
||||
HPacket packet = new HPacket(parts[3]);
|
||||
HMessage.Side side = parts[4].equals(HMessage.Side.TOSERVER.name()) ? HMessage.Side.TOSERVER : HMessage.Side.TOCLIENT;
|
||||
|
||||
construct(index, paused, delay, packet, side);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,10 +65,13 @@
|
||||
<Insets bottom="10.0" left="17.0" right="17.0" />
|
||||
</GridPane.margin>
|
||||
<children>
|
||||
<GridPane>
|
||||
<GridPane hgap="7.0">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="63.0" minWidth="10.0" prefWidth="63.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="63.0" minWidth="63.0" prefWidth="63.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="10.0" prefWidth="468.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="70.0" prefWidth="70.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="35.0" prefWidth="35.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="35.0" prefWidth="35.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
@ -76,7 +79,7 @@
|
||||
<children>
|
||||
<TextField fx:id="txt_packet" text="[0][0][0][2][0][0]" GridPane.columnIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets />
|
||||
<Insets left="-7.0" />
|
||||
</GridPane.margin>
|
||||
</TextField>
|
||||
<Label maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Packet:" textFill="#000000bb">
|
||||
@ -84,6 +87,9 @@
|
||||
<Insets left="3.0" />
|
||||
</GridPane.margin>
|
||||
</Label>
|
||||
<Button fx:id="btn_clear" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#clearBtnClicked" text="Clear" GridPane.columnIndex="2" />
|
||||
<Button fx:id="btn_save" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#saveBtnClicked" text="S" GridPane.columnIndex="3" />
|
||||
<Button fx:id="btn_load" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#loadBtnClicked" text="L" GridPane.columnIndex="4" />
|
||||
</children>
|
||||
</GridPane>
|
||||
<GridPane prefHeight="33.0" prefWidth="502.0" GridPane.rowIndex="1">
|
||||
|
@ -36,6 +36,10 @@ public class Scheduler extends SubForm {
|
||||
public RadioButton rb_incoming;
|
||||
public RadioButton rb_outgoing;
|
||||
|
||||
public Button btn_clear;
|
||||
public Button btn_save;
|
||||
public Button btn_load;
|
||||
|
||||
private ScheduleItem isBeingEdited = null;
|
||||
|
||||
private List<ScheduleItem> scheduleItemList = new ArrayList<>();
|
||||
@ -48,6 +52,10 @@ public class Scheduler extends SubForm {
|
||||
txt_packet.textProperty().addListener(event -> Platform.runLater(this::updateUI));
|
||||
txt_delay.textProperty().addListener(event -> Platform.runLater(this::updateUI));
|
||||
|
||||
btn_clear.setTooltip(new Tooltip("Clear all items"));
|
||||
btn_save.setTooltip(new Tooltip("Save to file"));
|
||||
btn_load.setTooltip(new Tooltip("Load from file"));
|
||||
|
||||
updateUI();
|
||||
|
||||
new Thread(() -> {
|
||||
@ -73,7 +81,7 @@ public class Scheduler extends SubForm {
|
||||
Interval cur = item.getDelayProperty().get();
|
||||
for (int i = 0; i < changed; i++) {
|
||||
if ((t - i) % cur.getDelay() == cur.getOffset()) {
|
||||
if (item.getDestinationProperty().getValue() == HMessage.Side.TOSERVER) {
|
||||
if (item.getDestinationProperty().get() == HMessage.Side.TOSERVER) {
|
||||
getHConnection().sendToServerAsync(item.getPacketProperty().get());
|
||||
}
|
||||
else {
|
||||
@ -182,4 +190,29 @@ public class Scheduler extends SubForm {
|
||||
btn_addoredit.setText("Add to scheduler");
|
||||
updateUI();
|
||||
}
|
||||
|
||||
|
||||
private void clear() {
|
||||
for (int i = scheduleItemList.size() - 1; i >= 0; i--) {
|
||||
scheduleItemList.get(i).delete();
|
||||
}
|
||||
}
|
||||
private void load(List<ScheduleItem> list) {
|
||||
clear();
|
||||
|
||||
for (ScheduleItem item : list) {
|
||||
addItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void clearBtnClicked(ActionEvent actionEvent) {
|
||||
clear();
|
||||
}
|
||||
|
||||
public void saveBtnClicked(ActionEvent actionEvent) {
|
||||
}
|
||||
|
||||
public void loadBtnClicked(ActionEvent actionEvent) {
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user