From ddaf07df49ad6486aec8dda0d8a5ea9473dfbe3b Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Sun, 7 Jun 2020 14:24:34 +0200 Subject: [PATCH] username sending done --- .../src/netwerkprog/game/client/MainGame.java | 19 +++++++++++++++++++ .../client/game/map/GameInputProcessor.java | 13 ++++++++----- .../server/controllers/SessionController.java | 12 ++++++++++-- .../netwerkprog/game/util/data/NameData.java | 15 +++++++++++++++ .../netwerkprog/game/util/data/TeamData.java | 8 +++++++- 5 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 core/src/netwerkprog/game/util/data/NameData.java diff --git a/core/src/netwerkprog/game/client/MainGame.java b/core/src/netwerkprog/game/client/MainGame.java index 857d9b9..d40ad22 100644 --- a/core/src/netwerkprog/game/client/MainGame.java +++ b/core/src/netwerkprog/game/client/MainGame.java @@ -26,6 +26,8 @@ import netwerkprog.game.client.game.map.MapRenderer; import netwerkprog.game.util.data.Data; import netwerkprog.game.util.data.DataCallback; import netwerkprog.game.util.data.DataSource; +import netwerkprog.game.util.data.NameData; +import netwerkprog.game.util.data.TeamData; import netwerkprog.game.util.game.Faction; import netwerkprog.game.util.game.GameCharacter; import netwerkprog.game.util.graphics.FrameRate; @@ -53,6 +55,7 @@ public class MainGame extends Game implements DataCallback { private boolean gameOver = false; private int turn = 0; private boolean playersTurn = true; + private String username; private Map map; public MapRenderer mapRenderer; @@ -353,6 +356,22 @@ public class MainGame extends Game implements DataCallback { @Override public void onDataReceived(Data data, DataSource source) { System.out.println("[MAINGAME CALLBACK] Got data: " + data.toString()); + if (data instanceof NameData) { + System.out.println("[MAINGAME CALLBACK] got name data: " + data); + this.username = ((NameData) data).getName(); + System.out.println("[MAINGAME CALLBACK] username is: " + username); + } else if (data instanceof TeamData) { + if (this.chosenFaction != null) { + + } else { + + } + + } } + + public String getUsername() { + return username; + } } diff --git a/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java b/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java index b5ab43e..d84cbc1 100644 --- a/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java +++ b/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java @@ -10,6 +10,7 @@ import com.badlogic.gdx.utils.TimeUtils; import netwerkprog.game.client.MainGame; import netwerkprog.game.client.game.GAMESTATE; import netwerkprog.game.util.data.Data; +import netwerkprog.game.util.data.TeamData; import netwerkprog.game.util.game.Faction; import netwerkprog.game.util.game.GameCharacter; @@ -119,15 +120,17 @@ public class GameInputProcessor implements InputProcessor { if (keycode == Input.Keys.NUM_1) { System.out.println("MEGA CORP"); mainGame.setChosenFaction(Faction.MEGACORPORATION); - mainGame.initCharacters(); - mainGame.setGamestate(GAMESTATE.PLAYING); + mainGame.send(new TeamData(Faction.MEGACORPORATION, mainGame.getUsername())); +// mainGame.initCharacters(); +// mainGame.setGamestate(GAMESTATE.PLAYING); } if (keycode == Input.Keys.NUM_2) { System.out.println("HACKER"); mainGame.setChosenFaction(Faction.HACKER); - mainGame.initCharacters(); - camera.translate(-400, 0); - mainGame.setGamestate(GAMESTATE.PLAYING); + mainGame.send(new TeamData(Faction.MEGACORPORATION, mainGame.getUsername())); +// mainGame.initCharacters(); +// camera.translate(-400, 0); +// mainGame.setGamestate(GAMESTATE.PLAYING); } } diff --git a/core/src/netwerkprog/game/server/controllers/SessionController.java b/core/src/netwerkprog/game/server/controllers/SessionController.java index 4014704..8fa70d2 100644 --- a/core/src/netwerkprog/game/server/controllers/SessionController.java +++ b/core/src/netwerkprog/game/server/controllers/SessionController.java @@ -5,6 +5,7 @@ import netwerkprog.game.server.ServerClient; import netwerkprog.game.util.application.Controller; import netwerkprog.game.util.data.ConnectionData; import netwerkprog.game.util.data.Data; +import netwerkprog.game.util.data.NameData; import java.io.IOException; import java.io.ObjectInputStream; @@ -61,7 +62,7 @@ public class SessionController extends Controller { */ public void registerClient(Socket socket) { try { - System.out.println("[SERVER] got new client on " + socket.getInetAddress().getHostAddress()); + System.out.println("[SERVERCLIENT] got new client on " + socket.getInetAddress().getHostAddress()); ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream()); ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream()); @@ -91,12 +92,19 @@ public class SessionController extends Controller { } } - System.out.println("[SERVER] got username " + username); + if (this.clients.isEmpty()) { + username = "player1"; + } else { + username = "player" + (this.clients.size() + 1); + } + System.out.println("[SERVER] setting username: " + username); ServerClient serverClient = new ServerClient(username, inputStream, outputStream, this, server.getDataController()); Thread t = new Thread(serverClient); t.start(); + serverClient.writeData(new NameData(username)); + this.clientThreads.put(username,t); this.clients.add(serverClient); } catch (IOException | ClassNotFoundException ex) { diff --git a/core/src/netwerkprog/game/util/data/NameData.java b/core/src/netwerkprog/game/util/data/NameData.java new file mode 100644 index 0000000..72f07f7 --- /dev/null +++ b/core/src/netwerkprog/game/util/data/NameData.java @@ -0,0 +1,15 @@ +package netwerkprog.game.util.data; + +public class NameData extends Data { + private String name; + public NameData(String name) { + super("name"); + super.setPayload(this); + this.name = name; + + } + + public String getName() { + return name; + } +} diff --git a/core/src/netwerkprog/game/util/data/TeamData.java b/core/src/netwerkprog/game/util/data/TeamData.java index 0d8d2bc..b5ddd50 100644 --- a/core/src/netwerkprog/game/util/data/TeamData.java +++ b/core/src/netwerkprog/game/util/data/TeamData.java @@ -4,14 +4,20 @@ import netwerkprog.game.util.game.Faction; public class TeamData extends Data { private final Faction faction; + private final String username; - public TeamData(Faction faction) { + public TeamData(Faction faction, String username) { super("Team"); super.setPayload(this); this.faction = faction; + this.username = username; } public Faction getFaction() { return faction; } + + public String getUsername() { + return username; + } }