import chess.*;//GEN-BEGIN:header
import java.awt.event.MouseEvent;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.geom.Point2D;
import javax.swing.event.MouseInputAdapter;

/**
 * SpriteMouseInputDelegatorDemo.java
 *
 * Created on Jun 14, 2007, 10:53:51 PM by jbf
 */
public class SpriteMouseInputDelegatorDemo {
    public void run() {//GEN-END:header
        
        // Here you go!
        boolean gameNotDone= true;
        int x;
        
        final Screen myScreen;
        
        // initialization
        myScreen= Chess.newScreen(600,400);
        x=300;
        
        SpriteMouseDelegator smd= new SpriteMouseDelegator(myScreen);
        
        int count=0;
        do {
            final Sprite car= myScreen.newSprite("/sprites/coin1.png", Chess.getRandom(600), Chess.getRandom(400) );
            car.setBounds( new Area( new Ellipse2D.Double( 0, 0, 100, 100 ) ) );
            smd.registerSprite( car, new MouseInputAdapter() {
                public void mouseDragged(MouseEvent mouseEvent) {
                    car.setPosition(mouseEvent.getX(),mouseEvent.getY());
                }
                public void mousePressed( MouseEvent mouseEvent ) {
                    try {
                        Point2D.Double p= new Point2D.Double( mouseEvent.getX(), mouseEvent.getY() );
                        Point2D.Double ap= new Point2D.Double();
                        car.getTransform().inverseTransform( p, ap );
                        car.setAnchorPosition( (int)ap.x, (int)ap.y );
                        car.setPosition( mouseEvent.getX(), mouseEvent.getY() );
                    } catch (NoninvertibleTransformException ex) {
                        ex.printStackTrace();
                    }
                }
                
                public void mouseExited(MouseEvent e) {
                    car.setImage("/sprites/coin1.png");
                }
                
                public void mouseEntered(MouseEvent e) {
                    car.setImage("/sprites/coin3.png");
                }
                
                public void mouseClicked( MouseEvent e ) {
                    Runnable run= new Runnable() {
                        public void run() {
                            while ( car.getPositionX() < 700 ) {
                                car.setPosition( car.getPositionX()+2, car.getPositionY() );
                                Chess.sleep(30);
                            }
                            myScreen.destroySprite( car );
                        }
                    };
                    new Thread( run ).start();
                }
                
            } );
        } while ( count++<5 );
        
        myScreen.addMouseInputAdapter( smd );
        
    } //run//GEN-BEGIN:footer
    
    public static void main( String[] args ) {
       new SpriteMouseInputDelegatorDemo().run();
    } //main
} //class//GEN-END:footer
