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

📄 hostconnection.java

📁 用java开发的一个实施策略游戏源码 值得学习一下
💻 JAVA
字号:
/*
        Netwar
        Copyright (C) 2002  Daniel Grund, Kyle Kakligian, Jason Komutrattananon, & Brian Hibler.
 
        This file is part of Netwar.
 
        Netwar 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.
 
        Netwar 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.
 
        You should have received a copy of the GNU General Public License
        along with Netwar; if not, write to the Free Software
        Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package netwar.gui;
import netwar.network.NetworkServer;
import netwar.network.NetworkClient;
import netwar.Netwar;
import netwar.settings.GameSettings;
import netwar.settings.PlayerSettings;
import netwar.game.UnitSet;

/** Composite GUI class opened when the program is first start.
 * Display when a hosting player is waiting to start the game.
 * Allows the player to change his/her name.
 * Keeps the player updated on the list of players that have joined the game.
 * Has a Start Game button, which allows the host player to start the game.
 * @author Group N2 - Project Netwar
 * @author Brian Hibler
 * @author modified by Daniel Grund
 * @author Kyle Kakligian
 */
public class HostConnection extends javax.swing.JPanel implements Chatable {
    /** Creates new form HostConnection */
    public HostConnection() {
        try{
            new NetworkServer();
            Netwar.nc = new NetworkClient("127.0.0.1");
            GameSettings.currentSettings.reviseSettings(1, Netwar.netwar.pset, null);
        } catch(Exception e) {
            System.out.println(e);
        }
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {//GEN-BEGIN:initComponents
        java.awt.GridBagConstraints gridBagConstraints;

        LabelTitle = new javax.swing.JLabel();
        LabelSpacer1 = new javax.swing.JLabel();
        LabelIP = new javax.swing.JLabel();
        LabelIPValue = new javax.swing.JLabel();
        LabelName = new javax.swing.JLabel();
        FieldName = new javax.swing.JTextField();
        LabelSpacer2 = new javax.swing.JLabel();
        LabelMap = new javax.swing.JLabel();
        ComboMap = new javax.swing.JComboBox();
        LabelUnitSet = new javax.swing.JLabel();
        ComboUnitSet = new javax.swing.JComboBox();
        chat = new netwar.gui.ChatViewer();
        LabelUsers = new javax.swing.JLabel();
        AreaNames = new javax.swing.JTextArea();
        AreaUnitSets = new javax.swing.JTextArea();
        ButtonStart = new javax.swing.JButton();

        setLayout(new java.awt.GridBagLayout());

        setMinimumSize(new java.awt.Dimension(1329, 200));
        setPreferredSize(new java.awt.Dimension(100977, 400));
        LabelTitle.setText("Server Connection Setup");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(LabelTitle, gridBagConstraints);

        LabelSpacer1.setText("     ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        add(LabelSpacer1, gridBagConstraints);

        LabelIP.setText("Your IP Address:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(LabelIP, gridBagConstraints);

        LabelIPValue.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        LabelIPValue.setText("[runtime]");
        try {     LabelIPValue.setText(java.net.InetAddress.getLocalHost().toString()); } catch(Exception e) {     LabelIPValue.setText("Undefined"); };
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(LabelIPValue, gridBagConstraints);

        LabelName.setText("Your Screen Name:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(LabelName, gridBagConstraints);

        FieldName.setColumns(20);
        FieldName.setText("<Enter Name>");
        FieldName.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                updateInfo(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(FieldName, gridBagConstraints);

        LabelSpacer2.setText("     ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        add(LabelSpacer2, gridBagConstraints);

        LabelMap.setText("Pick A Map:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(LabelMap, gridBagConstraints);

        populateMaps();
        ComboMap.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                updateInfo(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(ComboMap, gridBagConstraints);

        LabelUnitSet.setText("Your Unit Set:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(LabelUnitSet, gridBagConstraints);

        populateUnitSets();
        ComboUnitSet.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                updateInfo(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(ComboUnitSet, gridBagConstraints);

        chat.setMinimumSize(new java.awt.Dimension(300, 160));
        chat.setPreferredSize(new java.awt.Dimension(800, 500));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.gridwidth = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        add(chat, gridBagConstraints);

        LabelUsers.setForeground(new java.awt.Color(0, 0, 160));
        LabelUsers.setText("Users Connected:");
        LabelUsers.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(LabelUsers, gridBagConstraints);

        AreaNames.setColumns(20);
        AreaNames.setEditable(false);
        AreaNames.setFont(new java.awt.Font("Dialog", 0, 10));
        AreaNames.setForeground(new java.awt.Color(0, 0, 160));
        AreaNames.setRows(12);
        AreaNames.setText("[runtime]");
        AreaNames.setMaximumSize(new java.awt.Dimension(141, 192));
        AreaNames.setMinimumSize(new java.awt.Dimension(141, 192));
        AreaNames.setOpaque(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(AreaNames, gridBagConstraints);

        AreaUnitSets.setColumns(20);
        AreaUnitSets.setEditable(false);
        AreaUnitSets.setFont(new java.awt.Font("Dialog", 0, 10));
        AreaUnitSets.setForeground(new java.awt.Color(0, 0, 160));
        AreaUnitSets.setRows(12);
        AreaUnitSets.setText("[runtime]");
        AreaUnitSets.setMaximumSize(new java.awt.Dimension(141, 192));
        AreaUnitSets.setMinimumSize(new java.awt.Dimension(141, 192));
        AreaUnitSets.setOpaque(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        add(AreaUnitSets, gridBagConstraints);

        ButtonStart.setText("Start Game");
        ButtonStart.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                startGame(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 10;
        add(ButtonStart, gridBagConstraints);

    }//GEN-END:initComponents
    
    private void startGame(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startGame
        // broadcast server settings
        updateInfo(new java.awt.event.ActionEvent(this,0,"Start-game sync"));
        //Start the game.
        NetworkServer.server.startGame();
    }//GEN-LAST:event_startGame
    
    private void updateInfo(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateInfo
        Netwar.netwar.pset.teamName = FieldName.getText();
        GameSettings.currentSettings.global.map = ComboMap.getSelectedItem().toString();
        try{Netwar.netwar.pset.unitSet = (UnitSet)(Class.forName("netwar.game.UnitSets." + ComboUnitSet.getSelectedItem()).newInstance());
        } catch (Exception e) {};
        if(Netwar.netwar.pset.unitSet == null)
            System.out.println("unit set load error.");
        
        Netwar.nc.clientBroadcastSettings(1, Netwar.netwar.pset, null);
        
        repaint();
    }//GEN-LAST:event_updateInfo
    
    public void displayChat(String chatMessage) {
        chat.displayChat(chatMessage);
    }
    private void populateUnitSets() {
        String list[] = netwar.utils.Dir.directoryList("game/UnitSets");
        String curr = null;
        int _inlist = 0;
        if(Netwar.netwar.pset.unitSet != null) {
            curr = Netwar.netwar.pset.unitSet.getClass().getName();
            curr = curr.substring(curr.lastIndexOf('.')+1);
        }
        
        if(list != null)
            for(int t = 0; t < list.length; t++)
                if(list[t].endsWith(".class")) {
                    String add = list[t].substring(0,list[t].indexOf(".class"));
                    ComboUnitSet.addItem(add);
                    if(add.equals(curr))
                        ComboUnitSet.setSelectedIndex(_inlist);
                    _inlist++;
                }
        updateInfo(new java.awt.event.ActionEvent(this,0,"init"));
    }
    private void populateMaps() {
        ComboMap.addItem("no maps implemented1");
        ComboMap.addItem("no maps implemented2");
    }
    /** Called by the NetworkClient if the GameSettings was changed.
     * Corrects the data on the display, then calls super.repaint().
     */
    public void repaint() {
        if(GameSettings.currentSettings.players.length > 0) {
            FieldName.setText(GameSettings.currentSettings.players[0].teamName);
            String names = "", teams = "";
            for(int i = 0; i < GameSettings.currentSettings.players.length; i++) {
                names += GameSettings.currentSettings.players[i].teamName + "\n";
                String us = "";
                if(GameSettings.currentSettings.players[i].unitSet != null) {
                    us = GameSettings.currentSettings.players[i].unitSet.getClass().getName();
                    us = us.substring(us.lastIndexOf('.')+1);
                }
                teams += us + "\n";
            }
            AreaNames.setText(names);
            AreaUnitSets.setText(teams);
            
            ButtonStart.setEnabled(GameSettings.currentSettings.players.length > 1);
        }
        super.repaint();
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel LabelName;
    private javax.swing.JLabel LabelIP;
    private javax.swing.JLabel LabelIPValue;
    private javax.swing.JButton ButtonStart;
    private javax.swing.JComboBox ComboUnitSet;
    private javax.swing.JLabel LabelMap;
    private javax.swing.JLabel LabelTitle;
    private javax.swing.JTextArea AreaNames;
    private netwar.gui.ChatViewer chat;
    private javax.swing.JLabel LabelUsers;
    private javax.swing.JLabel LabelSpacer2;
    private javax.swing.JLabel LabelSpacer1;
    private javax.swing.JComboBox ComboMap;
    private javax.swing.JLabel LabelUnitSet;
    private javax.swing.JTextField FieldName;
    private javax.swing.JTextArea AreaUnitSets;
    // End of variables declaration//GEN-END:variables
    
}

⌨️ 快捷键说明

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