www.pudn.com > BucklandSimpleSoccer.rar > FieldPlayerStates.h


#ifndef FIELDPLAYERSTATES_H 
#define FIELDPLAYERSTATES_H 
//------------------------------------------------------------------------ 
// 
//  Name: FieldPlayerStates.h 
// 
//  Desc: States for the field players of Simple Soccer. See my book 
//        for detailed descriptions 
// 
//  Author: Mat Buckland 2003 (fup@ai-junkie.com) 
// 
//------------------------------------------------------------------------ 
 
#include  
 
#include "FSM/State.h" 
#include "Messaging/Telegram.h" 
#include "constants.h" 
 
 
class FieldPlayer; 
class SoccerPitch; 
 
 
//------------------------------------------------------------------------ 
class GlobalPlayerState : public State 
{ 
private: 
   
  GlobalPlayerState(){} 
 
public: 
 
  //this is a singleton 
  static GlobalPlayerState* Instance(); 
 
  void Enter(FieldPlayer* player){} 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player){} 
 
  bool OnMessage(FieldPlayer*, const Telegram&); 
}; 
 
//------------------------------------------------------------------------ 
class ChaseBall : public State 
{ 
private: 
   
  ChaseBall(){} 
 
public: 
 
  //this is a singleton 
  static ChaseBall* Instance(); 
 
  void Enter(FieldPlayer* player); 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player); 
 
  bool OnMessage(FieldPlayer*, const Telegram&){return false;} 
}; 
 
//------------------------------------------------------------------------ 
class Dribble : public State 
{ 
private: 
   
  Dribble(){} 
 
public: 
 
  //this is a singleton 
  static Dribble* Instance(); 
 
  void Enter(FieldPlayer* player); 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player){} 
 
  bool OnMessage(FieldPlayer*, const Telegram&){return false;} 
}; 
 
 
//------------------------------------------------------------------------ 
class ReturnToHomeRegion: public State 
{ 
private: 
   
  ReturnToHomeRegion(){} 
 
public: 
 
  //this is a singleton 
  static ReturnToHomeRegion* Instance(); 
 
  void Enter(FieldPlayer* player); 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player); 
 
  bool OnMessage(FieldPlayer*, const Telegram&){return false;} 
}; 
 
//------------------------------------------------------------------------ 
class Wait: public State 
{ 
private: 
   
  Wait(){} 
 
public: 
 
  //this is a singleton 
  static Wait* Instance(); 
 
  void Enter(FieldPlayer* player); 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player); 
 
  bool OnMessage(FieldPlayer*, const Telegram&){return false;} 
}; 
 
//------------------------------------------------------------------------ 
class KickBall: public State 
{ 
private: 
   
  KickBall(){} 
 
public: 
 
  //this is a singleton 
  static KickBall* Instance(); 
 
  void Enter(FieldPlayer* player); 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player){} 
 
  bool OnMessage(FieldPlayer*, const Telegram&){return false;} 
}; 
 
//------------------------------------------------------------------------ 
class ReceiveBall: public State 
{ 
private: 
   
  ReceiveBall(){} 
 
public: 
 
  //this is a singleton 
  static ReceiveBall* Instance(); 
 
  void Enter(FieldPlayer* player); 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player); 
 
  bool OnMessage(FieldPlayer*, const Telegram&){return false;} 
}; 
 
 
//------------------------------------------------------------------------ 
class SupportAttacker: public State 
{ 
private: 
   
  SupportAttacker(){} 
 
public: 
 
  //this is a singleton 
  static SupportAttacker* Instance(); 
 
  void Enter(FieldPlayer* player); 
 
  void Execute(FieldPlayer* player); 
 
  void Exit(FieldPlayer* player); 
 
  bool OnMessage(FieldPlayer*, const Telegram&){return false;} 
}; 
 
 
 
 
   
#endif