//
// CHAPTER@22
// Class Source Name [MoverArray.java]
// Package name [userClass.App]
// 1996.3
// Author [ Junzo hagimoto ]
package userClass.App;
import java.applet.*;
import java.awt.*;
import userClass.App.*;
public class MoverArray {
Applet a;
Image img[];
boolean start = true;
int maxImage;
int maxMover;
int curIdx=0;
int counter=-1;
Mover mover[];
public MoverArray(Applet a,String gifHedName,int maxGif,int maxMover){
maxImage = maxGif;
this.a = a;
this.maxMover = maxMover;
mover = new Mover[maxMover];
img = new Image[maxImage];
for(int i=0;i < maxImage;i++){
img[i] = a.getImage(a.getCodeBase(), gifHedName + ( i + 1 ) + ".gif");
}
}
public final Image getImage(int i ){ return img[i]; }
public final int getImageWidth(int i) { return img[i].getWidth(a); }
public final int getImageHeight(int i) { return img[i].getHeight(a); }
public final int countMover(){
return counter+1;
}
public final void createMover(){
addMover( new Mover() );
}
public final boolean cloneMover(Mover m){
return addMover( m.copy() );
}
public final void compact(){
boolean bFound=false;
for(int i=0; i < curIdx ;i++){ //
if( mover[i].isDelete() || bFound ) { //
if( i + 1 < curIdx ){
mover[i] = mover[i+1] ;
}
bFound = true;
}
}
if( bFound ){
curIdx--;
}
}
public final boolean deleteMover(Mover m){
if( 1 < curIdx ){
for(int i=0; i < curIdx ;i++){
if( m.id == mover[i].id ){ //
mover[i].delete() ; //
return true;
}
}
}
return false;
}
public final boolean addMover(Mover m){
if( maxMover != curIdx ){
m.setOwner(this);
mover[curIdx++] = m;
return true;
}
return false;
}
public final Mover nextMover(){
++counter;
if( counter == curIdx ){
counter = -1;
compact();
return null;
}
return mover[counter] ;
}
}
//