package joshie.harvest.knowledge.gui.stats.relations.button; import joshie.harvest.api.npc.RelationStatus; import joshie.harvest.api.player.RelationshipType; import joshie.harvest.core.HFTrackers; import joshie.harvest.core.helpers.StackRenderHelper; import joshie.harvest.knowledge.gui.stats.GuiStats; import joshie.harvest.core.base.gui.ButtonBook; import joshie.harvest.npcs.HFNPCs; import joshie.harvest.api.npc.NPC; import joshie.harvest.npcs.item.ItemNPCTool.NPCTool; import joshie.harvest.player.relationships.RelationshipDataClient; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; import javax.annotation.Nonnull; public class ButtonRelationsNPC extends ButtonBook<GuiStats> { private static final ResourceLocation HEARTS = new ResourceLocation("textures/gui/icons.png"); private static final ItemStack GIFT = HFNPCs.TOOLS.getStackFromEnum(NPCTool.GIFT); private static final ItemStack TALK = HFNPCs.TOOLS.getStackFromEnum(NPCTool.SPEECH); private final int relationship; private final boolean gifted; private final boolean met; private final boolean talked; private final ItemStack stack; public ButtonRelationsNPC(GuiStats gui, NPC npc, int buttonId, int x, int y) { super(gui, buttonId, x, y, npc.getLocalizedName()); this.gui = gui; this.width = 120; this.height = 16; this.stack = HFNPCs.SPAWNER_NPC.getStackFromObject(npc); RelationshipDataClient data = HFTrackers.getClientPlayerTracker().getRelationships(); this.relationship = data.getRelationship(npc); this.gifted = data.isStatusMet(npc, RelationStatus.GIFTED); this.talked = data.isStatusMet(npc, RelationStatus.TALKED); this.met = data.isStatusMet(npc, RelationStatus.MET); } @Override public void drawButton(@Nonnull Minecraft mc, int mouseX, int mouseY) { if (visible) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); hovered = mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height; mouseDragged(mc, mouseX, mouseY); drawForeground(); boolean flag = mc.fontRendererObj.getUnicodeFlag(); mc.fontRendererObj.setUnicodeFlag(true); String text = met ? displayString : "???????"; mc.fontRendererObj.drawString(TextFormatting.BOLD + text, xPosition + 15, yPosition - 3, 0x857754); mc.fontRendererObj.setUnicodeFlag(flag); drawRect(xPosition + 4, yPosition + 17, xPosition + 120, yPosition + 18, 0xFF857754); GlStateManager.color(1.0F, 1.0F, 1.0F); //Draw hearts int hearts = (int)((((double)relationship)/ RelationshipType.NPC.getMaximumRP()) * 10); mc.getTextureManager().bindTexture(HEARTS); for (int i = 0; i < 10; i++) { drawTexturedModalRect(xPosition + 15 + 10 * i, yPosition + 6, 16, 0, 9, 9); if (i < hearts) { drawTexturedModalRect(xPosition + 15 + 10 * i, yPosition + 6, 52, 0, 9, 9); } } } } private void drawForeground() { if (!talked) { StackRenderHelper.drawGreyStack(TALK, xPosition + 100, yPosition - 2, 0.5F); } else StackRenderHelper.drawStack(TALK, xPosition + 100, yPosition - 2, 0.5F); if (!gifted) { StackRenderHelper.drawGreyStack(GIFT, xPosition + 110, yPosition - 2, 0.5F); } else StackRenderHelper.drawStack(GIFT, xPosition + 110, yPosition - 2, 0.5F); if (!met) { StackRenderHelper.drawGreyStack(stack, xPosition, yPosition, 1F); } else StackRenderHelper.drawStack(stack, xPosition, yPosition, 1F); } @Override public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) { return false; } }