private with Tiles;
package Entities.Sprites is
private
use Tiles;
type Sprite is abstract new Entity with
record
lifeSpan : Time_Span := Time_Span_Zero;
frameDelay : Time_Span := Time_Span_Zero;
frames : A_Tile_Id_Array := null;
end record;
procedure Construct( this : access Sprite;
width,
height : Natural;
libName : String;
frames : not null A_Tile_Id_Array;
lifeSpan : Time_Span;
frameDelay : Time_Span );
pragma Precondition( libName'Length > 0 );
procedure Delete( this : in out Sprite );
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Sprite );
for Sprite'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Sprite );
for Sprite'Write use Object_Write;
procedure Tick( this : access Sprite; upTime, dt : Time_Span );
procedure Update_Frame( this : access Sprite; notify : Boolean := True );
end Entities.Sprites;