home *** CD-ROM | disk | FTP | other *** search
Java Source | 1999-02-06 | 2.6 KB | 145 lines |
- import java.awt.*;
-
- public class Softstick
- {
- public static final int LEFTMASK=1<<0;
- public static final int RIGHTMASK=1<<1;
- public static final int UPMASK=1<<2;
- public static final int DOWNMASK=1<<3;
-
- public static final int CENTERED=0;
- public static final int LEFT=LEFTMASK;
- public static final int RIGHT=RIGHTMASK;
- public static final int UP=UPMASK;
- public static final int DOWN=DOWNMASK;
- public static final int LEFTUP=LEFTMASK|UPMASK;
- public static final int LEFTDOWN=LEFTMASK|DOWNMASK;
- public static final int RIGHTUP=RIGHTMASK|UPMASK;
- public static final int RIGHTDOWN=RIGHTMASK|DOWNMASK;
-
- private int direction;
- private boolean fire;
-
- private static final int NOKEY=-1; // must not collide with Event.key values
- private int previouskey;
-
- private static final String DIRECTIONTEXT[]=
- {
- "CENTERED",
- "LEFT",
- "RIGHT",
- "ILLEGAL",
- "UP",
- "LEFT UP",
- "RIGHT UP",
- "ILLEGAL",
- "DOWN",
- "LEFT DOWN",
- "RIGHT DOWN",
- "ILLEGAL",
- "ILLEGAL",
- "ILLEGAL",
- "ILLEGAL",
- "ILLEGAL"
- };
-
- public Softstick()
- {
- reset();
- }
-
- public int getDirection()
- {
- return direction;
- }
-
- public boolean getFire()
- {
- return fire;
- }
-
- public void reset()
- {
- direction=CENTERED;
- fire=false;
- previouskey=NOKEY;
- }
-
- public boolean handleEvent(Event event)
- {
- if(event.id==Event.KEY_ACTION)
- {
- if(event.key!=previouskey)
- {
- previouskey=event.key;
-
- if(event.key==Event.LEFT)
- direction|=LEFTMASK;
- else if(event.key==Event.RIGHT)
- direction|=RIGHTMASK;
- else if(event.key==Event.UP)
- direction|=UPMASK;
- else if(event.key==Event.DOWN)
- direction|=DOWNMASK;
- else
- return false;
- }
- }
- else if(event.id==Event.KEY_ACTION_RELEASE)
- {
- previouskey=NOKEY;
-
- if(event.key==Event.LEFT)
- direction&=~LEFTMASK;
- else if(event.key==Event.RIGHT)
- direction&=~RIGHTMASK;
- else if(event.key==Event.UP)
- direction&=~UPMASK;
- else if(event.key==Event.DOWN)
- direction&=~DOWNMASK;
- else
- return false;
- }
- else if(event.id==Event.KEY_PRESS)
- {
- if(event.key!=previouskey)
- {
- previouskey=event.key;
-
- if(event.key==' ')
- fire=true;
- else
- return false;
- }
- }
- else if(event.id==Event.KEY_RELEASE)
- {
- previouskey=NOKEY;
-
- if(event.key==' ')
- fire=false;
- else
- return false;
- }
- else
- return false;
-
- return true;
- }
-
- public String toString()
- {
- String string;
-
- string="Softstick["+DIRECTIONTEXT[direction];
-
- if(fire)
- string+="+FIRE";
-
- string+="]";
-
- return string;
- }
- }
-
-