001         package com.croftsoft.apps.mars.controller;
002    
003         import java.awt.*;
004         import java.awt.event.*;
005    
006         import com.croftsoft.core.lang.NullArgumentException;
007         import com.croftsoft.core.gui.event.UserInputAdapter;
008         import com.croftsoft.core.math.geom.Point2DD;
009    
010         import com.croftsoft.apps.mars.ai.TankOperator;
011         
012         /*********************************************************************
013         * Handles user inputs to control the player tank.
014         *
015         * @version
016         *   2003-04-17
017         * @since
018         *   2003-03-20
019         * @author
020         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
021         *********************************************************************/
022    
023         public final class  TankController
024           extends UserInputAdapter
025         //////////////////////////////////////////////////////////////////////
026         //////////////////////////////////////////////////////////////////////
027         {
028    
029         private final TankOperator  tankOperator;
030    
031         private final Point2DD      destination;
032    
033         //////////////////////////////////////////////////////////////////////
034         //////////////////////////////////////////////////////////////////////
035    
036         public  TankController (
037           TankOperator  tankOperator,
038           Component     component )
039         //////////////////////////////////////////////////////////////////////
040         {
041           NullArgumentException.check ( this.tankOperator = tankOperator );
042    
043           NullArgumentException.check ( component );
044    
045           component.addKeyListener ( this );
046    
047           component.addMouseListener ( this );
048    
049           component.addMouseMotionListener ( this );
050    
051           component.requestFocus ( );
052    
053           destination = new Point2DD ( );
054         }
055    
056         //////////////////////////////////////////////////////////////////////
057         //////////////////////////////////////////////////////////////////////
058    
059         public void  keyPressed ( KeyEvent  keyEvent )
060         //////////////////////////////////////////////////////////////////////
061         {
062           tankOperator.fire ( );
063         }
064    
065         public void  mouseMoved ( MouseEvent  mouseEvent )
066         //////////////////////////////////////////////////////////////////////
067         {
068           Point  mousePoint = mouseEvent.getPoint ( );
069    
070           destination.setXY ( mousePoint.x, mousePoint.y );
071    
072           tankOperator.go ( destination );
073         }
074    
075         public void  mousePressed ( MouseEvent  mouseEvent )
076         //////////////////////////////////////////////////////////////////////
077         {
078           tankOperator.fire ( );
079         }
080    
081         //////////////////////////////////////////////////////////////////////
082         //////////////////////////////////////////////////////////////////////
083         }