package fr.utc.leapband.sma.user;
import jade.core.AID;
import jade.core.behaviours.Behaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import fr.utc.leapband.utilities.Constance;
import fr.utc.leapband.utilities.MyAID;
@SuppressWarnings("serial")
public class CreatGroupBehaviour extends Behaviour{
private UserAgent myAgent;
private ACLMessage msg;
private boolean first = true;
private boolean done = false;
public CreatGroupBehaviour(UserAgent myAgent) {
super();
this.myAgent = myAgent;
this.msg=new ACLMessage(ACLMessage.SUBSCRIBE); //content = 104
System.out.println("create room behaviour created");
}
@Override
public void action() {
if (first) {
AID server_name = myAgent.getServerName();
if (server_name != null){
msg.clearAllReceiver();
msg.addReceiver(server_name);
msg.setContent(Constance.roomselect_Mode);
MyAID sound_agent = new MyAID(myAgent.getMySoundAgent().getName(), myAgent.getMySoundAgent().getAddressesArray()[0]);
msg.setReplyWith(sound_agent.toJSON());
myAgent.send(msg);
first = false;
System.out.println("Ask for creating room sent");
} else {
System.out.println("server not found");
}
} else {
MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CONFIRM);
ACLMessage message=myAgent.receive(mt);
if(message != null){
myAgent.addBehaviour(new ModeSelectBehaviour(myAgent, Constance.roomselect_Mode));
done = true;
System.out.println("room created, behaviour done");
myAgent.setRoomId(message.getContent());
myAgent.addBehaviour(new LocalGameDaemonBehaviour(myAgent));
}
}
}
@Override
public boolean done() {
return done;
}
}