Commit 69bd18e9 authored by Peining Li's avatar Peining Li

Merge branch 'develop' into 'ihm-main/develop'

Develop

See merge request !181
parents 7b4bccd6 2eb37cee
......@@ -184,13 +184,7 @@
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<sonar.exclusions>
src/main/java/com/utclo23/com/*/*.java,
src/main/java/com/utclo23/com/**/*.java,
src/main/java/com/utclo23/ihmmain/**/*.java,
src/main/java/com/utclo23/ihmtable/**/*.java
</sonar.exclusions>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
<sonar.organization>lo23</sonar.organization>
<sonar.login>a7f86fb85267f6c368ef07d969a16ccf4be0db4b</sonar.login>
......
......@@ -41,66 +41,68 @@ public class M_Bleu extends Message {
@Override
public void callback(IDataCom iDataCom) {
Logger.getLogger(M_Bleu.class.getName()).log(Level.INFO, null, "Blue message received");
List<String> myUsersId = new ArrayList(KnownIPController.getInstance().getHashMap().keySet());
List<LightPublicUser> myUsersProfile = new ArrayList(iDataCom.getConnectedUsers());
if(iDataCom.getMyPublicUserProfile() != null){
List<String> myUsersId = new ArrayList(KnownIPController.getInstance().getHashMap().keySet());
List<LightPublicUser> myUsersProfile = new ArrayList(iDataCom.getConnectedUsers());
HashMap<String, Inet4Address> newPairs = new HashMap();
List<LightPublicUser> newUsersProfile = new ArrayList();
HashMap<String, Inet4Address> newPairs = new HashMap();
List<LightPublicUser> newUsersProfile = new ArrayList();
// Envoi message bleu aux autres targets afin que tout le monde ait
// les mêmes joueurs connectés. Les premiers qui recevront ces messages
// seront prioritaires
HashMap<String, Inet4Address> tmpHash = new HashMap(KnownIPController.getInstance().getHashMap());
tmpHash.put(iDataCom.getMyPublicUserProfile().getId(), KnownIPController.getInstance().getMyInetAddress());
// Envoi message bleu aux autres targets afin que tout le monde ait
// les mêmes joueurs connectés. Les premiers qui recevront ces messages
// seront prioritaires
HashMap<String, Inet4Address> tmpHash = new HashMap(KnownIPController.getInstance().getHashMap());
tmpHash.put(iDataCom.getMyPublicUserProfile().getId(), KnownIPController.getInstance().getMyInetAddress());
List<LightPublicUser> tmp = new ArrayList(iDataCom.getConnectedUsers());
tmp.add(iDataCom.getMyPublicUserProfile().getLightPublicUser());
List<LightPublicUser> tmp = new ArrayList(iDataCom.getConnectedUsers());
tmp.add(iDataCom.getMyPublicUserProfile().getLightPublicUser());
if (this.otherTargets != null) {
for (Inet4Address ipDest : this.otherTargets) {
// On envoie pas si on avait déjà l'IP dans le hashMap
if (!KnownIPController.getInstance().getHashMap().containsValue(ipDest)) {
M_Bleu m_Bleu = new M_Bleu(iDataCom.getMyPublicUserProfile(),
tmpHash, tmp, iDataCom.getGameList(), null);
Sender os = new Sender(ipDest.getHostAddress(), KnownIPController.getInstance().getPort(), m_Bleu);
new Thread(os).start();
if (this.otherTargets != null) {
for (Inet4Address ipDest : this.otherTargets) {
// On envoie pas si on avait déjà l'IP dans le hashMap
if (!KnownIPController.getInstance().getHashMap().containsValue(ipDest)) {
M_Bleu m_Bleu = new M_Bleu(iDataCom.getMyPublicUserProfile(),
tmpHash, tmp, iDataCom.getGameList(), null);
Sender os = new Sender(ipDest.getHostAddress(), KnownIPController.getInstance().getPort(), m_Bleu);
new Thread(os).start();
}
}
}
}
// Envoi message rouge à ceux non déjà présents dans nos joueurs connectés
for (Map.Entry<String, Inet4Address> entry : this.hashMapReceived.entrySet()) {
if (!entry.getKey().equals(iDataCom.getMyPublicUserProfile().getId())
&& !myUsersId.contains(entry.getKey())) {
M_Rouge mRouge = new M_Rouge(iDataCom.getMyPublicUserProfile(), tmpHash, tmp, iDataCom.getGameList());
Sender os = new Sender(entry.getValue().getHostAddress(), KnownIPController.getInstance().getPort(), mRouge);
Thread thread = new Thread(os);
thread.start();
newPairs.put(entry.getKey(), entry.getValue());
// Envoi message rouge à tout le monde sauf nous.
for (Map.Entry<String, Inet4Address> entry : this.hashMapReceived.entrySet()) {
if (!entry.getKey().equals(iDataCom.getMyPublicUserProfile().getId())) {
if(!myUsersId.contains(entry.getKey())) {
newPairs.put(entry.getKey(), entry.getValue());
}
M_Rouge mRouge = new M_Rouge(iDataCom.getMyPublicUserProfile(), tmpHash, tmp, iDataCom.getGameList());
Sender os = new Sender(entry.getValue().getHostAddress(), KnownIPController.getInstance().getPort(), mRouge);
Thread thread = new Thread(os);
thread.start();
}
}
}
for (LightPublicUser key : this.usersReceived) {
if (!key.getId().equals(iDataCom.getMyPublicUserProfile().getLightPublicUser().getId())
&& !myUsersProfile.contains(key)) {
newUsersProfile.add(key);
for (LightPublicUser key : this.usersReceived) {
if (!key.getId().equals(iDataCom.getMyPublicUserProfile().getLightPublicUser().getId())
&& !myUsersProfile.contains(key)) {
newUsersProfile.add(key);
}
}
}
// Maj de nos listes avec les nouvelles données reçues
// maj de la liste des games
for (StatGame game : this.listGamesReceived) {
if (!iDataCom.getGameList().contains(game)) {
iDataCom.addNewGame(game);
// Maj de nos listes avec les nouvelles données reçues
// maj de la liste des games
for (StatGame game : this.listGamesReceived) {
if (!iDataCom.getGameList().contains(game)) {
iDataCom.addNewGame(game);
}
}
for (Map.Entry<String, Inet4Address> entry : newPairs.entrySet()) {
KnownIPController.getInstance().getHashMap().put(entry.getKey(), entry.getValue());
}
for (LightPublicUser key : newUsersProfile) {
iDataCom.addConnectedUser(key);
}
}
for (Map.Entry<String, Inet4Address> entry : newPairs.entrySet()) {
KnownIPController.getInstance().getHashMap().put(entry.getKey(), entry.getValue());
}
for (LightPublicUser key : newUsersProfile) {
iDataCom.addConnectedUser(key);
}
}
}
......@@ -283,6 +283,7 @@ public class DataFacade implements IDataCom, IDataIHMTable, IDataIHMMain {
*/
@Override
public void leaveGame() {
System.out.println("leave game");
String role = this.gameMediator.getOwnerStatus();
if (!role.equals("spectator") && this.gameMediator.getCurrentGame() != null) {
Logger.getLogger(DataFacade.class.getName()).log(Level.INFO, null, "data | leave game");
......@@ -297,6 +298,8 @@ public class DataFacade implements IDataCom, IDataIHMTable, IDataIHMMain {
this.opponentHasLeftGame();
} else {
System.out.println("leave spectator ");
this.ihmTablefacade.spectatorLeaveGame();
}
}
......@@ -426,10 +429,13 @@ public class DataFacade implements IDataCom, IDataIHMTable, IDataIHMMain {
PublicUser usr = this.userMediator.getMyPublicUserProfile();
if (usr != null) {
try {
usr.setNumberDefeatsClassic(this.getNumberDefeatsClassic());
usr.setNumberDefeatsClassic(this.getNumberDefeatsClassic());
usr.setNumberVictoriesClassic(this.getNumberVictoriesClassic());
usr.setNumberAbandonsClassic(this.getNumberAbandonsClassic());
usr.setNumberDefeatsBelgian(this.getNumberDefeatsBelgian());
usr.setNumberVictoriesBelgian(this.getNumberVictoriesBelgian());
usr.setNumberAbandonsBelgian(this.getNumberAbandonsBelgian());
} catch (DataException ex) {
Logger.getLogger(DataFacade.class.getName()).log(Level.SEVERE, null, ex);
......
......@@ -258,7 +258,7 @@ public class GameMediator {
}
return null;
return pairReturn;
}
//if creator of the game
......@@ -294,7 +294,7 @@ public class GameMediator {
}
Random r = new Random();
if(r.nextInt(5)==1){
if(r.nextInt(6)==1){
this.sendMessageIA();
}
}
......@@ -414,9 +414,24 @@ public class GameMediator {
List<String> punchlines = new ArrayList<String>();
punchlines.add("Tu vas bientôt perdre !");
punchlines.add("Tu as autant de chance de gagner que d'avoir A en LO23");
punchlines.add("zZz zZz Je m'ennuie avec toi. Tu joues mal.");
punchlines.add("Tu es bien parti pour avoir F en bataille navale");
punchlines.add("Votre résultat à l'UV BATAILLE NAVALE : F, INSUFFISANT");
punchlines.add("Tu crois pouvoir battre une IA ?");
punchlines.add("Il y'a deux types d'hommes ceux qui bossent le projet et ceux qui en profite pour jouer à la bataille navale. Tu te situes où ?");
punchlines.add("LOL");
punchlines.add("NullPointerException line UserMediator:325\n Tu as eu peur !");
punchlines.add("Bonne chance pour la soutenance");
punchlines.add("Qu\'est ce qu\'une blonde se teintant les cheveux en brun? De l\'intelligence artificielle !");
punchlines.add("J'ai jamais vu un joueur aussi faible.");
punchlines.add("J'ai planté. Encore un problème de DATA --'");
punchlines.add("12 personnes pour faire cette IHM ? :o");
punchlines.add("Je suis bien codé. Merci DATA <3");
punchlines.add("RIP");
punchlines.add("Pourquoi tout le jeu est en anglais sauf moi ?");
punchlines.add("Le comble d'un joueur de bataille navale ? De gagner contre moi.");
punchlines.add("Aie...");
punchlines.add("><");
punchlines.add("Je t'aurais un de ces jours.");
Random r = new Random();
int i = r.nextInt(punchlines.size());
......
......@@ -333,6 +333,8 @@ public class UserMediator {
ObjectMapper mapper = new ObjectMapper();
//retrieval
Owner user = null;
try {
......@@ -371,6 +373,17 @@ public class UserMediator {
}
}
this.mapConnectedUser.clear();
try {
if(this.dataFacade.getIhmMainFacade()!=null){
this.dataFacade.getIhmMainFacade().refreshUserList();
}
} catch (IOException ex) {
Logger.getLogger(UserMediator.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
......
......@@ -246,7 +246,7 @@ public class ComputerPlayer extends Player {
if (this.stackFocus.isEmpty()) {
//System.out.println("random method");
Random r = new Random();
if (r.nextInt(6) != 1) {
if (r.nextInt(7) != 1) {
do {
valid = true;
//choose a new location until empty
......
......@@ -119,14 +119,15 @@ public abstract class Game extends SerializableEntity {
if (role.equals("player")) {
if (this.players.size() <= 1) {
Player player = new Player(user);
this.players.add(player);
System.out.println("ADD AS USER "+user.getPlayerName());
}
} else if (this.getStatGame().isSpectator() && role.equals("spectator")) {
System.out.println("SPECTATOR "+user.getPlayerName());
System.out.println("ADD AS SPECTATOR "+user.getPlayerName());
this.spectators.add(user);
......
......@@ -18,6 +18,11 @@ public class Player extends SerializableEntity{
private LightPublicUser lightPublicUser;
private boolean computer;
@Override
public int hashCode() {
return super.hashCode(); //To change body of generated methods, choose Tools | Templates.
}
/**
*
* @param lightPublicUser
......
......@@ -156,10 +156,11 @@ public class IHMTableFacade implements IIHMTableToIHMMain, IIHMTableToData {
//Gérer les cas spectateur/utilisateur standard
boolean startSpectateur = true;
Game game = facadeData.getGame();
LightPublicUser user = facadeData.getMyPublicUserProfile().getLightPublicUser();
for(int i=0;i<game.getPlayers().size() && !startSpectateur;++i)
if(game.getPlayers().get(i).getLightPublicUser().getId() == user.getId())
for(int i=0;i<game.getPlayers().size() && startSpectateur;++i)
if(game.getPlayers().get(i).getLightPublicUser().getId().equals(user.getId()))
startSpectateur = false;
System.out.println(startSpectateur);
if(startSpectateur && controller != null)
......
......@@ -339,11 +339,23 @@ public class InGameGUIController {
// Get my player.
myPlayer = facade.getFacadeData().getGame().getPlayer(facade.getFacadeData().getMyPublicUserProfile().getId());
for(Player p : facade.getFacadeData().getGame().getPlayers())
{
System.out.println(p);
}
// Spectator.
if (myPlayer == null) {
System.out.println("je suis spectator");
isSpectator = true;
mySpectator = facade.getFacadeData().getMyPublicUserProfile();
}
else
{
System.out.println("je suis player");
}
// Player not able to fire
readyToAttack = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment