using System; using System.Collections; namespace Bluebird { /// /// Summary description for Measure. /// public class Measure { //these two arraylists better have the //same size all the time private ArrayList clips; private int numClips = 0; public Measure() { clips = new ArrayList(5); numClips = 0; } public void addClip( Clip clip ) { clips.Add( clip ); numClips++; Console.Out.WriteLine("compacting from add"); this.compactClips(0); } public void deleteClip( int clipNum ) { clips.RemoveAt(clipNum); if(numClips > 0) { numClips--; this.compactClips(1); } } public void play() { for(int i = 0; i < numClips; i++){ ((Clip)clips[i]).playSound(); } } public bool stillPlaying() { for(int i = 0; i < numClips; i++) { if(((Clip)clips[i]).stillPlaying()) return true; } return false; } public Clip getClip(int index) { if( clips.Count == 0 ) {} if(index < clips.Count) return((Clip)clips[index]); else return null; } private void compactClips(int test) { //go through list and find a null for( int i = 1; i < numClips; i++ ) { while( clips[i-1] == null && clips[i] != null ) { //switch clips clips[i-1] = clips[i]; //move back i = i-1; //if at the beginning //stop moving back if( i == 0 ) break; } } } public int getNumClips() { return numClips; } public void deleteAllClips() { for(int i = numClips-1; i >= 0; i--) { if(clips[i] != null) clips.RemoveAt(i); } numClips = 0; } public bool isEmpty() { return(numClips == 0); } public void playClip(int curClip) { ((Clip)clips[curClip]).playSound(); } public void disposeAllBuffers() { for(int i = numClips-1; i >= 0; i--) { if(clips[i] != null) { ((Clip)clips[i]).disposeBuffer(); } } } } }