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; import fr.utc.leapband.utilities.Constance; import fr.utc.leapband.utilities.MyAID; @SuppressWarnings("serial") public class LocalGameDaemonBehaviour extends Behaviour{ private UserAgent myAgent; private boolean done = false; public LocalGameDaemonBehaviour(UserAgent myAgent) { super(); this.myAgent = myAgent; System.out.println("local multiplay daemon behaviour created"); } @SuppressWarnings("unchecked") @Override public void action() { MessageTemplate mt = MessageTemplate.or( MessageTemplate.and( MessageTemplate.and( MessageTemplate.MatchPerformative(ACLMessage.CONFIRM), MessageTemplate.MatchConversationId(myAgent.getRoomId())), (MessageTemplate.or(MessageTemplate.MatchContent(Constance.CONFIRM_START), MessageTemplate.MatchContent(Constance.Sound_Change)))), MessageTemplate.and( MessageTemplate.MatchPerformative(ACLMessage.INFORM), MessageTemplate.or( MessageTemplate.MatchConversationId(Constance.MEMBER_CHANGE), MessageTemplate.MatchConversationId("StartVisibility")))); ACLMessage message= myAgent.receive(mt); if(message!=null){ if (message.getPerformative() == ACLMessage.INFORM) { if(message.getConversationId().equals("StartVisibility")){ if(message.getContent().equals("true")){ myAgent.changeStartVisibility(true); } }else{ try { myAgent.setDictPlayer((DefaultListModel<String>)message.getContentObject()); if (!myAgent.getDictPlayer().contains(myAgent.getName())) { System.out.println("Agent name not found after member change, localGameBehaviour done"); done = true; } } catch (UnreadableException e) { e.printStackTrace(); } } } else if(message.getPerformative() == ACLMessage.CONFIRM){ if(message.getContent().equals(Constance.Sound_Change)) { myAgent.setHostSoundName(MyAID.toAID(message.getReplyWith())); System.out.println("my local name is " + myAgent.getLocalName()); System.out.println("sound play agent change to "+ MyAID.toAID(message.getReplyWith())); } else if (message.getContent().equals(Constance.CONFIRM_START)) { myAgent.setHostSoundName(MyAID.toAID(message.getReplyWith())); myAgent.changeToGameView(); } } } } @Override public boolean done() { return done; } }