Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: jdstar/Input.java


1   /*
2    * Copyright (C) 1999-2001 Max Gilead <gilead@linart.pl>
3    *
4    * This program is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU General Public License
6    * as published by the Free Software Foundation; either version 2
7    * of the License, or (at your option) any later version.
8    *
9    * This program is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   * GNU General Public License for more details.
13   *
14   * You should have received a copy of the GNU General Public License
15   * along with this program; if not, write to the Free Software
16   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
17   */
18  package jdstar;
19  
20  import huf.data.LinkedList;
21  import huf.data.Iterator;
22  import java.awt.event.KeyListener;
23  import java.awt.event.KeyEvent;
24  
25  /**
26   * This class is responsible for delivering player input to all requesting classes.
27   */
28  public class Input
29    implements KeyListener
30    {
31    private int keyTOGGLE  = KeyEvent.VK_SPACE;
32    private int keyLEFT    = KeyEvent.VK_NUMPAD4;
33    private int keyDOWN    = KeyEvent.VK_NUMPAD2;
34    private int keyRIGHT  = KeyEvent.VK_NUMPAD6;
35    private int keyUP    = KeyEvent.VK_NUMPAD8;
36    
37    boolean playerActive = true;
38    private int keyDownCode = 0;
39    
40    public void keyPressed(KeyEvent evt)
41      {
42      int keyCode = evt.getKeyCode();
43      keyDownCode = keyCode;
44      if (keyCode == keyTOGGLE)
45        {
46        playerActive = playerActive ? false : true;
47        fireEvent(new InputEvent(playerActive ? InputEvent.SELECT_PLAYER : InputEvent.SELECT_BUDDY));
48        return;
49        }
50      if (keyCode == keyLEFT)
51        {
52        fireEvent(new InputEvent(InputEvent.LEFT));
53        return;
54        }
55      if (keyCode == keyDOWN)
56        {
57        fireEvent(new InputEvent(InputEvent.UP)); // !!!
58        return;
59        }
60      if (keyCode == keyRIGHT)
61        {
62        fireEvent(new InputEvent(InputEvent.RIGHT));
63        return;
64        }
65      if (keyCode == keyUP)
66        {
67        fireEvent(new InputEvent(InputEvent.DOWN)); // !!!
68        return;
69        }
70      }
71    public void keyReleased(KeyEvent evt)
72      {
73      if (evt.getKeyCode() == keyDownCode)
74        fireEvent(new InputEvent(InputEvent.IDLE));
75      }
76    public void keyTyped(KeyEvent evt) {} // ignored
77    
78    private LinkedList listeners = new LinkedList();
79    public void addInputListener(InputListener listener)
80      {
81      listeners.add(listener);
82      }
83    
84    private void fireEvent(InputEvent evt)
85      {
86      Iterator i = listeners.iterator();
87      while(i.hasNext())
88        ((InputListener)i.next()).inputEvent(evt);
89      }
90    }
91