package Entities.Sprites.Keen4 is
pragma Elaborate_Body;
type Blue_1UP is new Sprite with private;
type Collect_Drop is new Sprite with private;
type Collect_Gem is new Sprite with private;
type Collect_Stunner is new Sprite with private;
type Points_100 is new Sprite with private;
type Points_200 is new Sprite with private;
type Points_500 is new Sprite with private;
type Points_1000 is new Sprite with private;
type Points_2000 is new Sprite with private;
type Points_5000 is new Sprite with private;
type Stunner_Blast is new Sprite with private;
type Stunner_Shot is new Sprite with private;
type Yellow_1UP is new Sprite with private;
private
type Blue_1UP is new Sprite with null record;
procedure Construct( this : access Blue_1UP );
function Frame_Array( this : not null access Blue_1UP'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Blue_1UP;
for Blue_1UP'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Blue_1UP );
for Blue_1UP'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Blue_1UP );
for Blue_1UP'Write use Object_Write;
type Collect_Drop is new Sprite with null record;
procedure Construct( this : access Collect_Drop );
function Frame_Array( this : not null access Collect_Drop'Class ) return A_Tile_Id_Array;
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 Collect_Gem is new Sprite with null record;
procedure Construct( this : access Collect_Gem );
function Frame_Array( this : not null access Collect_Gem'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Collect_Gem;
for Collect_Gem'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Collect_Gem );
for Collect_Gem'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Collect_Gem );
for Collect_Gem'Write use Object_Write;
type Collect_Stunner is new Sprite with null record;
procedure Construct( this : access Collect_Stunner );
function Frame_Array( this : not null access Collect_Stunner'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Collect_Stunner;
for Collect_Stunner'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Collect_Stunner );
for Collect_Stunner'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Collect_Stunner );
for Collect_Stunner'Write use Object_Write;
type Points_100 is new Sprite with null record;
procedure Construct( this : access Points_100 );
function Frame_Array( this : not null access Points_100'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Points_100;
for Points_100'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Points_100 );
for Points_100'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Points_100 );
for Points_100'Write use Object_Write;
type Points_200 is new Sprite with null record;
procedure Construct( this : access Points_200 );
function Frame_Array( this : not null access Points_200'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Points_200;
for Points_200'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Points_200 );
for Points_200'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Points_200 );
for Points_200'Write use Object_Write;
type Points_500 is new Sprite with null record;
procedure Construct( this : access Points_500 );
function Frame_Array( this : not null access Points_500'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Points_500;
for Points_500'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Points_500 );
for Points_500'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Points_500 );
for Points_500'Write use Object_Write;
type Points_1000 is new Sprite with null record;
procedure Construct( this : access Points_1000 );
function Frame_Array( this : not null access Points_1000'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Points_1000;
for Points_1000'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Points_1000 );
for Points_1000'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Points_1000 );
for Points_1000'Write use Object_Write;
type Points_2000 is new Sprite with null record;
procedure Construct( this : access Points_2000 );
function Frame_Array( this : not null access Points_2000'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Points_2000;
for Points_2000'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Points_2000 );
for Points_2000'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Points_2000 );
for Points_2000'Write use Object_Write;
type Points_5000 is new Sprite with null record;
procedure Construct( this : access Points_5000 );
function Frame_Array( this : not null access Points_5000'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Points_5000;
for Points_5000'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Points_5000 );
for Points_5000'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Points_5000 );
for Points_5000'Write use Object_Write;
type Stunner_Blast is new Sprite with null record;
procedure Construct( this : access Stunner_Blast );
function Frame_Array( this : not null access Stunner_Blast'Class ) return A_Tile_Id_Array;
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 );
procedure Explode( this : not null access Stunner_Shot'Class );
function Frame_Array( this : not null access Stunner_Shot'Class ) return A_Tile_Id_Array;
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 );
type Yellow_1UP is new Sprite with null record;
procedure Construct( this : access Yellow_1UP );
function Frame_Array( this : not null access Yellow_1UP'Class ) return A_Tile_Id_Array;
function Object_Input( stream : access Root_Stream_Type'Class ) return Yellow_1UP;
for Yellow_1UP'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Yellow_1UP );
for Yellow_1UP'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Yellow_1UP );
for Yellow_1UP'Write use Object_Write;
end Entities.Sprites.Keen4;