1. private with Events.Entities; 
  2. private with Events.Keen; 
  3. private with Events.Game; 
  4.  
  5. package Games.Keen is 
  6.  
  7.     pragma Elaborate_Body; 
  8.  
  9. private 
  10.  
  11.     use Events.Entities; 
  12.     use Events.Game; 
  13.     use Events.Keen; 
  14.  
  15.     type Keen_Game is new Game with 
  16.         record 
  17.             dialogId : Integer := Integer'First;    -- current open dialog 
  18.         end record; 
  19.  
  20.     procedure Add_Event_Listeners( this : access Keen_Game ); 
  21.  
  22.     procedure Handle_Event( this : access Keen_Game; 
  23.                             evt  : in out A_Event; 
  24.                             resp : out Response_Type ); 
  25.     pragma Precondition( evt /= null ); 
  26.  
  27.     procedure Handle( this : not null access Keen_Game'Class; 
  28.                       evt  : not null A_Dialog_Response_Event ); 
  29.  
  30.     procedure Handle( this : not null access Keen_Game'Class; 
  31.                       evt  : not null A_Entity_Entered_Tile_Event ); 
  32.  
  33.     procedure Handle( this : not null access Keen_Game'Class; 
  34.                       evt  : not null A_Give_Ammo_Event ); 
  35.  
  36.     procedure Handle( this : not null access Keen_Game'Class; 
  37.                       evt  : not null A_Give_Drops_Event ); 
  38.  
  39.     procedure Handle( this : not null access Keen_Game'Class; 
  40.                       evt  : not null A_Give_Points_Event ); 
  41.  
  42.     procedure Handle( this : not null access Keen_Game'Class; 
  43.                       evt  : not null A_Impulse_Event ); 
  44.  
  45.     procedure Handle( this : not null access Keen_Game'Class; 
  46.                       evt  : not null A_Player_Died_Event ); 
  47.  
  48.     procedure New_Game( this : access Keen_Game ); 
  49.  
  50.     procedure One_Up( this : not null access Keen_Game'Class ); 
  51.  
  52.     procedure Pause( this : access Keen_Game; enabled : Boolean ); 
  53.  
  54.     procedure Remove_Event_Listeners( this : access Keen_Game ); 
  55.  
  56. end Games.Keen;