package Entities.Sprites.Keen4 is
Blue_1UP_Tag : constant String := "Entities.Sprites.Keen4.Blue_1UP";
Collect_Drop_Tag : constant String := "Entities.Sprites.Keen4.Collect_Drop";
Collect_Gem_Tag : constant String := "Entities.Sprites.Keen4.Collect_Gem";
Collect_Stunner_Tag : constant String := "Entities.Sprites.Keen4.Collect_Stunner";
Points_100_Tag : constant String := "Entities.Sprites.Keen4.Points_100";
Points_200_Tag : constant String := "Entities.Sprites.Keen4.Points_200";
Points_500_Tag : constant String := "Entities.Sprites.Keen4.Points_500";
Points_1000_Tag : constant String := "Entities.Sprites.Keen4.Points_1000";
Points_2000_Tag : constant String := "Entities.Sprites.Keen4.Points_2000";
Points_5000_Tag : constant String := "Entities.Sprites.Keen4.Points_5000";
Yellow_1UP_Tag : constant String := "Entities.Sprites.Keen4.Yellow_1UP";
Flag_Tag : constant String := "Entities.Sprites.Keen4.Flag";
Flag_Up_Tag : constant String := "Entities.Sprites.Keen4.Flag_Up";
Stunner_Blast_Tag : constant String := "Entities.Sprites.Keen4.Stunner_Blast";
Stunner_Shot_Tag : constant String := "Entities.Sprites.Keen4.Stunner_Shot";
procedure Spawn_Raising_Flag( x, y : Float );
private
type Collect_Item is new Sprite with null record;
procedure Construct( this : access Collect_Item;
tileId : Natural );
function Object_Input( stream : access Root_Stream_Type'Class ) return Collect_Item;
for Collect_Item'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Collect_Item );
for Collect_Item'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Collect_Item );
for Collect_Item'Write use Object_Write;
type Collect_Drop is new Sprite with null record;
procedure Construct( this : access Collect_Drop );
function Object_Input( stream : access Root_Stream_Type'Class ) return Collect_Drop;
for Collect_Drop'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Collect_Drop );
for Collect_Drop'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Collect_Drop );
for Collect_Drop'Write use Object_Write;
type Flag is new Sprite with null record;
procedure Construct( this : access Flag );
function Object_Input( stream : access Root_Stream_Type'Class ) return Flag;
for Flag'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Flag );
for Flag'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Flag );
for Flag'Write use Object_Write;
type Flag_Up is new Sprite with
record
playedSound : Boolean := False;
end record;
procedure Construct( this : access Flag_Up );
procedure Update( this : access Flag_Up; time : Tick_Time );
function Object_Input( stream : access Root_Stream_Type'Class ) return Flag_Up;
for Flag_Up'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Flag_Up );
for Flag_Up'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Flag_Up );
for Flag_Up'Write use Object_Write;
type Stunner_Blast is new Sprite with null record;
procedure Construct( this : access Stunner_Blast );
function Object_Input( stream : access Root_Stream_Type'Class ) return Stunner_Blast;
for Stunner_Blast'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Stunner_Blast );
for Stunner_Blast'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Stunner_Blast );
for Stunner_Blast'Write use Object_Write;
type Stunner_Shot is new Sprite with null record;
procedure Construct( this : access Stunner_Shot );
function Object_Input( stream : access Root_Stream_Type'Class ) return Stunner_Shot;
for Stunner_Shot'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Stunner_Shot );
for Stunner_Shot'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Stunner_Shot );
for Stunner_Shot'Write use Object_Write;
procedure On_Collide( this : access Stunner_Shot; e : not null A_Entity );
procedure On_Hit_Wall( this : access Stunner_Shot;
dir : Cardinal_Direction;
firstContact : Boolean );
end Entities.Sprites.Keen4;