113 lines
3.5 KiB
Java
113 lines
3.5 KiB
Java
package ru.bclib.gui.screens;
|
|
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.network.chat.CommonComponents;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.network.chat.TranslatableComponent;
|
|
import ru.bclib.api.dataexchange.handler.autosync.HelloClient;
|
|
import ru.bclib.gui.gridlayout.GridCheckboxCell;
|
|
import ru.bclib.gui.gridlayout.GridLayout.Alignment;
|
|
import ru.bclib.gui.gridlayout.GridRow;
|
|
import ru.bclib.util.ModUtil;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public class SyncFilesScreen extends BCLibScreen {
|
|
private final Component description;
|
|
private final SyncFilesScreen.Listener listener;
|
|
private final boolean hasConfigFiles;
|
|
private final boolean hasFiles;
|
|
private final boolean hasMods;
|
|
private final boolean shouldDelete;
|
|
private final HelloClient.IServerModMap serverInfo;
|
|
public SyncFilesScreen(int modFiles, int configFiles, int singleFiles, int folderFiles, int deleteFiles, HelloClient.IServerModMap serverInfo, Listener listener) {
|
|
super(new TranslatableComponent("title.bclib.syncfiles"));
|
|
|
|
this.serverInfo = serverInfo;
|
|
this.description = new TranslatableComponent("message.bclib.syncfiles");
|
|
this.listener = listener;
|
|
|
|
this.hasConfigFiles = configFiles>0;
|
|
this.hasFiles = singleFiles+folderFiles>0;
|
|
this.hasMods = modFiles>0;
|
|
this.shouldDelete = deleteFiles>0;
|
|
}
|
|
|
|
protected void initLayout() {
|
|
final int BUTTON_HEIGHT = 20;
|
|
|
|
grid.addRow()
|
|
.addMessage(this.description, this.font, Alignment.CENTER);
|
|
|
|
grid.addSpacerRow(10);
|
|
|
|
GridRow row;
|
|
|
|
|
|
final GridCheckboxCell mods;
|
|
row = grid.addRow();
|
|
mods = row.addCheckbox(new TranslatableComponent("message.bclib.syncfiles.mods"), hasMods, BUTTON_HEIGHT, this.font);
|
|
mods.setEnabled(hasMods);
|
|
if (hasMods) {
|
|
row.addSpacer();
|
|
row.addButton(new TranslatableComponent("title.bclib.more"), 20, font, (button)->{
|
|
ModListScreen scr = new ModListScreen(
|
|
this,
|
|
new TranslatableComponent("title.bclib.syncfiles.modlist"),
|
|
new TranslatableComponent("message.bclib.syncfiles.modlist"),
|
|
ModUtil.getMods(),
|
|
serverInfo
|
|
);
|
|
Minecraft.getInstance().setScreen(scr);
|
|
});
|
|
}
|
|
grid.addSpacerRow();
|
|
|
|
|
|
final GridCheckboxCell configs;
|
|
row = grid.addRow();
|
|
configs = row.addCheckbox(new TranslatableComponent("message.bclib.syncfiles.configs"), hasConfigFiles, BUTTON_HEIGHT, this.font);
|
|
configs.setEnabled(hasConfigFiles);
|
|
|
|
grid.addSpacerRow();
|
|
|
|
row = grid.addRow();
|
|
|
|
final GridCheckboxCell folder;
|
|
folder = row.addCheckbox(new TranslatableComponent("message.bclib.syncfiles.folders"), hasFiles, BUTTON_HEIGHT, this.font);
|
|
folder.setEnabled(hasFiles);
|
|
row.addSpacer();
|
|
|
|
GridCheckboxCell delete;
|
|
delete = row.addCheckbox(new TranslatableComponent("message.bclib.syncfiles.delete"), shouldDelete, BUTTON_HEIGHT, this.font);
|
|
delete.setEnabled(shouldDelete);
|
|
|
|
|
|
grid.addSpacerRow(30);
|
|
row = grid.addRow();
|
|
row.addFiller();
|
|
row.addButton(CommonComponents.GUI_NO, BUTTON_HEIGHT, this.font, (button) -> {
|
|
listener.proceed(false, false, false, false);
|
|
});
|
|
row.addSpacer();
|
|
row.addButton(CommonComponents.GUI_YES, BUTTON_HEIGHT, this.font, (button) -> {
|
|
listener.proceed(
|
|
mods.isChecked(),
|
|
configs.isChecked(),
|
|
folder.isChecked(),
|
|
delete.isChecked()
|
|
);
|
|
});
|
|
row.addFiller();
|
|
}
|
|
|
|
public boolean shouldCloseOnEsc() {
|
|
return false;
|
|
}
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public interface Listener {
|
|
void proceed(boolean downloadMods, boolean downloadConfigs, boolean downloadFiles, boolean removeFiles);
|
|
}
|
|
}
|