with Events;
pragma Elaborate_All( Events );
package Events.Keen is
type Give_Ammo_Event is new Event with private;
type A_Give_Ammo_Event is access all Give_Ammo_Event'Class;
GIVE_AMMO_ID : constant Event_Id := To_Event_Id( "Give_Ammo" );
function Get_Amount( this : not null access Give_Ammo_Event'Class ) return Integer;
type Give_Drops_Event is new Event with private;
type A_Give_Drops_Event is access all Give_Drops_Event'Class;
GIVE_DROPS_ID : constant Event_Id := To_Event_Id( "Give_Drops" );
function Get_Amount( this : not null access Give_Drops_Event'Class ) return Integer;
type Give_Points_Event is new Event with private;
type A_Give_Points_Event is access all Give_Points_Event'Class;
GIVE_POINTS_ID : constant Event_Id := To_Event_Id( "Give_Points" );
function Get_Amount( this : not null access Give_Points_Event'Class ) return Integer;
procedure Queue_Give_Ammo( amount : Integer );
procedure Queue_Give_Drops( amount : Integer );
procedure Queue_Give_Points( amount : Integer );
private
type Give_Ammo_Event is new Event with
record
amount : Integer := 0;
end record;
procedure Construct( this : access Give_Ammo_Event; amount : Integer );
type Give_Drops_Event is new Event with
record
amount : Integer := 0;
end record;
procedure Construct( this : access Give_Drops_Event; amount : Integer );
type Give_Points_Event is new Event with
record
amount : Integer := 0;
end record;
procedure Construct( this : access Give_Points_Event; amount : Integer );
end Events.Keen;