1. package Actors.Keen is 
  2.  
  3.     function Create_Keen return A_Actor; 
  4.  
  5.     ---------------------------------------------------------------------------- 
  6.  
  7.     type Behavior is abstract new Limited_Object with private; 
  8.     type A_Behavior is access all Behavior'Class; 
  9.  
  10.     procedure Impulse( this : access Behavior; name : Hashed_String ) is abstract; 
  11.  
  12.     procedure Pause( this : access Behavior ) is abstract; 
  13.  
  14. private 
  15.  
  16.     type Keen_Actor is new Actor with 
  17.         record 
  18.             behavior : A_Behavior := null; 
  19.             ammo     : Integer := 0; 
  20.             drops    : Integer := 0; 
  21.             points   : Integer := 0; 
  22.             nextLife : Integer := 0; 
  23.             lives    : Integer := 0; 
  24.             ancients : Integer := 0; 
  25.             scuba    : Boolean := False; 
  26.         end record; 
  27.     type A_Keen_Actor is access all Keen_Actor'Class; 
  28.  
  29.     procedure Construct( this : access Keen_Actor ); 
  30.  
  31.     procedure Impulse( this : access Keen_Actor; name : Hashed_String ); 
  32.  
  33.     function Is_Temporal( this : access Keen_Actor ) return Boolean; 
  34.  
  35.     -- Stops player acceleration when the game is paused. 
  36.     procedure Pause( this : access Keen_Actor ); 
  37.  
  38.     -- Accepts Entities.Players.Keen.Keen entities. 
  39.     function Set_Entity( this : access Keen_Actor; e : A_Entity ) return Boolean; 
  40.  
  41.     ---------------------------------------------------------------------------- 
  42.  
  43.     type Behavior is abstract new Limited_Object with 
  44.         record 
  45.             actor : A_Keen_Actor; 
  46.         end record; 
  47.  
  48.     type Map_Behavior is new Behavior with null record; 
  49.  
  50.     procedure Impulse( this : access Map_Behavior; name : Hashed_String ); 
  51.  
  52.     procedure Pause( this : access Map_Behavior ); 
  53.  
  54.     type Platform_Behavior is new Behavior with null record; 
  55.  
  56.     procedure Impulse( this : access Platform_Behavior; name : Hashed_String ); 
  57.  
  58.     procedure Pause( this : access Platform_Behavior ); 
  59.  
  60. end Actors.Keen;