📄 mechdisplay.java
字号:
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 + -