/*
* 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.Reference;
import matteroverdrive.client.data.Color;
import matteroverdrive.container.ContainerMachine;
import matteroverdrive.container.MOBaseContainer;
import matteroverdrive.data.inventory.Slot;
import matteroverdrive.data.inventory.UpgradeSlot;
import matteroverdrive.gui.element.ElementBaseGroup;
import matteroverdrive.gui.element.ElementIndicator;
import matteroverdrive.gui.element.ElementSlotsList;
import matteroverdrive.gui.pages.AutoConfigPage;
import matteroverdrive.gui.pages.PageUpgrades;
import matteroverdrive.machines.MOTileEntityMachine;
import matteroverdrive.proxy.ClientProxy;
import matteroverdrive.util.MOStringHelper;
/**
* Created by Simeon on 4/8/2015.
*/
public class MOGuiMachine<T extends MOTileEntityMachine> extends MOGuiBase
{
T machine;
ElementSlotsList slotsList;
ElementIndicator indicator;
public MOGuiMachine(ContainerMachine<T> container,T machine)
{
this(container,machine,225,186);
}
public MOGuiMachine(ContainerMachine<T> container,T machine,int width,int height)
{
super(container, width, height);
this.machine = machine;
indicator = new ElementIndicator(this,6,ySize - 18);
slotsList = new ElementSlotsList(this,5,52,80,200,machine.getInventoryContainer(),0);
slotsList.setMargin(5);
registerPages(container,machine);
}
public void registerPages(MOBaseContainer container,T machine)
{
ElementBaseGroup homePage = new ElementBaseGroup(this,0,0,xSize,ySize);
homePage.setName("Home");
AutoConfigPage configPage = new AutoConfigPage(this,48,32,xSize-76,ySize,machine.getConfigs());
configPage.setName("Configurations");
AddPage(homePage, ClientProxy.holoIcons.getIcon("page_icon_home"),MOStringHelper.translateToLocal("gui.tooltip.page.home")).setIconColor(Reference.COLOR_MATTER);
AddPage(configPage, ClientProxy.holoIcons.getIcon("page_icon_config"), MOStringHelper.translateToLocal("gui.tooltip.page.configurations"));
boolean hasUpgrades = false;
for (Slot slot : machine.getInventoryContainer().getSlots())
{
if (slot instanceof UpgradeSlot)
{
hasUpgrades = true;
}
}
if (hasUpgrades) {
PageUpgrades upgradesPage = new PageUpgrades(this, 0, 0, xSize, ySize, container);
upgradesPage.setName("Upgrades");
AddPage(upgradesPage, ClientProxy.holoIcons.getIcon("page_icon_upgrades"), MOStringHelper.translateToLocal("gui.tooltip.page.upgrades"));
}
setPage(0);
}
@Override
public void initGui()
{
super.initGui();
this.addElement(slotsList);
this.addElement(indicator);
}
@Override
protected void updateElementInformation()
{
super.updateElementInformation();
if (machine.isActive())
{
indicator.setIndication(1);
}else
{
indicator.setIndication(0);
}
}
@Override
public void textChanged(String elementName, String text, boolean typed)
{
}
@Override
public void ListSelectionChange(String name,int selected)
{
}
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
{
if(name != null && !name.isEmpty())
{
String n = MOStringHelper.translateToLocal("gui." + name + ".name");
fontRendererObj.drawString(n, 125 - (fontRendererObj.getStringWidth(n) / 2), 7, new Color(44, 54, 52).getColor());
}
drawElements(0, true);
}
public T getMachine()
{
return machine;
}
}