diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2021-07-15 16:50:35 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2021-07-15 16:50:35 +0200 |
| commit | f026e6bafa7fc5659486c15c32d57acc2adeaad2 (patch) | |
| tree | f7e379fd1ea305808c47eb9dc4b76fcf70fb3760 | |
| parent | 0f8edbe0b2c0bd09cd40872f06993c08e67f26cb (diff) | |
bug(server/client): get message but game no start
| -rw-r--r-- | api/src/main/java/akkamon/api/AkkamonSession.java | 2 | ||||
| -rw-r--r-- | api/src/main/java/akkamon/api/EventSocket.java | 6 | ||||
| -rw-r--r-- | api/src/main/java/akkamon/api/MessagingEngine.java | 9 | ||||
| -rw-r--r-- | api/src/main/java/akkamon/api/models/GameState.java | 2 | ||||
| -rw-r--r-- | api/src/main/java/akkamon/api/models/Position.java | 6 | ||||
| -rw-r--r-- | client/src/GameState.ts | 10 | ||||
| -rw-r--r-- | client/src/app.ts | 11 | ||||
| -rw-r--r-- | client/src/game.ts | 17 | ||||
| -rw-r--r-- | domain/src/main/java/akkamon/domain/Akkamon.java | 2 | ||||
| -rw-r--r-- | domain/src/main/java/akkamon/domain/AkkamonImpl.java | 3 | ||||
| -rw-r--r-- | domain/src/main/java/akkamon/domain/Trainer.java | 10 |
11 files changed, 58 insertions, 20 deletions
diff --git a/api/src/main/java/akkamon/api/AkkamonSession.java b/api/src/main/java/akkamon/api/AkkamonSession.java index 217c8d8..55ca3c3 100644 --- a/api/src/main/java/akkamon/api/AkkamonSession.java +++ b/api/src/main/java/akkamon/api/AkkamonSession.java @@ -9,4 +9,6 @@ public interface AkkamonSession { void disconnect(int statusCode, String message); void setCurrentUser(User user); + + User getUser(); } diff --git a/api/src/main/java/akkamon/api/EventSocket.java b/api/src/main/java/akkamon/api/EventSocket.java index 5a2693e..fdefee3 100644 --- a/api/src/main/java/akkamon/api/EventSocket.java +++ b/api/src/main/java/akkamon/api/EventSocket.java @@ -35,6 +35,7 @@ public class EventSocket extends WebSocketAdapter implements AkkamonSession { super.onWebSocketClose(statusCode, reason); System.out.println("Socket Closed: [" + statusCode + "] " + reason); closureLatch.countDown(); + MessagingEngine.getInstance().sessionOffline(this); } @Override @@ -68,4 +69,9 @@ public class EventSocket extends WebSocketAdapter implements AkkamonSession { public void setCurrentUser(User user) { this.user = user; } + + @Override + public User getUser() { + return user; + } } diff --git a/api/src/main/java/akkamon/api/MessagingEngine.java b/api/src/main/java/akkamon/api/MessagingEngine.java index a3cff1d..1627ad4 100644 --- a/api/src/main/java/akkamon/api/MessagingEngine.java +++ b/api/src/main/java/akkamon/api/MessagingEngine.java @@ -45,7 +45,7 @@ public class MessagingEngine { // dummy gameState.setCurrentPlayer("Ash", trainers); - Event event = new Event("updatePos", gameState); + Event event = new Event("serverSidePosUpdate", gameState); session.receiveGameState(gson.toJson(event)); @@ -58,7 +58,7 @@ public class MessagingEngine { gameState.setCurrentPlayer(name, trainers); gameState.setRemotePlayers(trainers); - Event event = new Event("updatePos", gameState); + Event event = new Event("serverSidePosUpdate", gameState); session.receiveGameState(gson.toJson(event)); } @@ -83,7 +83,7 @@ public class MessagingEngine { case "login": login(session, event.user); break; - case "posUpdate": + case "clientSidePosUpdate": updatePositions(event.gameState); break; } @@ -114,4 +114,7 @@ public class MessagingEngine { emitGameState(); } + public void sessionOffline(AkkamonSession session) { + akkamonSessions.remove(session.getUser().name); + } } diff --git a/api/src/main/java/akkamon/api/models/GameState.java b/api/src/main/java/akkamon/api/models/GameState.java index b303d24..d849fe5 100644 --- a/api/src/main/java/akkamon/api/models/GameState.java +++ b/api/src/main/java/akkamon/api/models/GameState.java @@ -7,7 +7,7 @@ import java.util.Map; public class GameState { public Player currentPlayer; - public HashMap<String, Player> remotePlayers; + public HashMap<String, Player> remotePlayers = new HashMap<>(); public void setCurrentPlayer(String name, HashMap<String, Trainer> trainers) { diff --git a/api/src/main/java/akkamon/api/models/Position.java b/api/src/main/java/akkamon/api/models/Position.java index abe11dd..3dd3402 100644 --- a/api/src/main/java/akkamon/api/models/Position.java +++ b/api/src/main/java/akkamon/api/models/Position.java @@ -1,10 +1,10 @@ package akkamon.api.models; public class Position { - public int x; - public int y; + public float x; + public float y; - public Position(int x, int y) { + public Position(float x, float y) { this.x = x; this.y = y; } diff --git a/client/src/GameState.ts b/client/src/GameState.ts index def867f..198c6e8 100644 --- a/client/src/GameState.ts +++ b/client/src/GameState.ts @@ -28,4 +28,14 @@ export default class GameState { this.currentPlayer = new Player(receivedState.currentPlayer!); } } + + withoutSprite() { + let spriteLess: GameState = new GameState(); + spriteLess.currentPlayer = new Player({ + name: this.currentPlayer!.name, + position: this.currentPlayer!.position + }); + // spriteLess.remotePlayers = this.remotePlayers; + return spriteLess; + } } diff --git a/client/src/app.ts b/client/src/app.ts index 784fed8..773699a 100644 --- a/client/src/app.ts +++ b/client/src/app.ts @@ -3,6 +3,7 @@ import GameState from './GameState'; import Socket from './socket'; import Client from './client'; import Player from './player'; +import { Event } from './events'; const url = 'ws://localhost:8080'; const session = Socket.getInstance('ws://localhost:8080', {name: "", password: ""}); @@ -30,11 +31,21 @@ function delay(ms: number) { return new Promise( resolve => setTimeout(resolve, ms) ); } +function gameStateSender() { + Client.getInstance().out({ + type: "clientSidePosUpdate", + gameState: GameState.getInstance().withoutSprite() + }); +} + async function startGame() { while (true) { console.log(GameState.getInstance().currentPlayer); if (GameState.getInstance().currentPlayer) { const game: Phaser.Game = new Phaser.Game(config); + setInterval( + () => {gameStateSender()}, 200 + ); break; } await delay(1000); diff --git a/client/src/game.ts b/client/src/game.ts index 369e7e6..e302c70 100644 --- a/client/src/game.ts +++ b/client/src/game.ts @@ -132,20 +132,27 @@ export default class AkkamonStartScene extends Phaser.Scene } update(time: Number, delta: Number) { - let player = GameState.getInstance().currentPlayer!.sprite as Sprite; - let input = GameState.getInstance().currentPlayer!.input; + let player = GameState.getInstance().currentPlayer!; + let playerSprite = player.sprite!; + let input = player.input; const speed = 175; - const prevVelocity = player.body.velocity.clone(); + const prevVelocity = playerSprite.body.velocity.clone(); // Stop any previous movement from the last frame - player.body.setVelocity(0); + playerSprite.body.setVelocity(0); if (input) { - this.moveSprite(player, input, speed, prevVelocity) + this.moveSprite(playerSprite, input, speed, prevVelocity) } + player.position = { + x: playerSprite.x, + y: playerSprite.y + } + + // this.drawRemotePlayers(); } diff --git a/domain/src/main/java/akkamon/domain/Akkamon.java b/domain/src/main/java/akkamon/domain/Akkamon.java index db5c3e2..602a6fe 100644 --- a/domain/src/main/java/akkamon/domain/Akkamon.java +++ b/domain/src/main/java/akkamon/domain/Akkamon.java @@ -2,5 +2,5 @@ package akkamon.domain; public interface Akkamon { void newPlayerConnected(String name, String password); - void updateTrainerPosition(String name, int x, int y); + void updateTrainerPosition(String name, float x, float y); } diff --git a/domain/src/main/java/akkamon/domain/AkkamonImpl.java b/domain/src/main/java/akkamon/domain/AkkamonImpl.java index a5f563b..c7f0b7d 100644 --- a/domain/src/main/java/akkamon/domain/AkkamonImpl.java +++ b/domain/src/main/java/akkamon/domain/AkkamonImpl.java @@ -1,7 +1,6 @@ package akkamon.domain; import java.util.HashMap; -import java.util.HashSet; public class AkkamonImpl implements Akkamon { @@ -28,7 +27,7 @@ public class AkkamonImpl implements Akkamon { } } - public void updateTrainerPosition(String name, int x, int y) { + public void updateTrainerPosition(String name, float x, float y) { Trainer trainer = dummyTrainersCollection.get(name); trainer.newPosition(x, y); } diff --git a/domain/src/main/java/akkamon/domain/Trainer.java b/domain/src/main/java/akkamon/domain/Trainer.java index 7490431..8f14c60 100644 --- a/domain/src/main/java/akkamon/domain/Trainer.java +++ b/domain/src/main/java/akkamon/domain/Trainer.java @@ -2,23 +2,23 @@ package akkamon.domain; public class Trainer { private String name; - private int x; - private int y; + private float x; + private float y; public Trainer(String name) { this.name = name; } - public void newPosition(int x, int y) { + public void newPosition(float x, float y) { this.x = x; this.y = y; } - public int getX() { + public float getX() { return x; } - public int getY() { + public float getY() { return y; } |
