//
// CHAPTER 22
// Class Source Name [Mover.java]
// Package name [userClass.App]
// 1996.3
// Author [ Junzo hagimoto ]
package userClass.App;
import java.applet.*;
import java.awt.*;
import userClass.App.*;
public class Mover {
static int counter=0;
boolean deleted = false;
int id;
int imgSelect=0;
int x_Plus=1;
int y_Plus=1;
MoverArray owner;
public int imgCount=0;
public int x;
public int y;
public int save_x=0;
public int save_y=0;
public int hitTimer=0;
public Mover(){
id = counter++;
}
//
public void delete(){ // ADD
deleted= true; // ADD
} // ADD
public boolean isDelete(){ // ADD
return deleted; // ADD
} // ADD
public final Image getImage(int i ) { return owner.getImage(i); }
public final int getImageWidth(int i) { return owner.getImageWidth( i); }
public final int getImageHeight(int i) { return owner.getImageHeight(i); }
public final void setOwner(MoverArray mArray){
owner = mArray;
}
//
// Moverのクローンを作成する。
//
public Mover copy(){
Mover m = new Mover();
return copy(m);
}
public Mover copy(Mover m){
m.x = x;
m.y = y;
m.x_Plus = x_Plus * -1;
m.y_Plus = y_Plus * -1;
m.imgSelect = Math.abs(imgSelect - 3);
return m;
}
//
// Moverの表示。
//
public void drawImage(Graphics g){
if( hitTimer ==0 ){
g.drawImage(owner.img[imgCount++/3 + imgSelect ],x,y,owner.a);
if(imgCount / 3 == 3 ){
imgCount = 0;
}
}else{
g.drawImage(owner.img[(hitTimer/2) % owner.maxImage ],save_x,save_y,owner.a);
}
}
//
// Moverの次の表示座標を計算する。
//
public void calcxy(Dimension d,int speed){
if( x > d.width - getImageWidth(0) ){
x = d.width - getImageWidth(0) -1;
x_Plus = -1 ;
imgSelect = 3;
}
if( x < 0 ){
x = 0;
x_Plus = 1 ;
imgSelect = 0;
}
if( y > d.height - getImageHeight(0) ){
y = d.height - getImageHeight(0)-1;
y_Plus = -1;
}
if( y < 0 ){
y =0;
y_Plus = 1;
}
if( x_Plus==1 ){
x += (int)(Math.random() * speed * x_Plus);
y += (int)(Math.random() * speed * y_Plus);
}else{
x += speed * x_Plus ;
y += speed / 2 * y_Plus ;
}
}
}
//