private package Entities.Players.Keen.States is
function Get_State( action : Action_Type ) return A_State;
pragma Postcondition( Get_State'Result /= null );
type Moving_State is new State with null record;
type Looking_State is new State with null record;
type Looking_Back_State is new State with null record;
type Teleporting_State is new State with null record;
type Idle_State is new State with null record;
type Rising_State is new State with null record;
type Dying_State is new State with null record;
type Climbing_State is new State with null record;
function Get_Frame( this : Moving_State; k : Keen'Class ) return Natural;
function Get_Frame( this : Looking_State; k : Keen'Class ) return Natural;
function Get_Frame( this : Looking_Back_State; k : Keen'Class ) return Natural;
function Get_Frame( this : Teleporting_State; k : Keen'Class ) return Natural;
function Get_Frame( this : Idle_State; k : Keen'Class ) return Natural;
function Get_Frame( this : Rising_State; k : Keen'Class ) return Natural;
function Get_Frame( this : Dying_State; k : Keen'Class ) return Natural;
function Get_Frame( this : Climbing_State; k : Keen'Class ) return Natural;
procedure Update( this : Moving_State; k : A_Keen; time : Tick_Time );
procedure Update( this : Looking_State; k : A_Keen; time : Tick_Time );
procedure Update( this : Looking_Back_State; k : A_Keen; time : Tick_Time );
procedure Update( this : Teleporting_State; k : A_Keen; time : Tick_Time );
procedure Update( this : Idle_State; k : A_Keen; time : Tick_Time );
procedure Update( this : Rising_State; k : A_Keen; time : Tick_Time );
procedure Update( this : Dying_State; k : A_Keen; time : Tick_Time );
procedure Update( this : Climbing_State; k : A_Keen; time : Tick_Time );
end Entities.Players.Keen.States;