package Actors.Keen is
function Create_Keen return A_Actor;
type Behavior is abstract new Limited_Object with private;
type A_Behavior is access all Behavior'Class;
procedure Impulse( this : access Behavior; name : Hashed_String ) is abstract;
procedure Pause( this : access Behavior ) is abstract;
private
type Keen_Actor is new Actor with
record
behavior : A_Behavior := null;
ammo : Integer := 0;
drops : Integer := 0;
points : Integer := 0;
nextLife : Integer := 0;
lives : Integer := 0;
ancients : Integer := 0;
scuba : Boolean := False;
end record;
type A_Keen_Actor is access all Keen_Actor'Class;
procedure Construct( this : access Keen_Actor );
procedure Impulse( this : access Keen_Actor; name : Hashed_String );
function Is_Temporal( this : access Keen_Actor ) return Boolean;
procedure Pause( this : access Keen_Actor );
function Set_Entity( this : access Keen_Actor; e : A_Entity ) return Boolean;
type Behavior is abstract new Limited_Object with
record
actor : A_Keen_Actor;
end record;
type Map_Behavior is new Behavior with null record;
procedure Impulse( this : access Map_Behavior; name : Hashed_String );
procedure Pause( this : access Map_Behavior );
type Platform_Behavior is new Behavior with null record;
procedure Impulse( this : access Platform_Behavior; name : Hashed_String );
procedure Pause( this : access Platform_Behavior );
end Actors.Keen;