From bdae2d94ba7c6bcb65ed2516ee7c3580a22669c2 Mon Sep 17 00:00:00 2001 From: Vaern Date: Thu, 10 Feb 2022 19:44:59 -0800 Subject: [PATCH] Reworked Guide book system + more pages Should be a lot more flexible if UFFR ever makes his faction guide --- .../com/hbm/inventory/gui/GUIScreenGuide.java | 110 ++++++----- .../com/hbm/items/tool/ItemGuideBook.java | 175 ++++++++++++++++-- src/main/resources/assets/hbm/lang/en_US.lang | 6 + .../assets/hbm/textures/gui/book/starter2.png | Bin 0 -> 3172 bytes .../hbm/textures/gui/book/starter3a.png | Bin 0 -> 15314 bytes .../hbm/textures/gui/book/starter3b.png | Bin 0 -> 5331 bytes 6 files changed, 231 insertions(+), 60 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/book/starter2.png create mode 100644 src/main/resources/assets/hbm/textures/gui/book/starter3a.png create mode 100644 src/main/resources/assets/hbm/textures/gui/book/starter3b.png diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenGuide.java b/src/main/java/com/hbm/inventory/gui/GUIScreenGuide.java index 9f88cc91e..aa0ada45f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenGuide.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenGuide.java @@ -7,7 +7,9 @@ import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.opengl.GL11; import com.hbm.items.tool.ItemGuideBook.BookType; +import com.hbm.items.tool.ItemGuideBook.GuideImage; import com.hbm.items.tool.ItemGuideBook.GuidePage; +import com.hbm.items.tool.ItemGuideBook.GuideText; import com.hbm.lib.RefStrings; import com.hbm.util.I18nUtil; @@ -133,67 +135,77 @@ public class GUIScreenGuide extends GuiScreen { if(defacto < this.type.pages.size()) { - GuidePage page = this.type.pages.get(defacto); + GuidePage page = this.type.pages.get(defacto); - float scale = page.scale; - String text = I18nUtil.resolveKey(page.text); - int width = 100; - - int widthScaled = (int) (width * scale); - List lines = new ArrayList(); - String[] words = text.split(" "); - - lines.add(words[0]); - int indent = this.fontRendererObj.getStringWidth(words[0]); - - for(int w = 1; w < words.length; w++) { - - indent += this.fontRendererObj.getStringWidth(" " + words[w]); - - if(indent <= widthScaled) { - String last = lines.get(lines.size() - 1); - lines.set(lines.size() - 1, last += (" " + words[w])); - } else { - lines.add(words[w]); - indent = this.fontRendererObj.getStringWidth(words[w]); - } - } - - float titleScale = getOverrideScale(page.titleScale, page.title + ".scale"); - - GL11.glPushMatrix(); - GL11.glScalef(1F/scale, 1F/scale, 1F); - - float topOffset = page.title == null ? 0 : 6 / titleScale; - - for(int l = 0; l < lines.size(); l++) { - this.fontRendererObj.drawString(lines.get(l), (int)((guiLeft + 20 + i * sideOffset) * scale), (int)((guiTop + 30 + topOffset) * scale + (12 * l)), 4210752); - } - - GL11.glPopMatrix(); + for(GuideText textBox : page.texts) { + float scale = textBox.scale; + String text = I18nUtil.resolveKey(textBox.text); + int width = textBox.width; + + int widthScaled = (int) (width * scale); + List lines = new ArrayList(); + String[] words = text.split(" "); + + lines.add(words[0]); + int indent = this.fontRendererObj.getStringWidth(words[0]); + + for(int w = 1; w < words.length; w++) { + + indent += this.fontRendererObj.getStringWidth(" " + words[w]); + + if(indent <= widthScaled) { + String last = lines.get(lines.size() - 1); + lines.set(lines.size() - 1, last += (" " + words[w])); + } else { + lines.add(words[w]); + indent = this.fontRendererObj.getStringWidth(words[w]); + } + } + + float titleScale = getOverrideScale(page.titleScale, page.title + ".scale"); + + GL11.glPushMatrix(); + GL11.glScalef(1F/scale, 1F/scale, 1F); + + float topOffset; + + if(textBox.y == -1) { + topOffset = page.title == null ? 0 : 6 / titleScale; + } else { + topOffset = textBox.y; + } + + for(int l = 0; l < lines.size(); l++) { + this.fontRendererObj.drawString(lines.get(l), (int)((guiLeft + 20 + i * sideOffset + textBox.xOffset) * scale), (int)((guiTop + 30 + topOffset) * scale + (12 * l)), 4210752); + } + + GL11.glPopMatrix(); + } if(page.title != null) { - float tScale = titleScale; + float tScale = page.titleScale; String titleLoc = I18nUtil.resolveKey(page.title); GL11.glPushMatrix(); GL11.glScalef(1F/tScale, 1F/tScale, 1F); - this.fontRendererObj.drawString(titleLoc, (int)((guiLeft + 20 + i * sideOffset + ((width / 2) - (this.fontRendererObj.getStringWidth(titleLoc) / 2 / tScale))) * tScale), (int)((guiTop + 20) * tScale), page.titleColor); + this.fontRendererObj.drawString(titleLoc, (int)((guiLeft + 20 + i * sideOffset + ((100 / 2) - (this.fontRendererObj.getStringWidth(titleLoc) / 2 / tScale))) * tScale), (int)((guiTop + 20) * tScale), page.titleColor); GL11.glPopMatrix(); } - if(page.image != null) { - GL11.glColor4f(1F, 1F, 1F, 1F); - Minecraft.getMinecraft().getTextureManager().bindTexture(page.image); - - int ix = page.x; - - if(ix == -1) - ix = width / 2 - page.sizeX / 2; - - drawImage(guiLeft + 20 + ix + sideOffset * i, guiTop + page.y, page.sizeX, page.sizeY); + if(!page.images.isEmpty()) { + for(GuideImage image : page.images) { + GL11.glColor4f(1F, 1F, 1F, 1F); + Minecraft.getMinecraft().getTextureManager().bindTexture(image.image); + + int ix = image.x; + + if(ix == -1) + ix = 100 / 2 - image.sizeX / 2; + + drawImage(guiLeft + 20 + ix + sideOffset * i, guiTop + image.y, image.sizeX, image.sizeY); + } } String pageLabel = (defacto + 1) + "/" + (this.type.pages.size()); diff --git a/src/main/java/com/hbm/items/tool/ItemGuideBook.java b/src/main/java/com/hbm/items/tool/ItemGuideBook.java index 545354fd7..de2796e40 100644 --- a/src/main/java/com/hbm/items/tool/ItemGuideBook.java +++ b/src/main/java/com/hbm/items/tool/ItemGuideBook.java @@ -70,20 +70,69 @@ public class ItemGuideBook extends Item { public static List statFacTest() { List pages = new ArrayList(); - pages.add(new GuidePage("book.test.page1").addTitle("Title LMAO", 0x800000, 1F).setScale(2F).addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/smileman.png"), 100, 40, 40)); + /*pages.add(new GuidePage("book.test.page1").addTitle("Title LMAO", 0x800000, 1F).setScale(2F).addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/smileman.png"), 100, 40, 40)); pages.add(new GuidePage("book.test.page1").addTitle("LA SEXO", 0x800000, 0.5F).setScale(1.75F).addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/smileman.png"), 100, 40, 40)); pages.add(new GuidePage("test test")); pages.add(new GuidePage("test test test")); pages.add(new GuidePage("test test")); pages.add(new GuidePage("test test test")); - pages.add(new GuidePage("test test")); + pages.add(new GuidePage("test test"));*/ return pages; } + //TODO: Make sure this is all correct public static List statFacRBMK() { List pages = new ArrayList(); - pages.add(new GuidePage("book.rbmk.page1").setScale(2F).addTitle("book.rbmk.title1", 0x800000, 1F) + pages.add(new GuidePage().addTitle("book.rbmk.title1", 0x800000, 1F) + .addText("book.rbmk.page1", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk1.png"), 90, 80, 60)); + pages.add(new GuidePage().addTitle("book.rbmk.title2", 0x800000, 1F) + .addText("book.rbmk.page2", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk2.png"), 95, 52, 52)); + pages.add(new GuidePage().addTitle("book.rbmk.title3", 0x800000, 1F) + .addText("book.rbmk.page3", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk3.png"), 95, 88, 52)); + pages.add(new GuidePage().addTitle("book.rbmk.title4", 0x800000, 1F) + .addText("book.rbmk.page4", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk4.png"), 95, 88, 52)); + pages.add(new GuidePage().addTitle("book.rbmk.title5", 0x800000, 1F) + .addText("book.rbmk.page5", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk5.png"), 95, 80, 42)); + pages.add(new GuidePage().addTitle("book.rbmk.title6", 0x800000, 1F) + .addText("book.rbmk.page6", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk6.png"), 90, 100, 60)); + pages.add(new GuidePage().addTitle("book.rbmk.title7", 0x800000, 1F) + .addText("book.rbmk.page7", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk7.png"), 95, 52, 52)); + pages.add(new GuidePage().addTitle("book.rbmk.title8", 0x800000, 1F) + .addText("book.rbmk.page8", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk8.png"), 95, 88, 52)); + pages.add(new GuidePage().addTitle("book.rbmk.title9", 0x800000, 1F) + .addText("book.rbmk.page9", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk9.png"), 95, 88, 52)); + pages.add(new GuidePage().addTitle("book.rbmk.title10", 0x800000, 1F) + .addText("book.rbmk.page10", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk10.png"), 95, 88, 52)); + pages.add(new GuidePage().addTitle("book.rbmk.title11", 0x800000, 1F) + .addText("book.rbmk.page11", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk11.png"), 75, 85, 72)); + pages.add(new GuidePage().addTitle("book.rbmk.title12", 0x800000, 1F) + .addText("book.rbmk.page12", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk12.png"), 90, 80, 60)); + pages.add(new GuidePage().addTitle("book.rbmk.title13", 0x800000, 1F) + .addText("book.rbmk.page13", 2F)); + pages.add(new GuidePage() + .addText("book.rbmk.page14", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk13.png"), 70, 103, 78)); + pages.add(new GuidePage().addTitle("book.rbmk.title15", 0x800000, 1F) + .addText("book.rbmk.page15", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk15.png"), 100, 48, 48)); + pages.add(new GuidePage().addTitle("book.rbmk.title16", 0x800000, 1F) + .addText("book.rbmk.page16", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk16.png"), 50, 70, 100)); + + /*pages.add(new GuidePage("book.rbmk.page1").setScale(2F).addTitle("book.rbmk.title1", 0x800000, 1F) .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk1.png"), 90, 80, 60)); pages.add(new GuidePage("book.rbmk.page2").setScale(2F).addTitle("book.rbmk.title2", 0x800000, 1F) .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk2.png"), 95, 52, 52)); @@ -113,7 +162,7 @@ public class ItemGuideBook extends Item { pages.add(new GuidePage("book.rbmk.page15").setScale(2F).addTitle("book.rbmk.title15", 0x800000, 1F) .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk15.png"), 100, 48, 48)); pages.add(new GuidePage("book.rbmk.page16").setScale(2F).addTitle("book.rbmk.title16", 0x800000, 1F) - .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk16.png"), 50, 70, 100)); + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/rbmk16.png"), 50, 70, 100));*/ return pages; } @@ -122,9 +171,13 @@ public class ItemGuideBook extends Item { List pages = new ArrayList(); for(int i = 1; i <= 9; i++) { - pages.add(new GuidePage("book.error.page" + i).setScale(2F).addTitle("book.error.title" + i, 0x800000, 1F)); + pages.add(new GuidePage().addTitle("book.error.title" + i, 0x800000, 1F).addText("book.error.page" + i, 2F)); } + /*for(int i = 1; i <= 9; i++) { + pages.add(new GuidePage("book.error.page" + i).setScale(2F).addTitle("book.error.title" + i, 0x800000, 1F)); + }*/ + return pages; } @@ -135,9 +188,28 @@ public class ItemGuideBook extends Item { List pages = new ArrayList(); - //TODO: Figure out why non-whole scales stretch and fuck up the text - pages.add(new GuidePage("book.starter.page1").setScale(2F).addTitle("book.starter.title1", 0x800000, 1F) - .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter1.png"), 95, 100, 56)); + pages.add(new GuidePage().addTitle("book.starter.title1", 0x800000, 1F) + .addText("book.starter.page1", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter1.png"), 96, 101, 56)); + pages.add(new GuidePage().addTitle("book.starter.title2", 0x800000, 1F) + .addText("book.starter.page2", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter2.png"), 105, 82, 40)); + pages.add(new GuidePage().addTitle("book.starter.title3", 0x800000, 1F) + .addText("book.starter.page3", 2F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter3a.png"), 10, 95, 39, 54) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter3b.png"), 55, 95, 39, 54)); + pages.add(new GuidePage().addTitle("book.starter.title4", 0x800000, 1F) + .addText("book.starter.page4", 1.4F, 0, 0, 64) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/items/stamp_iron_flat.png"), 72, 30, 32, 32) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/items/assembly_template.png"), 72, 78, 32, 32) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/items/chemistry_template.png"), 72, 127, 32, 32)); + + /*pages.add(new GuidePage("book.starter.page1").setScale(2F).addTitle("book.starter.title1", 0x800000, 1F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter1.png"), 96, 101, 56)); + pages.add(new GuidePage("book.starter.page2").setScale(2F).addTitle("book.starter.title2", 0x800000, 1F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter2.png"), 105, 82, 40)); + pages.add(new GuidePage("book.starter.page3").setScale(2F).addTitle("book.starter.title3", 0x800000, 1F) + .addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/starter3.png"), 105, 82, 40));*/ return pages; } @@ -147,17 +219,58 @@ public class ItemGuideBook extends Item { public String title; public int titleColor; public float titleScale; - public String text; + + public List texts = new ArrayList(); + public List images = new ArrayList(); + + /*public String text; public ResourceLocation image; public float scale = 1F; public int x; public int y; public int sizeX; - public int sizeY; + public int sizeY;*/ public GuidePage() { } - public GuidePage(String text) { + public GuidePage addTitle(String title, int color, float scale) { + this.title = title; + this.titleColor = color; + this.titleScale = scale; + return this; + } + + public GuidePage addText(String text) { + texts.add(new GuideText(text)); + return this; + } + + public GuidePage addText(String text, float scale) { + texts.add(new GuideText(text).setScale(scale)); + return this; + } + + public GuidePage addText(String text, int xOffset, int y, int width) { + texts.add(new GuideText(text).setSize(xOffset, y, width)); + return this; + } + + public GuidePage addText(String text, float scale, int xOffset, int y, int width) { + texts.add(new GuideText(text).setSize(xOffset, y, width).setScale(scale)); + return this; + } + + public GuidePage addImage(ResourceLocation image, int x, int y, int sizeX, int sizeY) { + images.add(new GuideImage(image, x, y, sizeX, sizeY)); + return this; + } + + public GuidePage addImage(ResourceLocation image, int y, int sizeX, int sizeY) { + images.add(new GuideImage(image, -1, y, sizeX, sizeY)); + return this; + } + + /*public GuidePage(String text) { this.text = text; } @@ -186,6 +299,46 @@ public class ItemGuideBook extends Item { //if the x-coord is -1 then it will automatically try to center the image horizontally public GuidePage addImage(ResourceLocation image, int y, int sizeX, int sizeY) { return addImage(image, -1, y, sizeX, sizeY); + }*/ + } + + public static class GuideText { + public String text; + public float scale = 1F; + public int xOffset = 0; + public int y = -1; + public int width = 100; + + public GuideText(String text) { + this.text = text; + } + + public GuideText setScale(float scale) { + this.scale = scale; + return this; + } + + public GuideText setSize(int xOffset, int y, int width) { + this.xOffset = xOffset; + this.y = y; + this.width = width; + return this; + } + } + + public static class GuideImage { + public ResourceLocation image; + public int x; + public int y; + public int sizeX; + public int sizeY; + + public GuideImage(ResourceLocation image, int x, int y, int sizeX, int sizeY) { + this.image = image; + this.x = x; + this.y = y; + this.sizeX = sizeX; + this.sizeY = sizeY; } } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 5cafcd361..8ae4e4cf5 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -207,6 +207,12 @@ book.rbmk.page16=§4§lAVOID. book.starter.cover=An Industrialist's$Guide to Rebuilding$Society book.starter.title1=Introduction book.starter.page1=If you're reading this, it's highly likely that society, in one way or another, has collapsed entirely. Governments, countries, and authority are a concept of the past - along with all of the amenities of civilized life. As such, this guide will inform you how to change that by recreating the industry and technology of the past for the improvement of your own life. +book.starter.title2=Coal & Mustard Gas +book.starter.page2=Whilst it is impossible to predict the actual state of the world in a post-apocalyptic time, it's not unlikely that war and industry in its current form may not have ended. To protect your own lungs, an effective and cheap way is to urinate on some cloth to make a trench mask, to protect you from coal dust or mustard gas, if you ever encounter either. +book.starter.title3=Anvils & Presses +book.starter.page3=The quintessentials to beginning your industrial revitalization is an anvil and a burner press. The anvil will allow you to manually craft together early machinery such as the Assembler, whilst the burner press will let you make plates, wires, and circuits that you cannot hammer together with an anvil. +book.starter.title4=Templates +book.starter.page4=In order to stamp metal into useful shapes, assemble machinery, and perform chemical reactions, you will need to create a Machine Template Folder to create the various stamps and templates shown to the right. #book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction #book.rbmk.title1=Introduction diff --git a/src/main/resources/assets/hbm/textures/gui/book/starter2.png b/src/main/resources/assets/hbm/textures/gui/book/starter2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f25fe03da7b871c51e4e1092af0925bd49ae219 GIT binary patch literal 3172 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 bMr9K8&Cr;ec$q@`um#Wp>ubDLvkUnzOdL$> literal 0 HcmV?d00001