package pneumaticCraft.api.client;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
/**
* With this class you can retrieve new instances of the PneumaticCraft's IGuiAnimatedStat implementation. You can use these in Gui's as
* well as anywhere you like. When you use these in Gui's you need to pass a valid GuiScreen instance, if you don't you can just pass
* null.
*/
public class GuiAnimatedStatSupplier{
private static Class animatedStatClass;
public static IGuiAnimatedStat getAnimatedStat(GuiScreen gui, int backgroundColor){
return getAnimatedStat(new Class[]{GuiScreen.class, int.class}, gui, backgroundColor);
}
/**
* Returns a GuiAnimatedStat which uses an itemstack as static icon.
* @param gui
* @param iconStack
* @param backgroundColor
* @return
*/
public static IGuiAnimatedStat getAnimatedStat(GuiScreen gui, ItemStack iconStack, int backgroundColor){
return getAnimatedStat(new Class[]{GuiScreen.class, int.class, ItemStack.class}, gui, backgroundColor, iconStack);
}
/**
* Returns a GuiAnimatedStat which uses a texture location as static icon.
* @param gui
* @param iconTexture / text
* @param backgroundColor
* @return
*/
public static IGuiAnimatedStat getAnimatedStat(GuiScreen gui, String iconTexture, int backgroundColor){
return getAnimatedStat(new Class[]{GuiScreen.class, int.class, String.class}, gui, backgroundColor, iconTexture);
}
private static IGuiAnimatedStat getAnimatedStat(Class[] constructorClasses, Object... constructorParameters){
try {
if(animatedStatClass == null) animatedStatClass = Class.forName("pneumaticCraft.client.gui.widget.GuiAnimatedStat");
return (IGuiAnimatedStat)animatedStatClass.getConstructor(constructorClasses).newInstance(constructorParameters);
} catch(Exception e) {
System.err.println("Failed to retrieve an GuiAnimatedStat instance from PneumaticCraft.");
}
return null;
}
}