Package forestry.farming.gui

Source Code of forestry.farming.gui.GuiFarm$FarmLogicSlot

/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
******************************************************************************/
package forestry.farming.gui;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.util.IIcon;

import org.lwjgl.opengl.GL11;

import forestry.api.farming.IFarmLogic;
import forestry.core.config.Defaults;
import forestry.core.gui.GuiForestry;
import forestry.core.gui.Ledger;
import forestry.core.gui.WidgetManager;
import forestry.core.gui.tooltips.ToolTip;
import forestry.core.gui.widgets.SocketWidget;
import forestry.core.gui.widgets.TankWidget;
import forestry.core.gui.widgets.Widget;
import forestry.core.proxy.Proxies;
import forestry.core.utils.StringUtil;
import forestry.farming.gadgets.TileFarmPlain;

public class GuiFarm extends GuiForestry<TileFarmPlain> {

  protected class FarmLedger extends Ledger {

    public FarmLedger() {
      super(ledgerManager);
      maxHeight = 118;
      overlayColor = fontColor.get("ledger.farm.background");
    }

    @Override
    public void draw(int x, int y) {

      // Draw background
      drawBackground(x, y);

      // Draw icon
      drawIcon(Items.water_bucket.getIconFromDamage(0), x + 3, y + 4);

      if (!isFullyOpened())
        return;

      fontRendererObj.drawStringWithShadow(StringUtil.localize("gui.hydration"), x + 22, y + 8, fontColor.get("ledger.power.header"));
      fontRendererObj.drawStringWithShadow(StringUtil.localize("gui.hydr.heat") + ":", x + 22, y + 20, fontColor.get("ledger.power.subheader"));
      fontRendererObj.drawString(StringUtil.floatAsPercent(farm.getHydrationTempModifier()), x + 22, y + 32, fontColor.get("ledger.power.text"));
      fontRendererObj.drawStringWithShadow(StringUtil.localize("gui.hydr.humid") + ":", x + 22, y + 44, fontColor.get("ledger.power.subheader"));
      fontRendererObj.drawString(StringUtil.floatAsPercent(farm.getHydrationHumidModifier()), x + 22, y + 56, fontColor.get("ledger.power.text"));
      fontRendererObj.drawStringWithShadow(StringUtil.localize("gui.hydr.rainfall") + ":", x + 22, y + 68, fontColor.get("ledger.power.subheader"));
      fontRendererObj.drawString(StringUtil.floatAsPercent(farm.getHydrationRainfallModifier()) + " (" + farm.getDrought() + " d)", x + 22, y + 80,
          fontColor.get("ledger.power.text"));
      fontRendererObj.drawStringWithShadow(StringUtil.localize("gui.hydr.overall") + ":", x + 22, y + 92, fontColor.get("ledger.power.subheader"));
      fontRendererObj.drawString(StringUtil.floatAsPercent(farm.getHydrationModifier()), x + 22, y + 104, fontColor.get("ledger.power.text"));

    }

    @Override
    public String getTooltip() {
      return StringUtil.floatAsPercent(farm.getHydrationModifier()) + " " + StringUtil.localize("gui.hydration");
    }
  }

  private class FarmLogicSlot extends Widget {

    private final int slot;

    public FarmLogicSlot(WidgetManager manager, int xPos, int yPos, int slot) {
      super(manager, xPos, yPos);
      this.slot = slot;
    }

    private IFarmLogic getLogic() {
      return farm.getFarmLogics()[slot];
    }

    private IIcon getIconIndex() {
      if (getLogic() == null)
        return null;
      return getLogic().getIcon();
    }

    @Override
    public void draw(int startX, int startY) {
      if (getLogic() == null)
        return;

      if (getIconIndex() != null) {
        GL11.glDisable(GL11.GL_LIGHTING);
        Proxies.common.bindTexture(getLogic().getSpriteSheet());
        manager.gui.drawTexturedModelRectFromIcon(startX + xPos, startY + yPos, getIconIndex(), 16, 16);
        GL11.glEnable(GL11.GL_LIGHTING);
      }

    }

    @Override
    public ToolTip getToolTip() {
      return toolTip;
    }
    protected final ToolTip toolTip = new ToolTip(250) {
      @Override
      public void refresh() {
        toolTip.clear();
        if (getLogic() == null)
          return;
        toolTip.add(getLogic().getName());
        toolTip.add("Fertilizer: " + getLogic().getFertilizerConsumption());
        toolTip.add("Water: " + getLogic().getWaterConsumption(farm.getHydrationModifier()));
      }
    };
  }
  private final TileFarmPlain farm;

  public GuiFarm(EntityPlayer player, TileFarmPlain tile) {
    super(Defaults.TEXTURE_PATH_GUI + "/mfarm.png", new ContainerFarm(player.inventory, tile), tile);

    widgetManager.add(new TankWidget(widgetManager, 15, 19, 0).setOverlayOrigin(216, 18));

    widgetManager.add(new SocketWidget(widgetManager, 69, 40, tile, 0));

    widgetManager.add(new FarmLogicSlot(widgetManager, 69, 22, 0));
    widgetManager.add(new FarmLogicSlot(widgetManager, 69, 58, 1));
    widgetManager.add(new FarmLogicSlot(widgetManager, 51, 40, 2));
    widgetManager.add(new FarmLogicSlot(widgetManager, 87, 40, 3));

    this.xSize = 216;
    this.ySize = 220;
    this.tile = tile;
    this.farm = tile;
  }

  @Override
  protected void initLedgers(Object inventory) {
    super.initLedgers(inventory);
    ledgerManager.insert(new FarmLedger());
  }

  @Override
  protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
    super.drawGuiContainerForegroundLayer(mouseX, mouseY);
    String title = StringUtil.localize("gui.farm.title");
    this.fontRendererObj.drawString(title, getCenteredOffset(title), 6, fontColor.get("gui.title"));
  }

  @Override
  protected void drawGuiContainerBackgroundLayer(float var1, int mouseX, int mouseY) {
    super.drawGuiContainerBackgroundLayer(var1, mouseX, mouseY);

    // Fuel remaining
    int fertilizerRemain = tile.getStoredFertilizerScaled(16);
    if (fertilizerRemain > 0)
      drawTexturedModalRect(guiLeft + 81, guiTop + 94 + 17 - fertilizerRemain, xSize, 17 - fertilizerRemain, 4, fertilizerRemain);

  }
}
TOP

Related Classes of forestry.farming.gui.GuiFarm$FarmLogicSlot

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.