public void run() { if (isRunning) { int lasttime = currentTime; currentTime += (int) (System.currentTimeMillis() - lastSystemTime); lastSystemTime = System.currentTimeMillis(); if (currentTime < indexmax) { for (; lasttime < currentTime; lasttime++) { TimedMessage m = parsedFile.get(new Integer((int) currentTime)); if (m != null) m.readMessage(); } outlet(1, currentTime); } else { Atom[] end = {Atom.newAtom("/loop"), Atom.newAtom("bang")}; pause(); outlet(2, end); } /* currentTime ++; TimedMessage m = parsedFile.get(new Integer ((int)currentTime)); if (m != null) m.readMessage(); System.out.println (currentTime); outlet (1, currentTime); */ } }
public void load() { int lasttime = 0; int currenttime = 0; TimedMessage currentMessage = new TimedMessage(); String word = ""; char caract; if (f == null) return; try { // bon, pas super bo, mais ressort avec le return de fin de fichier while (true) { // lit premier caractere de la ligne courante, si fin de fichier, return if ((caract = (char) f.read()) == (char) (-1)) { parsedFile.put(new Integer(lasttime), currentMessage); indexmax = lasttime; Atom[] max = {Atom.newAtom("/indexmax"), Atom.newAtom(indexmax)}; outlet(2, max); return; } // recherche indice temps word = ""; while (caract != ' ') { word += caract; caract = (char) f.read(); } currenttime = Integer.parseInt(word); // si temps courant > ligne precedente -> enregistre messages temps precedent if (currenttime > lasttime) { parsedFile.put(new Integer(lasttime), currentMessage); lasttime = currenttime; currentMessage = new TimedMessage(); } // recupere phrase courante word = ""; caract = (char) f.read(); while (caract != '\n') { word += caract; caract = (char) f.read(); } currentMessage.addMessage(Atom.parse(word)); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }