Show content of replay's render queue in Replay Viewer

As part of #349.
This commit is contained in:
Jonas Herzig
2020-09-05 13:14:51 +02:00
parent 9eb69375bd
commit 76a8623531
4 changed files with 97 additions and 77 deletions

View File

@@ -4,6 +4,7 @@ import com.google.common.base.Supplier;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.SettableFuture;
import com.replaymod.render.utils.RenderJob;
import de.johni0702.minecraft.gui.GuiRenderer;
import de.johni0702.minecraft.gui.RenderInfo;
import de.johni0702.minecraft.gui.versions.Image;
@@ -369,9 +370,10 @@ public class GuiReplayViewer extends GuiScreen {
}
}).orElse(null);
final ReplayMetaData metaData = replayFile.getMetaData();
List<RenderJob> renderQueue = RenderJob.readQueue(replayFile);
if (metaData != null) {
results.consume(() -> new GuiReplayEntry(file, metaData, thumb) {
results.consume(() -> new GuiReplayEntry(file, metaData, thumb, renderQueue) {
@Override
public ReadableDimension calcMinSize() {
if (isFiltered(this)) {
@@ -483,12 +485,17 @@ public class GuiReplayViewer extends GuiScreen {
return new Dimension(dimension.getWidth() + 2, dimension.getHeight() + 2);
}
});
public final GuiImage renderQueueIcon = new GuiImage()
.setSize(10, 10)
.setTexture(ReplayMod.TEXTURE, 40, 0, 20, 20);
private final long dateMillis;
private final boolean incompatible;
private final List<RenderJob> renderQueue;
public GuiReplayEntry(File file, ReplayMetaData metaData, Image thumbImage) {
public GuiReplayEntry(File file, ReplayMetaData metaData, Image thumbImage, List<RenderJob> renderQueue) {
this.file = file;
this.renderQueue = renderQueue;
name.setText(Formatting.UNDERLINE + Utils.fileNameToReplayName(file.getName()));
if (StringUtils.isEmpty(metaData.getServerName())
@@ -512,6 +519,12 @@ public class GuiReplayViewer extends GuiScreen {
duration.setText(Utils.convertSecondsToShortString(metaData.getDuration() / 1000));
addElements(null, durationPanel);
if (!renderQueue.isEmpty()) {
renderQueueIcon.setTooltip(new GuiTooltip()
.setText(renderQueue.stream().map(RenderJob::getName).toArray(String[]::new)));
addElements(null, renderQueueIcon);
}
setLayout(new CustomLayout<GuiReplayEntry>() {
@Override
protected void layout(GuiReplayEntry container, int width, int height) {
@@ -521,6 +534,10 @@ public class GuiReplayViewer extends GuiScreen {
pos(infoPanel, width(thumbnail) + 5, 0);
pos(version, width - width(version), 0);
if (renderQueueIcon.getContainer() != null) {
pos(renderQueueIcon, width(thumbnail) - width(renderQueueIcon), 0);
}
}
@Override