with Tools; use Tools;
private with Ada.Strings.Unbounded;
private with Widgets.Simple_Key_Listeners;
private with Widgets.Buttons;
private with Widgets.Buttons.Simple_Listeners;
private with Widgets.Buttons.Groups;
private with Widgets.Buttons.Groups.Simple_Listeners;
private with Widgets.Menu_Items.Simple_Listeners;
pragma Elaborate_All( Widgets.Simple_Key_Listeners );
pragma Elaborate_All( Widgets.Buttons.Simple_Listeners );
pragma Elaborate_All( Widgets.Buttons.Groups.Simple_Listeners );
pragma Elaborate_All( Widgets.Menu_Items.Simple_Listeners );
package Game_Views.Ked is
type Dialog_Action is ( DA_None, DA_New, DA_Open, DA_Import, DA_Quit, DA_Save );
type Ked_View is new Game_View with private;
type A_Ked_View is access all Ked_View'Class;
procedure Do_Dialog_Action( this : not null access Ked_View'Class;
action : Dialog_Action;
saveChanges : Boolean );
procedure Do_Dialog_Action( this : not null access Ked_View'Class;
saveChanges : Boolean );
function Get_Filename( this : not null access Ked_View'Class ) return String;
function Get_Tool( this : not null access Ked_View'Class ) return Tool_Type;
procedure Save_World( this : not null access Ked_View'Class; filename : String );
pragma Precondition( filename'Length > 0 );
private
use Ada.Strings.Unbounded;
use Widgets.Buttons;
use Widgets.Buttons.Groups;
type Ked_View is new Game_View with
record
loaded : Boolean := False;
modified : Boolean := False;
filename : Unbounded_String;
gridsnap : Boolean := True;
paletteGrp,
layerGrp : A_Button_Group := null;
nextAction : Dialog_Action := DA_None;
paletteOn : Boolean := False;
tool : A_Tool := null;
end record;
procedure Construct( this : access Ked_View;
display : not null A_Allegro_Display );
procedure Delete( this : in out Ked_View );
procedure Handle_Event( this : access Ked_View;
evt : in out A_Event;
resp : out Response_Type );
pragma Precondition( evt /= null );
procedure Initialize_Widgets( this : access Ked_View;
win : not null A_Window );
function Is_World_Loaded( this : not null access Ked_View'Class ) return Boolean;
procedure On_Close_Window( this : access Ked_View;
allowed : in out Boolean );
procedure On_Initialize( this : access Ked_View );
procedure On_Finalize( this : access Ked_View );
procedure On_Game_Paused( this : access Ked_View; paused : Boolean );
procedure On_World_Property_Changed( this : access Ked_View;
name : String;
value : Value_Ptr'Class);
package Button_Listeners is new Widgets.Buttons.Simple_Listeners(Ked_View);
use Button_Listeners;
package Button_Group_Listeners is new Widgets.Buttons.Groups.Simple_Listeners(Ked_View);
use Button_Group_Listeners;
package Key_Listeners is new Widgets.Simple_Key_Listeners(Ked_View);
use Key_Listeners;
package Menu_Listeners is new Widgets.Menu_Items.Simple_Listeners(Ked_View);
use Menu_Listeners;
end Game_Views.Ked;