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