001    //  edu.isi.gamebots.clients.GamebotsConstants
002    //  Copyright 2000, University of Southern California,
003    //                  Information Science Institute
004    //
005    //  Personal and Educational use is hereby granted.
006    //  Permission required for commercial use and redistribution.
007    
008    
009    package edu.isi.gamebots.client;
010    
011    import java.lang.*;
012    import java.awt.Color;
013    
014    
015    /**
016     *  This interface defines several constants often used by
017     *  {@link GamebotsClient}s and {@link Bot}s.
018     *
019     *  @author <a href="mailto:amarshal#gamebots@isi.edu">Andrew n marshall</a>
020     */
021    public interface GamebotsConstants {
022      //  Public Static Data
023      ///////////////////////////////////////////////////////////////////////////
024      public final static int DEFAULT_BOT_PORT = 3000;
025      public final static int DEFAULT_VIZ_PORT = 3001;
026    
027      public final static int NODE_DOMINATION = 1; //[srs]
028      public final static int NODE_NAVIGATION = 2; //[srs]
029      public final static int NODE_MOVER = 3; //[srs]
030      public final static int NODE_INVENTORY = 4; //[srs]
031    
032    
033      // Generics
034      public final static String TRUE = "True";
035      public final static String FALSE = "False";
036    
037      public final static String LOCATION = "Location"; // 3D World coordinates
038      public final static String ROTATION = "Rotation"; // A pitch,yaw,roll vector
039      public final static String VELOCITY = "Velocity"; // 3D World coordinates
040    
041      // Asynchrous from server...
042      public final static String INFO   = "NFO"; // Server info/comment
043      public final static String SELF   = "SLF"; // Info about self
044      public final static String SEE    = "SEE"; // See another player
045      public final static String WALL   = "WAL"; // Hit a wall
046      public final static String BUMP   = "BMP"; // Bumped another player
047      public final static String DAMAGE = "DAM"; // Bumped another player
048      public final static String DIE    = "DIE"; // Self Death Notification
049      public final static String KILL   = "KIL"; // Player Death Notification
050      public final static String FINISHED = "Fin"; // End of Game
051      public final static String PONG = "Pong"; // Ping response
052    
053    //[srs]:
054      public final static String ITEM = "AIN"; //picked up item
055      public final static String GAMESTATE = "GAM"; //game status message
056      public final static String DOMPOINTS = "DomPoints";
057      public final static String PATH = "PTH";
058      public final static String GETPATH = "GetPath";
059    
060      // From server in the vision update...
061      public final static String BEG = "BEG"; // Begin vision update
062      public final static String NAV = "NAV"; // Navigation point
063      public final static String DOM = "DOM"; //Domination point [srs]
064      public final static String MOV = "MOV"; // world mobile [srs]
065      public final static String PLAYER = "PLR"; // Other Player
066      public final static String INV = "INV"; // Inventory item
067      public final static String END = "END"; // End vision update
068    
069    
070      // Client Message Types
071      public final static String INIT = "Init"; // Enter Game
072      public final static String RUNTO = "RunTo";
073      public final static String TURNTO = "TurnTo";
074      public final static String PING = "Ping";
075    
076      // Actor properties (for NAV, PLAYER, SELF, INV, ...)
077      public final static String ACTOR_ID = "Id"; // Unique Actor identifier
078      public final static String ACTOR_REACHABLE = "Reachable"; // Boolean, is actor reachable from current location?
079      public final static String ACTOR_CLASS = "Class"; // Class name
080      //[srs]
081      public final static String ITEM_ID = "Id"; //weapon/item identifier
082      public final static String OWNER = "Controller"; //dom point owner
083      public final static String WEAPON_1 = "Bubble";
084      public final static String WEAPON_2 = "Goo";
085    
086      // Player properties (for SELF, PLAYER, ane SEE)
087      public final static String PLAYER_TEAM = "Team"; // Unique Actor identifier
088      public final static String PLAYER_NAME = "Name";
089      public final static String PLAYER_WEAPON = "Weapon";
090      public final static String PLAYER_HEALTH = "Health";
091      public final static String PLAYER_ARMOR = "Armor";
092      public final static String PLAYER_AMMO = "CurrentAmmo";
093    
094      // Death properties (for KILL and DIE)
095      public final static String DEATH_KILLER = "Killer"; // Who did the killing
096      public final static String DEATH_DAMAGE_TYPE = "DamageType"; // How
097    
098      // Client Message Parameters
099      public final static String ARG_TARGET = "Target";
100    
101      //[srs] Client Commands
102      public final static String STOP_SHOOT = "StopShoot";
103      public final static String SHOOT = "Shoot";
104    
105      // Team IDs
106      public final static int TEAM_ANY = -1; //Only used by bot initialization
107      public final static int TEAM_NONE = 255; //[srs]
108      public final static int TEAM_RED = 0;
109      public final static int TEAM_BLUE = 1;
110      public final static int TEAM_GREEN = 2;
111      public final static int TEAM_GOLD = 3;
112    
113      // Game mechanics constants.  No gaurantee these are correct.
114      public final static double PLAYER_RADIUS =  17.0d;
115      
116      // Items below added by Ryan Rozich - Texas A&M University for completeness
117      // Command Constant
118      public final static String SETWALK = "SETWALK";
119      public final static String STOP = "STOP";
120      public final static String JUMP = "JUMP";
121      public final static String STRAFE = "STRAFE";
122      public final static String ROTATE = "ROTATE";
123      public final static String CHANGEWEAPON = "CHANGEWEAPON";
124      public final static String CHECKREACH = "CHECKREACH";
125      public final static String MESSAGE = "MESSAGE";
126      
127      // Client Message Parameters
128      public final static String ARG_WALK = "Walk";
129      public final static String ARG_AMOUNT = "Amount";
130      public final static String ARG_ALT = "Alt";
131      public final static String ARG_TEXT = "Text";
132      public final static String ARG_GLOBAL = "Global";
133    
134    
135      //  Inner Classes
136      //////////////////////////////////////////////////////////////////////////
137      /**
138       *  The following is a means for constants (liek Team IDs) to be mapped to
139       *  useful objects.
140       */
141      public static abstract class TeamColorMap {
142        public static String teamToName( int id ) {
143          switch( id ) {
144          case TEAM_ANY:
145            return "Any";
146          case TEAM_NONE:
147            return "None";
148          case TEAM_RED:
149            return "Red";
150          case TEAM_BLUE:
151            return "Blue";
152          case TEAM_GREEN:
153            return "Green";
154          case TEAM_GOLD:
155            return "Gold";
156          default:
157            return null;
158          }
159        }
160    
161        public static Color teamToColor( int id ) {
162          switch( id ) {
163          case TEAM_RED:
164            return Color.red;
165          case TEAM_BLUE:
166            return Color.blue;
167          case TEAM_GREEN:
168            return Color.green;
169          case TEAM_GOLD:
170            return Color.yellow.darker();
171          default:
172            return null;
173          }
174        }
175      }
176    }