132 lines
5.0 KiB
Java
132 lines
5.0 KiB
Java
import java.awt.*;
|
|
import javax.swing.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.io.IOException;
|
|
import java.net.InetSocketAddress;
|
|
|
|
/**
|
|
* Das JoinGame Panel dient zum setzten des Ports/IP-Adresse.
|
|
* Anschließend kann das Verbinden Panel gezeigt werden.
|
|
* @author Lucas Bronson
|
|
*/
|
|
public class JoinGame extends JPanel {
|
|
|
|
// Funktionshilfen
|
|
String standardPort = "51525";
|
|
|
|
// Grafiken
|
|
ImageIcon backButtonIcon = new ImageIcon("graphics/backButton.png");
|
|
|
|
// Labels
|
|
JLabel spielBeitretenLabel;
|
|
JLabel ipLabel = new JLabel("IP-Adresse");
|
|
JLabel portLabel = new JLabel("Port");
|
|
|
|
// Textfelder
|
|
JTextField ipTextField = new JTextField(20);
|
|
JTextField portTextField = new JTextField(20);
|
|
|
|
// Buttons
|
|
JButton losButton = new JButton("Los!");
|
|
JButton backButton = new JButton(backButtonIcon);
|
|
|
|
// Font
|
|
Font robotoFont = new Font("Roboto", Font.BOLD, 45);
|
|
|
|
/**
|
|
* Erstellt mittels Funktionsaufrufen das Panel.
|
|
* @param frame Der Mainframe der Anwendung über den alle Panels angezeigt werden.
|
|
* @param g int-Anzeige, ob es sich um "spiel erstellen" oder "spiel beitreten" handelt.
|
|
* @param playerType int-Anzeige, ob es sich um einen HumanPlayer,AIEasy... handelt.
|
|
* @param playerName Name des Spielers
|
|
* @author Lucas Bronson, Joshua Kuklok
|
|
*/
|
|
public JoinGame(MainFrame frame,int g,int playerType,String playerName, int semesterCounter) {
|
|
setLayout(null);
|
|
buildPanel(frame,g,playerType,playerName, semesterCounter);
|
|
}
|
|
|
|
/**
|
|
* Erstellt das Panel.
|
|
* @param frame Der Mainframe der Anwendung über den alle Panels angezeigt werden.
|
|
* @param g int-Anzeige, ob es sich um "spiel erstellen" oder "spiel beitreten" handelt.
|
|
* @param playerType int-Anzeige, ob es sich um einen HumanPlayer,AIEasy... handelt.
|
|
* @param playerName Name des Spielers
|
|
* @author Lucas Bronson, Joshua Kuklok
|
|
*/
|
|
private void buildPanel(MainFrame frame,int g,int playerType,String playerName, int semesterCounter) {
|
|
System.out.println("semesterzahl in JoinGame" + semesterCounter);
|
|
if(g==1){
|
|
spielBeitretenLabel= new JLabel("Spiel beitreten");
|
|
}else{
|
|
spielBeitretenLabel= new JLabel("Spiel erstellen");
|
|
}
|
|
|
|
spielBeitretenLabel.setBounds(20,20,700, 100);
|
|
losButton.setBounds(320, 225, 100, 50);
|
|
backButton.setBounds(1380, 20, 80, 80);
|
|
|
|
portLabel.setBounds(50, 200, 200, 30);
|
|
|
|
if(g==1) { // Wenn man Spiel erstellen will, werden IP-Felder nicht angezeigt.
|
|
ipLabel.setBounds(50, 125, 200, 30);
|
|
ipTextField.setBounds(50, 150, 250, 50);
|
|
}
|
|
|
|
portTextField.setBounds(50, 225, 250, 50);
|
|
portTextField.setText(standardPort);
|
|
|
|
spielBeitretenLabel.setFont(robotoFont.deriveFont(50f));
|
|
|
|
add(spielBeitretenLabel);
|
|
add(ipLabel);
|
|
add(portLabel);
|
|
add(losButton);
|
|
add(ipTextField);
|
|
add(portTextField);
|
|
add(backButton);
|
|
|
|
// ActionListener für Buttons.
|
|
// Um in das MultiplayerGame zurückzuwechseln.
|
|
backButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
frame.showPanel("MultiplayerGame");
|
|
}
|
|
});
|
|
|
|
// Um das Verbinden Panel anzuzeigen und Daten an Backend weiterzureichen.
|
|
losButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
String ipAddress = ipTextField.getText();
|
|
if (ipAddress.isEmpty()) {
|
|
ipAddress = "0.0.0.0";
|
|
}
|
|
System.out.println(portTextField.getText());
|
|
String portText = portTextField.getText();
|
|
|
|
int port = Integer.parseInt(portText);
|
|
InetSocketAddress address = new InetSocketAddress(ipAddress, port);
|
|
|
|
frame.showPanel("Verbinden");
|
|
|
|
try {
|
|
if(playerType == 0) {
|
|
GameController.startOnlineGame(HumanPlayer.class, playerName, address,GameController.semesterToBoardSize(semesterCounter));
|
|
} else if(playerType == 1) {
|
|
GameController.startOnlineGame(SpecificAiPlayerEasy.class, playerName, address,GameController.semesterToBoardSize(semesterCounter));
|
|
} else if (playerType == 2) {
|
|
GameController.startOnlineGame(SpecificAiPlayerMedium.class, playerName, address,GameController.semesterToBoardSize(semesterCounter));
|
|
} else if (playerType == 3) {
|
|
GameController.startOnlineGame(SpecificAiPlayerHard.class, playerName, address,GameController.semesterToBoardSize(semesterCounter));
|
|
}
|
|
} catch (IOException ex) {
|
|
throw new RuntimeException(ex);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
} |