Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 212b4db6 rédigé par ArKeid0s's avatar ArKeid0s
Parcourir les fichiers

removed cyclic dependency between game server and middleware

parent 421a7696
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #56211 réussi
......@@ -10,14 +10,6 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>core</artifactId>
<dependencies>
<dependency>
<groupId>fr.univnantes.software_engineering</groupId>
<artifactId>game_server</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>11</maven.compiler.source>
......
......@@ -3,7 +3,7 @@ package fr.univnantes.software_engineering.DTO;
import fr.univnantes.software_engineering.card.Card;
import fr.univnantes.software_engineering.enums.Age;
import fr.univnantes.software_engineering.enums.GameState;
import fr.univnantes.software_engineering.game_server.IGameServer;
import fr.univnantes.software_engineering.game_server_interfaces.IGameServer;
import java.util.List;
......
......@@ -8,10 +8,7 @@ import fr.univnantes.software_engineering.enums.GameState;
import fr.univnantes.software_engineering.enums.Resource;
import fr.univnantes.software_engineering.player.Player;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
public class GameManager implements IGameManager
{
......@@ -35,6 +32,71 @@ public class GameManager implements IGameManager
return game;
}
/**
* Get leaderboard to show players points
*
* @return Map of player (Player) and their score (Integer)
*/
private Map<Player, Integer> getLeaderboard()
{
Map<Player, Integer> playerLeaderboard = new HashMap<>();
for (Player player : players)
{
playerLeaderboard.put(player, player.calculateVictoryPoints());
}
return playerLeaderboard;
}
/**
* Return a player by its ID
*
* @param playerId User id
* @return Player Object
*/
@Override
public Player getPlayer(String playerId)
{
for (Player player : players)
{
if (Objects.equals(player.getPlayerDTO().getUserID(), playerId))
{
return player;
}
}
return null;
}
/**
* Get the player neighbors
*
* @param playerId The player you want to get neighbors from
* @return Pair of players
*/
private Map.Entry<Player, Player> getNeighbors(String playerId)
{
Player currentPlayer = getPlayer(playerId);
//Get left player
int leftPlayerIndex = players.indexOf(currentPlayer) - 1;
if (leftPlayerIndex < 0)
{
leftPlayerIndex = players.size();
}
Player leftPlayer = players.get(leftPlayerIndex);
//Get right player
int rightPlayerIndex = players.indexOf(currentPlayer) + 1;
if (rightPlayerIndex > players.size())
{
rightPlayerIndex = 0;
}
Player rightPlayer = players.get(leftPlayerIndex);
return new AbstractMap.SimpleEntry<>(leftPlayer, rightPlayer);
}
//endregion
/**
......@@ -104,25 +166,10 @@ public class GameManager implements IGameManager
}
/**
* Return a player by its ID
* Util to initialize the GameDTO
*
* @param playerId
* @return Player Object
* @return GameDTO
*/
@Override
public Player getPlayer(String playerId)
{
for (Player player : players)
{
if (player.getPlayerDTO().getUserID() == playerId)
{
return player;
}
}
return null;
}
private GameDTO initGameDTO()
{
GameDTO game = new GameDTO();
......@@ -135,14 +182,22 @@ public class GameManager implements IGameManager
return game;
}
/**
* Buyer buy resources from the seller by giving the resource
*
* @param buyerId Player id of the buyer
* @param sellerId Player id of the seller
* @param resource The resource to buy
*/
private void buyResourcesFrom(String buyerId, String sellerId, Resource resource)
{
//TODO: add amount ?
}
/**
* Start a new Age
*
* @param age
* @param age Age to start
*/
private void startAge(Age age)
{
......@@ -164,17 +219,6 @@ public class GameManager implements IGameManager
}
/**
* Get the player neighbors
*
* @param playerId The player you want to get neighbors from
* @return Pair of players
*/
private Map.Entry<Player, Player> getNeighbors(String playerId)
{
return null;
}
/**
* Start the next turn
*/
......@@ -196,11 +240,10 @@ public class GameManager implements IGameManager
/**
* Start a fight with given player
*
* @param playerId
* @param playerId User Id
*/
private void fight(String playerId)
{
//more army loose point si plus fait perdre a lautre et en gagne
Player currentPlayer = getPlayer(playerId);
int currentPlayerConflictsPoints = currentPlayer.getPlayerDTO().getConflictPoints();
int currentPlayerVictoryPoints = currentPlayer.getPlayerDTO().getVictoryPoints();
......@@ -215,47 +258,40 @@ public class GameManager implements IGameManager
// Current player has more army than his neighbor WIN
if (currentPlayerConflictsPoints > neighborPlayerConflictsPoints)
{
calculateVictoryPoints(neighbor, currentPlayerVictoryPoints, currentPlayer, neighborPlayerVictoryPoints);
calculateVictoryPoints(currentPlayer, currentPlayerVictoryPoints, neighbor, neighborPlayerDefeatPoints);
}
// Current player has less army than his neighbor DEFEAT
else if(currentPlayerConflictsPoints < neighborPlayerConflictsPoints)
else if (currentPlayerConflictsPoints < neighborPlayerConflictsPoints)
{
calculateVictoryPoints(currentPlayer, neighborPlayerDefeatPoints, neighbor, currentPlayerVictoryPoints);
calculateVictoryPoints(neighbor, neighborPlayerVictoryPoints, currentPlayer, currentPlayerDefeatPoints);
}
}
/**
* Calculate victory points and add victory or losing points
*
* @param winner Player that win the fight
* @param winnerPoints Victory points of the winner player
* @param loser Player that lose the fight
* @param looserPoints Defeat points of the losing player
*/
private void calculateVictoryPoints(Player winner, int winnerPoints, Player loser, int looserPoints)
{
switch (game.getCurrentAge())
{
case AGE1:
winner.getPlayerDTO().setVictoryPoints(winnerPoints + 1);
loser.getPlayerDTO().setVictoryPoints(looserPoints - 1);
loser.getPlayerDTO().setDefeatPoints(looserPoints + 1);
break;
case AGE2:
winner.getPlayerDTO().setVictoryPoints(winnerPoints + 3);
loser.getPlayerDTO().setVictoryPoints(looserPoints - 1);
loser.getPlayerDTO().setDefeatPoints(looserPoints + 1);
break;
case AGE3:
winner.getPlayerDTO().setVictoryPoints(winnerPoints + 5);
loser.getPlayerDTO().setVictoryPoints(looserPoints - 1);
loser.getPlayerDTO().setDefeatPoints(looserPoints + 1);
break;
}
}
/**
* Get leaderboard to show players points
*
* @return Map of player (Player) and their score (Integer)
*/
private Map<Player, Integer> getLeaderboard()
{
Map<Player, Integer> playerLeaderboard = new HashMap<>();
for (Player player : players)
{
playerLeaderboard.put(player, player.calculateVictoryPoints());
}
return playerLeaderboard;
}
}
package fr.univnantes.software_engineering.game_server;
package fr.univnantes.software_engineering.game_server_interfaces;
import fr.univnantes.software_engineering.card.Card;
import fr.univnantes.software_engineering.enums.Action;
......
......@@ -6,6 +6,7 @@ import fr.univnantes.software_engineering.enums.GameState;
import fr.univnantes.software_engineering.enums.Resource;
import fr.univnantes.software_engineering.game.GameManager;
import fr.univnantes.software_engineering.game.IGameManager;
import fr.univnantes.software_engineering.game_server_interfaces.IGameServer;
import fr.univnantes.software_engineering.server_middleware.IServerMiddleware;
import fr.univnantes.software_engineering.server_middleware.ServerMiddleware;
......@@ -13,9 +14,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class GameServer implements IGameServer {
public class GameServer implements IGameServer
{
IGameManager game;
IServerMiddleware serverMiddleware;
List<Card> allCards;
......
......@@ -3,13 +3,14 @@ package fr.univnantes.software_engineering.server_middleware;
import fr.univnantes.software_engineering.DTO.GameDTO;
import fr.univnantes.software_engineering.DTO.PlayerDTO;
import fr.univnantes.software_engineering.enums.GameState;
import fr.univnantes.software_engineering.game_server.IGameServer;
import fr.univnantes.software_engineering.game_server_interfaces.IGameServer;
import fr.univnantes.software_engineering.player.Player;
import java.util.List;
import java.util.Map;
public class ServerMiddleware implements IServerMiddleware {
public class ServerMiddleware implements IServerMiddleware
{
//TODO : Link this to ClientMiddlware
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter