Moved connection code from server to sessioncontroller
Added implements runnable to controller super class. Added Thread management to server. Added testcode to GameController Added InputController to client Added Objective to Game package Added Timer to game package Removed ScoreController
This commit is contained in:
@@ -3,4 +3,12 @@ package netwerkprog.game.client.controllers;
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
public class GrapicsController extends Controller {
|
||||
public GrapicsController() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package netwerkprog.game.client.controllers;
|
||||
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
public class InputController extends Controller {
|
||||
public InputController() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3,4 +3,12 @@ package netwerkprog.game.client.controllers;
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
public class SessionController extends Controller {
|
||||
public SessionController() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +1,42 @@
|
||||
package netwerkprog.game.server;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Net;
|
||||
import com.badlogic.gdx.net.ServerSocketHints;
|
||||
import com.badlogic.gdx.net.SocketHints;
|
||||
import netwerkprog.game.server.controllers.SessionController;
|
||||
import netwerkprog.game.server.controllers.game.GameController;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class Server {
|
||||
private ServerSocket serverSocket;
|
||||
private SessionController sessionController;
|
||||
private Thread sessionThread;
|
||||
private HashMap<String, Thread> gameThreads;
|
||||
public static final int PORT = 8000;
|
||||
private ArrayList<ServerClient> clients = new ArrayList<>();
|
||||
private HashMap<String, Thread> clientThreads = new HashMap<>();
|
||||
|
||||
public static void main(String[] args) {
|
||||
Server server = new Server();
|
||||
server.connect();
|
||||
|
||||
server.start();
|
||||
}
|
||||
|
||||
public void connect() {
|
||||
try {
|
||||
this.serverSocket = new ServerSocket(PORT);
|
||||
boolean running = true;
|
||||
while (running) {
|
||||
System.out.println("[SERVER] listening on port " + PORT);
|
||||
Socket socket = serverSocket.accept();
|
||||
private void start() {
|
||||
this.sessionController = new SessionController();
|
||||
|
||||
System.out.println("[SERVER] got new client on " + socket.getInetAddress().getHostAddress());
|
||||
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
|
||||
DataInputStream inputStream = new DataInputStream(socket.getInputStream());
|
||||
this.gameThreads = new HashMap<>();
|
||||
this.sessionThread = new Thread(sessionController);
|
||||
|
||||
outputStream.writeUTF("Enter nickname: ");
|
||||
String nickname = inputStream.readUTF();
|
||||
|
||||
System.out.println("[SERVER] got nickname " + nickname);
|
||||
ServerClient serverClient = new ServerClient(nickname, socket,this);
|
||||
|
||||
Thread t = new Thread(serverClient);
|
||||
t.start();
|
||||
|
||||
clientThreads.put(nickname,t);
|
||||
this.clients.add(serverClient);
|
||||
|
||||
sendMessage(nickname, "--- Welcome! ---\nPeople online : " + clients.size());
|
||||
|
||||
clients.forEach(yeet -> sendToEveryoneExcept(nickname,nickname + " joined the server! [" + socket.getInetAddress().getHostAddress() + "]"));
|
||||
}
|
||||
|
||||
this.serverSocket.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
run();
|
||||
}
|
||||
|
||||
public void sendToEveryone(String text) {
|
||||
for (ServerClient serverClient : clients) {
|
||||
serverClient.writeUTF(text);
|
||||
}
|
||||
private void run() {
|
||||
setTestGames();
|
||||
}
|
||||
|
||||
public void sendToEveryoneExcept(String name, String text) {
|
||||
for (ServerClient serverClient : clients) {
|
||||
if (!serverClient.getName().equals(name))
|
||||
serverClient.writeUTF(text);
|
||||
private void setTestGames() {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
gameThreads.put("game " + i, new Thread(new GameController(i)));
|
||||
}
|
||||
}
|
||||
|
||||
public void sendMessage(String name, String text) {
|
||||
for (ServerClient serverClient : clients) {
|
||||
if (serverClient.getName().equals(name)) {
|
||||
serverClient.writeUTF(text);
|
||||
break;
|
||||
}
|
||||
for (String thread : gameThreads.keySet()) {
|
||||
gameThreads.get(thread).start();
|
||||
}
|
||||
}
|
||||
|
||||
public void removeClient(ServerClient serverClient) {
|
||||
this.clients.remove(serverClient);
|
||||
try {
|
||||
this.clientThreads.get(serverClient.getName()).join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.clientThreads.remove(serverClient.getName());
|
||||
this.sendToEveryone(serverClient.getName() + " left!");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package netwerkprog.game.server;
|
||||
|
||||
import netwerkprog.game.server.controllers.SessionController;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
@@ -10,10 +12,10 @@ public class ServerClient implements Runnable {
|
||||
private DataOutputStream out;
|
||||
private Socket socket;
|
||||
private String name;
|
||||
private Server server;
|
||||
private SessionController server;
|
||||
private boolean isConnected = false;
|
||||
|
||||
public ServerClient(String name, Socket socket, Server server) {
|
||||
public ServerClient(String name, Socket socket, SessionController server) {
|
||||
this.name = name;
|
||||
this.server = server;
|
||||
this.socket = socket;
|
||||
|
||||
@@ -1,6 +1,104 @@
|
||||
package netwerkprog.game.server.controllers;
|
||||
|
||||
import netwerkprog.game.server.Server;
|
||||
import netwerkprog.game.server.ServerClient;
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class SessionController extends Controller {
|
||||
private ServerSocket serverSocket;
|
||||
private ArrayList<ServerClient> clients = new ArrayList<>();
|
||||
private HashMap<String, Thread> clientThreads = new HashMap<>();
|
||||
|
||||
public SessionController() {
|
||||
|
||||
}
|
||||
|
||||
public void connect() {
|
||||
try {
|
||||
this.serverSocket = new ServerSocket(Server.PORT);
|
||||
System.out.println("[SERVER] listening on port " + Server.PORT);
|
||||
Socket socket = serverSocket.accept();
|
||||
|
||||
System.out.println("[SERVER] got new client on " + socket.getInetAddress().getHostAddress());
|
||||
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
|
||||
DataInputStream inputStream = new DataInputStream(socket.getInputStream());
|
||||
|
||||
outputStream.writeUTF("Enter nickname: ");
|
||||
String nickname = inputStream.readUTF();
|
||||
|
||||
System.out.println("[SERVER] got nickname " + nickname);
|
||||
ServerClient serverClient = new ServerClient(nickname, socket, this);
|
||||
|
||||
Thread t = new Thread(serverClient);
|
||||
t.start();
|
||||
|
||||
clientThreads.put(nickname, t);
|
||||
this.clients.add(serverClient);
|
||||
|
||||
sendMessage(nickname, "--- Welcome! ---\nPeople online : " + clients.size());
|
||||
|
||||
clients.forEach(yeet -> sendToEveryoneExcept(nickname, nickname + " joined the server! [" + socket.getInetAddress().getHostAddress() + "]"));
|
||||
|
||||
|
||||
this.serverSocket.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void sendToEveryone(String text) {
|
||||
for (ServerClient serverClient : clients) {
|
||||
serverClient.writeUTF(text);
|
||||
}
|
||||
}
|
||||
|
||||
public void sendToEveryoneExcept(String name, String text) {
|
||||
for (ServerClient serverClient : clients) {
|
||||
if (!serverClient.getName().equals(name))
|
||||
serverClient.writeUTF(text);
|
||||
}
|
||||
}
|
||||
|
||||
public void sendMessage(String name, String text) {
|
||||
for (ServerClient serverClient : clients) {
|
||||
if (serverClient.getName().equals(name)) {
|
||||
serverClient.writeUTF(text);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeClient(ServerClient serverClient) {
|
||||
this.clients.remove(serverClient);
|
||||
try {
|
||||
this.clientThreads.get(serverClient.getName()).join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.clientThreads.remove(serverClient.getName());
|
||||
this.sendToEveryone(serverClient.getName() + " left!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
boolean running = true;
|
||||
while (running) {
|
||||
System.out.println("Session thread active.");
|
||||
connect();
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,12 @@ package netwerkprog.game.server.controllers.game;
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
public class CharacterController extends Controller {
|
||||
public CharacterController() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,36 @@ package netwerkprog.game.server.controllers.game;
|
||||
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class GameController extends Controller {
|
||||
private int score;
|
||||
private Timer timer;
|
||||
private final CharacterController characterController;
|
||||
private final ObjectController objectController;
|
||||
private final ScoreController scoreController;
|
||||
private HashMap<String, Objective> objectives;
|
||||
|
||||
public GameController() {
|
||||
private final int id;
|
||||
|
||||
public GameController(int id) {
|
||||
this.characterController = new CharacterController();
|
||||
this.objectController = new ObjectController();
|
||||
this.scoreController = new ScoreController();
|
||||
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
boolean running = true;
|
||||
while (running) {
|
||||
System.out.println("game thread " + id + "active");
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,12 @@ package netwerkprog.game.server.controllers.game;
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
public class ObjectController extends Controller {
|
||||
public ObjectController() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package netwerkprog.game.server.controllers.game;
|
||||
|
||||
public class Objective {
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package netwerkprog.game.server.controllers.game;
|
||||
|
||||
import netwerkprog.game.util.Controller;
|
||||
|
||||
public class ScoreController extends Controller {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package netwerkprog.game.server.controllers.game;
|
||||
|
||||
public class Timer {
|
||||
public Timer() {
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
package netwerkprog.game.util;
|
||||
|
||||
public abstract class Controller {
|
||||
public abstract class Controller implements Runnable {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user