aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/polyfrost
diff options
context:
space:
mode:
authornextdaydelivery <12willettsh@gmail.com>2022-02-20 12:13:58 +0000
committernextdaydelivery <12willettsh@gmail.com>2022-02-20 12:14:29 +0000
commitdfa65f6236c226eb88f4e3761e10e80e5f37c22b (patch)
tree33937f0cadf5fb012aae57e6db87e56a32b4e265 /src/main/java/io/polyfrost
parent4f8e90571e3a270b54244d0fef985d5e0ca04b40 (diff)
downloadOneConfig-dfa65f6236c226eb88f4e3761e10e80e5f37c22b.tar.gz
OneConfig-dfa65f6236c226eb88f4e3761e10e80e5f37c22b.tar.bz2
OneConfig-dfa65f6236c226eb88f4e3761e10e80e5f37c22b.zip
package moves and a split string renderer
Diffstat (limited to 'src/main/java/io/polyfrost')
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/Window.java14
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/OCBlock.java11
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/OCStoreBlock.java18
-rw-r--r--src/main/java/io/polyfrost/oneconfig/renderer/TrueTypeFont.java40
-rw-r--r--src/main/java/io/polyfrost/oneconfig/themes/Theme.java1
-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;