with Widgets.Menu_Items; use Widgets.Menu_Items;
limited with Game_Views;
private with Directions;
private with Widgets.Containers.Panels.Dialogs;
private with Widgets.Containers.Panels.Popups;
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 : not null access Ked_Sprite'Class;
attributes : Assoc_Ptr );
pragma Precondition( attributes /= Associations.Nul );
private
use Directions;
use Widgets.Containers.Panels.Dialogs;
use Widgets.Containers.Panels.Popups;
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_Popup := null;
dialog : A_Dialog := null;
end record;
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 On_Focus( this : access Ked_Sprite );
procedure On_Key_Typed( this : access Ked_Sprite;
evt : not null A_Key_Typed_Event;
handled : in out Boolean );
procedure On_Mouse_Move( this : access Ked_Sprite;
evt : not null A_Mouse_Event );
procedure On_Mouse_Press( this : access Ked_Sprite;
evt : not null A_Mouse_Button_Event );
procedure On_Mouse_Release( this : access Ked_Sprite;
evt : not null A_Mouse_Button_Event );
end Widgets.Sprites.Ked;