ActuallyAdditions/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/gui/GuiMainPage.java

252 lines
12 KiB
Java
Raw Normal View History

/*
* This file ("GuiMainPage.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2016 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.booklet.gui;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.booklet.IBookletEntry;
2016-11-12 15:09:30 +01:00
import de.ellpeck.actuallyadditions.mod.booklet.InitBooklet;
import de.ellpeck.actuallyadditions.mod.booklet.button.EntryButton;
import de.ellpeck.actuallyadditions.mod.booklet.misc.GuiAAAchievements;
import de.ellpeck.actuallyadditions.mod.config.GuiConfiguration;
2016-11-12 15:09:30 +01:00
import de.ellpeck.actuallyadditions.mod.data.PlayerData;
import de.ellpeck.actuallyadditions.mod.data.PlayerData.PlayerSave;
import de.ellpeck.actuallyadditions.mod.inventory.gui.TexturedButton;
2016-11-12 15:09:30 +01:00
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper;
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import de.ellpeck.actuallyadditions.mod.util.Util;
2016-11-10 21:07:15 +01:00
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
2016-11-12 15:09:30 +01:00
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.TextFormatting;
2016-11-10 22:06:58 +01:00
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
2016-11-10 21:07:15 +01:00
import java.io.IOException;
import java.util.ArrayList;
2016-11-17 16:25:47 +01:00
import java.util.List;
2016-11-10 21:07:15 +01:00
2016-11-10 22:06:58 +01:00
@SideOnly(Side.CLIENT)
public class GuiMainPage extends GuiBooklet{
2016-11-17 16:25:47 +01:00
private static final String[] QUOTES = new String[]{
"Actually Additions, to me, is quite magical in a way.@Saphrym",
"Actually quite cool. Lots of nice little additions.@Direwolf20",
"Mod Dev quite rude and arrogant@Bubb1e0seven",
"A whimsical breath of fresh air in a stuffy tech-mod world.@mezz",
"User-friendly :3@TheMeeep",
"A lot of stuff, some of it really good.@Narubion",
"I like the bookmarks.@Vazkii",
"It's got some stuff I guess.@Ellpeck",
"Actually Additions should be included in every new modpack that includes any form of tech.@YasminEndusa",
2016-11-17 16:25:47 +01:00
"A mod that basically lets you do what ever the heck you want.@Joshwoo70",
"TINY TORCHES!! BABY TORCHES!! Somebody actually finally did it!!@Soaryn",
"Balanced mod wich makes things different - in a good way.@garantiertnicht",
"The mod everyone needs, but not everyone knows@Brewpl",
"The in-game documentation is the best Ive seen. I especially love the JEI integration. Even a derp like me can figure it out.@dannydjdk",
"The second best mod I've ever used.@mmaas44",
"The Fermenting Barrel is one of my favorite textures.@amadornes",
"Smiley Clouds is the reason for fascism in 2016.@raoulvdberge",
"The worms are an awesome idea!@greenking",
"Can I use that mod in my pack?@Ibraheem",
"Hello, love the mod.@SuntannedDuck2",
"Quick! Have all the fun before they nerf it!@JuddMan03",
"I have a feeling Actually Additions is also like Extra Utilities with Random things smashed together why is it...@lesslighter",
"Leaf eater... munchdew... hummm@EiOs",
"There is no such thing as canola seeds.@AlBoVa",
"This mod is cancer, BRUTAL EXPENSIVE POWER usage..Just, cancer.@KoJo"
2016-11-17 16:25:47 +01:00
};
private TexturedButton achievementButton;
private TexturedButton configButton;
2016-11-12 15:09:30 +01:00
private GuiButton tutorialButton;
private boolean showTutorial;
2016-11-17 16:25:47 +01:00
private String bookletName;
2016-12-23 21:38:39 +01:00
private String bookletEdition;
2016-11-17 16:25:47 +01:00
private List<String> quote;
private String quoteGuy;
2016-11-10 21:07:15 +01:00
public GuiMainPage(GuiScreen previousScreen){
super(previousScreen, null);
}
@Override
public void initGui(){
super.initGui();
2016-11-12 15:09:30 +01:00
int flavor = 1;
2016-11-26 21:32:27 +01:00
if(this.mc.world.rand.nextFloat() <= 0.1){
flavor = MathHelper.getInt(this.mc.world.rand, 2, 7);
2016-11-12 15:09:30 +01:00
}
this.bookletName = "info."+ModUtil.MOD_ID+".booklet.manualName.1."+flavor;
2016-11-26 21:32:27 +01:00
String usedQuote = QUOTES[this.mc.world.rand.nextInt(QUOTES.length)];
2016-11-17 16:25:47 +01:00
String[] quoteSplit = usedQuote.split("@");
if(quoteSplit.length == 2){
this.quote = this.fontRendererObj.listFormattedStringToWidth(quoteSplit[0], 120);
this.quoteGuy = quoteSplit[1];
}
2016-12-23 21:38:39 +01:00
String playerName = this.mc.player.getName();
if(playerName.equalsIgnoreCase("dqmhose")){
this.bookletEdition = "Pants Edition";
}
else if(playerName.equalsIgnoreCase("TwoOfEight") || playerName.equalsIgnoreCase("BootyToast")){
this.bookletEdition = "Illustrator's Edition";
}
else if(playerName.equalsIgnoreCase("KittyVanCat")){
this.bookletEdition = "Cat's Edition";
}
else if(playerName.equalsIgnoreCase("canitzp")){
this.bookletEdition = "P's Edition";
}
else if(playerName.equalsIgnoreCase("direwolf20")){
this.bookletEdition = "Edition 20";
}
else if(playerName.equalsIgnoreCase("dannydjdk") || playerName.equalsIgnoreCase("andrew_period")){
this.bookletEdition = "Derp's Edition";
}
else if(playerName.equalsIgnoreCase("mezz")){
this.bookletEdition = "Just Enough Editions";
}
else if(playerName.equalsIgnoreCase("amadornes")){
this.bookletEdition = "Beard's Edition";
}
else if(playerName.equalsIgnoreCase("raoul")){
this.bookletEdition = "Giraffe's Edition";
}
else if(playerName.equalsIgnoreCase("ellpeck") || playerName.equalsIgnoreCase("profprospector")){
String[] colors = new String[15];
for(int i = 0; i < colors.length; i++){
colors[i] = TextFormatting.fromColorIndex(this.mc.world.rand.nextInt(15)).toString()+TextFormatting.ITALIC;
}
this.bookletEdition = String.format("%sC%so%sl%so%sr%sf%su%sl %sE%sd%si%st%si%so%sn", (Object[])colors);
}
else{
if(Util.isDevVersion()){
this.bookletEdition = "Dev's Edition";
}
else{
this.bookletEdition = StringUtil.localize("info."+ModUtil.MOD_ID+".booklet.edition")+" "+Util.getMajorModVersion();
}
}
List<String> configText = new ArrayList<String>();
configText.add(TextFormatting.GOLD+"Open Config GUI");
configText.addAll(this.fontRendererObj.listFormattedStringToWidth("Press this to configure "+ModUtil.NAME+" in-game. \nSome changes will require a game restart!", 200));
this.configButton = new TexturedButton(RES_LOC_GADGETS, -388, this.guiLeft+16, this.guiTop+this.ySize-30, 188, 14, 16, 16, configText);
this.buttonList.add(this.configButton);
List<String> achievementText = new ArrayList<String>();
achievementText.add(TextFormatting.GOLD+"Open Achievements");
achievementText.addAll(this.fontRendererObj.listFormattedStringToWidth("Press this to open the "+ModUtil.NAME+" Achievements.", 200));
this.achievementButton = new TexturedButton(RES_LOC_GADGETS, -389, this.guiLeft+36, this.guiTop+this.ySize-30, 204, 14, 16, 16, achievementText);
this.buttonList.add(this.achievementButton);
2016-11-26 21:32:27 +01:00
PlayerSave data = PlayerData.getDataFromPlayer(this.mc.player);
2016-11-12 15:09:30 +01:00
if(!data.didBookTutorial){
this.showTutorial = true;
this.tutorialButton = new GuiButton(666666, this.guiLeft+140/2-50, this.guiTop+146, 100, 20, "Please click me <3");
this.buttonList.add(this.tutorialButton);
this.configButton.visible = false;
this.achievementButton.visible = false;
}
2016-11-12 15:09:30 +01:00
for(int i = 0; i < BUTTONS_PER_PAGE; i++){
if(ActuallyAdditionsAPI.BOOKLET_ENTRIES.size() > i){
IBookletEntry entry = ActuallyAdditionsAPI.BOOKLET_ENTRIES.get(i);
this.buttonList.add(new EntryButton(this, i, this.guiLeft+156, this.guiTop+11+i*13, 115, 10, "- "+entry.getLocalizedNameWithFormatting(), null));
2016-11-12 15:09:30 +01:00
}
else{
return;
}
2016-11-12 15:09:30 +01:00
}
}
2016-11-10 21:07:15 +01:00
@Override
protected void actionPerformed(GuiButton button) throws IOException{
if(button instanceof EntryButton){
if(ActuallyAdditionsAPI.BOOKLET_ENTRIES.size() > button.id){
IBookletEntry entry = ActuallyAdditionsAPI.BOOKLET_ENTRIES.get(button.id);
if(entry != null){
2016-11-12 12:26:36 +01:00
this.mc.displayGuiScreen(new GuiEntry(this.previousScreen, this, entry, 0, "", false));
2016-11-10 21:07:15 +01:00
}
}
}
else if(button == this.achievementButton){
2016-11-26 21:32:27 +01:00
GuiScreen achievements = new GuiAAAchievements(this, this.mc.player.getStatFileWriter());
this.mc.displayGuiScreen(achievements);
}
else if(button == this.configButton){
GuiScreen config = new GuiConfiguration(this);
this.mc.displayGuiScreen(config);
}
2016-11-12 15:09:30 +01:00
else if(this.showTutorial && button == this.tutorialButton){
if(this.hasBookmarkButtons()){
if(!isShiftKeyDown()){
for(int i = 0; i < InitBooklet.chaptersIntroduction.length; i++){
this.bookmarkButtons[i].assignedPage = InitBooklet.chaptersIntroduction[i].getAllPages()[0];
}
}
this.showTutorial = false;
this.tutorialButton.visible = false;
this.configButton.visible = true;
this.achievementButton.visible = true;
2016-11-26 21:32:27 +01:00
PlayerSave data = PlayerData.getDataFromPlayer(this.mc.player);
2016-11-12 15:09:30 +01:00
data.didBookTutorial = true;
2016-11-26 21:32:27 +01:00
PacketHandlerHelper.sendPlayerDataPacket(this.mc.player, true, false);
2016-11-12 15:09:30 +01:00
}
}
2016-11-10 21:07:15 +01:00
else{
super.actionPerformed(button);
}
}
2016-11-12 15:09:30 +01:00
@Override
public void drawScreenPre(int mouseX, int mouseY, float partialTicks){
super.drawScreenPre(mouseX, mouseY, partialTicks);
String strg = TextFormatting.DARK_GREEN+StringUtil.localize(this.bookletName);
this.fontRendererObj.drawString(strg, this.guiLeft+72-this.fontRendererObj.getStringWidth(strg)/2-3, this.guiTop+19, 0);
strg = TextFormatting.DARK_GREEN+StringUtil.localize("info."+ModUtil.MOD_ID+".booklet.manualName.2");
this.fontRendererObj.drawString(strg, this.guiLeft+72-this.fontRendererObj.getStringWidth(strg)/2-3, this.guiTop+19+this.fontRendererObj.FONT_HEIGHT, 0);
2016-12-23 21:38:39 +01:00
strg = TextFormatting.GOLD+TextFormatting.ITALIC.toString()+this.bookletEdition;
2016-11-12 15:09:30 +01:00
this.fontRendererObj.drawString(strg, this.guiLeft+72-this.fontRendererObj.getStringWidth(strg)/2-3, this.guiTop+40, 0);
if(this.showTutorial){
String text = TextFormatting.BLUE+"It looks like this is the first time you are using this manual. \nIf you click the button below, some useful bookmarks will be stored at the bottom of the GUI. You should definitely check them out to get started with "+ModUtil.NAME+"! \nIf you don't want this, shift-click the button.";
this.renderSplitScaledAsciiString(text, this.guiLeft+11, this.guiTop+55, 0, false, this.getMediumFontSize(), 120);
2016-11-12 15:09:30 +01:00
}
2016-11-17 16:25:47 +01:00
else if(this.quote != null && !this.quote.isEmpty() && this.quoteGuy != null){
int quoteSize = this.quote.size();
for(int i = 0; i < quoteSize; i++){
this.renderScaledAsciiString(TextFormatting.ITALIC+this.quote.get(i), this.guiLeft+25, this.guiTop+90+(i*8), 0, false, this.getMediumFontSize());
2016-11-17 16:25:47 +01:00
}
this.renderScaledAsciiString("- "+this.quoteGuy, this.guiLeft+60, this.guiTop+93+quoteSize*8, 0, false, this.getLargeFontSize());
2016-11-17 16:25:47 +01:00
}
2016-11-12 15:09:30 +01:00
}
@Override
2016-11-11 18:55:32 +01:00
public void addOrModifyItemRenderer(ItemStack renderedStack, int x, int y, float scale, boolean shouldTryTransfer){
}
}