package amidst.map.layers; import MoF.MapViewer; import amidst.Options; import amidst.Util; import amidst.logging.Log; import amidst.map.Fragment; import amidst.map.ImageLayer; import amidst.minecraft.Biome; public class BiomeLayer extends ImageLayer { public static BiomeLayer instance; protected static int size = Fragment.SIZE >> 2; protected boolean[] selectedBiomes = new boolean[Biome.biomes.length]; private boolean inHighlightMode = false; public BiomeLayer() { super(size); instance = this; deselectAllBiomes(); } public void selectAllBiomes() { setSelectedAllBiomes(true); } public void deselectAllBiomes() { setSelectedAllBiomes(false); } public void selectBiome(int id) { setSelected(id, true); } public void deselectBiome(int id) { setSelected(id, false); } public void setHighlightMode(boolean enabled) { inHighlightMode = enabled; } public void toggleBiomeSelect(int id) { setSelected(id, !selectedBiomes[id]); } public void setSelected(int id, boolean value) { selectedBiomes[id] = value; } public void setSelectedAllBiomes(boolean value) { for (int i = 0; i < selectedBiomes.length; i++) selectedBiomes[i] = value; } @Override public void drawToCache(Fragment fragment) { int[] dataCache = Fragment.getIntArray(); if (inHighlightMode) { for (int i = 0; i < size*size; i++) if (!selectedBiomes[fragment.biomeData[i]]) dataCache[i] = Util.deselectColor(Biome.biomes[fragment.biomeData[i]].color); else dataCache[i] = Biome.biomes[fragment.biomeData[i]].color; } else { for (int i = 0; i < size*size; i++) dataCache[i] = Biome.biomes[fragment.biomeData[i]].color; } fragment.setImageData(layerId, dataCache); } public static int getBiomeForFragment(Fragment frag, int blockX, int blockY) { return frag.biomeData[(blockY >> 2) * Fragment.BIOME_SIZE + (blockX >> 2)]; } public static String getBiomeNameForFragment(Fragment frag, int blockX, int blockY) { return Biome.biomes[getBiomeForFragment(frag, blockX, blockY)].name; } public static String getBiomeAliasForFragment(Fragment frag, int blockX, int blockY) { return Options.instance.biomeColorProfile.getAliasForId(getBiomeForFragment(frag, blockX, blockY)); } public boolean isBiomeSelected(int id) { return selectedBiomes[id]; } }