001 package com.croftsoft.apps.mars.net; 002 003 import java.awt.*; 004 import java.awt.event.*; 005 006 import com.croftsoft.core.gui.event.UserInputAdapter; 007 import com.croftsoft.core.lang.NullArgumentException; 008 import com.croftsoft.core.math.geom.Point2DD; 009 010 import com.croftsoft.apps.mars.net.request.FireRequest; 011 import com.croftsoft.apps.mars.net.request.MoveRequest; 012 013 /********************************************************************* 014 * Handles user inputs and sends requests over the net. 015 * 016 * @version 017 * 2003-05-13 018 * @since 019 * 2003-04-07 020 * @author 021 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 022 *********************************************************************/ 023 024 public final class NetController 025 extends UserInputAdapter 026 ////////////////////////////////////////////////////////////////////// 027 ////////////////////////////////////////////////////////////////////// 028 { 029 030 private final String playerName; 031 032 private final Synchronizer synchronizer; 033 034 private final FireRequest fireRequest; 035 036 private final MoveRequest moveRequest; 037 038 ////////////////////////////////////////////////////////////////////// 039 ////////////////////////////////////////////////////////////////////// 040 041 public NetController ( 042 String playerName, 043 Synchronizer synchronizer, 044 Component component ) 045 ////////////////////////////////////////////////////////////////////// 046 { 047 NullArgumentException.check ( this.playerName = playerName ); 048 049 NullArgumentException.check ( this.synchronizer = synchronizer ); 050 051 NullArgumentException.check ( component ); 052 053 component.addMouseListener ( this ); 054 055 component.addMouseMotionListener ( this ); 056 057 component.addKeyListener ( this ); 058 059 component.requestFocus ( ); 060 061 fireRequest = new FireRequest ( playerName ); 062 063 moveRequest = new MoveRequest ( playerName ); 064 } 065 066 ////////////////////////////////////////////////////////////////////// 067 // interface KeyListener methods 068 ////////////////////////////////////////////////////////////////////// 069 070 public void keyPressed ( KeyEvent keyEvent ) 071 ////////////////////////////////////////////////////////////////////// 072 { 073 if ( keyEvent.getKeyChar ( ) == ' ' ) 074 { 075 fire ( ); 076 } 077 } 078 079 public void mouseMoved ( MouseEvent mouseEvent ) 080 ////////////////////////////////////////////////////////////////////// 081 { 082 Point mousePoint = mouseEvent.getPoint ( ); 083 084 moveRequest.setDestination ( mousePoint.x, mousePoint.y ); 085 086 synchronizer.replace ( moveRequest ); 087 } 088 089 public void mousePressed ( MouseEvent mouseEvent ) 090 ////////////////////////////////////////////////////////////////////// 091 { 092 fire ( ); 093 } 094 095 ////////////////////////////////////////////////////////////////////// 096 ////////////////////////////////////////////////////////////////////// 097 098 private void fire ( ) 099 ////////////////////////////////////////////////////////////////////// 100 { 101 synchronizer.replace ( fireRequest ); 102 } 103 104 ////////////////////////////////////////////////////////////////////// 105 ////////////////////////////////////////////////////////////////////// 106 }