diff options
| author | msg-programs <msgdoesstuff@gmail.com> | 2023-07-23 12:29:32 +0200 |
|---|---|---|
| committer | msg-programs <msgdoesstuff@gmail.com> | 2023-07-23 12:29:32 +0200 |
| commit | 384d9954aedefcee6f132d2bdadca11fca682bd7 (patch) | |
| tree | e1688bb368f381ccdd2993e0d3e2cae9e799bf83 /src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens | |
| parent | f9740d423146fafa83a85704580368cdc1131377 (diff) | |
| download | Skyblocker-384d9954aedefcee6f132d2bdadca11fca682bd7.tar.gz Skyblocker-384d9954aedefcee6f132d2bdadca11fca682bd7.tar.bz2 Skyblocker-384d9954aedefcee6f132d2bdadca11fca682bd7.zip | |
Massive refactor, see details
Instead of creating a new widget instance every frame, instantiate once and update content.
This means that every widget had to be updated to work like that.
This also necessitated some ugly hackery for the dwarven HUD.
Many other minor things like moving and renaming classes
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens')
7 files changed, 52 insertions, 265 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java deleted file mode 100644 index d33078d8..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PipelineStage.java +++ /dev/null @@ -1,14 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.ArrayList; - -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; - -public abstract class PipelineStage { - - protected ArrayList<Widget> primary = null; - protected ArrayList<Widget> secondary = null; - - public abstract void run(int screenW, int screenH); - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java deleted file mode 100644 index aba952a0..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/PlaceStage.java +++ /dev/null @@ -1,29 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.util.ArrayList; - -import com.google.gson.JsonObject; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; - -public class PlaceStage extends PipelineStage { - - private String where; - - public PlaceStage(ScreenBuilder builder, JsonObject descr) { - this.where = descr.get("where").getAsString(); - this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to") - .asList() - .stream() - .map(x -> builder.getInstance(x.getAsString())) - .toList()); - } - - public void run(int screenW, int screenH) { - for (Widget wid : primary) { - if (where.equals("center")) { - wid.setY((screenH - wid.getHeight()) / 2); - wid.setX((screenW - wid.getWidth()) / 2); - } - } - } -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java deleted file mode 100644 index c9c4ad18..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenBuilder.java +++ /dev/null @@ -1,94 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.io.BufferedReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget; -import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; - -public class ScreenBuilder { - - private ArrayList<PipelineStage> layoutPipeline = new ArrayList<>(); - - private ArrayList<Widget> instances = new ArrayList<>(); - private HashMap<String, Widget> objectMap = new HashMap<>(); - - - public ScreenBuilder(String jsonfile) throws IOException { - - Identifier ident = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/" + jsonfile + ".json"); - BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident); - JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); - reader.close(); - - JsonArray widgets = json.getAsJsonArray("widgets"); - JsonArray layout = json.getAsJsonArray("layout"); - - for (JsonElement w : widgets) { - JsonObject widget = w.getAsJsonObject(); - String name = widget.get("name").getAsString(); - String alias = widget.get("alias").getAsString(); - - JsonElement args = widget.get("args"); - JsonObject argsObj = (args == null) ? null : args.getAsJsonObject(); - - Widget wid = instanceFrom(name, argsObj); - objectMap.put(alias, wid); - instances.add(wid); - } - - for (JsonElement l : layout) { - layoutPipeline.add(createStage(l.getAsJsonObject())); - } - - } - - public Widget instanceFrom(String name, JsonObject args) { - return switch (name) { - case "EmptyWidget" -> new EmptyWidget(); - default -> new EmptyWidget(); - }; - } - - public PipelineStage createStage(JsonObject descr) { - - String op = descr.get("op").getAsString(); - - switch (op) { - case "place": - return new PlaceStage(this, descr); - } - return null; - } - - public Widget getInstance(String name) { - return this.objectMap.get(name); - } - - public void run(DrawContext context, int screenW, int screenH, Text footer) { - - for (Widget w : instances) { - w.update(); - } - for (PipelineStage ps : layoutPipeline) { - ps.run(screenW, screenH); - } - for (Widget w : instances) { - w.render(context); - } - } - -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java deleted file mode 100644 index 02b595d1..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/ScreenMaster.java +++ /dev/null @@ -1,76 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; - -import java.io.BufferedReader; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map.Entry; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import me.xmrvizzy.skyblocker.SkyblockerMod; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; - -public class ScreenMaster { - - private static final Identifier ASSIGNMENT_JSON = new Identifier(SkyblockerMod.NAMESPACE, "tabhud/assignment.json"); - private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker"); - - private static HashMap<String, ScreenBuilder> screenAMap = new HashMap<>(); - // private static HashMap<String, ScreenBuilder> screenBMap = new HashMap<>(); - // private static HashMap<String, ScreenBuilder> screenCMap = new HashMap<>(); - - static { - init(); - } - - public static void init() { - try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ASSIGNMENT_JSON)) { - - JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); - JsonObject screenA = json.getAsJsonObject("screenA"); - for (Entry<String, JsonElement> entry : screenA.entrySet()) { - screenAMap.put(entry.getKey(), new ScreenBuilder(entry.getValue().getAsString())); - } - - } catch (IOException ioex) { - LOGGER.info("[Skyblocker] Couldn't load tabhud config!"); - ioex.printStackTrace(); - } - } - - public static void render(DrawContext context, int w, int h, Text footer) { - screenAMap.get("default").run(context, w, h, footer); - } -} - -/* - * - * stackWidgetsH -stackWidgetsW ---> stack (direction?) horiz/vert (align?) center/top/bottom/left/right - -centerH -centerW -center ---> center (center/horiz/vert) -----> place (one) (where?) center/top/bot/left/right/[corners] - -offCenterL -offCenterR ---> offCenter left/right/top/bot -----> offsetPlace (where?) center/left/right/top/bot (offset to where?) left/right/top/bot - -----> align (any) (reference?) left, leftOfCenter, horizontalCenter, rightOfCenter, right, top, topOfCenter, verticalCenter, botOfCenter, bot - -collideAgainstL -collideAgainstR ---> collideAgainst (from where?) left/right/top/bot - */
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java index 0bb12c8e..587c2274 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GardenInfoScreen.java @@ -20,32 +20,32 @@ public class GardenInfoScreen extends Screen { String f = footer.getString(); - GardenSkillsWidget gsw = new GardenSkillsWidget(); - EventWidget evw = new EventWidget(true); - UpgradeWidget uw = new UpgradeWidget(f); + // GardenSkillsWidget gsw = new GardenSkillsWidget(); + // EventWidget evw = new EventWidget(true); + // // UpgradeWidget uw = new UpgradeWidget(f); - ProfileWidget pw = new ProfileWidget(); - EffectWidget efw = new EffectWidget(f); + // ProfileWidget pw = new ProfileWidget(); + // EffectWidget efw = new EffectWidget(f); - JacobsContestWidget jcw = new JacobsContestWidget(); - CookieWidget cw = new CookieWidget(f); + // JacobsContestWidget jcw = new JacobsContestWidget(); + // CookieWidget cw = new CookieWidget(f); - // layout code incoming - this.stackWidgetsH(gsw, evw, uw); - this.stackWidgetsH(pw, efw); - this.stackWidgetsH(jcw, cw); + // // layout code incoming + // this.stackWidgetsH(gsw, evw, uw); + // this.stackWidgetsH(pw, efw); + // this.stackWidgetsH(jcw, cw); - this.centerW(gsw); - this.centerW(evw); - this.centerW(uw); + // this.centerW(gsw); + // this.centerW(evw); + // this.centerW(uw); - this.collideAgainstL(pw, gsw, evw, uw); - this.collideAgainstL(efw, gsw, evw, uw); + // this.collideAgainstL(pw, gsw, evw, uw); + // this.collideAgainstL(efw, gsw, evw, uw); - this.collideAgainstR(jcw, gsw, evw, uw); - this.collideAgainstR(cw, gsw, evw, uw); + // this.collideAgainstR(jcw, gsw, evw, uw); + // this.collideAgainstR(cw, gsw, evw, uw); - this.addWidgets(gsw, evw, uw, pw, efw, jcw, cw); + // this.addWidgets(gsw, evw, uw, pw, efw, jcw, cw); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java index 046a9313..15c3b0e5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericInfoScreen.java @@ -16,33 +16,33 @@ public class GenericInfoScreen extends Screen { public GenericInfoScreen(int w, int h, Text footer) { super(w, h); - String f = footer.getString(); + // String f = footer.getString(); - SkillsWidget sw = new SkillsWidget(); - EventWidget evw = new EventWidget(false); - UpgradeWidget uw = new UpgradeWidget(f); + // SkillsWidget sw = new SkillsWidget(); + // EventWidget evw = new EventWidget(false); + // UpgradeWidget uw = new UpgradeWidget(f); - ProfileWidget pw = new ProfileWidget(); - EffectWidget efw = new EffectWidget(f); + // ProfileWidget pw = new ProfileWidget(); + // EffectWidget efw = new EffectWidget(f); - ElectionWidget elw = new ElectionWidget(); - CookieWidget cw = new CookieWidget(f); + // ElectionWidget elw = new ElectionWidget(); + // CookieWidget cw = new CookieWidget(f); - this.stackWidgetsH(sw, evw, uw); - this.stackWidgetsH(pw, efw); - this.stackWidgetsH(elw, cw); + // this.stackWidgetsH(sw, evw, uw); + // this.stackWidgetsH(pw, efw); + // this.stackWidgetsH(elw, cw); - this.centerW(sw); - this.centerW(evw); - this.centerW(uw); + // this.centerW(sw); + // this.centerW(evw); + // this.centerW(uw); - this.collideAgainstL(pw, sw, evw, uw); - this.collideAgainstL(efw, sw, evw, uw); + // this.collideAgainstL(pw, sw, evw, uw); + // this.collideAgainstL(efw, sw, evw, uw); - this.collideAgainstR(elw, sw, evw, uw); - this.collideAgainstR(cw, sw, evw, uw); + // this.collideAgainstR(elw, sw, evw, uw); + // this.collideAgainstR(cw, sw, evw, uw); - this.addWidgets(sw, evw, uw, pw, efw, elw, cw); + // this.addWidgets(sw, evw, uw, pw, efw, elw, cw); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java index 9821b5a3..cf6ee77a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/genericInfo/GenericRiftInfoScreen.java @@ -13,26 +13,26 @@ public class GenericRiftInfoScreen extends Screen { public GenericRiftInfoScreen(int w, int h, Text footer) { super(w, h); - String f = footer.getString(); + // String f = footer.getString(); - RiftProfileWidget profile = new RiftProfileWidget(); - RiftStatsWidget stats = new RiftStatsWidget(); - ShenWidget shen = new ShenWidget(); + // RiftProfileWidget profile = new RiftProfileWidget(); + // RiftStatsWidget stats = new RiftStatsWidget(); + // ShenWidget shen = new ShenWidget(); - CookieWidget cookie = new CookieWidget(f); - AdvertisementWidget advertisement = new AdvertisementWidget(); + // // CookieWidget cookie = new CookieWidget(f); + // AdvertisementWidget advertisement = new AdvertisementWidget(); - this.stackWidgetsH(stats, advertisement); - this.stackWidgetsH(profile, shen, cookie); + // this.stackWidgetsH(stats, advertisement); + // // this.stackWidgetsH(profile, shen, cookie); - this.offCenterL(stats); - this.offCenterL(advertisement); + // this.offCenterL(stats); + // this.offCenterL(advertisement); - this.offCenterR(profile); - this.offCenterR(shen); - this.offCenterR(cookie); + // this.offCenterR(profile); + // this.offCenterR(shen); + // // this.offCenterR(cookie); - this.addWidgets(profile, stats, shen, cookie, advertisement); + // // this.addWidgets(profile, stats, shen, cookie, advertisement); } } |
