UrbanMarginal/src/controleur/Controle.java
2025-03-27 17:15:08 +01:00

128 lines
3 KiB
Java

package controleur;
import modele.Jeu;
import javax.swing.JLabel;
import javax.swing.JPanel;
import controleur.GLOBAL;
import modele.JeuClient;
import modele.JeuServeur;
import outils.connexion.AsyncResponse;
import outils.connexion.ClientSocket;
import outils.connexion.Connection;
import outils.connexion.ServeurSocket;
import vue.Arene;
import vue.ChoixJoueur;
import vue.EntreeJeu;
public class Controle implements AsyncResponse {
private EntreeJeu frmEntreeJeu ;
private ChoixJoueur frmChoixJoueur;
private Arene frmArene;
private Jeu leJeu;
/**
* Constructeur
*/
private Controle() {
this.frmEntreeJeu = new EntreeJeu(this) ;
this.frmEntreeJeu.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Controle();
}
public void evenementEntreeJeu(String info) {
//
if(info.contains("serveur")) {
System.out.println("srv");
//
new ServeurSocket(this, GLOBAL.PORT);
this.frmArene = new Arene(this);
this.frmArene.setVisible(true);
this.leJeu = new JeuServeur(this);
((JeuServeur)this.leJeu).constructionMurs();
frmEntreeJeu.dispose();
}else {
System.out.println("ip");
//
new ClientSocket(this, info, GLOBAL.PORT);
}
}
@Override
public void reception(Connection connection, String ordre, Object info) {
// TODO Auto-generated method stub
switch (ordre){
case "connexion":
if(!(this.leJeu instanceof JeuServeur)) {
frmEntreeJeu.dispose();
this.leJeu = new JeuClient(this);
this.leJeu.connexion(connection);
this.frmArene = new Arene(this);
this.frmChoixJoueur = new ChoixJoueur(this);
this.frmChoixJoueur.setVisible(true);
}else {
this.leJeu.connexion(connection);
}
break;
case "reception":
leJeu.reception(connection, info);
}
}
public void evenementChoixJoueur(String pseudo, int numPerso) {
//
this.frmChoixJoueur.dispose();
this.frmArene.setVisible(true);
String pseudoNumPerso = "pseudo" + GLOBAL.separateur + pseudo + GLOBAL.separateur + numPerso;
((JeuClient)this.leJeu).envoi(pseudoNumPerso);
}
public void envoi(Connection connection, Object obj) {
connection.envoi(obj);
}
public void evenementJeuServeur(String ordre, Object info) {
switch(ordre) {
case "ajout mur":
this.frmArene.ajoutMurs(info);
break;
case "ajout panel murs":
leJeu.envoi((Connection)info, this.frmArene.jpnMurs());
break;
case "ajout jlabel jeu":
this.frmArene.ajoutLabelJeu((JLabel) info);
this.frmArene.jpnJeu.repaint();
break;
case "ajout joueurs":
leJeu.envoi((Connection)info, this.frmArene.getJpnJeu());
break;
}
}
public void evenementJeuClient(String ordre, Object info) {
switch(ordre) {
case "mettre murs":
this.frmArene.setJpnMurs((JPanel)info);
break;
case "modif panel jeu":
this.frmArene.setJpnJeu((JPanel)info);
break;
}
}
public void evenementArene(String ordre, Object info) {
switch(ordre) {
case "tchat":
((JeuClient)this.leJeu).envoi("tchat" + GLOBAL.separateur + info);
break;
}
}
}