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

📄 clientpanel.java

📁 Java mulitplayer strategy game. Adaptation of KDE Galaxy Conquest. (rules are changed - but still th
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		final Collection<Fleet> updates = getGameDataManager()
				.getFleetsToUpdate();
		for (final Fleet f : updates)
		{
			if (f != null)
			{
				j3DPanel.fleetPositionChanged(f);
				assert LOG.debug("updated fleet :" + f.getKey() + "("
						+ f.getSize() + ")" + f.getPosition());
			}

		}
	}

	private void hideFleets( final Collection<Fleet> tohide)
	{
		
		for (final Fleet f : tohide)
		{
			if (f != null)
			{
				j3DPanel.hideFleet(f);
				assert LOG.debug("hidden fleet :" + f.getKey() + "("
						+ f.getSize() + ")" + f.getPosition());
			}
			else
			{
				LOG.warn("fleet to hide is null!!!");
			}
		}
	}

	private class Refresher extends Thread
	{
		private boolean finished;

		private final RefreshTask task = new RefreshTask();

		/**
		 * {@inheritDoc}
		 */
		@Override
		public void run()
		{
			while (!isFinished())
			{
				try
				{

					SwingUtilities.invokeAndWait(task);
					Thread.sleep(1000);
				}
				catch (final InterruptedException ie)
				{
					// on purpose
				}
				catch (final InvocationTargetException ite)
				{
					LOG.error(ite, ite);
					throw new RuntimeException(ite);
				}
			}
		}

		/**
		 * Returns the finished.
		 * 
		 * @return the value of finished
		 */
		public final synchronized boolean isFinished()
		{
			return finished;
		}

		/**
		 * Sets the value of finished.
		 * 
		 * @param finished
		 *            The finished to set.
		 */
		public final synchronized void setFinished(final boolean finished)
		{
			this.finished = finished;
		}

		private class RefreshTask implements Runnable
		{

			public void run()
			{
				// added planets cause some problems
				final Collection<Planet> addedPlanets = getGameDataManager()
						.getAddedPlanets();

				gameDataManager.refresh();

				planetsTableModel.refresh(addedPlanets);
				getFleetsModel().refresh();

				getPlayersTableModel().refresh();
				planetViewPanel.updateStatus();
				toPlanetViewPanel.updateStatus();
				updateRealmStatistics();
				refresh3DView(addedPlanets);
				showReports();

			}
		}
	}

	public void showReports()
	{
		final Collection<BattleReportVO> reports = getGameDataManager().getBattleReports();
		for ( final BattleReportVO battle : reports)
		{
			logPlayerText( "--- battle at:" + getGameDataManager().
					getPlanet(battle.getPlanetKey()).getName() + " ---");
			logPlayerText(battle.toString());
			
		}
		
		if ( getGameDataManager().getRealm().getStatus() == PlayerStatus.DEFEATED)
		{
			markDefeated();
		}
		else
		{
			markNotDefeated();
		}
	}
	
	private void markDefeated()
	{
		if (!this.defeated)
		{
			this.defeated = true;
			logPlayerText("You have lost the game!!!");
		}
	}
	
	private void markNotDefeated()
	{
		this.defeated = false;
	}
	public final void logPlayerText(final String text)
	{
		this.logsTextArea.append( text);
		this.logsTextArea.append( "\n");
		this.logsTextArea.setCaretPosition( logsTextArea.getText().length() - 1);
	}
	
	public Planet getFromPlanet()
	{
		return fromPlanet;
	}

	public void setFromPlanet(final Planet fromPlanet)
	{
		this.fromPlanet = fromPlanet;
		if (fromPlanet != null)
		{
			// this.fromLabel.setText("FROM:" + fromPlanet.getName());
			fleetSlider.setMaximum(fromPlanet.getHomeFleetSize());
			fleetSlider.setMinimum(0);
			fleetSlider.setValue(fromPlanet.getHomeFleetSize());
			fleetSlider.setEnabled(true);
			fleetSizeTextField.setEnabled(true);
			this.planetViewPanel.setPlanet(fromPlanet);
			getPlanetsModel().setSelectedPlanet(fromPlanet);
		}
		else
		{
			// this.fromLabel.setText("FROM: <select>");
			fleetSlider.setEnabled(false);
			fleetSizeTextField.setEnabled(false);
			this.planetViewPanel.setPlanet(null);
			getPlanetsModel().setSelectedPlanet(null);
		}
	}

	public Planet getToPlanet()
	{
		return toPlanet;
	}

	public void setToPlanet(final Planet toPlanet)
	{
		this.toPlanet = toPlanet;
		if (toPlanet != null)
		{
			// this.toLabel.setText( "TO:" + toPlanet.getName());
			this.toPlanetViewPanel.setPlanet(toPlanet);
			if (getGameDataManager().isOwn(getFromPlanet()))
			{
				moveButton.setEnabled(true);
			}
			this.distanceLabel.setText(getGameDataManager()
					.getDistanceAsString(getFromPlanet(), getToPlanet()));

		}
		else
		{
			// this.toLabel.setText("TO: <select>");
			moveButton.setEnabled(false);
			this.toPlanetViewPanel.setPlanet(null);
			this.distanceLabel.setText("");

		}
	}

	public void onPlanetSelected(final Planet p, final MouseButton button)
	{
		final Planet planet = getGameDataManager().getPlanet(p.getKey());
		// choosePlanet(planet);
		if (button == MouseButton.LEFT)
		{
			setFromPlanet(planet);
			setToPlanet(null);
		}
		else if (button == MouseButton.RIGHT)
		{
			if (getFromPlanet() != null)
			{
				setToPlanet(planet);
			}
		}
	}

	private TableColumnModel getFleetsTableColumnModel()
	{
		if (this.fleetsColumnModel == null)
		{
			this.fleetsColumnModel = this.fleetsTableModel.getColumnModel();
		}
		return this.fleetsColumnModel;
	}

	private TableColumnModel getPlanetsTableColumnModel()
	{
		if (this.planetsColumnModel == null)
		{
			this.planetsColumnModel = this.planetsTableModel.getColumnModel();
		}
		return this.planetsColumnModel;
	}

	private JTableHeader getFleetsTableHeader()
	{
		if (this.fleetsTableHeader == null)
		{
			this.fleetsTableHeader = new JTableHeader(
					getFleetsTableColumnModel());
		}
		return this.fleetsTableHeader;
	}

	private JTableHeader getPlanetsTableHeader()
	{
		if (this.planetsTableHeader == null)
		{
			this.planetsTableHeader = new JTableHeader(
					getPlanetsTableColumnModel());
		}
		return this.planetsTableHeader;
	}

	private JTableHeader getPlayersTableHeader()
	{
		return getPlayersTableModel().getTableHeader();
	}

	private final class FleetsTableMouseListener extends MouseAdapter
	{
		public void mouseClicked(final java.awt.event.MouseEvent mouseEvent)
		{
			final int ind = fleetsTable.columnAtPoint(mouseEvent.getPoint());
			// System.out.println("header clicked:" + ind);
			if (MouseButton.fromEvent(mouseEvent) == MouseButton.LEFT)
			{
				getFleetsModel().changeOrder(ind);
			}
			else if (MouseButton.fromEvent(mouseEvent) == MouseButton.RIGHT)
			{
				getFleetsModel().resetOrder(ind);
			}
		}

	}

	private final class PlanetsTableMouseListener extends MouseAdapter
	{
		public void mouseClicked(final java.awt.event.MouseEvent mouseEvent)
		{
			final int ind = planetsTable.columnAtPoint(mouseEvent.getPoint());
			// System.out.println("header clicked:" + ind);
			if (MouseButton.fromEvent(mouseEvent) == MouseButton.LEFT)
			{
				getPlanetsModel().changeOrder(ind);
			}
			else if (MouseButton.fromEvent(mouseEvent) == MouseButton.RIGHT)
			{
				getPlanetsModel().resetOrder(ind);
			}
		}

	}

	private final class PlayersTableMouseListener extends MouseAdapter
	{
		public void mouseClicked(final java.awt.event.MouseEvent mouseEvent)
		{
			final int ind = playersTable.columnAtPoint(mouseEvent.getPoint());
			// System.out.println("header clicked:" + ind);
			if (MouseButton.fromEvent(mouseEvent) == MouseButton.LEFT)
			{
				getPlayersTableModel().changeOrder(ind);
			}
			else if (MouseButton.fromEvent(mouseEvent) == MouseButton.RIGHT)
			{
				getPlayersTableModel().resetOrder(ind);
			}
		}

	}

	private void updateRealmStatistics()
	{
		final Realm realm = getGameDataManager().getRealm();
		this.ownRealmNameTextField.setText(realm.getName());
		this.shipsCntTextField.setText(String.valueOf(realm.getTotalShips()));
		this.totalProductivityTextField.setText(String.valueOf(realm
				.getTotalProductivity()));
		this.planetsCntTextField.setText(String.valueOf(realm
				.getOwnedPlanetsNumber()));
	}

	public PlayersTableModel getPlayersTableModel()
	{
		if (this.playersTableModel == null)
		{
			this.playersTableModel = new PlayersTableModel(getGameDataManager());
		}

		return this.playersTableModel;
	}

}

⌨️ 快捷键说明

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