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

📄 battlearmormapset.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
字号:
/** * MegaMek - Copyright (C) 2000-2002 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.client.ui.AWT.Messages;import megamek.common.*;/** * Class which keeps set of all areas required to  * represent Battle Armor unit in MechDsiplay.ArmorPanel class. */public class BattleArmorMapSet implements DisplayMapSet{    private static final String IMAGE_DIR = "data/images/widgets";        //Picture with figure    private Image battleArmorImage;    //Images that shows how much armor + 1 internal damage left.    private Image[] armorImage = new Image[5];    //Reference to Component (required for Image handling)    private Component comp;    //Set of areas to show BA figures    private PMPicArea[] unitAreas =  new PMPicArea[5];    //Set of areas to show BA armor left    private PMPicArea[] armorAreas = new PMPicArea[5];    //Set of labels to show BA armor left    private PMValueLabel[]    armorLabels = new PMValueLabel[5];    //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_VALUE = new Font("SansSerif", Font.PLAIN, //$NON-NLS-1$             GUIPreferences.getInstance().getInt("AdvancedMechDisplayArmorLargeFontSize"));        /**     * This constructor have to be called anly from addNotify() method     */    public BattleArmorMapSet( Component c){        comp = c;        setAreas();        setBackGround();    }    private void setAreas(){        FontMetrics fm = comp.getFontMetrics(FONT_VALUE);                battleArmorImage = comp.getToolkit().getImage(IMAGE_DIR+"/battle_armor.gif"); //$NON-NLS-1$        PMUtil.setImage(battleArmorImage, comp);        for(int i = 0; i < 5; i++){            int shiftY = i * stepY;            unitAreas[i] = new PMPicArea(battleArmorImage);            unitAreas[i].translate(0, shiftY);            content.addArea(unitAreas[i]);                                    armorImage[i] = comp.createImage(105, 12);            armorAreas[i] = new PMPicArea(armorImage[i]);            armorAreas[i].translate(45, shiftY + 12);            content.addArea(armorAreas[i]);                        armorLabels[i] = new PMValueLabel(fm, Color.red.brighter());            armorLabels[i]. moveTo(160, shiftY + 24);            content.addArea(armorLabels[i]);        }    }        public PMAreasGroup getContentGroup(){        return content;    }        public Vector getBackgroundDrawers(){        return bgDrawers;    }            public void setEntity(Entity e){        BattleArmor ba = (BattleArmor) e;        int armor = 0;        int internal =0;        //int men = 5;        int men = Math.round(ba.getWeight());        for (int x=0; x<men; x++) {             armorAreas[x].setVisible(true);             armorLabels[x].setVisible(true);             unitAreas[x].setVisible(true);        }        for (int x=men; x<5; x++) {             armorAreas[x].setVisible(false);             armorLabels[x].setVisible(false);             unitAreas[x].setVisible(false);        }/*        if (ba.isClan()){             men = 5;             armorAreas[4].setVisible(true);             armorLabels[4].setVisible(true);             unitAreas[4].setVisible(true);        } else{             men = 4;             armorAreas[4].setVisible(false);             armorLabels[4].setVisible(false);             unitAreas[4].setVisible(false);        }*/        for(int i = 0; i < men ; i++) {            armor = (ba.getArmor(i+1, false) < 0) ? 0: ba.getArmor(i+1, false);            internal =  (ba.getInternal(i+1) < 0) ? 0: ba.getInternal(i+1);            if((armor+internal) == 0){                armorAreas[i].setVisible(false);                armorLabels[i].setValue(Messages.getString("BattleArmorMapSet.Killed")); //$NON-NLS-1$            } else {                drawArmorImage(armorImage[i], armor+internal);                armorLabels[i].setValue(Integer.toString(armor+internal));                armorAreas[i].setVisible(true);            }        }    }    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));             }        //Redraws armor images    private void drawArmorImage(Image im, int a){        int x = 0;        int w = im.getWidth(null);        int h= im.getHeight(null);        Graphics g = im.getGraphics();        g.setColor(Color.black);        g.fillRect(0,0,w,h);        for (int i = 0; i< a; i++){            x = i*7;            g.setColor(Color.green.darker());            g.fillRect(x, 0, 5, 12);        }    }}

⌨️ 快捷键说明

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