diff options
Diffstat (limited to 'src/things.ads')
-rw-r--r-- | src/things.ads | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/things.ads b/src/things.ads new file mode 100644 index 0000000..c8da450 --- /dev/null +++ b/src/things.ads @@ -0,0 +1,63 @@ + + +private with + + FLTK.Images.RGB.PNG, + Ada.Command_Line, + Ada.Directories; + + +package Things is + + + type Thing is tagged private; + + + Nothing : constant Thing; + + + Man : constant Thing; + Treasure : constant Thing; + + + procedure Draw + (This : in Thing; + X, Y : in Integer); + + + function "=" + (A, B : in Thing) + return Boolean; + + +private + + + type Thing is tagged record + Self_Image : access FLTK.Images.RGB.PNG.PNG_Image; + end record; + + + Origin : String := Ada.Directories.Containing_Directory + (Ada.Directories.Full_Name (Ada.Command_Line.Command_Name)); + Image_Dir : String := Origin & "/../share/sokoban/img"; + + + Man_Image : aliased FLTK.Images.RGB.PNG.PNG_Image := + FLTK.Images.RGB.PNG.Create (Image_Dir & "/man.png"); + Treasure_Image : aliased FLTK.Images.RGB.PNG.PNG_Image := + FLTK.Images.RGB.PNG.Create (Image_Dir & "/treasure.png"); + + + Nothing : constant Thing := + (Self_Image => null); + + + Man : constant Thing := + (Self_Image => Man_Image'Access); + Treasure : constant Thing := + (Self_Image => Treasure_Image'Access); + + +end Things; + |