Better research screen
This commit is contained in:
parent
f388639fc6
commit
e5f81569f9
@ -8,6 +8,7 @@ import ru.dbotthepony.mc.otm.android.AndroidResearch;
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchType;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||
import ru.dbotthepony.mc.otm.capability.AndroidCapabilityPlayer;
|
||||
import ru.dbotthepony.mc.otm.menu.AndroidStationMenu;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
@ -34,6 +35,7 @@ public record AndroidResearchRequestPacket(AndroidResearchType<?> research) {
|
||||
if (!cap.isAndroid())
|
||||
return;
|
||||
|
||||
if (ply.containerMenu instanceof AndroidStationMenu)
|
||||
cap.getResearch(research).research();
|
||||
}
|
||||
|
||||
|
@ -122,7 +122,7 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
|
||||
seen.add(research);
|
||||
|
||||
if (rows[level] == null) {
|
||||
rows[level] = new EditablePanel(this, canvas, 0, level * 22, 1000, 22) {
|
||||
rows[level] = new EditablePanel(this, canvas, 0, level * 22, 10000, 22) {
|
||||
@Override
|
||||
protected boolean mouseClickedInner(double mouse_x, double mouse_y, int flag) {
|
||||
return false;
|
||||
@ -160,15 +160,13 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
|
||||
}
|
||||
|
||||
private DraggableCanvasPanel canvas;
|
||||
private FramePanel research;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected FramePanel makeMainFrame() {
|
||||
var frame = new FramePanel(this, null, 0, 0, FRAME_WIDTH, FRAME_HEIGHT, getTitle());
|
||||
private void openResearchTree() {
|
||||
var window = this.minecraft.getWindow();
|
||||
research = new FramePanel(this, null, 0, 0, window.getGuiScaledWidth() * 0.8f, window.getGuiScaledHeight() * 0.8f, new TranslatableComponent("otm.gui.android_research"));
|
||||
|
||||
autoAttachToFrame(frame);
|
||||
|
||||
canvas = new DraggableCanvasPanel(this, frame, 0, 0, GRID_WIDTH * 22, 0) {
|
||||
canvas = new DraggableCanvasPanel(this, research, 0, 0, GRID_WIDTH * 22, 0) {
|
||||
@Override
|
||||
protected void innerRender(PoseStack stack, float mouse_x, float mouse_y, float flag) {
|
||||
RenderHelper.setDrawColor(RGBAColor.BLACK);
|
||||
@ -178,6 +176,9 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
|
||||
|
||||
minecraft.player.getCapability(MatteryCapability.ANDROID).ifPresent(_cap -> {
|
||||
if (_cap instanceof AndroidCapabilityPlayer cap) {
|
||||
Arrays.fill(rows, null);
|
||||
next_x = 0;
|
||||
|
||||
for (var research : Registry.ANDROID_RESEARCH().getValues()) {
|
||||
if (research.getPrerequisites().size() == 0) {
|
||||
dive(cap, research, 0);
|
||||
@ -219,7 +220,43 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
|
||||
}
|
||||
});
|
||||
|
||||
canvas.setDock(Dock.RIGHT);
|
||||
canvas.setDock(Dock.FILL);
|
||||
|
||||
var bottom = new EditablePanel(this, research, 0, 0, 0, 20);
|
||||
var close = new ButtonPanel(this, bottom, 0, 0, 90, 20, new TranslatableComponent("otm.container.matter_panel.close"));
|
||||
bottom.setDock(Dock.BOTTOM);
|
||||
close.setDock(Dock.RIGHT);
|
||||
close.bindOnPress(research::remove);
|
||||
bottom.setDockMargin(0, 0, 4, 4);
|
||||
|
||||
canvas.setDockMargin(4, 4, 4, 4);
|
||||
|
||||
research.toScreenCenter();
|
||||
addPanel(research);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resize(Minecraft minecraft, int p_96576_, int p_96577_) {
|
||||
super.resize(minecraft, p_96576_, p_96577_);
|
||||
|
||||
if (research != null) {
|
||||
var window = minecraft.getWindow();
|
||||
research.setSize(window.getGuiScaledWidth() * 0.8f, window.getGuiScaledHeight() * 0.8f);
|
||||
research.toScreenCenter();
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected FramePanel makeMainFrame() {
|
||||
var frame = new FramePanel(this, null, 0, 0, FRAME_WIDTH, FRAME_HEIGHT, getTitle());
|
||||
|
||||
autoAttachToFrame(frame);
|
||||
|
||||
var button = new ButtonPanel(this, frame, 0, 0, 90, 20, new TranslatableComponent("otm.gui.android_research"));
|
||||
button.setDock(Dock.BOTTOM);
|
||||
button.bindOnPress(this::openResearchTree);
|
||||
button.setDockMargin(10, 0, 10, 0);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
@ -15,6 +15,8 @@
|
||||
"otm.gui.matter.format": "Matter: %s",
|
||||
"otm.gui.matter.name": "MtU",
|
||||
|
||||
"otm.gui.android_research": "Android research tree",
|
||||
|
||||
"otm.gui.pattern.percentage_level": "Fill level: %s%%",
|
||||
"otm.gui.pattern.format": "Stored patterns: %s / %s",
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user