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

📄 mechdisplay.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            return en.getCritical(loc, slot);        }        private Mounted getSelectedEquipment() {            final CriticalSlot cs = getSelectedCritical();            if (cs == null) {                return null;            }            if (cs.getType() == CriticalSlot.TYPE_SYSTEM) {                return null;            }            return en.getEquipment(cs.getIndex());        }        /**         * updates fields for the specified mech         */        public void displayMech(Entity en) {            this.en = en;            ((DefaultListModel) locList.getModel()).removeAllElements();            for (int i = 0; i < en.locations(); i++) {                if (en.getNumberOfCriticals(i) > 0) {                    ((DefaultListModel) locList.getModel()).insertElementAt(en.getLocationName(i), i);                }            }            locList.setSelectedIndex(0);            displaySlots();        }        private void displaySlots() {            int loc = locList.getSelectedIndex();            ((DefaultListModel) slotList.getModel()).removeAllElements();            for (int i = 0; i < en.getNumberOfCriticals(loc); i++) {                final CriticalSlot cs = en.getCritical(loc, i);                StringBuffer sb = new StringBuffer(32);                if (cs == null) {                    sb.append("---"); //$NON-NLS-1$                } else {                    switch (cs.getType()) {                        case CriticalSlot.TYPE_SYSTEM:                            sb.append(cs.isDestroyed() ? "*" : "")//$NON-NLS-1$ //$NON-NLS-2$                                    .append(cs.isBreached() ? "x" : ""); //$NON-NLS-1$ //$NON-NLS-2$                            // Protomechs have different systme names.                            if (en instanceof Protomech) {                                sb.append(Protomech.systemNames[cs.getIndex()]);                            } else {                                sb.append(((Mech) en).getSystemName(cs.getIndex()));                            }                            break;                        case CriticalSlot.TYPE_EQUIPMENT:                            Mounted m = en.getEquipment(cs.getIndex());                            sb.append(cs.isDestroyed() ? "*" : "").append(cs.isBreached() ? "x" : "").append(m.getDesc()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$                            if ( m.isHotLoaded() )                                sb.append(Messages.getString("MechDisplay.isHotLoaded")); //$NON-NLS-1$                            if (m.getType().hasModes()) {                                sb.append(" (").append(m.curMode().getDisplayableName()).append(')'); //$NON-NLS-1$ //$NON-NLS-2$                                if (m.getType() instanceof MiscType && ((MiscType) m.getType()).isShield()) {                                    sb.append(" " + m.getDamageAbsorption(en, loc) + '/' + m.getCurrentDamageCapacity(en, loc) + ')');                                }                            }                            break;                        default:                    }                }                ((DefaultListModel) slotList.getModel()).addElement(sb.toString());            }        }        //        // ItemListener        //        public void itemStateChanged(ItemEvent ev) {            if (ev.getItemSelectable().equals(m_chMode)) {                Mounted m = getSelectedEquipment();                CriticalSlot cs = getSelectedCritical();                if (m != null && m.getType().hasModes()) {                    int nMode = m_chMode.getSelectedIndex();                    if (nMode >= 0) {                        if (m.getType() instanceof MiscType                                && ((MiscType) m.getType()).isShield()                                && clientgui.getClient().game.getPhase() != IGame.PHASE_FIRING) {                            clientgui.systemMessage(Messages.getString("MechDisplay.ShieldModePhase", null));//$NON-NLS-1$                            return;                        }                        if (m.getType() instanceof MiscType                                && ((MiscType) m.getType()).isVibroblade()                                && clientgui.getClient().game.getPhase() != IGame.PHASE_PHYSICAL) {                            clientgui.systemMessage(Messages.getString("MechDisplay.VibrobladeModePhase", null));//$NON-NLS-1$                            return;                        }                        m.setMode(nMode);                        // send the event to the server                        clientgui.getClient().sendModeChange(en.getId(), en.getEquipmentNum(m), nMode);                        // notify the player                        if (m.getType().hasInstantModeSwitch()) {                            clientgui.systemMessage(Messages.getString("MechDisplay.switched", new Object[]{m.getName(), m.curMode().getDisplayableName()}));//$NON-NLS-1$                        } else {                            if (clientgui.getClient().game.getPhase() == IGame.PHASE_DEPLOYMENT) {                                clientgui.systemMessage(Messages.getString("MechDisplay.willSwitchAtStart", new Object[]{m.getName(), m.pendingMode().getDisplayableName()}));//$NON-NLS-1$                            } else {                                clientgui.systemMessage(Messages.getString("MechDisplay.willSwitchAtEnd", new Object[]{m.getName(), m.pendingMode().getDisplayableName()}));//$NON-NLS-1$                            }                        }                    }                } else if (cs != null && cs.getType() == CriticalSlot.TYPE_SYSTEM) {                    int nMode = m_chMode.getSelectedIndex();                    if (nMode >= 0) {                        if (cs.getIndex() == Mech.SYSTEM_COCKPIT                                && en.hasEiCockpit()                                && en instanceof Mech) {                            Mech mech = (Mech) en;                            mech.setCockpitStatus(nMode);                            clientgui.getClient().sendSystemModeChange(en.getId(), Mech.SYSTEM_COCKPIT, nMode);                            if (mech.getCockpitStatus() == mech.getCockpitStatusNextRound()) {                                clientgui.systemMessage(Messages.getString("MechDisplay.switched", new Object[]{"Cockpit", m_chMode.getSelectedItem()}));//$NON-NLS-1$                            } else {                                clientgui.systemMessage(Messages.getString("MechDisplay.willSwitchAtEnd", new Object[]{"Cockpit", m_chMode.getSelectedItem()}));//$NON-NLS-1$                            }                        }                    }                }            }        }        // ActionListener        public void actionPerformed(ActionEvent ae) {            if ("dump".equals(ae.getActionCommand())) { //$NON-NLS-1$                Mounted m = getSelectedEquipment();                boolean bOwner = clientgui.getClient().getLocalPlayer().equals(en.getOwner());                if (m == null || !bOwner || !(m.getType() instanceof AmmoType) ||                        m.getShotsLeft() <= 0) {                    return;                }                boolean bDumping;                boolean bConfirmed;                if (m.isPendingDump()) {                    bDumping = false;                    String title = Messages.getString("MechDisplay.CancelDumping.title"); //$NON-NLS-1$                    String body = Messages.getString("MechDisplay.CancelDumping.message", new Object[]{m.getName()}); //$NON-NLS-1$                    bConfirmed = clientgui.doYesNoDialog(title, body);                } else {                    bDumping = true;                    String title = Messages.getString("MechDisplay.Dump.title"); //$NON-NLS-1$                    String body = Messages.getString("MechDisplay.Dump.message", new Object[]{m.getName()}); //$NON-NLS-1$                    bConfirmed = clientgui.doYesNoDialog(title, body);                }                if (bConfirmed) {                    m.setPendingDump(bDumping);                    clientgui.getClient().sendModeChange(en.getId(), en.getEquipmentNum(m), bDumping ? -1 : 0);                }            }        }        private void setBackGround() {            Image tile = getToolkit().getImage(IMAGE_DIR + "/tile.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            int b = BackGroundDrawer.TILING_BOTH;            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.TILING_HORIZONTAL |                    BackGroundDrawer.VALIGN_TOP;            tile = getToolkit().getImage(IMAGE_DIR + "/h_line.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.TILING_HORIZONTAL |                    BackGroundDrawer.VALIGN_BOTTOM;            tile = getToolkit().getImage(IMAGE_DIR + "/h_line.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.TILING_VERTICAL |                    BackGroundDrawer.HALIGN_LEFT;            tile = getToolkit().getImage(IMAGE_DIR + "/v_line.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.TILING_VERTICAL |                    BackGroundDrawer.HALIGN_RIGHT;            tile = getToolkit().getImage(IMAGE_DIR + "/v_line.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.NO_TILING |                    BackGroundDrawer.VALIGN_TOP |                    BackGroundDrawer.HALIGN_LEFT;            tile = getToolkit().getImage(IMAGE_DIR + "/tl_corner.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.NO_TILING |                    BackGroundDrawer.VALIGN_BOTTOM |                    BackGroundDrawer.HALIGN_LEFT;            tile = getToolkit().getImage(IMAGE_DIR + "/bl_corner.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.NO_TILING |                    BackGroundDrawer.VALIGN_TOP |                    BackGroundDrawer.HALIGN_RIGHT;            tile = getToolkit().getImage(IMAGE_DIR + "/tr_corner.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));            b = BackGroundDrawer.NO_TILING |                    BackGroundDrawer.VALIGN_BOTTOM |                    BackGroundDrawer.HALIGN_RIGHT;            tile = getToolkit().getImage(IMAGE_DIR + "/br_corner.gif"); //$NON-NLS-1$            PMUtil.setImage(tile, this);            addBgDrawer(new BackGroundDrawer(tile, b));        }        public void valueChanged(ListSelectionEvent event) {            if (event.getSource().equals(locList)) {                m_chMode.removeAll();                m_chMode.setEnabled(false);                displaySlots();            } else if (event.getSource().equals(slotList)) {                m_bDumpAmmo.setEnabled(false);                m_chMode.setEnabled(false);                modeLabel.setEnabled(false);                Mounted m = getSelectedEquipment();                boolean bOwner = clientgui.getClient().getLocalPlayer().equals(en.getOwner());                if (m != null && bOwner && m.getType() instanceof AmmoType                        && !m.getType().hasInstantModeSwitch()                        && clientgui.getClient().game.getPhase() != IGame.PHASE_DEPLOYMENT                        && m.getShotsLeft() > 0 && !m.isDumping() && en.isActive()) {                    m_bDumpAmmo.setEnabled(true);                } else if (m != null && bOwner && m.getType().hasModes()) {                    if (!m.isDestroyed() && en.isActive()) {                        m_chMode.setEnabled(true);                    }                    if (!m.isDestroyed() && m.getType().hasFlag(MiscType.F_STEALTH)) {                        m_chMode.setEnabled(true);                    }//if the maxtech eccm option is not set then the ECM should not show anything.                    if (m.getType().hasFlag(MiscType.F_ECM)                            && !clientgui.getClient().game.getOptions().booleanOption("maxtech_eccm")) {                        m_chMode.removeAll();                        return;                    }                    modeLabel.setEnabled(true);                    m_chMode.removeAll();                    for (Enumeration e = m.getType().getModes(); e.hasMoreElements();) {                        EquipmentMode em = (EquipmentMode) e.nextElement();                        m_chMode.addItem(em.getDisplayableName());                    }                    m_chMode.setSelectedItem(m.curMode().getDisplayableName());                } else {                    CriticalSlot cs = getSelectedCritical();                    if (cs != null && cs.getType() == CriticalSlot.TYPE_SYSTEM) {                        if (cs.getIndex() == Mech.SYSTEM_COCKPIT                                && en.hasEiCockpit()                                && en instanceof Mech) {                            m_chMode.removeAll();                            m_chMode.setEnabled(true);                            m_chMode.addItem("EI Off");                            m_chMode.addItem("EI On");                            m_chMode.addItem("Aimed shot");                            m_chMode.setSelectedItem(new Integer(((Mech) en).getCockpitStatusNextRound()));                        }                    }                }            }        }    }    /**     * This class shows information about a unit that doesn't belong elsewhere.     */    private class ExtraPanel extends BufferedPanel            implements ItemListener, ActionListener {        private static final String IMAGE_DIR = "data/images/widgets";        private JLabel narcLabel;        private JLabel unusedL;        private JLabel carrysL;        private JLabel heatL;        private JLabel sinksL;        private JLabel targSysL;        private JTextArea unusedR;        private JTextArea carrysR;        private JTextArea heatR;        private JTextArea sinksR;        private JButton sinks2B;        private JList narcList;        private int myMechId;        private Slider prompt;        private int sinks;        private boolean dontChange;        ExtraPanel() {            prompt = null;            narcLabel = new JLabel                    (Messages.getString("MechDisplay.AffectedBy"), JLabel.CENTER); //$NON-NLS-1$            narcLabel.setOpaque(false);            narcList = new JList(new DefaultListModel());            // transport stuff            //unusedL = new JLabel( "Unused Space:", JLabel.CENTER );            unusedL = new JLabel                    (Messages.getString("MechDisplay.UnusedSpace"), JLabel.CENTER); //$NON-NLS-1$            unusedL.setOpaque(false);            unusedR = new JTextArea("", 2, 25); //$NON-NLS-1$            unusedR.setEditable(false);            unusedR.setOpaque(false);            carry

⌨️ 快捷键说明

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