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

📄 movementdisplay.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        buttonsMech.add(butTurn);        buttonsMech.add(butUp);        buttonsMech.add(butDown);        buttonsMech.add(butCharge);        buttonsMech.add(butDfa);        buttonsMech.add(butLoad);        buttonsMech.add(butUnload);        buttonsMech.add(butClimbMode);        buttonsMech.add(butSearchlight);        buttonsMech.add(butHullDown);        buttonsMech.add(butSwim);        buttonsMech.add(butEject);        buttonsMech.add(butFlee);        buttonsMech.add(butRAC);        //these are last, they won't be used by mechs        buttonsMech.add(butDigIn);        buttonsMech.add(butFortify);        buttonsMech.add(butLayMine);        buttonsMech.add(butLower);        buttonsMech.add(butRaise);        buttonsTank = new ArrayList<JButton>(22);        buttonsTank.add(butWalk);        buttonsTank.add(butBackup);        buttonsTank.add(butTurn);        buttonsTank.add(butLoad);        buttonsTank.add(butUnload);        buttonsTank.add(butCharge);        buttonsTank.add(butClimbMode);        buttonsTank.add(butSearchlight);        buttonsTank.add(butHullDown);        buttonsTank.add(butSwim);        buttonsTank.add(butEject);        buttonsTank.add(butFlee);        buttonsTank.add(butRAC);        buttonsTank.add(butLayMine);        //these are last, they won't be used by tanks        buttonsTank.add(butDfa);        buttonsTank.add(butUp);        buttonsTank.add(butDown);        buttonsTank.add(butJump);        buttonsTank.add(butDigIn);        buttonsTank.add(butFortify);        buttonsTank.add(butLower);        buttonsTank.add(butRaise);        buttonsVtol = new ArrayList<JButton>(22);        buttonsVtol.add(butWalk);        buttonsVtol.add(butBackup);        buttonsVtol.add(butLower);        buttonsVtol.add(butRaise);        buttonsVtol.add(butTurn);        buttonsVtol.add(butLoad);        buttonsVtol.add(butUnload);        buttonsVtol.add(butSearchlight);        buttonsVtol.add(butEject);        buttonsVtol.add(butFlee);        buttonsVtol.add(butRAC);        //these are last, they won't be used by vtol        buttonsVtol.add(butHullDown);        buttonsVtol.add(butLayMine);        buttonsVtol.add(butSwim);        buttonsVtol.add(butClimbMode);        buttonsVtol.add(butCharge);        buttonsVtol.add(butDfa);        buttonsVtol.add(butUp);        buttonsVtol.add(butDown);        buttonsVtol.add(butJump);        buttonsVtol.add(butDigIn);        buttonsVtol.add(butFortify);        buttonsInf = new ArrayList<JButton>(22);        buttonsInf.add(butWalk);        buttonsInf.add(butJump);        buttonsInf.add(butLower);        buttonsInf.add(butRaise);        buttonsInf.add(butTurn);        buttonsInf.add(butClimbMode);        buttonsInf.add(butSearchlight);        buttonsInf.add(butEject);        buttonsInf.add(butFlee);        buttonsInf.add(butRAC);        buttonsInf.add(butLayMine);        buttonsInf.add(butSwim);        buttonsInf.add(butDigIn);        buttonsInf.add(butFortify);        //these are last, they won't be used by infantry        buttonsInf.add(butLoad);        buttonsInf.add(butUnload);        buttonsInf.add(butBackup);        buttonsInf.add(butHullDown);        buttonsInf.add(butCharge);        buttonsInf.add(butDfa);        buttonsInf.add(butUp);        buttonsInf.add(butDown);        // layout button grid        panButtons = new JPanel();        buttonLayout = 0;        setupButtonPanel();        // layout screen        GridBagLayout gridbag = new GridBagLayout();        GridBagConstraints c = new GridBagConstraints();        setLayout(gridbag);        c.fill = GridBagConstraints.BOTH;        c.weightx = 1.0;        c.weighty = 1.0;        c.insets = new Insets(1, 1, 1, 1);//         c.gridwidth = GridBagConstraints.REMAINDER;//         addBag(clientgui.bv, gridbag, c);//         c.weightx = 1.0;    c.weighty = 0;//         c.gridwidth = 1;//         addBag(client.cb.getComponent(), gridbag, c);        c.gridwidth = GridBagConstraints.REMAINDER;        c.weightx = 0.0;        c.weighty = 0.0;        addBag(panButtons, gridbag, c);        c.weightx = 1.0;        c.weighty = 0.0;        c.gridwidth = GridBagConstraints.REMAINDER;        addBag(panStatus, gridbag, c);        clientgui.bv.addKeyListener(this);        addKeyListener(this);    }    private void addBag(JComponent comp, GridBagLayout gridbag, GridBagConstraints c) {        gridbag.setConstraints(comp, c);        add(comp);        comp.addKeyListener(this);    }    private void setupButtonPanel() {        panButtons.removeAll();        panButtons.setLayout(new GridLayout(0, 8));        //choose button order based on entity type        ArrayList<JButton> buttonList = buttonsMech;        final Entity ce = ce();        if (ce != null) {            if (ce instanceof Infantry)                buttonList = buttonsInf;            else if (ce instanceof VTOL)                buttonList = buttonsVtol;            else if (ce instanceof Tank)                buttonList = buttonsTank;        }        //should this layout be skipped? (if nothing enabled)        boolean ok = false;        while (!ok && buttonLayout != 0) {            for (int i = buttonLayout * 6; i < (buttonLayout + 1) * 6 && i < buttonList.size(); i++) {                if (buttonList.get(i).isEnabled()) {                    ok = true;                    break;                }            }            if (!ok) {                //skip as nothing was enabled                buttonLayout++;                if (buttonLayout * 6 >= buttonList.size())                    buttonLayout = 0;            }        }        panButtons.add(butNext);        for (int i = buttonLayout * 6; i < (buttonLayout + 1) * 6 && i < buttonList.size(); i++) {            panButtons.add(buttonList.get(i));        }        panButtons.add(butMore);        validate();    }    /**     * Selects an entity, by number, for movement.     */    public synchronized void selectEntity(int en) {        final Entity ce = client.game.getEntity(en);        // hmm, sometimes this gets called when there's no ready entities?        if (ce == null) {            System.err.println("MovementDisplay: tried to select non-existant entity: " + en); //$NON-NLS-1$            return;        }        cen = en;        clientgui.setSelectedEntityNum(en);        clearAllMoves();        updateButtons();        // Update the menu bar.        clientgui.getMenuBar().setEntity(ce);        clientgui.getBoardView().highlight(ce.getPosition());        clientgui.getBoardView().select(null);        clientgui.getBoardView().cursor(null);        clientgui.mechD.displayEntity(ce);        clientgui.mechD.showPanel("movement"); //$NON-NLS-1$        if (!clientgui.bv.isMovingUnits()) {            clientgui.bv.centerOnHex(ce.getPosition());        }    }    /**     * Sets the buttons to their proper states     */    private void updateButtons() {        final Entity ce = ce();        boolean isMech = (ce instanceof Mech);        boolean isInfantry = (ce instanceof Infantry);        boolean isProtomech = (ce instanceof Protomech);        // ^-- I suppose these should really be methods, a-la Entity.canCharge(), Entity.canDFA()...                setWalkEnabled(!ce.isImmobile() && ce.getWalkMP() > 0 && !ce.isStuck());        setJumpEnabled(!ce.isImmobile() && ce.getJumpMP() > 0 && !ce.isStuck());        setSwimEnabled(!ce.isImmobile() && ce.hasUMU() && client.game.getBoard().getHex(ce.getPosition()).containsTerrain(Terrains.WATER));        setBackUpEnabled(butWalk.isEnabled());        setChargeEnabled(ce.canCharge());        setDFAEnabled(ce.canDFA());        if (isInfantry || isProtomech) {            if (client.game.containsMinefield(ce.getPosition())) {                setClearEnabled(true);            } else {                setClearEnabled(false);            }        } else {            setClearEnabled(false);        }        if (ce.getMovementMode() == IEntityMovementMode.HYDROFOIL                || ce.getMovementMode() == IEntityMovementMode.NAVAL                || ce.getMovementMode() == IEntityMovementMode.SUBMARINE                || ce.getMovementMode() == IEntityMovementMode.VTOL                || ce.getMovementMode() == IEntityMovementMode.BIPED_SWIM                || ce.getMovementMode() == IEntityMovementMode.QUAD_SWIM) {            butClimbMode.setEnabled(false);        } else {            butClimbMode.setEnabled(true);        }        if (ce instanceof Infantry) {            butDigIn.setEnabled(true);            butFortify.setEnabled(true);        } else {            butDigIn.setEnabled(false);            butFortify.setEnabled(false);        }        setTurnEnabled(!ce.isImmobile() &&                !ce.isStuck() &&                (ce.getWalkMP() > 0 || ce.getJumpMP() > 0));        if (ce.isProne()) {            setGetUpEnabled(!ce.isImmobile() && !ce.isStuck());            setGoProneEnabled(false);            setHullDownEnabled(false);        } else if (ce.isHullDown()) {            setGetUpEnabled(!ce.isImmobile() && !ce.isStuck());            setGoProneEnabled(!ce.isImmobile() && isMech && !ce.isStuck());            setHullDownEnabled(false);        } else {            setGetUpEnabled(false);            setGoProneEnabled(!ce.isImmobile() && isMech && !ce.isStuck());            setHullDownEnabled(ce.canGoHullDown());        }        updateProneButtons();        updateRACButton();        updateSearchlightButton();        updateLoadButtons();        updateElevationButtons();        if (isInfantry && ce.hasWorkingMisc(MiscType.F_TOOLS, MiscType.S_VIBROSHOVEL))            butFortify.setEnabled(true);        else            butFortify.setEnabled(false);        if (isInfantry && client.game.getOptions().booleanOption("maxtech_dig_in"))            butDigIn.setEnabled(true);        else            butDigIn.setEnabled(false);        setLayMineEnabled(ce.canLayMine());        setFleeEnabled(ce.canFlee());        if (client.game.getOptions().booleanOption("vehicles_can_eject")) { //$NON-NLS-1$            setEjectEnabled((!isInfantry)                    && !(isMech && ((Mech) ce).getCockpitType() == Mech.COCKPIT_TORSO_MOUNTED)                    && ce.isActive());        } else {            setEjectEnabled(isMech                    && ((Mech) ce).getCockpitType() != Mech.COCKPIT_TORSO_MOUNTED                    && ce.isActive());        }        setupButtonPanel();    }    /**     * Enables relevant buttons and sets up for your turn.     */    private void beginMyTurn() {        setStatusBarText(Messages.getString("MovementDisplay.its_your_turn")); //$NON-NLS-1$        selectEntity(client.getFirstEntityNum());        butDone.setText(Messages.getString("MovementDisplay.Done")); //$NON-NLS-1$        butDone.setEnabled(true);        setNextEnabled(true);        butMore.setEnabled(true);        if (!clientgui.bv.isMovingUnits()) {            clientgui.setDisplayVisible(true);        }    }    /**     * Clears out old movement data and disables relevant buttons.     */    private synchronized void endMyTurn() {        final Entity ce = ce();                        // end my turn, then.        disableButtons();

⌨️ 快捷键说明

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