/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.blocks.tracks;
import java.util.HashMap;
import java.util.Map;
import mods.railcraft.api.core.ITextureLoader;
import net.minecraft.util.IIcon;
import mods.railcraft.api.tracks.ITrackItemIconProvider;
import mods.railcraft.api.tracks.TrackSpec;
import mods.railcraft.client.util.textures.TextureAtlasSheet;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.init.Blocks;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class TrackTextureLoader implements ITextureLoader, ITrackItemIconProvider {
public static final TrackTextureLoader INSTANCE = new TrackTextureLoader();
public final Map<TrackSpec, IIcon[]> textures = new HashMap<TrackSpec, IIcon[]>();
public final Map<TrackSpec, IIcon> itemIcon = new HashMap<TrackSpec, IIcon>();
@Override
public void registerIcons(IIconRegister iconRegister) {
for (EnumTrack track : EnumTrack.VALUES) {
if (track.getNumIcons() == 0)
continue;
IIcon[] icons = TextureAtlasSheet.unstitchIcons(iconRegister, track.getTextureTag(), track.getNumIcons());
textures.put(track.getTrackSpec(), icons);
itemIcon.put(track.getTrackSpec(), icons[track.getItemIconIndex()]);
}
}
@Override
public IIcon getTrackItemIcon(TrackSpec spec) {
IIcon icon = itemIcon.get(spec);
if (icon == null)
icon = Blocks.rail.getIcon(0, 0);
return icon;
}
public IIcon[] getTrackIcons(TrackSpec spec) {
return textures.get(spec);
}
}