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 }