package Entities.Triggers is
type Trigger is abstract new Entity with private;
type A_Trigger is access all Trigger'Class;
procedure Execute( this : access Trigger;
action,
argument : String;
activator : A_Entity ) is abstract;
private
WHEN_ATTR : constant String := "When";
ACTION_ATTR : constant String := "Action";
ARG_ATTR : constant String := "Argument";
type Trigger is abstract new Entity with
record
activatable : Boolean := True;
end record;
procedure Construct( this : access Trigger;
libName : String;
icon : String );
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Trigger );
for Trigger'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Trigger );
for Trigger'Write use Object_Write;
procedure On_Activate( this : access Trigger;
activator : not null A_Entity );
procedure On_Collide( this : access Trigger; e : not null A_Entity );
procedure Delete( this : in out A_Trigger );
pragma Postcondition( this = null );
end Entities.Triggers;