Files
ReplayModCinematic/src/main/java/com/replaymod/extras/QuickMode.java
2020-07-17 16:32:12 +02:00

62 lines
2.3 KiB
Java

package com.replaymod.extras;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.events.PostRenderCallback;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.core.versions.MCVer.Keyboard;
import com.replaymod.replay.ReplayHandler;
import com.replaymod.replay.ReplayModReplay;
import com.replaymod.replay.events.ReplayOpenedCallback;
import com.replaymod.replay.gui.overlay.GuiReplayOverlay;
import de.johni0702.minecraft.gui.element.GuiImage;
import de.johni0702.minecraft.gui.element.IGuiImage;
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.client.MinecraftClient;
public class QuickMode extends EventRegistrations implements Extra {
private ReplayModReplay module;
private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 40, 100, 16, 16).setSize(16, 16);
private boolean active;
@Override
public void register(final ReplayMod mod) throws Exception {
this.module = ReplayModReplay.instance;
mod.getKeyBindingRegistry().registerKeyBinding("replaymod.input.quickmode", Keyboard.KEY_Q, new Runnable() {
@Override
public void run() {
ReplayHandler replayHandler = module.getReplayHandler();
if (replayHandler == null) {
return;
}
updateIndicator(replayHandler.getOverlay());
replayHandler.getReplaySender().setSyncModeAndWait();
mod.runLater(() -> {
replayHandler.ensureQuickModeInitialized(() -> {
active = !active;
replayHandler.setQuickMode(active);
replayHandler.getReplaySender().setAsyncMode(true);
});
});
}
});
register();
}
{
on(ReplayOpenedCallback.EVENT, replayHandler -> updateIndicator(replayHandler.getOverlay()));
}
private void updateIndicator(GuiReplayOverlay overlay) {
if (active) {
overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(1), indicator);
} else {
overlay.statusIndicatorPanel.removeElement(indicator);
}
}
}