Added ability to take ServerPlayer from user

This commit is contained in:
lieght
2025-12-13 17:22:56 +01:00
parent c929abc4b8
commit edd2c24b65
4 changed files with 28 additions and 18 deletions

View File

@@ -1,7 +1,5 @@
package org.toop.framework.networking.server; package org.toop.framework.networking.server;
import org.toop.framework.game.gameThreads.LocalThreadBehaviour;
import org.toop.framework.game.gameThreads.OnlineThreadBehaviour;
import org.toop.framework.game.gameThreads.ServerThreadBehaviour; import org.toop.framework.game.gameThreads.ServerThreadBehaviour;
import org.toop.framework.gameFramework.model.game.TurnBasedGame; import org.toop.framework.gameFramework.model.game.TurnBasedGame;

View File

@@ -54,20 +54,19 @@ public class ServerHandler extends SimpleChannelInboundHandler<String> {
} }
} }
private boolean allowedArgs(String... args) { private boolean hasArgs(String... args) {
if (args.length < 1) return false; return (args.length >= 1);
return true;
} }
private void handleLogin(ParsedMessage p) { private void handleLogin(ParsedMessage p) {
if (!allowedArgs(p.args())) return; if (hasArgs(p.args())) return;
user.setName(p.args()[0]); user.setName(p.args()[0]);
} }
private void handleGet(ParsedMessage p) { private void handleGet(ParsedMessage p) {
if (!allowedArgs(p.args())) return; if (hasArgs(p.args())) return;
switch (p.args()[0]) { switch (p.args()[0]) {
case "playerlist" -> { case "playerlist" -> {
@@ -94,7 +93,7 @@ public class ServerHandler extends SimpleChannelInboundHandler<String> {
} }
private void handleChallenge(ParsedMessage p) { private void handleChallenge(ParsedMessage p) {
if(!allowedArgs(p.args())) return; if(hasArgs(p.args())) return;
if (p.args().length < 2) return; if (p.args().length < 2) return;
if (p.args()[0].equalsIgnoreCase("accept")) { if (p.args()[0].equalsIgnoreCase("accept")) {
@@ -119,8 +118,10 @@ public class ServerHandler extends SimpleChannelInboundHandler<String> {
} }
private void handleMove(ParsedMessage p) { private void handleMove(ParsedMessage p) {
if(!allowedArgs(p.args())) return; if(hasArgs(p.args())) return;
// TODO check if not number
user.serverPlayer().setMove(Integer.parseInt(p.args()[0]));
} }
private ParsedMessage parse(String msg) { private ParsedMessage parse(String msg) {

View File

@@ -1,10 +1,15 @@
package org.toop.framework.networking.server; package org.toop.framework.networking.server;
import org.toop.framework.game.players.ServerPlayer;
import java.util.Map;
public interface ServerUser { public interface ServerUser {
long id(); long id();
String name(); String name();
Game game(); Game game();
void addGame(Game game); ServerPlayer serverPlayer();
void addGame(Game game, ServerPlayer player);
void removeGame(); void removeGame();
void setName(String name); void setName(String name);
void sendMessage(String message); void sendMessage(String message);

View File

@@ -1,11 +1,15 @@
package org.toop.framework.networking.server; package org.toop.framework.networking.server;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import org.toop.framework.game.players.ServerPlayer;
import java.util.HashMap;
import java.util.Map;
public class User implements ServerUser { public class User implements ServerUser {
final private long id; final private long id;
private String name; private String name;
private Game game; private final Map<Game, ServerPlayer> game = new HashMap<>();
private ChannelHandlerContext connectionContext; private ChannelHandlerContext connectionContext;
public User(long userId, String name) { public User(long userId, String name) {
@@ -23,23 +27,25 @@ public class User implements ServerUser {
return name; return name;
} }
@Override @Override
public void addGame(Game game) { public void addGame(Game game, ServerPlayer player) {
if (this.game == null) { if (this.game.isEmpty()) {
this.game = game; this.game.put(game, player);
} }
} }
@Override @Override
public void removeGame() { public void removeGame() {
this.game = null; this.game.clear();
} }
@Override @Override
public Game game() { public Game game() {
return this.game; return this.game.keySet().iterator().next();
}
public ServerPlayer serverPlayer() {
return this.game.values().iterator().next();
} }
@Override @Override