use of com.lowdragmc.lowdraglib.gui.texture.ResourceTexture in project Multiblocked by Low-Drag-MC.
the class BlueprintTableWidget method recipeMapBuilder.
private void recipeMapBuilder(ClickData clickData) {
widgets.forEach(this::waitToRemoved);
WidgetGroup group = new WidgetGroup(0, 0, getSize().width, getSize().height).setClientSideWidget();
this.addWidget(0, group);
if (clickData.isRemote) {
group.addWidget(0, new ImageWidget(0, 0, getSize().width, getSize().height, new ResourceTexture("multiblocked:textures/gui/blueprint_page.png")));
group.addWidget(new RecipeMapBuilderWidget(this, 200, 31, 150, 188));
}
}
use of com.lowdragmc.lowdraglib.gui.texture.ResourceTexture in project Multiblocked by Low-Drag-MC.
the class ControllerBuilderWidget method updateList.
protected void updateList() {
int size = files.size();
files.forEach(containers::waitToRemoved);
files.clear();
File path = new File(Multiblocked.location, "definition/controller");
if (!path.isDirectory()) {
if (!path.mkdirs()) {
return;
}
}
for (File file : Optional.ofNullable(path.listFiles((s, name) -> name.endsWith(".json"))).orElse(new File[0])) {
SelectableWidgetGroup widgetGroup = (SelectableWidgetGroup) new SelectableWidgetGroup(0, (containers.widgets.size() - size) * 22, containers.getSize().width, 20).setSelectedTexture(-2, 0xff00aa00).setOnSelected(W -> {
templateButton.setVisible(false);
selected = null;
onJsonSelected(file);
}).addWidget(new ImageWidget(0, 0, 150, 20, new ColorRectTexture(0x4faaaaaa))).addWidget(new ButtonWidget(134, 4, 12, 12, new ResourceTexture("multiblocked:textures/gui/option.png"), cd -> {
JsonElement jsonElement = FileUtility.loadJson(file);
if (jsonElement != null) {
try {
String recipeMap = jsonElement.getAsJsonObject().get("recipeMap").getAsString();
JsonBlockPattern pattern = Multiblocked.GSON.fromJson(jsonElement.getAsJsonObject().get("basePattern"), JsonBlockPattern.class);
ControllerDefinition definition = Multiblocked.GSON.fromJson(jsonElement, ControllerDefinition.class);
new ControllerWidget(this, definition, pattern, recipeMap, jsonObject -> {
if (jsonObject != null) {
FileUtility.saveJson(file, jsonObject);
}
});
} catch (Exception ignored) {
}
}
}).setHoverBorderTexture(1, -1).setHoverTooltips("multiblocked.gui.tips.settings")).addWidget(new ImageWidget(32, 0, 100, 20, new TextTexture(file.getName().replace(".json", "")).setWidth(100).setType(TextTexture.TextType.ROLL))).addWidget(new ImageWidget(4, 2, 18, 18, new ItemStackTexture(Items.PAPER)));
files.add(widgetGroup);
containers.addWidget(widgetGroup);
}
}
use of com.lowdragmc.lowdraglib.gui.texture.ResourceTexture in project Multiblocked by Low-Drag-MC.
the class RecipeMapBuilderWidget method updateRecipeMapList.
private void updateRecipeMapList() {
recipeMapList.clearAllWidgets();
if (onRecipeMapSelected != null) {
onRecipeMapSelected.accept(RecipeMap.EMPTY);
}
selected = null;
File path = new File(Multiblocked.location, "recipe_map");
if (!path.isDirectory()) {
if (!path.mkdirs()) {
return;
}
}
for (File file : Optional.ofNullable(path.listFiles()).orElse(new File[0])) {
if (file.isFile() && file.getName().endsWith(".json")) {
recipeMapList.addWidget(new SelectableWidgetGroup(5, 1 + recipeMapList.widgets.size() * 22, getSize().width - 30, 20).setSelectedTexture(-2, 0xff00aa00).setOnSelected(W -> {
selected = file;
if (onRecipeMapSelected != null) {
onRecipeMapSelected.accept(Multiblocked.GSON.fromJson(FileUtility.loadJson(file), RecipeMap.class));
}
}).addWidget(new ImageWidget(0, 0, 120, 20, new ColorRectTexture(0x4faaaaaa))).addWidget(new ButtonWidget(104, 4, 12, 12, new ResourceTexture("multiblocked:textures/gui/option.png"), cd -> new RecipeMapWidget(parent, Multiblocked.GSON.fromJson(FileUtility.loadJson(file), RecipeMap.class), recipeMap -> {
if (recipeMap != null) {
if (selected == file) {
if (onRecipeMapSelected != null) {
onRecipeMapSelected.accept(recipeMap);
}
}
JsonElement element = Multiblocked.GSON.toJsonTree(recipeMap);
FileUtility.saveJson(file, element);
}
})).setHoverBorderTexture(1, -1).setHoverTooltips("multiblocked.gui.tips.settings")).addWidget(new ImageWidget(2, 0, 96, 20, new TextTexture(file.getName().replace(".json", "")).setWidth(96).setType(TextTexture.TextType.ROLL))));
}
}
}
use of com.lowdragmc.lowdraglib.gui.texture.ResourceTexture in project Multiblocked by Low-Drag-MC.
the class ComponentWidget method createScene.
@OnlyIn(Dist.CLIENT)
protected WidgetGroup createScene(int x, int y, String text, String tips, IMultiblockedRenderer init, Consumer<IMultiblockedRenderer> onUpdate) {
TrackedDummyWorld world = new TrackedDummyWorld();
world.addBlock(BlockPos.ZERO, BlockInfo.fromBlockState(MbdComponents.DummyComponentBlock.defaultBlockState()));
DummyComponentTileEntity tileEntity = (DummyComponentTileEntity) world.getBlockEntity(BlockPos.ZERO);
tileEntity.setDefinition(new PartDefinition(new ResourceLocation(Multiblocked.MODID, "component_widget")));
tileEntity.getDefinition().baseRenderer = init;
WidgetGroup widgetGroup = new WidgetGroup(x, y, 90, 90);
widgetGroup.addWidget(new LabelWidget(0, 0, text));
widgetGroup.addWidget(new ImageWidget(0, 12, 90, 80, new ColorBorderTexture(2, 0xff4A82F7)));
widgetGroup.addWidget(new SceneWidget(0, 12, 90, 80, world).setRenderedCore(Collections.singleton(BlockPos.ZERO), null).setRenderSelect(false).setRenderFacing(false));
widgetGroup.addWidget(new ButtonWidget(90 - 15, 12, 15, 15, new ResourceTexture("multiblocked:textures/gui/option.png"), (cd) -> new IRendererWidget(this, tileEntity.getRenderer(), r -> {
tileEntity.getDefinition().baseRenderer = r;
onUpdate.accept(r);
})).setHoverBorderTexture(1, -1).setHoverTooltips(tips));
return widgetGroup;
}
use of com.lowdragmc.lowdraglib.gui.texture.ResourceTexture in project Multiblocked by Low-Drag-MC.
the class ContentWidget method openConfigurator.
/**
* Configurator.
*/
public void openConfigurator(WidgetGroup dialog) {
dialog.addWidget(new LabelWidget(5, 8, "multiblocked.gui.label.chance"));
dialog.addWidget(new TextFieldWidget(125 - 60, 5, 30, 15, null, number -> setContent(io, content, Float.parseFloat(number), perTick)).setNumbersOnly(0f, 1f).setCurrentString(chance + ""));
dialog.addWidget(new SwitchWidget(125 - 25, 5, 15, 15, (cd, r) -> setContent(io, content, chance, r)).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/boolean.png").getSubTexture(0, 0, 1, 0.5)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/boolean.png").getSubTexture(0, 0.5, 1, 0.5)).setHoverBorderTexture(1, -1).setPressed(perTick).setHoverTooltips("multiblocked.gui.content.per_tick"));
}
Aggregations