1. private with Events.Entities; 
  2. private with Events.Keen; 
  3.  
  4. package Games.Keen is 
  5.  
  6.     pragma Elaborate_Body; 
  7.  
  8. private 
  9.  
  10.     use Events.Entities; 
  11.     use Events.Keen; 
  12.  
  13.     type Keen_Game is new Game with null record; 
  14.  
  15.     procedure Construct( this : access Keen_Game ); 
  16.  
  17.     procedure Delete( this : in out Keen_Game ); 
  18.  
  19.     procedure Handle_Event( this : access Keen_Game; 
  20.                             evt  : in out A_Event; 
  21.                             resp : out Response_Type ); 
  22.     pragma Precondition( evt /= null ); 
  23.  
  24.     procedure Handle( this : access Keen_Game; 
  25.                       evt  : not null A_Give_Ammo_Event ); 
  26.  
  27.     procedure Handle( this : access Keen_Game; 
  28.                       evt  : not null A_Give_Drops_Event ); 
  29.  
  30.     procedure Handle( this : access Keen_Game; 
  31.                       evt  : not null A_Give_Points_Event ); 
  32.  
  33.     procedure Handle( this : access Keen_Game; 
  34.                       evt  : not null A_Impulse_Event ); 
  35.  
  36.     procedure New_Game( this : access Keen_Game ); 
  37.  
  38.     procedure Pause( this : access Keen_Game; enabled : Boolean ); 
  39.  
  40. end Games.Keen;