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.android.AndroidResearchType;
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||||
import ru.dbotthepony.mc.otm.capability.AndroidCapabilityPlayer;
|
import ru.dbotthepony.mc.otm.capability.AndroidCapabilityPlayer;
|
||||||
|
import ru.dbotthepony.mc.otm.menu.AndroidStationMenu;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
@ -34,6 +35,7 @@ public record AndroidResearchRequestPacket(AndroidResearchType<?> research) {
|
|||||||
if (!cap.isAndroid())
|
if (!cap.isAndroid())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (ply.containerMenu instanceof AndroidStationMenu)
|
||||||
cap.getResearch(research).research();
|
cap.getResearch(research).research();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
|
|||||||
seen.add(research);
|
seen.add(research);
|
||||||
|
|
||||||
if (rows[level] == null) {
|
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
|
@Override
|
||||||
protected boolean mouseClickedInner(double mouse_x, double mouse_y, int flag) {
|
protected boolean mouseClickedInner(double mouse_x, double mouse_y, int flag) {
|
||||||
return false;
|
return false;
|
||||||
@ -160,15 +160,13 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DraggableCanvasPanel canvas;
|
private DraggableCanvasPanel canvas;
|
||||||
|
private FramePanel research;
|
||||||
|
|
||||||
@Nullable
|
private void openResearchTree() {
|
||||||
@Override
|
var window = this.minecraft.getWindow();
|
||||||
protected FramePanel makeMainFrame() {
|
research = new FramePanel(this, null, 0, 0, window.getGuiScaledWidth() * 0.8f, window.getGuiScaledHeight() * 0.8f, new TranslatableComponent("otm.gui.android_research"));
|
||||||
var frame = new FramePanel(this, null, 0, 0, FRAME_WIDTH, FRAME_HEIGHT, getTitle());
|
|
||||||
|
|
||||||
autoAttachToFrame(frame);
|
canvas = new DraggableCanvasPanel(this, research, 0, 0, GRID_WIDTH * 22, 0) {
|
||||||
|
|
||||||
canvas = new DraggableCanvasPanel(this, frame, 0, 0, GRID_WIDTH * 22, 0) {
|
|
||||||
@Override
|
@Override
|
||||||
protected void innerRender(PoseStack stack, float mouse_x, float mouse_y, float flag) {
|
protected void innerRender(PoseStack stack, float mouse_x, float mouse_y, float flag) {
|
||||||
RenderHelper.setDrawColor(RGBAColor.BLACK);
|
RenderHelper.setDrawColor(RGBAColor.BLACK);
|
||||||
@ -178,6 +176,9 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
|
|||||||
|
|
||||||
minecraft.player.getCapability(MatteryCapability.ANDROID).ifPresent(_cap -> {
|
minecraft.player.getCapability(MatteryCapability.ANDROID).ifPresent(_cap -> {
|
||||||
if (_cap instanceof AndroidCapabilityPlayer cap) {
|
if (_cap instanceof AndroidCapabilityPlayer cap) {
|
||||||
|
Arrays.fill(rows, null);
|
||||||
|
next_x = 0;
|
||||||
|
|
||||||
for (var research : Registry.ANDROID_RESEARCH().getValues()) {
|
for (var research : Registry.ANDROID_RESEARCH().getValues()) {
|
||||||
if (research.getPrerequisites().size() == 0) {
|
if (research.getPrerequisites().size() == 0) {
|
||||||
dive(cap, research, 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;
|
return frame;
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
"otm.gui.matter.format": "Matter: %s",
|
"otm.gui.matter.format": "Matter: %s",
|
||||||
"otm.gui.matter.name": "MtU",
|
"otm.gui.matter.name": "MtU",
|
||||||
|
|
||||||
|
"otm.gui.android_research": "Android research tree",
|
||||||
|
|
||||||
"otm.gui.pattern.percentage_level": "Fill level: %s%%",
|
"otm.gui.pattern.percentage_level": "Fill level: %s%%",
|
||||||
"otm.gui.pattern.format": "Stored patterns: %s / %s",
|
"otm.gui.pattern.format": "Stored patterns: %s / %s",
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user