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

📄 armlessmechmapset.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** * 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.swing.widget;import megamek.client.ui.swing.GUIPreferences;import megamek.client.ui.swing.Messages;import megamek.common.Entity;import megamek.common.Mech;import javax.swing.JComponent;import java.awt.Color;import java.awt.Font;import java.awt.FontMetrics;import java.awt.Graphics;import java.awt.Image;import java.awt.Polygon;import java.util.Vector;/** * Very cumbersome class that handles set of polygonal areas and labels * for PicMap component to represent single mech unit in MechDisplay */public class ArmlessMechMapSet implements DisplayMapSet {    private static final String IMAGE_DIR = "data/images/widgets";    //Because of keeping all areas of single type in one array    //some index offset values required    private static final int REAR_AREA_OFFSET = 7;    private static final int INT_STRUCTURE_OFFSET = 11;    //Array of polygonal areas - parts of mech body.    private PMSimplePolygonArea[] areas = new PMSimplePolygonArea[19];    //Array of fixed labels - short names of body parts    private PMSimpleLabel[] labels = new PMSimpleLabel[19];    //Array of value labels to show armor and IS values    private PMValueLabel[] vLabels = new PMValueLabel[20];    //Heat control area    private PMPicPolygonalArea heatHotArea;    //Set of Background Drawers    private Vector bgDrawers = new Vector();    //Main areas group that keeps everything in itself and is passed to PicMap component    private PMAreasGroup content = new PMAreasGroup();    //Reference to Component class (need to manage images and fonts)    private JComponent comp;    //Points for build hot areas (may be too heavy, think of to load from exteranl file)    // Mek armor - Front    //Head    private Polygon head = new Polygon(new int[]{53, 71, 81, 83, 83, 62, 41, 41, 43},            new int[]{32, 32, 22, 22, 8, 0, 8, 22, 22}, 9);    //Central Torso    private Polygon centralTorso = new Polygon(new int[]{48, 54, 70, 76, 76, 48},            new int[]{45, 85, 85, 45, 36, 36}, 6);    //left Torso    private Polygon leftTorso = new Polygon(new int[]{54, 48, 48, 62, 62, 53, 43, 41,                                                      41, 31, 29, 27, 25, 26, 47},            new int[]{82, 45, 36, 36, 32, 32, 22, 22, 20, 25, 27, 33,                      37, 47, 82}, 15);    //right Torso    private Polygon rightTorso = new Polygon(new int[]{70, 76, 76, 62, 62, 71, 81,                                                       83, 83, 93, 95, 97, 99, 98, 77},            new int[]{82, 45, 36, 36, 32, 32, 22, 22, 20, 25, 27,                      33, 37, 47, 82}, 15);    //Left Leg          private Polygon leftLeg = new Polygon(new int[]{0, 7, 37, 47, 54, 54, 61, 34, 40,                                                    40, 34, 33, 7, 6, 0},            new int[]{104, 104, 65, 82, 82, 85, 85, 102, 104, 121, 123,                      129, 129, 122, 122}, 15);    //right Leg    private Polygon rightLeg = new Polygon(new int[]{125, 118, 88, 77, 70, 70, 64, 91,                                                     85, 85, 91, 92, 118, 119, 125},            new int[]{104, 104, 63, 82, 82, 85, 85, 102, 104, 121,                      123, 129, 129, 122, 122}, 15);        //Mek Armor - Rear    //Left Torso            private Polygon rearLeftTorso = new Polygon(new int[]{142, 142, 148, 139, 123, 123, 142},            new int[]{14, 43, 76, 76, 44, 17, 14}, 7);    //Central Torso            private Polygon rearCentralTorso = new Polygon(new int[]{142, 148, 162, 168, 168, 142},            new int[]{44, 76, 76, 44, 14, 14}, 6);    //Right Torso        private Polygon rearRightTorso = new Polygon(new int[]{168, 168, 162, 171, 187, 187, 168},            new int[]{14, 43, 76, 76, 44, 17, 14}, 7);    //Internal Structure    //Head    private Polygon intStHead = new Polygon(new int[]{78, 48, 48, 78},            new int[]{149, 149, 127, 127}, 4);    //Central Torso    private Polygon inStCentralTorso = new Polygon(new int[]{75, 75, 51, 51},            new int[]{203, 149, 149, 203}, 4);    //Left Torso    private Polygon inStLeftTorso = new Polygon(new int[]{32, 32, 51, 51},            new int[]{188, 160, 160, 193}, 4);    //Right Torso    private Polygon inStRightTorso = new Polygon(new int[]{94, 94, 75, 75},            new int[]{188, 160, 160, 193}, 4);    //Left Leg    private Polygon inStLeftLeg = new Polygon(new int[]{51, 51, 44, 44, 47, 47, 20,                                                        20, 41, 41, 44, 44},            new int[]{195, 199, 199, 206, 206,                      230, 230, 206, 206, 192, 192, 195}, 12);    //right Leg    private Polygon inStRightLeg = new Polygon(new int[]{75, 75, 82, 82, 79, 79, 106,                                                         106, 85, 85, 82, 82},            new int[]{195, 199, 199, 206, 206,                      230, 230, 206, 206, 192, 192, 195}, 12);    //Heat control    private Polygon heatControl = new Polygon(new int[]{149, 159, 159, 149},            new int[]{100, 100, 220, 220}, 4);    private Image heatImage;    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$    public ArmlessMechMapSet(JComponent c) {        comp = c;        setAreas();        setLabels();        setGroups();        setBackGround();    }    public PMAreasGroup getContentGroup() {        return content;    }    public Vector getBackgroundDrawers() {        return bgDrawers;    }    public void setEntity(Entity e) {        Mech m = (Mech) e;        boolean mtHeat = false;        if (e.getGame() != null && e.getGame().getOptions().booleanOption("maxtech_heat")) {            mtHeat = true;        }        int a = 1;        int a0 = 1;        for (int i = 0; i < m.locations(); i++) {            if (i == Mech.LOC_LARM || i == Mech.LOC_RARM) {                continue;            }            a = m.getArmor(i);            a0 = m.getOArmor(i);            vLabels[i].setValue(m.getArmorString(i));            WidgetUtils.setAreaColor(areas[i], vLabels[i], (double) a / (double) a0);            if (m.hasRearArmor(i)) {                a = m.getArmor(i, true);                a0 = m.getOArmor(i, true);                vLabels[i + REAR_AREA_OFFSET].setValue(m.getArmorString(i, true));                WidgetUtils.setAreaColor(areas[i + REAR_AREA_OFFSET], vLabels[i + REAR_AREA_OFFSET],                        (double) a / (double) a0);            }            a = m.getInternal(i);

⌨️ 快捷键说明

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