mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 19:04:49 +00:00
Compare commits
3 Commits
cc7acf9f0c
...
5caf6900d1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5caf6900d1 | ||
|
|
94d85bf78d | ||
|
|
c9ea8f5e5b |
@@ -45,7 +45,7 @@ public final class ServerView extends ViewWidget {
|
||||
private void setupLayout(String userName) {
|
||||
var playerHeader = Primitive.header(user, false);
|
||||
|
||||
if (userName.equals("host")) {
|
||||
if (userName.equals("host")) { // TODO is fragile
|
||||
var tournamentButton = Primitive.hbox(
|
||||
gameListTour,
|
||||
Primitive.button(
|
||||
@@ -77,7 +77,10 @@ public final class ServerView extends ViewWidget {
|
||||
add(Pos.CENTER, playerListSection);
|
||||
|
||||
var disconnectButton = Primitive.button(
|
||||
"disconnect", () -> transitionPrevious(), false);
|
||||
"disconnect",
|
||||
this::transitionPrevious,
|
||||
false
|
||||
);
|
||||
|
||||
add(Pos.BOTTOM_LEFT, Primitive.vbox(disconnectButton));
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ public class Server implements GameServer<TurnBasedGame, NettyClient, Long> {
|
||||
userNames.remove(first);
|
||||
userNames.remove(second);
|
||||
|
||||
startGame(key, null, getUser(userLeft), getUser(userRight));
|
||||
startGame(key, getUser(userLeft), getUser(userRight));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -299,12 +299,12 @@ public class Server implements GameServer<TurnBasedGame, NettyClient, Long> {
|
||||
matchMaker.shuffle(new RandomShuffle()); // Remove if not wanting to shuffle
|
||||
}
|
||||
|
||||
Tournament tournament = new BasicTournament(new TournamentBuilder(
|
||||
this,
|
||||
new AsyncTournamentRunner(),
|
||||
matchMaker,
|
||||
new BasicScoreSystem(tournamentUsers)
|
||||
));
|
||||
Tournament tournament = new Tournament.Builder()
|
||||
.server(this)
|
||||
.tournamentRunner(new AsyncTournamentRunner())
|
||||
.matchMaker(matchMaker)
|
||||
.scoreSystem(new BasicScoreSystem(tournamentUsers))
|
||||
.build();
|
||||
|
||||
try {
|
||||
new Thread(() -> tournament.run(gameType)).start();
|
||||
|
||||
@@ -56,7 +56,6 @@ public class NettyClient implements Client<OnlineTurnBasedGame, ServerPlayer> {
|
||||
|
||||
@Override
|
||||
public void send(String message) {
|
||||
IO.println(message);
|
||||
ctx.channel().writeAndFlush(message + "\r\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
package org.toop.framework.networking.server.handlers;
|
||||
|
||||
import org.toop.framework.game.players.ServerPlayer;
|
||||
import org.toop.framework.networking.server.OnlineTurnBasedGame;
|
||||
import org.toop.framework.networking.server.Server;
|
||||
import org.toop.framework.networking.server.client.Client;
|
||||
import org.toop.framework.networking.server.client.NettyClient;
|
||||
import org.toop.framework.networking.server.parsing.ParsedMessage;
|
||||
import org.toop.framework.networking.server.tournaments.*;
|
||||
import org.toop.framework.utils.Utils;
|
||||
|
||||
public class MessageHandler implements Handler<ParsedMessage> {
|
||||
@@ -111,8 +108,11 @@ public class MessageHandler implements Handler<ParsedMessage> {
|
||||
private void handleMove(ParsedMessage p, NettyClient client) {
|
||||
if(!hasArgs(p.args())) return;
|
||||
|
||||
var player = client.player();
|
||||
if (player == null) return;
|
||||
|
||||
// TODO check if not number
|
||||
client.player().setMove(1L << Integer.parseInt(p.args()[0]));
|
||||
player.setMove(1L << Integer.parseInt(p.args()[0]));
|
||||
}
|
||||
|
||||
private void handleTournament(ParsedMessage p, NettyClient client) {
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
package org.toop.framework.networking.server.tournaments;
|
||||
|
||||
import org.toop.framework.networking.server.Server;
|
||||
import org.toop.framework.networking.server.tournaments.matchmakers.MatchMaker;
|
||||
import org.toop.framework.networking.server.tournaments.scoresystems.ScoreSystem;
|
||||
|
||||
public class BasicTournament implements Tournament {
|
||||
private final Server server;
|
||||
|
||||
private final ScoreSystem scoreSystem;
|
||||
private final TournamentRunner tournamentRunner;
|
||||
private final MatchMaker matchMaker;
|
||||
|
||||
public BasicTournament(TournamentBuilder builder) {
|
||||
server = builder.server;
|
||||
scoreSystem = builder.scoreSystem;
|
||||
tournamentRunner = builder.tournamentRunner;
|
||||
matchMaker = builder.matchMaker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean run(String gameType) throws RuntimeException {
|
||||
if (server.gameTypes().stream().noneMatch(e -> e.equalsIgnoreCase(gameType))) return false;
|
||||
|
||||
tournamentRunner.run(server, matchMaker, scoreSystem, gameType);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,64 @@
|
||||
package org.toop.framework.networking.server.tournaments;
|
||||
|
||||
import org.toop.framework.networking.server.client.NettyClient;
|
||||
import org.toop.framework.networking.server.Server;
|
||||
import org.toop.framework.networking.server.tournaments.matchmakers.MatchMaker;
|
||||
import org.toop.framework.networking.server.tournaments.scoresystems.ScoreSystem;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
|
||||
public interface Tournament {
|
||||
// void init(TournamentBuilder builder);
|
||||
boolean run(String gameType);
|
||||
// HashMap<NettyClient, Integer> end();
|
||||
public class Tournament {
|
||||
private final Server server;
|
||||
|
||||
private final ScoreSystem scoreSystem;
|
||||
private final TournamentRunner tournamentRunner;
|
||||
private final MatchMaker matchMaker;
|
||||
|
||||
private Tournament(Tournament.Builder builder) {
|
||||
server = builder.server;
|
||||
scoreSystem = builder.scoreSystem;
|
||||
tournamentRunner = builder.tournamentRunner;
|
||||
matchMaker = builder.matchMaker;
|
||||
}
|
||||
|
||||
public void run(String gameType) throws IllegalArgumentException {
|
||||
if (server.gameTypes().stream().noneMatch(e -> e.equalsIgnoreCase(gameType)))
|
||||
throw new IllegalArgumentException("Invalid game type");
|
||||
|
||||
tournamentRunner.run(server, matchMaker, scoreSystem, gameType);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
private Server server;
|
||||
private ScoreSystem scoreSystem;
|
||||
private TournamentRunner tournamentRunner;
|
||||
private MatchMaker matchMaker;
|
||||
|
||||
public Builder server(Server server) {
|
||||
this.server = server;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder scoreSystem(ScoreSystem scoreSystem) {
|
||||
this.scoreSystem = scoreSystem;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder tournamentRunner(TournamentRunner tournamentRunner) {
|
||||
this.tournamentRunner = tournamentRunner;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder matchMaker(MatchMaker matchMaker) {
|
||||
this.matchMaker = matchMaker;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Tournament build() {
|
||||
Objects.requireNonNull(server, "server");
|
||||
Objects.requireNonNull(scoreSystem, "scoreSystem");
|
||||
Objects.requireNonNull(tournamentRunner, "tournamentRunner");
|
||||
Objects.requireNonNull(matchMaker, "matchMaker");
|
||||
return new Tournament(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package org.toop.framework.networking.server.tournaments;
|
||||
|
||||
import org.toop.framework.networking.server.Server;
|
||||
import org.toop.framework.networking.server.tournaments.matchmakers.MatchMaker;
|
||||
import org.toop.framework.networking.server.tournaments.scoresystems.ScoreSystem;
|
||||
|
||||
public class TournamentBuilder {
|
||||
public Server server;
|
||||
public ScoreSystem scoreSystem;
|
||||
public TournamentRunner tournamentRunner;
|
||||
public MatchMaker matchMaker;
|
||||
|
||||
public TournamentBuilder(
|
||||
Server server,
|
||||
TournamentRunner tournamentRunner,
|
||||
MatchMaker matchMaker,
|
||||
ScoreSystem scoreSystem
|
||||
) {
|
||||
this.server = server;
|
||||
this.tournamentRunner = tournamentRunner;
|
||||
this.matchMaker = matchMaker;
|
||||
this.scoreSystem = scoreSystem;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user