⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protomechmapset.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
字号:
/** * MegaMek - Copyright (C) 2004 Ben Mazur (bmazur@sev.org) *  *  This program 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 2 of the License, or (at your option)  *  any later version. *  *  This program 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. */package megamek.client.ui.AWT.widget;import java.awt.*;import java.util.*;import megamek.client.ui.AWT.GUIPreferences;import megamek.common.*;/** * Class which keeps set of all areas required to  * represent Protomech unit in MechDisplay.ArmorPanel class. */public class ProtomechMapSet implements DisplayMapSet{    private static final String IMAGE_DIR = "data/images/widgets";        // Boring list of labels.    private PMValueLabel[] sectionLabels =        new PMValueLabel[Protomech.NUM_PMECH_LOCATIONS];    private PMValueLabel[] armorLabels =        new PMValueLabel[Protomech.NUM_PMECH_LOCATIONS];    private PMValueLabel[] internalLabels =        new PMValueLabel[Protomech.NUM_PMECH_LOCATIONS];    private PMSimplePolygonArea[] areas = new PMSimplePolygonArea[Protomech.NUM_PMECH_LOCATIONS];    private Polygon head = new Polygon (new int[]{50,50,60,80,90,90,80,60},                                        new int[]{40,20,10,10,20,40,50,50},                                        8);    private Polygon mainGun = new Polygon (new int[]{20,20,50,50},                                           new int[]{30,0,0,30},                                           4);    private Polygon leftArm = new Polygon (new int[]{0,0,20,30,40,30,20,20,10},                                           new int[]{100,40,30,30,60,60,70,110,110},                                           9);    private Polygon rightArm = new Polygon (new int[]{120,120,110,100,110,120,140,140,130},                                            new int[]{110,70,60,60,30,30,40,100,110,110},                                            9);    private Polygon torso = new Polygon (new int[]{40,40,30,50,50,60,80,90,90,110,100,100},                                         new int[]{130,60,30,30,40,50,50,40,30,30,60,130},                                         12);    private Polygon legs = new Polygon (new int[]{0,0,10,30,30,40,100,110,110,130,140,140,100,90,90,80,60,50,50,40},                                        new int[]{240,230,220,220,160,130,130,160,220,220,230,240,240,230,190,170,170,190,230,240},                                        20);        //Reference to Component (required for Image handling)    private Component comp;    //Content group which will be sent to PicMap component    private PMAreasGroup content = new PMAreasGroup();    //Set of Backgrpund drawers which will be sent to PicMap component    private Vector    bgDrawers = new Vector();        private int stepY = 53;        private static final Font FONT_LABEL = new Font("SansSerif", Font.PLAIN, GUIPreferences.getInstance().getInt("AdvancedMechDisplayArmorSmallFontSize")); //$NON-NLS-1$    private static final Font FONT_VALUE = new Font("SansSerif", Font.PLAIN, GUIPreferences.getInstance().getInt("AdvancedMechDisplayArmorLargeFontSize")); //$NON-NLS-1$    /**     * This constructor have to be called anly from addNotify() method     */    public ProtomechMapSet( Component c){        comp = c;        setAreas();        setBackGround();    }    /*    ** Set the armor diagram on the mapset.    */    private void setAreas() {        areas[Protomech.LOC_HEAD] = new PMSimplePolygonArea(head);        areas[Protomech.LOC_LEG] = new PMSimplePolygonArea(legs);        areas[Protomech.LOC_LARM] = new PMSimplePolygonArea(leftArm);        areas[Protomech.LOC_RARM] = new PMSimplePolygonArea(rightArm);        areas[Protomech.LOC_TORSO] = new PMSimplePolygonArea(torso);        areas[Protomech.LOC_MAINGUN] = new PMSimplePolygonArea(mainGun);                for (int i=0; i<=5; i++) {            content.addArea(areas[i]);        }                FontMetrics fm = comp.getFontMetrics(FONT_VALUE);                for(int i = 0; i < Protomech.NUM_PMECH_LOCATIONS; i++){            sectionLabels[i] = new PMValueLabel(fm, Color.black);            content.addArea(sectionLabels[i]);            armorLabels[i] = new PMValueLabel(fm, Color.yellow.brighter());            content.addArea(armorLabels[i]);            internalLabels[i] = new PMValueLabel(fm, Color.red.brighter());            content.addArea(internalLabels[i]);        }        sectionLabels[0].moveTo(70, 30);        armorLabels[0].moveTo(60, 45);        internalLabels[0].moveTo(80, 45);        sectionLabels[1].moveTo(70, 70);        armorLabels[1].moveTo(70,85);        internalLabels[1].moveTo(70,100);        sectionLabels[2].moveTo(125, 55);        armorLabels[2].moveTo(125,70);        internalLabels[2].moveTo(125,85);        sectionLabels[3].moveTo(15, 55);        armorLabels[3].moveTo(15,70);        internalLabels[3].moveTo(15,85);        sectionLabels[4].moveTo(70, 150);        armorLabels[4].moveTo(60,165);        internalLabels[4].moveTo(80,165);        sectionLabels[5].moveTo(35, 15);        armorLabels[5].moveTo(25,30);        internalLabels[5].moveTo(45,30);    }        public PMAreasGroup getContentGroup(){        return content;    }        public Vector getBackgroundDrawers(){        return bgDrawers;    }    /**     * Show the diagram for the given Protomech.     *     * @param   entity - the <code>Entity</code> to be displayed.     *          This should be a <code>Protomech</code> unit.     */    public void setEntity(Entity entity){        Protomech proto = (Protomech) entity;        int armor = 0;        int internal = 0;        int loc = proto.locations();        if (loc!=Protomech.NUM_PMECH_LOCATIONS) {            armorLabels[5].setVisible(false);            internalLabels[5].setVisible(false);            sectionLabels[5].setVisible(false);        } else {            armorLabels[5].setVisible(true);            internalLabels[5].setVisible(true);            sectionLabels[5].setVisible(true);        }        for (int i=0; i<loc; i++) {            armor = proto.getArmor(i);            internal = proto.getInternal(i);            armorLabels[i].setValue(proto.getArmorString(i));            internalLabels[i].setValue(proto.getInternalString(i));            sectionLabels[i].setValue(proto.getLocationAbbr(i));                    }    }    /*    ** Sets the background on the mapset.    */    private void setBackGround() {        Image tile = comp.getToolkit().getImage(IMAGE_DIR+"/tile.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        int b = BackGroundDrawer.TILING_BOTH;        bgDrawers.addElement(new BackGroundDrawer (tile,b));                b = BackGroundDrawer.TILING_HORIZONTAL |             BackGroundDrawer.VALIGN_TOP;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/h_line.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));                                b = BackGroundDrawer.TILING_HORIZONTAL |             BackGroundDrawer.VALIGN_BOTTOM;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/h_line.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));                b = BackGroundDrawer.TILING_VERTICAL |             BackGroundDrawer.HALIGN_LEFT;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/v_line.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));                b = BackGroundDrawer.TILING_VERTICAL |             BackGroundDrawer.HALIGN_RIGHT;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/v_line.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));                                b = BackGroundDrawer.NO_TILING |             BackGroundDrawer.VALIGN_TOP |            BackGroundDrawer.HALIGN_LEFT;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/tl_corner.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));                b = BackGroundDrawer.NO_TILING |             BackGroundDrawer.VALIGN_BOTTOM |            BackGroundDrawer.HALIGN_LEFT;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/bl_corner.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));                b = BackGroundDrawer.NO_TILING |             BackGroundDrawer.VALIGN_TOP |            BackGroundDrawer.HALIGN_RIGHT;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/tr_corner.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));                b = BackGroundDrawer.NO_TILING |             BackGroundDrawer.VALIGN_BOTTOM |            BackGroundDrawer.HALIGN_RIGHT;        tile = comp.getToolkit().getImage(IMAGE_DIR+"/br_corner.gif"); //$NON-NLS-1$        PMUtil.setImage(tile, comp);        bgDrawers.addElement(new BackGroundDrawer (tile,b));             }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -