diff options
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/gui/Window.java | 14 | ||||
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/gui/elements/OCBlock.java | 11 | ||||
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/gui/elements/OCStoreBlock.java | 18 | ||||
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/renderer/TrueTypeFont.java | 40 | ||||
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/themes/Theme.java | 1 | ||||
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/themes/textures/TextureManager.java (renamed from src/main/java/io/polyfrost/oneconfig/themes/TextureManager.java) | 3 | ||||
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/themes/textures/ThemeElement.java (renamed from src/main/java/io/polyfrost/oneconfig/themes/ThemeElement.java) | 2 | ||||
-rw-r--r-- | src/main/java/io/polyfrost/oneconfig/themes/textures/TickableTexture.java (renamed from src/main/java/io/polyfrost/oneconfig/themes/TickableTexture.java) | 3 |
8 files changed, 80 insertions, 12 deletions
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/Window.java b/src/main/java/io/polyfrost/oneconfig/gui/Window.java index 8dd0138..7671578 100644 --- a/src/main/java/io/polyfrost/oneconfig/gui/Window.java +++ b/src/main/java/io/polyfrost/oneconfig/gui/Window.java @@ -1,13 +1,20 @@ package io.polyfrost.oneconfig.gui; import io.polyfrost.oneconfig.gui.elements.OCBlock; +import io.polyfrost.oneconfig.gui.elements.OCStoreBlock; import io.polyfrost.oneconfig.themes.Theme; -import io.polyfrost.oneconfig.themes.ThemeElement; +import io.polyfrost.oneconfig.themes.textures.ThemeElement; import io.polyfrost.oneconfig.themes.Themes; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.util.ResourceLocation; +import javax.imageio.ImageIO; import java.awt.*; +import java.io.IOException; +import java.net.URL; import static io.polyfrost.oneconfig.renderer.Renderer.clamp; import static io.polyfrost.oneconfig.renderer.Renderer.easeOut; @@ -18,6 +25,9 @@ public class Window extends GuiScreen { private final Theme t = Themes.getActiveTheme(); private final int guiScaleToRestore; OCBlock block = new OCBlock(-1, 100, 200); + ResourceLocation example = new ResourceLocation("oneconfig", "textures/hudsettings.png"); + OCStoreBlock storeBlock = new OCStoreBlock("OneConfig Theme", "OneConfig default theme with the default look you love.", example, new Color(27,27,27,255).getRGB()); + public static ScaledResolution resolution = new ScaledResolution(Minecraft.getMinecraft()); public Window() { super.initGui(); @@ -31,6 +41,7 @@ public class Window extends GuiScreen { } public void drawScreen(int mouseX, int mouseY, float partialTicks) { + resolution = new ScaledResolution(Minecraft.getMinecraft()); super.drawScreen(mouseX, mouseY, partialTicks); currentProgress = clamp(easeOut(currentProgress, 1f)); int alphaVal = (int) (50 * currentProgress); @@ -57,6 +68,7 @@ public class Window extends GuiScreen { t.getTextureManager().draw(ThemeElement.BUTTON_OFF, left + 1424, top + 32, 64, 64); t.getTextureManager().draw(ThemeElement.BUTTON_OFF, left + 1344, top + 32, 64, 64); block.draw(200, 300); + storeBlock.draw(500,300); //t.getTextureManager().draw(ThemeElement.CLOSE, left + 1504, top + 32, 64, 64); //t.getTextureManager().draw(ThemeElement.BUTTON_OFF, left + 100, top + 100, 296, 64); //t.getTextureManager().draw(ThemeElement.CLOSE); diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/OCBlock.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/OCBlock.java index 7a5c8f3..fcce48b 100644 --- a/src/main/java/io/polyfrost/oneconfig/gui/elements/OCBlock.java +++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/OCBlock.java @@ -2,7 +2,7 @@ package io.polyfrost.oneconfig.gui.elements; import io.polyfrost.oneconfig.renderer.Renderer; import io.polyfrost.oneconfig.themes.Theme; -import io.polyfrost.oneconfig.themes.ThemeElement; +import io.polyfrost.oneconfig.themes.textures.ThemeElement; import io.polyfrost.oneconfig.themes.Themes; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; @@ -14,15 +14,16 @@ import org.lwjgl.input.Mouse; import java.awt.*; +import static io.polyfrost.oneconfig.gui.Window.resolution; + @SuppressWarnings("unused") public class OCBlock { - private static final Theme theme = Themes.getActiveTheme(); + public static final Theme theme = Themes.getActiveTheme(); private static final Minecraft mc = Minecraft.getMinecraft(); - public static ScaledResolution resolution = new ScaledResolution(mc); private Color color; private String text; private final boolean bold; - private int width, height; + protected int width, height; private ThemeElement element; private boolean clicked = false; private boolean rightClicked = false; @@ -103,7 +104,7 @@ public class OCBlock { } /** - * Update this elements click, key and hover status. Call this method at the end of your 'draw' function, if overrided. + * Update this elements click, key and hover status. Call this method at the end of your 'draw' function, if overridden. */ public void update() { resolution = new ScaledResolution(mc); diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/OCStoreBlock.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/OCStoreBlock.java index 6d9d8c1..7a87f77 100644 --- a/src/main/java/io/polyfrost/oneconfig/gui/elements/OCStoreBlock.java +++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/OCStoreBlock.java @@ -1,17 +1,33 @@ package io.polyfrost.oneconfig.gui.elements; +import io.polyfrost.oneconfig.renderer.Renderer; import net.minecraft.util.ResourceLocation; -public class OCStoreBlock extends OCBlock { +import java.awt.*; +public class OCStoreBlock extends OCBlock { + private ResourceLocation image; + private String description, title; + private Color color; public OCStoreBlock(String title, String description, ResourceLocation image, int color) { super(color, 200, 400); + this.color = Renderer.getColorFromInt(color); + this.description = description; + this.title = title; + this.image = image; } public void draw(int x, int y) { + super.draw(x, y); + Renderer.drawScaledImage(image, x, y, 200, 100); + super.theme.getFont().drawSplitString("i like fish", x + 2, y + 102, 200, -1); super.update(); } + + public void draw(int x, int y, int width, int height) { + draw(x,y); + } } diff --git a/src/main/java/io/polyfrost/oneconfig/renderer/TrueTypeFont.java b/src/main/java/io/polyfrost/oneconfig/renderer/TrueTypeFont.java index 452bc48..01901eb 100644 --- a/src/main/java/io/polyfrost/oneconfig/renderer/TrueTypeFont.java +++ b/src/main/java/io/polyfrost/oneconfig/renderer/TrueTypeFont.java @@ -13,7 +13,9 @@ import java.awt.image.DataBufferInt; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.IntBuffer; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @@ -248,8 +250,8 @@ public class TrueTypeFont { public int getWidth(String text) { int totalWidth = 0; - IntObject intObject = null; - int currentChar = 0; + IntObject intObject; + int currentChar; for (int i = 0; i < text.length(); i++) { currentChar = text.charAt(i); if (currentChar < 256) { @@ -272,6 +274,40 @@ public class TrueTypeFont { drawString(text, x, y, scaleX, scaleY, ALIGN_LEFT, color); } + public void drawSplitString(String text, float x, float y, int wrapWidth, int color) { + try { // time taken: 0.035ms to do complete cycle + wrapWidth += 140; // it needs this extra to work properly (why?) + List<String> splitString = new ArrayList<>(); + String[] words = text.split("\\W+"); + int totalWidth = 0; + String line = ""; + for(String word : words) { + int width = getWidth(word); + word += " "; // add the space + totalWidth += width; + line += word; + if(totalWidth >= wrapWidth) { // wrap line if it is too long + splitString.add(line); + totalWidth = 0; + line = ""; + } + } + if(!line.equals("")) { // add extra if there is any (last line) + splitString.add(line); + } + int i1 = 0; + for (String string : splitString) { + drawString(string, x, y + i1, 1f, 1f, color); // draw it + i1 += getHeight(); + } + } catch (Exception e) { // be safe kids + e.printStackTrace(); + } + } + + + + public void drawString(String text, float x, float y, float scaleX, float scaleY, int format, int color) { float f = (float) (color >> 16 & 255) / 255.0F; diff --git a/src/main/java/io/polyfrost/oneconfig/themes/Theme.java b/src/main/java/io/polyfrost/oneconfig/themes/Theme.java index 4647397..63450da 100644 --- a/src/main/java/io/polyfrost/oneconfig/themes/Theme.java +++ b/src/main/java/io/polyfrost/oneconfig/themes/Theme.java @@ -4,6 +4,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import io.polyfrost.oneconfig.renderer.Renderer; import io.polyfrost.oneconfig.renderer.TrueTypeFont; +import io.polyfrost.oneconfig.themes.textures.TextureManager; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.resources.FileResourcePack; diff --git a/src/main/java/io/polyfrost/oneconfig/themes/TextureManager.java b/src/main/java/io/polyfrost/oneconfig/themes/textures/TextureManager.java index f436a7b..5825fb1 100644 --- a/src/main/java/io/polyfrost/oneconfig/themes/TextureManager.java +++ b/src/main/java/io/polyfrost/oneconfig/themes/textures/TextureManager.java @@ -1,5 +1,6 @@ -package io.polyfrost.oneconfig.themes; +package io.polyfrost.oneconfig.themes.textures; +import io.polyfrost.oneconfig.themes.Theme; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.GlStateManager; diff --git a/src/main/java/io/polyfrost/oneconfig/themes/ThemeElement.java b/src/main/java/io/polyfrost/oneconfig/themes/textures/ThemeElement.java index 9e8e061..096b2aa 100644 --- a/src/main/java/io/polyfrost/oneconfig/themes/ThemeElement.java +++ b/src/main/java/io/polyfrost/oneconfig/themes/textures/ThemeElement.java @@ -1,4 +1,4 @@ -package io.polyfrost.oneconfig.themes; +package io.polyfrost.oneconfig.themes.textures; public enum ThemeElement { DISCORD("textures/icons/discord.png", 128), diff --git a/src/main/java/io/polyfrost/oneconfig/themes/TickableTexture.java b/src/main/java/io/polyfrost/oneconfig/themes/textures/TickableTexture.java index 86022fb..b9882d0 100644 --- a/src/main/java/io/polyfrost/oneconfig/themes/TickableTexture.java +++ b/src/main/java/io/polyfrost/oneconfig/themes/textures/TickableTexture.java @@ -1,7 +1,8 @@ -package io.polyfrost.oneconfig.themes; +package io.polyfrost.oneconfig.themes.textures; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import io.polyfrost.oneconfig.themes.textures.ThemeElement; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.GlStateManager; |