Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.tictactoeserver.domain.entity;

/**
*
* @author Hazem
*/
public class PlayerRow {
private final String username ;
private final String status ;

public PlayerRow(String username, String Status) {
this.username = username;
this.status = Status;
}


public String getUsername() {
return username;
}

public String getStatus() {
return status;
}

@Override
public String toString() {
return "PlayerRow{" + "username=" + username + ", Status=" + status + '}';
}

public PlayerRow(String username) {
this.username = username;
this.status = "Offline";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
import com.mycompany.tictactoeserver.domain.entity.PlayerEntity;
import com.mycompany.tictactoeserver.domain.entity.PlayerStatus;
import com.mycompany.tictactoeserver.domain.services.communication.*;
import com.mycompany.tictactoeserver.domain.services.playerSession.PlayerSessionService;
import com.mycompany.tictactoeserver.domain.services.communication.MessageRouter;
import com.mycompany.tictactoeserver.domain.services.game.GameManager;
import com.mycompany.tictactoeserver.domain.services.playerSession.PlayerSessionService;
import com.mycompany.tictactoeserver.domain.services.statistics.StatisticsService;
import com.mycompany.tictactoeserver.domain.utils.callbacks.PlayerHandlerCallback;
import com.mycompany.tictactoeserver.domain.utils.callbacks.VoidCallback;
Expand All @@ -20,6 +19,7 @@
import java.net.SocketException;
import java.util.List;
import java.util.Vector;

public class GameServerManager {

private final Vector<PlayerConnectionHandler> players = new Vector<>();
Expand Down Expand Up @@ -55,13 +55,14 @@ public PlayerConnectionHandler getPlayerById(String playerId) {
synchronized (lock) {
for (PlayerConnectionHandler player : players) {
if (player.getPlayer() != null
&&player.getPlayer().getId().equals(playerId)) {
&& player.getPlayer().getId().equals(playerId)) {
return player;
}
}
}
return null;
}

public Vector<Player> getAvailablePlayerData() {
Vector<Player> available = new Vector<>();
synchronized (lock) {
Expand All @@ -76,37 +77,37 @@ public Vector<Player> getAvailablePlayerData() {

public Message getLeaderboardMessage() {
StatisticsService statsService = new StatisticsService();

List<PlayerEntity> topPlayersList = statsService.getLeaderboard();

Vector<PlayerEntity> leaderboardVector = new Vector<>(topPlayersList);

AvailablePlayersInfo info = new AvailablePlayersInfo(leaderboardVector, null, null);

return Message.createMessage(MessageType.RESPONSE, Action.GET_LEADERBOARD, info);
}
Vector<PlayerEntity> leaderboardVector = new Vector<>(topPlayersList);

public void broadcastLeaderboard() {
Message msg = getLeaderboardMessage();
String jsonMsg = gson.toJson(msg);

synchronized (lock) {
for (PlayerConnectionHandler player : players) {
try {
if (player.getPlayer() != null) {
player.sendMessageToPlayer(jsonMsg);
AvailablePlayersInfo info = new AvailablePlayersInfo(leaderboardVector, null, null);

return Message.createMessage(MessageType.RESPONSE, Action.GET_LEADERBOARD, info);
}

public void broadcastLeaderboard() {
Message msg = getLeaderboardMessage();
String jsonMsg = gson.toJson(msg);

synchronized (lock) {
for (PlayerConnectionHandler player : players) {
try {
if (player.getPlayer() != null) {
player.sendMessageToPlayer(jsonMsg);
}
} catch (Exception e) {
System.out.println("Error broadcasting leaderboard: " + e.getMessage());
}
} catch (Exception e) {
System.out.println("Error broadcasting leaderboard: " + e.getMessage());
}
}
}
}

public Message getAvailablePlayersMessage(PlayerConnectionHandler requester) {
Vector<PlayerEntity> online = new Vector<>();
Vector<PlayerEntity> inGame = new Vector<>();
Vector<PlayerEntity> pending = new Vector<>();
public Message getAvailablePlayersMessage(PlayerConnectionHandler requester) {
Vector<PlayerEntity> online = new Vector<>();
Vector<PlayerEntity> inGame = new Vector<>();
Vector<PlayerEntity> pending = new Vector<>();

synchronized (lock) {
for (PlayerConnectionHandler handler : players) {
Expand All @@ -115,7 +116,7 @@ public Message getAvailablePlayersMessage(PlayerConnectionHandler requester) {
}

if (requester.getPlayer() != null
&&handler.getPlayer().getId().equals(requester.getPlayer().getId())) {
&& handler.getPlayer().getId().equals(requester.getPlayer().getId())) {
continue;
}
PlayerEntity player = new PlayerEntity(handler.getPlayer().getId(), handler.getPlayer().getUsername(), handler.getPlayer().getScore());
Expand All @@ -134,14 +135,15 @@ public Message getAvailablePlayersMessage(PlayerConnectionHandler requester) {
AvailablePlayersInfo info = new AvailablePlayersInfo(online, inGame, pending);
return Message.createMessage(MessageType.RESPONSE, Action.GET_AVAILABLE_PLAYERS, info);

}
}

public void start() {
synchronized (lock) {
System.out.println("Starting GameServerManager");
runnable.toggleRunning();
}
}

public void stop() {
System.out.println("Stopping GameServerManager");
runnable.toggleRunning();
Expand All @@ -157,7 +159,7 @@ public void stop() {
}
}

public void terminate(){
public void terminate() {
stop();
thread.interrupt();
}
Expand All @@ -175,7 +177,17 @@ public void broadcastPlayerList() {
}
}
}
}
}

public java.util.Vector<PlayerConnectionHandler> getAllPlayers() {

synchronized (lock) {

return new java.util.Vector<>(players);

}

}

public void broadcastMessage(String message) throws PlayerSendMessageException {
Expand All @@ -195,8 +207,8 @@ public void sendMessage(String message, PlayerConnectionHandler player) throws P
public void onReceiveMessage(String message, PlayerConnectionHandler sender) {
try {
MessageRouter router = MessageRouter.getInstance();
System.out.println("testingggggggggg");
router.navigateMessage(message, sender);

router.navigateMessage(message, sender);
} catch (PlayerSendMessageException ex) {
System.getLogger(GameServerManager.class.getName()).log(System.Logger.Level.ERROR, (String) null, ex);
}
Expand All @@ -212,9 +224,8 @@ public void addPlayer(PlayerConnectionHandler player) {
public void removePlayer(PlayerConnectionHandler player) {
GameManager.getInstance().handlePlayerDisconnect(player);
synchronized (lock) {

if(player.getPlayer() != null)
{

if (player.getPlayer() != null) {
System.out.println("Player is not nulll-----------------------------------------------");
String playerID = player.getPlayer().getId();
playerSessionService.endPlayerSession(playerID);
Expand Down Expand Up @@ -282,7 +293,7 @@ public boolean isPlayerOnline(String username) {
synchronized (lock) {
for (PlayerConnectionHandler player : players) {

if (player.getPlayer()!=null&&username.equals(player.getPlayer().getUsername())) {
if (player.getPlayer() != null && username.equals(player.getPlayer().getUsername())) {
return true;
}
}
Expand Down
Loading