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

📄 swingguipanel.java

📁 java 开源游戏源码 RISK 联机对战 战棋类
💻 JAVA
📖 第 1 页 / 共 5 页
字号:


		}
		else if (a.getActionCommand().equals("continents")) {

			StringBuffer buffer = new StringBuffer();
			buffer.append("<html><table>");

			Continent[] continents = myrisk.getGame().getContinents();

			for (int c=0;c<continents.length;c++) {

				Continent continent = continents[c];

				buffer.append("<tr style=\"background-color: ");
				buffer.append(RiskUtil.getHexForColor(continent.getColor()));
				buffer.append("; color:");
				buffer.append(RiskUtil.getHexForColor(RiskUtil.getTextColorFor(continent.getColor())));
				buffer.append("\"><td>");
				buffer.append(continent.getName());
				buffer.append("</td><td> - </td><td>");
				buffer.append(continent.getArmyValue());
				buffer.append("</td></tr>");

			}

			buffer.append("</table></html>");

			JOptionPane.showMessageDialog(this, buffer.toString(), resbundle.getString("swing.button.continents"), JOptionPane.PLAIN_MESSAGE );

		}
		else if (a.getActionCommand().equals("roll 1")) {

			go("roll 1");

		}
		else if (a.getActionCommand().equals("roll 2")) {

			go("roll 2");

		}
		else if (a.getActionCommand().equals("roll 3")) {

			go("roll 3");

		}
		else if (a.getActionCommand().equals("join game")) {

			String result = JOptionPane.showInputDialog(RiskUtil.findParentFrame(this), "type the server name", myrisk.getRiskConfig("default.host") );
			if (result!=null) { go("join "+result); }

		}
		else if (a.getActionCommand().equals("new game")) {

			SwingGUIPanel.this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

			go("newgame");

		}
		else if (a.getActionCommand().equals("load game")) {

			String name = RiskUtil.getLoadFileName(
				RiskUtil.findParentFrame(this),
				RiskUtil.SAVES_DIR,
				RiskFileFilter.RISK_SAVE_FILES
			);

			if (name!=null) {

				go("loadgame " + name );

			}

		}
		else if (a.getActionCommand().equals("save game")) {

			String name = RiskUtil.getSaveFileName(
				RiskUtil.findParentFrame(this),
				RiskUtil.SAVES_DIR,
				RiskFileFilter.RISK_SAVE_FILES
			);

			if (name!=null) {

				go("savegame " + name );

			}

		}
		else if (a.getActionCommand().equals("close game")) {

			//if (localGame) {
				go("closegame");
			//}
			//else {
			//	go("leave");
			//}
		}
		else if (a.getActionCommand().equals("options")) {

			Object[] message = new Object[2];
			message[0] = new JCheckBox("Auto End Go");
			message[1] = new JCheckBox("Auto Defend");


			((JCheckBox)message[0]).setSelected( myrisk.getAutoEndGo() );
			((JCheckBox)message[1]).setSelected( myrisk.getAutoDefend() );

			String[] options = {
			    "OK", 
			    "cancel"
			}; 

			int result = JOptionPane.showOptionDialog( 
			    this,                             // the parent that the dialog blocks 
			    message,                                    // the dialog message array 
			    "Options", // the title of the dialog window 
			    JOptionPane.OK_CANCEL_OPTION,                 // option type 
			    JOptionPane.PLAIN_MESSAGE,            // message type 
			    null,                                       // optional icon, use null to use the default icon 
			    options,                                    // options string array, will be made into buttons 
			    options[0]                                  // option that should be made into a default button 
			);

			if (result == JOptionPane.OK_OPTION ) {

				myrisk.parser( "autoendgo " + ((((JCheckBox)message[0]).isSelected()) ? "on" : "off") );

				myrisk.parser( "autodefend " + ((((JCheckBox)message[1]).isSelected()) ? "on" : "off") );

			}
/*

			Frame frame = Risk.findParentFrame(this);

			OptionsDialog optionsDialog = new OptionsDialog( frame , true, myrisk);
			Dimension frameSize = frame.getSize();
			Dimension optionsSize = optionsDialog.getPreferredSize();
			int x = frame.getLocation().x + (frameSize.width - optionsSize.width) / 2;
			int y = frame.getLocation().y + (frameSize.height - optionsSize.height) / 2;
			if (x < 0) x = 0;
			if (y < 0) y = 0;
			optionsDialog.setLocation(x, y);
			optionsDialog.setVisible(true);
*/
		}
		else if (a.getActionCommand().equals("replay")) {

			go("replay");

		}
		else if (a.getActionCommand().equals("start server")) {

			if (serverOn) {
				go("killserver");
			}
			else {
				go("startserver");
			}


		}
		else if (a.getActionCommand().equals("lobby")) {

			RiskUtil.runLobby(myrisk);

		}
		else {

			SwingGUIPanel.this.actionPerformed(a);

		}

	}

	public void blockInput() {

		gSaveGame.setEnabled(false);
		gmSaveGame.setEnabled(false);

		showMission.setEnabled(false);
		showCards.setEnabled(false);
		Undo.setEnabled(false);

		gOptions.setEnabled(false);
		gmOptions.setEnabled(false);
		gmReplay.setEnabled(false);

		// this is so close is not selected
		mapViewComboBox.grabFocus();

	}

	public void getInput() {

		if (localGame) {
			gSaveGame.setEnabled(true);
			gmSaveGame.setEnabled(true);
			Undo.setEnabled(true);
			gmReplay.setEnabled(true);
		}

		showMission.setEnabled(true);
		showCards.setEnabled(true);

		gOptions.setEnabled(true);
		gmOptions.setEnabled(true);

	}

	public void newGame() {

			gNewGame.setEnabled(false);
			gLoadGame.setEnabled(false);
			//gSaveGame.setEnabled(true);
			gCloseGame.setEnabled(true);

			gmNewGame.setEnabled(false);
			gmLoadGame.setEnabled(false);
			gmStartServer.setEnabled(false);
			gmJoinGame.setEnabled(false);

			gStartServer.setEnabled(false);
			gJoinGame.setEnabled(false);

			//gmSaveGame.setEnabled(true);
			gmCloseGame.setEnabled(true);

			remove(Pix);
			remove(guiGame);

			guiSetup.setupGame();

			add(guiSetup, java.awt.BorderLayout.CENTER );

			SwingGUIPanel.this.setCursor(null); // Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)
	}

	public void closeGame() {


			gNewGame.setEnabled(true);
			gLoadGame.setEnabled(true);
			gSaveGame.setEnabled(false);
			gCloseGame.setEnabled(false);

			gmNewGame.setEnabled(true);
			gmLoadGame.setEnabled(true);
			gmStartServer.setEnabled(true);
			gmJoinGame.setEnabled(true);

			gStartServer.setEnabled(true);
			gJoinGame.setEnabled(true);

			gmSaveGame.setEnabled(false);
			gmCloseGame.setEnabled(false);

			gOptions.setEnabled(false);
			gmOptions.setEnabled(false);
			gmReplay.setEnabled(false);

			remove(guiGame);
			remove(guiSetup);

			add(Pix, java.awt.BorderLayout.CENTER );

	}

	public void startGame() {

			gNewGame.setEnabled(false);
			gLoadGame.setEnabled(false);
			//gSaveGame.setEnabled(true);
			gCloseGame.setEnabled(true);

			gmNewGame.setEnabled(false);
			gmLoadGame.setEnabled(false);
			gmStartServer.setEnabled(false);
			gmJoinGame.setEnabled(false);

			gStartServer.setEnabled(false);
			gJoinGame.setEnabled(false);

			//gmSaveGame.setEnabled(true);
			gmCloseGame.setEnabled(true);

			remove(Pix);
			remove(guiSetup);

			add(guiGame, java.awt.BorderLayout.CENTER );

		// this is so close is not selected
		mapViewComboBox.grabFocus();

	}

	public void serverState(boolean s) {


			serverOn=s;

			if (serverOn) {

				gmStartServer.setText(resbundle.getString("swing.menu.stopserver"));
				gStartServer.setText(resbundle.getString("swing.menu.stopserver"));

			}
			else {

				gmStartServer.setText(resbundle.getString("swing.menu.startserver"));
				gStartServer.setText(resbundle.getString("swing.menu.startserver"));

			}

	}

	public void setGameStatus(String state) {

		gameStatus.setText(" "+state);

	}

}

class DebugTab extends JSplitPane implements SwingGUITab,ActionListener {

	private JTextArea debugText;
	private JTextArea errText;

	private JToolBar toolbarDebug;
	private JMenu mDebug;

	public JToolBar getToolBar() {

		return toolbarDebug;

	}

	public JMenu getMenu() {

		return mDebug;

	}

	public void sendDebug(String a) {

			debugText.append(a + System.getProperty("line.separator") );

			debugText.setCaretPosition(debugText.getDocument().getLength());

	}

	public DebugTab() {
		super(JSplitPane.HORIZONTAL_SPLIT);

		setName("Debug");

		//##################### Debug ####################


		toolbarDebug = new JToolBar();
		toolbarDebug.setRollover(true);

		JButton tdSaveDebug  = new JButton("Save Debug Log");
		JButton tdPlayDebug  = new JButton("Play Debug Log");
		JButton tdClearDebug = new JButton("Clear Debug Log");
		JButton tdSaveError = new JButton("Save Error Log");
		JButton sendError = new JButton("Send Error Log");

		tdSaveDebug.setActionCommand("save debug");
		tdPlayDebug.setActionCommand("play debug");
		tdClearDebug.setActionCommand("clear debug");
		tdSaveError.setActionCommand("save error");
		sendError.setActionCommand("send error");

		tdSaveDebug.addActionListener(this);
		tdPlayDebug.addActionListener(this);
		tdClearDebug.addActionListener(this);
		tdSaveError.addActionListener(this);
		sendError.addActionListener(this);

		toolbarDebug.add(tdSaveDebug);
		toolbarDebug.add(tdPlayDebug);
		toolbarDebug.add(tdClearDebug);
		toolbarDebug.addSeparator();
		toolbarDebug.add(tdSaveError);
		toolbarDebug.add(sendError);


		toolbarDebug.setFloatable(false);





		mDebug = new JMenu("Debug");
		mDebug.setMnemonic('D');

		JMenuItem dSave = new JMenuItem("Save Debug Log");
		dSave.setMnemonic('S');
		dSave.setActionCommand("save debug");
		dSave.addActionListener( this );
		mDebug.add(dSave);

		JMenuItem dPlay = new JMenuItem("Play Debug Log");
		dPlay.setMnemonic('P');
		dPlay.setActionCommand("play debug");
		dPlay.addActionListener( this );
		mDebug.add(dPlay);

		JMenuItem dClear = new JMenuItem("Clear Debug Log");
		dClear.setMnemonic('C');
		dClear.setActionCommand("clear debug");
		dClear.addActionListener( this );
		mDebug.add(dClear);

		mDebug.addSeparator();

		JMenuItem dSaveErr = new JMenuItem("Save Error Log");
		dSaveErr.setMnemonic('E');
		dSaveErr.setActionCommand("save error");
		dSaveErr.addActionListener( this );
		mDebug.add(dSaveErr);

		JMenuItem send = new JMenuItem("Send Error Log");
		send.setMnemonic('S');
		send.setActionCommand("send error");
		send.addActionListener( this );
		mDebug.add(send);

		//mDebug.addSeparator();

		//JMenuItem aiwait = new JMenuItem("Change AI wait");
		//aiwait.setMnemonic('A');
		//aiwait.setActionCommand("aiwait");
		//aiwait.addActionListener( this );
		//mDebug.add(aiwait);






		debugText = new JTextArea();
		debugText.setEditable(false);

		JScrollPane debugScroll = new JScrollPane(debugText);
		debugScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		//debugScroll.setBorder( new javax.swing.border.TitledBorder( goodBorder, "Debug Log", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.ABOVE_TOP ) );

		JPanel debugPanel = new JPanel( new BorderLayout() );
		debugPanel.add( new JLabel("  Debug Log"), BorderLayout.NORTH );
		debugPanel.add(debugScroll);

		int size = 16;
		Image img = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB);
		Graphics g = img.getGraphics();
		g.setColor(Color.RED );
		g.fillOval(0,0,size,size);
		g.dispose();
		final Icon icon = new ImageIcon(img);

		// ####### err

		errText = new JTextArea();
		errText.setEditable(false);

		PrintStream ps = SimplePrintStream.getSimplePrintStream(

		    new StringWriter() {
			public void write(String x) {

			    int nom = tabbedpane.indexOfComponent(DebugTab.this);

			    if (tabbedpane.getIconAt(nom)==null) {
				tabbedpane.setIconAt(nom,icon);

				String n = System.getProperty("line.separator");
				errText.append(n+n+"Date: "+new java.util.Date().toString()+n+n+n);
			    }

			    errText.append(x);

			}
		    }

		);

		if (RiskUtil.checkForNoSandbox()) {

			// catch everything in my PrintStream
			//System.setOut(ps);
			// only care about errors
			System.setErr(ps);

		}

		JScrollPane errScroll = new JScrollPane( errText );
		//errScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		//errScroll.setBorder( BorderFactory.createTitledBorder( BorderFactory.createLoweredBevelBorder() , "Error Log", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.ABOVE_TOP ) );

		JPanel errPanel = new JPanel( new BorderLayout() );
		errPanel.add( new JLabel("  Error Log"), BorderLayout.NORTH );
		errPanel.add(errScroll);

		// ######## split

		debugPanel.setOpaque(false);
		errPanel.setOpaque(false);

		setLeftComponent(debugPanel);
		setRightComponent(errPanel);

		setContinuousLayout(true); 
		setOneTouchExpandable(true); 
		setDividerLocation(400);
		setBorder( BorderFactory.createEmptyBorder() );

		setOpaque(false);

	}

	public void actionPerformed(ActionEvent a) {

⌨️ 快捷键说明

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