/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.gui; import matteroverdrive.MatterOverdrive; import matteroverdrive.Reference; import matteroverdrive.api.quest.IQuestReward; import matteroverdrive.api.quest.QuestStack; import matteroverdrive.container.ContainerFalse; import matteroverdrive.data.quest.rewards.ItemStackReward; import matteroverdrive.gui.element.*; import matteroverdrive.network.packet.server.PacketQuestActions; import matteroverdrive.util.MOStringHelper; import matteroverdrive.util.RenderUtils; import net.minecraft.client.Minecraft; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; import java.util.ArrayList; import java.util.List; import static org.lwjgl.opengl.GL11.*; /** * Created by Simeon on 11/22/2015. */ public class GuiQuestPreview extends MOGuiBase { public static final ResourceLocation backgroundTexture = new ResourceLocation(Reference.PATH_GUI + "contract.png"); ElementTextList questInfo; ElementScrollGroup questInfoGroup; QuestStack questStack; ElementBaseGroup questRewards; MOElementButtonScaled acceptButton; public GuiQuestPreview(QuestStack questStack) { super(new ContainerFalse(),200,225); background = null; questInfo = new ElementTextList(this,0,0,xSize-18-14,0xff505758,false); questInfoGroup = new ElementScrollGroup(this,18,68,xSize-18-14,120); questInfoGroup.setScrollerColor(0xff505758); questRewards = new ElementBaseGroup(this,8,8,width-15,24); questRewards.setName("Quest Rewards"); questInfoGroup.addElement(questInfo); questInfoGroup.addElement(questRewards); acceptButton = new MOElementButtonScaled(this,this,14,ySize-28,"accept_quest",68,12); acceptButton.setDownTexture(null); acceptButton.setOverTexture(null); acceptButton.setNormalTexture(null); //acceptButton.setIcon(ClientProxy.holoIcons.getIcon("tick")); acceptButton.setText(String.format("[ %s ]",MOStringHelper.translateToLocal("gui.label.accept"))); acceptButton.setToolTip(MOStringHelper.translateToLocal("gui.tooltip.quest.accept")); acceptButton.setTextColor(0x279f33); if (!questStack.canAccept(Minecraft.getMinecraft().thePlayer,questStack)) { acceptButton.setEnabled(false); acceptButton.setTextColor(Reference.COLOR_HOLO_RED.getColor()); } this.questStack = questStack; } @Override public void initGui() { super.initGui(); elements.remove(sidePannel); elements.remove(closeButton); addElement(questInfoGroup); addElement(acceptButton); loadQuestInfo(questStack); } @Override protected void drawGuiContainerBackgroundLayer(float partialTick, int x, int y) { bindTexture(backgroundTexture); glColor3f(1,1,1); RenderUtils.drawPlane(guiLeft,guiTop,0,xSize,ySize); if (questStack != null) { String questName = questStack.getTitle(Minecraft.getMinecraft().thePlayer); int titleWidth = fontRendererObj.getStringWidth(questName); float scale = Math.min(100f/(float)titleWidth,1.8f); glPushMatrix(); glTranslated(guiLeft + 24,guiTop + 30,0); glScalef(scale,scale,scale); fontRendererObj.drawString(EnumChatFormatting.BOLD + questName,0,0,0x2394e3); glPopMatrix(); } super.drawGuiContainerBackgroundLayer(partialTick,x,y); } private void loadQuestInfo(QuestStack questStack) { int width = 165; questInfo.clearLines(); String info = questStack.getInfo(Minecraft.getMinecraft().thePlayer).replace("/n/","\n"); List<String> list = getFontRenderer().listFormattedStringToWidth(info,width); for (String s : list) { questInfo.addLine(s); } questInfo.addLine(""); for (int i = 0;i < questStack.getObjectivesCount(Minecraft.getMinecraft().thePlayer);i++) { List<String> objectiveLines = MatterOverdrive.questFactory.getFormattedQuestObjective(Minecraft.getMinecraft().thePlayer,questStack,i,width); questInfo.addLines(objectiveLines); } questInfo.addLine(""); questInfo.addLine(EnumChatFormatting.DARK_PURPLE + "Rewards:"); questInfo.addLine(String.format(EnumChatFormatting.DARK_PURPLE + " +%sxp",questStack.getXP(Minecraft.getMinecraft().thePlayer))); List<IQuestReward> rewards = new ArrayList<>(); questStack.addRewards(rewards,Minecraft.getMinecraft().thePlayer); questRewards.getElements().clear(); questRewards.setSize(questRewards.getWidth(),rewards.size() > 0 ? 20 : 0); for (int i = 0;i < rewards.size();i++) { if (rewards.get(i) instanceof ItemStackReward) { ElementItemPreview itemPreview = new ElementItemPreview(this, i * 20, 1, ((ItemStackReward) rewards.get(i)).getItemStack()); itemPreview.setItemSize(1); itemPreview.setRenderOverlay(true); itemPreview.setSize(18, 18); itemPreview.setDrawTooltip(true); itemPreview.setBackground(null); questRewards.addElement(itemPreview); } } } @Override public void ListSelectionChange(String name, int selected) { } @Override public void textChanged(String elementName, String text, boolean typed) { } public void handleElementButtonClick(MOElementBase element, String elementName, int mouseButton) { super.handleElementButtonClick(element,elementName,mouseButton); if (element == acceptButton) { MatterOverdrive.packetPipeline.sendToServer(new PacketQuestActions(PacketQuestActions.QUEST_ACTION_ADD,mc.thePlayer.inventory.currentItem,mc.thePlayer)); mc.thePlayer.closeScreen(); } } }