package Entities.Players.Little_Keen is
pragma Elaborate_Body;
type Little_Keen is new Player with private;
type A_Little_Keen is access all Little_Keen'Class;
procedure Move_Start( this : access Little_Keen; dir : Cardinal_Direction );
procedure Move_Stop( this : access Little_Keen; dir : Cardinal_Direction );
private
type Action_Type is (Act_Walking, Act_Swimming, Act_Idle);
type Little_Keen is new Player with
record
action : Action_Type := Act_Walking;
actionStart : Time_Span := Time_Span_Zero;
actionDuration : Time_Span := Time_Span_Zero;
idleStart : Time_Span := Time_Span_Zero;
upTime : Time_Span := Time_Span_Zero;
walkSpeed,
walkAcceleration : Float := 0.0;
end record;
procedure Construct( this : access Little_Keen );
procedure Die( this : access Little_Keen );
procedure Face( this : access Little_Keen; dir : Direction_Type );
function Is_Busy( this : not null access Little_Keen'Class ) return Boolean;
function Object_Input( stream : access Root_Stream_Type'Class ) return Little_Keen;
for Little_Keen'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Little_Keen );
for Little_Keen'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Little_Keen );
for Little_Keen'Write use Object_Write;
procedure Reset_Idle( this : not null access Little_Keen'Class );
procedure Start_Action( this : not null access Little_Keen'Class;
action : Action_Type;
length : Time_Span := Time_Span_Zero );
procedure Tick( this : access Little_Keen; time : Tick_Time );
procedure Update_Frame( this : access Little_Keen; notify : Boolean := True );
end Entities.Players.Little_Keen;