package fr.utc.leapband.sma.user;
import jade.core.behaviours.Behaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import jade.lang.acl.UnreadableException;
import javax.swing.DefaultListModel;
@SuppressWarnings("serial")
public class MultiPlayUpdateBehaviour extends Behaviour {
private UserAgent myAgent;
boolean done = false;
boolean first = true;
public MultiPlayUpdateBehaviour (UserAgent myAgent){
super();
this.myAgent = myAgent;
}
@SuppressWarnings("unchecked")
@Override
public void action() {
if(first){
ACLMessage multiPlayRegister = new ACLMessage(ACLMessage.SUBSCRIBE);
multiPlayRegister.setConversationId("register");
multiPlayRegister.setSender(myAgent.getAID());
multiPlayRegister.addReceiver(myAgent.getServerName());
multiPlayRegister.setContent("getting in");
myAgent.send(multiPlayRegister);
first = false;
}
if(!myAgent.isMultiple_mode()){
ACLMessage multiPlayUnregister = new ACLMessage(ACLMessage.SUBSCRIBE);
multiPlayUnregister.setConversationId("unregister");
multiPlayUnregister.setSender(myAgent.getAID());
multiPlayUnregister.addReceiver(myAgent.getServerName());
multiPlayUnregister.setContent("getting out");
myAgent.send(multiPlayUnregister);
done=true;
}
MessageTemplate mt =
MessageTemplate.and(MessageTemplate.MatchConversationId("updateDICT"),
MessageTemplate.MatchPerformative(ACLMessage.INFORM));
ACLMessage update_message = myAgent.receive(mt);
if(update_message!=null){
System.out.println("receive update dict");
if(update_message.getPerformative()==ACLMessage.INFORM){
try {
myAgent.setDict((DefaultListModel<String>)update_message.getContentObject());
} catch (UnreadableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
@Override
public boolean done() {
if(done){
return true;
}else{
return false;
}
}
}