/*
* 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.client.render;
import matteroverdrive.MatterOverdrive;
import matteroverdrive.Reference;
import matteroverdrive.client.data.Color;
import matteroverdrive.util.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Vec3;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Simeon on 6/15/2015.
*/
public class HoloIcons {
Map<String, HoloIcon> iconMap;
public TextureMap textureMap;
public int sheetSize = 256;
public ResourceLocation sheet = new ResourceLocation(Reference.MOD_ID, "textures/gui/holo_icons.png");
public HoloIcons() {
iconMap = new HashMap<>();
textureMap = new TextureMap(4, "textures/gui/items");
Minecraft.getMinecraft().renderEngine.loadTextureMap(sheet, textureMap);
}
public void registerIcons(TextureMap textureMap) {
reg("holo_home", 14);
reg("holo_dotted_circle", 20);
reg("holo_factory", 14);
reg("person", 18);
reg("android_slot_arms", 16);
reg("android_slot_chest", 16);
reg("android_slot_head", 16);
reg("android_slot_legs", 16);
reg("android_slot_other", 16);
reg("barrel", 16);
reg("battery", 16);
reg("color", 16);
reg("factory", 16);
reg("module", 16);
reg("sights", 16);
reg("shielding", 16);
reg("scanner", 16);
reg("upgrade", 16);
reg("decompose", 16);
reg("pattern_storage", 16);
reg("home_icon", 14);
reg("page_icon_home", 14);
reg("page_icon_tasks", 15);
reg("page_icon_upgrades", 12);
reg("page_icon_config", 16);
reg("page_icon_search", 16);
reg("page_icon_info", 16);
reg("page_icon_galaxy", 11);
reg("page_icon_quadrant", 9);
reg("page_icon_star", 12);
reg("page_icon_planet", 16);
reg("energy", 16);
reg("arrow_right", 19);
reg("travel_icon", 18);
reg("icon_search", 16);
reg("icon_size", 16);
reg("icon_shuttle", 16);
reg("icon_size", 16);
reg("icon_stats", 16);
reg("icon_scount_planet", 32);
reg("icon_attack", 16);
reg("up_arrow", 7);
reg("crosshair", 3);
reg("up_arrow_large", 18);
reg("android_feature_icon_bg", 22);
reg("android_feature_icon_bg_active", 22);
reg("health", 18);
reg("black_circle", 18);
reg("connections", 16);
reg("ammo", 18);
reg("temperature", 18);
reg("flash_drive", 16);
reg("trade", 16);
reg("mini_quit", 16);
reg("mini_back", 16);
reg("tick", 16);
reg("list", 16);
reg("grid", 16);
reg("sort_random", 16);
reg("minimap_target",21);
reg("question_mark",20);
reg("android_feature_icon_bg_black",22);
reg("smile",16);
MatterOverdrive.statRegistry.registerIcons(this);
}
private void reg(String iconName, int originalSize) {
registerIcon(iconName,originalSize);
}
public HoloIcon registerIcon(String iconName,int originalSize)
{
HoloIcon holoIcon = new HoloIcon(textureMap.registerIcon(Reference.MOD_ID + ":" + iconName), originalSize, originalSize);
iconMap.put(iconName, holoIcon);
return holoIcon;
}
public HoloIcon getIcon(String icon) {
return iconMap.get(icon);
}
public void bindSheet() {
Minecraft.getMinecraft().renderEngine.bindTexture(sheet);
}
public void renderIcon(String name, double x, double y) {
HoloIcon icon = getIcon(name);
renderIcon(icon, x, y, icon.getOriginalWidth(), icon.getOriginalHeight());
}
public void renderIcon(String name, double x, double y, int width, int height) {
renderIcon(getIcon(name), x, y, width, height);
}
public void renderIcon(HoloIcon icon, double x, double y)
{
renderIcon(icon, x, y, icon.getOriginalWidth(), icon.getOriginalHeight());
}
public void renderIcon(HoloIcon icon, double x, double y, int width, int height)
{
if (icon != null)
{
bindSheet();
RenderUtils.renderIcon(x, y, 0, icon.getIcon(), width, height);
}
}
public static void tessalateParticleIcon(IIcon icon, double x, double y, double z, float size, Color color)
{
RenderUtils.tessalateParticle(Minecraft.getMinecraft().renderViewEntity, icon, size, Vec3.createVectorHelper(x, y, z), color);
}
public static void tessalateStaticIcon(IIcon icon, double x, double y, double z, float size, Color color)
{
tessalateStaticIcon(icon, x, y, z, size, color, 1);
}
public static void tessalateStaticIcon(IIcon icon, double x, double y, double z, float size, Color color, float multiply)
{
float halfSize = size / 2;
float uMin = icon.getMinU();
float uMax = icon.getMaxU();
float vMin = icon.getMinV();
float vMax = icon.getMaxV();
Tessellator.instance.setColorRGBA_F(color.getFloatR() * multiply, color.getFloatG() * multiply, color.getFloatB() * multiply, color.getFloatA());
Tessellator.instance.addVertexWithUV(x - halfSize, y - halfSize, z, uMax, vMax);
Tessellator.instance.addVertexWithUV(x + halfSize,y - halfSize,z,uMin,vMax);
Tessellator.instance.addVertexWithUV(x + halfSize,y + halfSize,z,uMin,vMin);
Tessellator.instance.addVertexWithUV(x - halfSize,y + halfSize,z,uMax,vMin);
}
}