/* * FortMapMode.java * * Created on June 15, 2007, 6:02 PM */ package editor.mapmode; import editor.MapPanel; import editor.MapPanelDataModel; import editor.ProvinceData.Province; import eug.shared.GenericObject; import java.awt.Graphics2D; import java.util.List; /** * <code>MapMode</code> that highlights provinces lighter or darker depending on * fort level. * @author Michael Myers */ public final class FortMapMode extends DiscreteScalingMapMode { private GenericObject[] forts; private int[] fortLevels; /** Creates a new instance of FortMapMode */ public FortMapMode(final List<GenericObject> forts) { super("", 0, 1, 1); initialize(forts); setMax(getMaxFortLevel(forts) + 1); } public FortMapMode(final MapPanel panel, final List<GenericObject> forts) { super(panel, "", 0, 1, 1); initialize(forts); setMax(getMaxFortLevel(forts) + 1); } private void initialize(final List<GenericObject> forts) { this.forts = forts.toArray(new GenericObject[forts.size()]); fortLevels = new int[this.forts.length]; for (int i = 0; i < this.forts.length; i++) { fortLevels[i] = this.forts[i].getInt("fort_level"); } } protected void paintProvince(final Graphics2D g, int provId) { mapPanel.paintProvince(g, provId, colors[getFortLevel(provId)]); } private int getFortLevel(final int provId) { int level = 0; final MapPanelDataModel model = mapPanel.getModel(); for (int i = 0; i < forts.length; i++) { if ("yes".equalsIgnoreCase(model.getHistString(provId, forts[i].name))) { level += fortLevels[i]; } } return level; } private static int getMaxFortLevel(final List<GenericObject> forts) { int level = 0; for (GenericObject fort : forts) { level += fort.getInt("fort_level"); } return level; } public String getTooltipExtraText(final Province current) { final int id = current.getId(); if (!editor.Main.map.isLand(id)) return ""; return "Fort level: " + getFortLevel(id); } }