package gregtech.api.gui.modularui; import java.util.function.Function; import com.gtnewhorizons.modularui.api.ModularUITextures; import com.gtnewhorizons.modularui.api.drawable.AdaptableUITexture; import com.gtnewhorizons.modularui.api.drawable.UITexture; import gregtech.api.enums.SteamVariant; /** * Set of textures that is commonly used for GUI but can vary depending on "style" of machines, e.g. bronze steam or * steel steam.
* This has builder pattern; Textures you didn't specify will fall back to default ones. */ public class GUITextureSet { private UITexture mainBackground; private UITexture itemSlot; private UITexture fluidSlot; private UITexture coverTabNormal; private UITexture coverTabHighlight; private UITexture coverTabDisabled; private UITexture coverTabNormalFlipped; private UITexture coverTabHighlightFlipped; private UITexture coverTabDisabledFlipped; private AdaptableUITexture titleTabNormal; private AdaptableUITexture titleTabDark; private AdaptableUITexture titleTabAngular; private UITexture gregtechLogo; public static final GUITextureSet DEFAULT = new GUITextureSet() .setMainBackground(GT_UITextures.BACKGROUND_SINGLEBLOCK_DEFAULT) .setItemSlot(ModularUITextures.ITEM_SLOT) .setFluidSlot(ModularUITextures.FLUID_SLOT) .setCoverTab( GT_UITextures.TAB_COVER_NORMAL, GT_UITextures.TAB_COVER_HIGHLIGHT, GT_UITextures.TAB_COVER_DISABLED) .setTitleTab(GT_UITextures.TAB_TITLE, GT_UITextures.TAB_TITLE_DARK, GT_UITextures.TAB_TITLE_ANGULAR) .setGregTechLogo(GT_UITextures.PICTURE_GT_LOGO_17x17_TRANSPARENT); public static final Function STEAM = steamVariant -> new GUITextureSet() .setMainBackground(GT_UITextures.BACKGROUND_STEAM.get(steamVariant)) .setItemSlot(GT_UITextures.SLOT_ITEM_STEAM.get(steamVariant)) .setFluidSlot(GT_UITextures.SLOT_FLUID_STEAM.get(steamVariant)) .setCoverTab( GT_UITextures.TAB_COVER_STEAM_NORMAL.get(steamVariant), GT_UITextures.TAB_COVER_STEAM_HIGHLIGHT.get(steamVariant), GT_UITextures.TAB_COVER_STEAM_DISABLED.get(steamVariant)) .setTitleTab( GT_UITextures.TAB_TITLE_STEAM.getAdaptable(steamVariant), GT_UITextures.TAB_TITLE_DARK_STEAM.getAdaptable(steamVariant), GT_UITextures.TAB_TITLE_ANGULAR_STEAM.getAdaptable(steamVariant)) .setGregTechLogo(GT_UITextures.PICTURE_GT_LOGO_17x17_TRANSPARENT_STEAM.get(steamVariant)); public GUITextureSet() {} // region setters public GUITextureSet setMainBackground(UITexture mainBackground) { this.mainBackground = mainBackground; return this; } public GUITextureSet setItemSlot(UITexture itemSlot) { this.itemSlot = itemSlot; return this; } public GUITextureSet setFluidSlot(UITexture fluidSlot) { this.fluidSlot = fluidSlot; return this; } public GUITextureSet setCoverTab(UITexture coverNormal, UITexture coverHighlight, UITexture coverDisabled) { this.coverTabNormal = coverNormal; this.coverTabHighlight = coverHighlight; this.coverTabDisabled = coverDisabled; this.coverTabNormalFlipped = coverNormal.getFlipped(true, false); this.coverTabHighlightFlipped = coverHighlight.getFlipped(true, false); this.coverTabDisabledFlipped = coverDisabled.getFlipped(true, false); return this; } public GUITextureSet setTitleTab(AdaptableUITexture titleNormal, AdaptableUITexture titleDark, AdaptableUITexture titleTabAngular) { this.titleTabNormal = titleNormal; this.titleTabDark = titleDark; this.titleTabAngular = titleTabAngular; return this; } public GUITextureSet setGregTechLogo(UITexture gregtechLogo) { this.gregtechLogo = gregtechLogo; return this; } // endregion // region getters public UITexture getMainBackground() { return mainBackground != null ? mainBackground : DEFAULT.mainBackground; } public UITexture getItemSlot() { return itemSlot != null ? itemSlot : DEFAULT.itemSlot; } public UITexture getFluidSlot() { return fluidSlot != null ? fluidSlot : DEFAULT.fluidSlot; } public UITexture getCoverTabNormal() { return coverTabNormal != null ? coverTabNormal : DEFAULT.coverTabNormal; } public UITexture getCoverTabHighlight() { return coverTabHighlight != null ? coverTabHighlight : DEFAULT.coverTabHighlight; } public UITexture getCoverTabDisabled() { return coverTabDisabled != null ? coverTabDisabled : DEFAULT.coverTabDisabled; } public UITexture getCoverTabNormalFlipped() { return coverTabNormalFlipped != null ? coverTabNormalFlipped : DEFAULT.coverTabNormalFlipped; } public UITexture getCoverTabHighlightFlipped() { return coverTabHighlightFlipped != null ? coverTabHighlightFlipped : DEFAULT.coverTabHighlightFlipped; } public UITexture getCoverTabDisabledFlipped() { return coverTabDisabledFlipped != null ? coverTabDisabledFlipped : DEFAULT.coverTabDisabledFlipped; } public AdaptableUITexture getTitleTabNormal() { return titleTabNormal != null ? titleTabNormal : DEFAULT.titleTabNormal; } public AdaptableUITexture getTitleTabDark() { return titleTabDark != null ? titleTabDark : DEFAULT.titleTabDark; } public AdaptableUITexture getTitleTabAngular() { return titleTabAngular != null ? titleTabAngular : DEFAULT.titleTabAngular; } public UITexture getGregTechLogo() { return gregtechLogo != null ? gregtechLogo : DEFAULT.gregtechLogo; } // endregion }