package fr.utc.leapband.sma.move;
import jade.core.AID;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import com.fasterxml.jackson.databind.ObjectMapper;
import fr.utc.leapband.utilities.Constance;
import fr.utc.leapband.utilities.MoveInformData;
import fr.utc.leapband.utilities.NoteInformData;
import fr.utc.leapband.utilities.NoteInformData.NoteActionType;
@SuppressWarnings("serial")
public class SoundMessageDaemonBehaviour extends CyclicBehaviour{
// public SoundMessageDaemonBehaviour() {
// // TODO Auto-generated constructor stub
// }
@Override
public void action() {
MessageTemplate filtre = MessageTemplate.MatchPerformative(ACLMessage.REQUEST);
ACLMessage message = myAgent.receive(filtre);
if(message != null)
{
ObjectMapper mapper = new ObjectMapper();
NoteInformData data = new NoteInformData();
try {
MoveInformData moveData = mapper.readValue(message.getContent(), MoveInformData.class);
/* //TEST POUR AGENT
MoveInformData moveData= new MoveInformData();
Point3d p3d= new Point3d(375,270,0);
Movement move= new Movement();
move.setPos(p3d);
move.setSpeed(2000);
moveData.setMove(move);
moveData.setInstrumentType(InstrumentType.TAMBOUR);*/
int i;
int volume;
data.setTimestamp(moveData.getTimestamp());
switch(moveData.getInstrumentType()) {
case TAMBOUR:
System.out.println("Tambour");
data.setAction(NoteActionType.START_NOTE);
data.setChannel(9);
FindNoteTambourFromMovement drum=new FindNoteTambourFromMovement(moveData.getMove());
// addBehaviour(be);
volume =(int) (drum.matchVolume() * moveData.getVelocity_multiplier());
System.out.println("inside volume = " + drum.matchVolume());
System.out.println("final volume = " + volume);
data.setVelocity(volume);
i= drum.matchNote();
System.out.println("NOTE " + String.valueOf(i));
data.setNote(i);
break;
case PIANO:
break;
case GUITAR:
System.out.println("Guitar");
data.setAction(NoteActionType.CHANGE_INSTRUMENT);
data.setChannel(0);
FindNoteGuitarFromMovement guitar=new FindNoteGuitarFromMovement(moveData.getMove());
volume =(int) (guitar.matchVolume() * moveData.getVelocity_multiplier());
System.out.println("inside volume = " + guitar.matchVolume());
System.out.println("final volume = " + volume);
data.setVelocity(volume);
i= guitar.matchNote();
System.out.println("NOTE " + String.valueOf(i));
data.setNote(i);
data.setInstrument(Constance.Guitar_Type);
data.setBank(0);
break;
case DEFAULT:
break;
}
} catch (Exception e) {
e.printStackTrace();
}
AID aid = (AID)message.getAllReplyTo().next();
//AID aid=new AID("SoundPlayer", AID.ISLOCALNAME);
//AID aid=getReceiver();
myAgent.addBehaviour(new SenderInformBehaviour(data, aid));
}
else block();
}
}