with Associations; use Associations;
pragma Warnings( Off, Associations );
with Widgets.Menu_Items; use Widgets.Menu_Items;
limited with Game_Views;
private with Directions;
private with Widgets.Containers.Panels.Dialogs;
package Widgets.Sprites.Ked is
type Ked_Sprite is new Sprite and Menu_Listener and Visibility_Listener with private;
type A_Ked_Sprite is access all Ked_Sprite'Class;
function Create_Ked_Sprite( view : not null access Game_Views.Game_View'Class;
eid : Entity_Id;
class : String;
x, y : Float;
width,
height : Natural;
resizeable : Boolean;
physical : Boolean;
libName : String;
frame : Natural ) return A_Ked_Sprite;
pragma Precondition( class'Length > 0 );
pragma Precondition( libName'Length > 0 );
pragma Postcondition( Create_Ked_Sprite'Result /= null );
procedure Set_Attributes( this : access Ked_Sprite;
attributes : in out A_Association );
pragma Precondition( attributes /= null );
pragma Postcondition( attributes = null );
private
use Directions;
use Widgets.Containers.Panels.Dialogs;
type Drag_Action is (Drag_None, Drag_Move, Drag_Resize);
type Ked_Sprite is new Sprite and Menu_Listener and Visibility_Listener with
record
resizeable : Boolean := False;
dragStartX,
dragStartY : Integer := -1;
dragAction : Drag_Action := Drag_None;
resizeDir : Direction_Type;
dragged : Boolean := False;
snapCenter : Boolean := False;
popupMenu : A_Widget := null;
dialog : A_Dialog := null;
end record;
procedure Build_Popup( this : access Ked_Sprite );
procedure Construct( this : access Ked_Sprite;
view : not null access Game_Views.Game_View'Class;
eid : Entity_Id;
class : String;
x, y : Float;
width,
height : Natural;
resizeable : Boolean;
physical : Boolean;
libName : String;
frame : Natural );
pragma Precondition( class'Length > 0 );
pragma Precondition( libName'Length > 0 );
procedure Delete( this : in out Ked_Sprite );
procedure Handle_Action( this : access Ked_Sprite;
action : A_Menu_Action );
procedure Handle_Action( this : access Ked_Sprite;
action : A_Visibility_Action );
procedure Handle_Focus( this : access Ked_Sprite );
function Handle_Key_Held( this : access Ked_Sprite;
evt : not null A_Key_Event ) return Boolean;
function Handle_Key_Press( this : access Ked_Sprite;
evt : not null A_Key_Event ) return Boolean;
function Handle_Key_Release( this : access Ked_Sprite;
evt : not null A_Key_Event ) return Boolean;
procedure Handle_Mouse_Move( this : access Ked_Sprite;
evt : not null A_Mouse_Event );
procedure Handle_Mouse_Press( this : access Ked_Sprite;
evt : not null A_Mouse_Button_Event );
procedure Handle_Mouse_Release( this : access Ked_Sprite;
evt : not null A_Mouse_Button_Event );
procedure Resize( this : access Ked_Sprite;
dir : Direction_Type;
xAmt,
yAmt : Integer );
end Widgets.Sprites.Ked;