summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2021-07-15 16:50:35 +0200
committerMike Vink <mike1994vink@gmail.com>2021-07-15 16:50:35 +0200
commitf026e6bafa7fc5659486c15c32d57acc2adeaad2 (patch)
treef7e379fd1ea305808c47eb9dc4b76fcf70fb3760
parent0f8edbe0b2c0bd09cd40872f06993c08e67f26cb (diff)
bug(server/client): get message but game no start
-rw-r--r--api/src/main/java/akkamon/api/AkkamonSession.java2
-rw-r--r--api/src/main/java/akkamon/api/EventSocket.java6
-rw-r--r--api/src/main/java/akkamon/api/MessagingEngine.java9
-rw-r--r--api/src/main/java/akkamon/api/models/GameState.java2
-rw-r--r--api/src/main/java/akkamon/api/models/Position.java6
-rw-r--r--client/src/GameState.ts10
-rw-r--r--client/src/app.ts11
-rw-r--r--client/src/game.ts17
-rw-r--r--domain/src/main/java/akkamon/domain/Akkamon.java2
-rw-r--r--domain/src/main/java/akkamon/domain/AkkamonImpl.java3
-rw-r--r--domain/src/main/java/akkamon/domain/Trainer.java10
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;
}