sort records by last modified + fix errors
This commit is contained in:
parent
ed998cc701
commit
73154eff2b
@ -316,7 +316,12 @@ public class Main implements ClientModInitializer {
|
||||
replay_tick.cancel();
|
||||
replay_tick = null;
|
||||
}
|
||||
menu.updateButtons();
|
||||
try {
|
||||
now_record.save();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
menu.updateButtons();
|
||||
record_list.getWidget().getWidget(now_record).getChildren().get(3).setMessage(Text.translatable("text.repeating-mod.start"));
|
||||
sendMessage(Text.translatable("message.repeating-mod.replay_stop"));
|
||||
}
|
||||
|
@ -7,18 +7,16 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public class RecordList {
|
||||
private final File folder;
|
||||
private List<RecordState> records;
|
||||
private LinkedList<RecordState> records;
|
||||
private RecordListWidget widget;
|
||||
|
||||
public RecordList(File folder) {
|
||||
this.folder = folder;
|
||||
this.records = new ArrayList<>();
|
||||
this.records = new LinkedList<>();
|
||||
this.widget = new RecordListWidget(0, 0, 180, 200);
|
||||
}
|
||||
|
||||
@ -35,7 +33,11 @@ public class RecordList {
|
||||
}
|
||||
|
||||
public void loadRecords() {
|
||||
for (File file : folder.listFiles()) {
|
||||
LinkedList<File> files = new LinkedList<>(List.of(folder.listFiles()));
|
||||
|
||||
files.sort(Comparator.comparingLong((f) -> f.lastModified()));
|
||||
|
||||
for (File file : files) {
|
||||
try {
|
||||
addRecord(file);
|
||||
} catch (Exception e) {}
|
||||
|
@ -101,7 +101,7 @@ public class RecordState {
|
||||
|
||||
public RecordEvent getLastEvent(String type) {
|
||||
for (RecordEvent r: Lists.reverse(new ArrayList<>(events))) {
|
||||
if (r.getType().getName().equals(type)) {
|
||||
if (r.getType() != null && r.getType().getName().equals(type)) {
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ public abstract class RecordEvent {
|
||||
public abstract void replay();
|
||||
public RecordEventType getType() {
|
||||
for (RecordEventType ev : RecordEventType.values()) {
|
||||
if (ev.getEventClass().equals(this.getClass())) {
|
||||
if (ev.getEventClass().getTypeName().equals(this.getClass().getTypeName())) {
|
||||
return ev;
|
||||
}
|
||||
}
|
||||
|
@ -21,21 +21,21 @@ public abstract class ScreenMixin extends AbstractParentElement implements Drawa
|
||||
@Inject(at = @At(value = "HEAD"), method = "close")
|
||||
private void close(CallbackInfo ci) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiCloseEvent());
|
||||
// Main.me.now_record.addEvent(new GuiCloseEvent());
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(at = @At(value = "HEAD"), method = "keyPressed")
|
||||
private void keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiKeyPressEvent(keyCode, scanCode, modifiers));
|
||||
// Main.me.now_record.addEvent(new GuiKeyPressEvent(keyCode, scanCode, modifiers));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean charTyped(char chr, int modifiers) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiCharTypeEvent(chr, modifiers));
|
||||
// Main.me.now_record.addEvent(new GuiCharTypeEvent(chr, modifiers));
|
||||
}
|
||||
return super.charTyped(chr, modifiers);
|
||||
}
|
||||
@ -43,7 +43,7 @@ public abstract class ScreenMixin extends AbstractParentElement implements Drawa
|
||||
@Override
|
||||
public boolean keyReleased(int keyCode, int scanCode, int modifiers) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiKeyReleaseEvent(keyCode, scanCode, modifiers));
|
||||
// Main.me.now_record.addEvent(new GuiKeyReleaseEvent(keyCode, scanCode, modifiers));
|
||||
}
|
||||
return super.keyReleased(keyCode, scanCode, modifiers);
|
||||
}
|
||||
@ -51,7 +51,7 @@ public abstract class ScreenMixin extends AbstractParentElement implements Drawa
|
||||
@Override
|
||||
public boolean mouseClicked(double mouseX, double mouseY, int button) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiMouseClickEvent(mouseX, mouseY, button));
|
||||
// Main.me.now_record.addEvent(new GuiMouseClickEvent(mouseX, mouseY, button));
|
||||
}
|
||||
return super.mouseClicked(mouseX, mouseY, button);
|
||||
}
|
||||
@ -59,7 +59,7 @@ public abstract class ScreenMixin extends AbstractParentElement implements Drawa
|
||||
@Override
|
||||
public void mouseMoved(double mouseX, double mouseY) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiMouseMoveEvent(mouseX, mouseY));
|
||||
// Main.me.now_record.addEvent(new GuiMouseMoveEvent(mouseX, mouseY));
|
||||
}
|
||||
super.mouseMoved(mouseX, mouseY);
|
||||
}
|
||||
@ -67,7 +67,7 @@ public abstract class ScreenMixin extends AbstractParentElement implements Drawa
|
||||
@Override
|
||||
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiMouseDragEvent(mouseX, mouseY, button, deltaX, deltaY));
|
||||
// Main.me.now_record.addEvent(new GuiMouseDragEvent(mouseX, mouseY, button, deltaX, deltaY));
|
||||
}
|
||||
return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
|
||||
}
|
||||
@ -75,7 +75,7 @@ public abstract class ScreenMixin extends AbstractParentElement implements Drawa
|
||||
@Override
|
||||
public boolean mouseReleased(double mouseX, double mouseY, int button) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiMouseReleaseEvent(mouseX, mouseY, button));
|
||||
// Main.me.now_record.addEvent(new GuiMouseReleaseEvent(mouseX, mouseY, button));
|
||||
}
|
||||
return super.mouseReleased(mouseX, mouseY, button);
|
||||
}
|
||||
@ -83,7 +83,7 @@ public abstract class ScreenMixin extends AbstractParentElement implements Drawa
|
||||
@Override
|
||||
public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
|
||||
if (Main.me.is_recording) {
|
||||
Main.me.now_record.addEvent(new GuiMouseScrollEvent(mouseX, mouseY, amount));
|
||||
// Main.me.now_record.addEvent(new GuiMouseScrollEvent(mouseX, mouseY, amount));
|
||||
}
|
||||
return super.mouseScrolled(mouseX, mouseY, amount);
|
||||
}
|
||||
|
@ -14,11 +14,12 @@ import themixray.repeating.mod.RecordState;
|
||||
import themixray.repeating.mod.RepeatingScreen;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class RecordListWidget extends ScrollableWidget {
|
||||
private List<RecordWidget> widgets = new ArrayList<>();
|
||||
private LinkedList<RecordWidget> widgets = new LinkedList<>();
|
||||
private boolean focused = false;
|
||||
|
||||
public RecordListWidget(int x, int y, int width, int height) {
|
||||
|
@ -6,6 +6,8 @@ import net.minecraft.client.gui.tooltip.Tooltip;
|
||||
import net.minecraft.client.gui.widget.*;
|
||||
import net.minecraft.text.Style;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.text.TextColor;
|
||||
import net.minecraft.util.Formatting;
|
||||
import themixray.repeating.mod.Main;
|
||||
import themixray.repeating.mod.RecordState;
|
||||
import themixray.repeating.mod.RenderListener;
|
||||
@ -43,7 +45,10 @@ public class RecordWidget implements Drawable, Widget {
|
||||
}
|
||||
|
||||
public boolean contains(int x, int y) {
|
||||
return parent.getX() + getX() <= x && parent.getY() + getY() <= y && x <= parent.getX() + getX() + getWidth() && y <= parent.getY() + getY() + getHeight();
|
||||
return parent.getX() + getX() <= x &&
|
||||
parent.getY() + getY() <= y &&
|
||||
x <= parent.getX() + getX() + getWidth() &&
|
||||
y <= parent.getY() + getY() + getHeight();
|
||||
}
|
||||
|
||||
public void setX(int x) {
|
||||
@ -105,6 +110,11 @@ public class RecordWidget implements Drawable, Widget {
|
||||
children.add(delete_button);
|
||||
|
||||
ButtonWidget export_button = ButtonWidget.builder(Text.translatable("text.repeating-mod.export"), (i) -> {
|
||||
try {
|
||||
record.save();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (Desktop.isDesktopSupported()) {
|
||||
Desktop desk = Desktop.getDesktop();
|
||||
try {
|
||||
@ -116,6 +126,9 @@ public class RecordWidget implements Drawable, Widget {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Main.sendMessage(Text.literal("Record file is ").append(
|
||||
Text.literal("["+record.getFile().getAbsolutePath()+"]").styled((s) -> s.withColor(Formatting.GRAY))));
|
||||
}
|
||||
}).dimensions(parent.getX() + getX() + 110,parent.getY() + getY() + 4 + 14, 65, 13).build();
|
||||
|
||||
@ -124,11 +137,15 @@ public class RecordWidget implements Drawable, Widget {
|
||||
ButtonWidget replay_button = ButtonWidget.builder(Text.translatable("text.repeating-mod.start"), (i) -> {
|
||||
if (Main.me.is_replaying) {
|
||||
Main.me.stopReplay();
|
||||
if (getRecord().equals(Main.me.now_record)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
i.setMessage(Text.translatable("text.repeating-mod.stop"));
|
||||
Main.me.now_record = record;
|
||||
Main.me.startReplay();
|
||||
Main.client.setScreen(null);
|
||||
}).dimensions(parent.getX() + getX() + 110,parent.getY() + getY() + 4 + 28, 65, 13)
|
||||
.tooltip(Tooltip.of(Text.translatable("text.repeating-mod.replay_tooltip"))).build();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user