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 EnterGroupBehaviour extends Behaviour{ private UserAgent myAgent; private ACLMessage msg; private boolean first = true; private boolean done = false; private String msg_conversation = null; public EnterGroupBehaviour(UserAgent myAgent, String content) { super(); this.myAgent = myAgent; this.msg=new ACLMessage(ACLMessage.SUBSCRIBE); msg_conversation = content; System.out.println("enter room behaviour created"); } @Override public void action() { if (first) { AID server_name = myAgent.getServerName(); if (server_name != null){ msg.addReceiver(server_name); msg.setContent(Constance.EnterGroupMode); msg.setConversationId(msg_conversation); 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 entring a room sent"); } else { System.out.println("server not found"); } } else { MessageTemplate mt = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.CONFIRM), MessageTemplate.and(MessageTemplate.MatchContent(Constance.ROOM_ENTERED), MessageTemplate.MatchConversationId(msg_conversation))); ACLMessage message=myAgent.receive(mt); if(message != null){ myAgent.addBehaviour(new ModeSelectBehaviour(myAgent, Constance.roomselect_Mode)); done = true; System.out.println("room entered, behaviour done"); myAgent.setRoomId(msg_conversation); myAgent.addBehaviour(new LocalGameDaemonBehaviour(myAgent)); } } } @Override public boolean done() { return done; } }