summaryrefslogtreecommitdiff
path: root/src/things.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/things.ads')
-rw-r--r--src/things.ads63
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;
+