home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 038.lha / Puzzle / setboard.mod < prev   
Encoding:
Modula Implementation  |  1987-05-17  |  5.3 KB  |  140 lines

  1. (*A$+*)
  2. IMPLEMENTATION MODULE SetBoard;
  3. FROM SYSTEM  IMPORT NULL,ADR,BYTE,ADDRESS,TSIZE;
  4. FROM Intuition IMPORT WindowPtr,NewWindow,IDCMPFlags,IDCMPFlagSet,WindowFlags,
  5.   WindowFlagSet,GadgetPtr,GadgetFlags,GadgetFlagSet,ActivationFlags,
  6.   ActivationFlagSet,Border,BorderPtr,ScreenFlags,ScreenFlagSet;
  7. FROM Windows IMPORT OpenWindow;
  8. FROM EasyGadgets IMPORT EasyBoolImageGadget;
  9. FROM Strings IMPORT String,Assign,InitStringModule;
  10. FROM MenuUtils IMPORT NewIText;
  11. FROM GraphicsLibrary IMPORT Jam1;
  12.  
  13. VAR
  14.   SetStr,PlayStr:String;
  15.   Images:ARRAY [1..22] OF INTEGER;
  16.  
  17. (* These variables are defined globally so that the programmer will not have to 
  18. allocate memory for them.  The program automatically allocates memory for
  19. them.  This does not insure that it will be chip ram, which it must be for
  20. intuition to recognize it.*)
  21.  
  22. PROCEDURE PlaceBoard(VAR MWp:WindowPtr;
  23.                      VAR Places:PlaceType);
  24.  
  25. VAR
  26.   BoardWindow:NewWindow;
  27.   RGadget:GadgetPtr;
  28.  
  29.   BEGIN
  30.     InitStringModule; (* Remember this if you use strings*)
  31.     RGadget:=EasyBoolImageGadget(NULL,3,11,16,10,ADR(Images[12]),ADR(Images[1]),
  32.       GadgetFlagSet{Ga1,GadgetImage},ActivationFlagSet{ToggleSelect,RelVerify});
  33.     RGadget^.GadgetID:=1; (*this is the best way to keep track of gadgets*)
  34.     Places[1]:=RGadget;
  35.     (*keeping an array or some other structure with gadget pointers in it is
  36.     a good idea, since searching the linked list could turn messy.*)
  37.     RGadget:=EasyBoolImageGadget(RGadget,19,11,16,10,ADR(Images[12]),
  38.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  39.       ActivationFlagSet{ToggleSelect,RelVerify});
  40.     (*If you do not set RelVerify or GadgetImmediate you will not get a gadget
  41.     message from intuition at all, ever.  Also, Release or Immediate check
  42.     the mousebutton, not the on/off state of the gadget.*)
  43.     RGadget^.GadgetID:=2;
  44.     Places[2]:=RGadget;
  45.     RGadget:=EasyBoolImageGadget(RGadget,35,11,16,10,ADR(Images[12]),
  46.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  47.       ActivationFlagSet{ToggleSelect,RelVerify});
  48.     RGadget^.GadgetID:=3;
  49.     Places[3]:=RGadget;
  50.     RGadget:=EasyBoolImageGadget(RGadget,3,21,16,10,ADR(Images[12]),
  51.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  52.       ActivationFlagSet{ToggleSelect,RelVerify});
  53.     RGadget^.GadgetID:=4;
  54.     Places[4]:=RGadget;
  55.     RGadget:=EasyBoolImageGadget(RGadget,19,21,16,10,ADR(Images[12]),
  56.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  57.       ActivationFlagSet{ToggleSelect,RelVerify});
  58.     RGadget^.GadgetID:=5;
  59.     Places[5]:=RGadget;
  60.     RGadget:=EasyBoolImageGadget(RGadget,35,21,16,10,ADR(Images[12]),
  61.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  62.       ActivationFlagSet{ToggleSelect,RelVerify});
  63.     RGadget^.GadgetID:=6;
  64.     Places[6]:=RGadget;
  65.     RGadget:=EasyBoolImageGadget(RGadget,3,31,16,10,ADR(Images[12]),
  66.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  67.       ActivationFlagSet{ToggleSelect,RelVerify});
  68.     RGadget^.GadgetID:=7;
  69.     Places[7]:=RGadget;
  70.     RGadget:=EasyBoolImageGadget(RGadget,19,31,16,10,ADR(Images[12]),
  71.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  72.       ActivationFlagSet{ToggleSelect,RelVerify});
  73.     RGadget^.GadgetID:=8;
  74.     Places[8]:=RGadget;
  75.     RGadget:=EasyBoolImageGadget(RGadget,35,31,16,10,ADR(Images[12]),
  76.       ADR(Images[1]),GadgetFlagSet{Ga1,GadgetImage},
  77.       ActivationFlagSet{ToggleSelect,RelVerify});
  78.     RGadget^.GadgetID:=9;
  79.     Places[9]:=RGadget;
  80.     Assign(SetStr,"Set Up");
  81.     RGadget:=EasyBoolImageGadget(RGadget,2,42,48,8,NULL,NULL,
  82.       GadgetFlagSet{},ActivationFlagSet{RelVerify});
  83.     RGadget^.GadgetText:=NewIText(SetStr,0,0,CARDINAL(3),CARDINAL(1));
  84.     (*Always remember that when you use text or graphic information you must
  85.     make sure the memory it resides in is allocated for it and doesn't get
  86.     trampled.  There are several ways to do this.  You can declare the 
  87.     information globally, you can use AllocRemember, New, Etc. *)
  88.     RGadget^.GadgetID:=10;
  89.     Assign(PlayStr,"Play");
  90.     RGadget:=EasyBoolImageGadget(RGadget,2,51,32,8,NULL,NULL,
  91.       GadgetFlagSet{},ActivationFlagSet{RelVerify});
  92.     RGadget^.GadgetText:=NewIText(PlayStr,0,0,CARDINAL(3),CARDINAL(1));
  93.     RGadget^.GadgetID:=11;
  94.     WITH BoardWindow DO
  95.       LeftEdge:=500;
  96.       TopEdge:=30;
  97.       Width:=55;
  98.       Height:=60;
  99.       DetailPen:=BYTE(0);
  100.       BlockPen:=BYTE(1);
  101.       Flags:=WindowFlagSet{WindowDrag,Activate,WindowClose};
  102.       IDCMPFlags:=IDCMPFlagSet{GadgetUp,CloseWindowFlag};
  103.       FirstGadget:=RGadget;
  104.       CheckMark:=NULL;
  105.       Title:=NULL;
  106.       BitMap:=NULL;
  107.       Type:=ScreenFlagSet{WBenchScreen};
  108.       (* This sets the window on the current active workbench. *)
  109.       Screen:=NULL;
  110.       (* If you opened your own custom screen this would be the pointer
  111.       to that screen *)
  112.     END;
  113.     MWp:=OpenWindow(BoardWindow);
  114.   END PlaceBoard;
  115.  
  116.   BEGIN
  117.     Images[1]:=-0001H; (* full *)
  118.     Images[2]:=-7fffH;
  119.     Images[3]:=-7c3fH;
  120.     Images[4]:=-700fH;
  121.     Images[5]:=-660fH;
  122.     Images[6]:=-600fH;
  123.     Images[7]:=-700fH;
  124.     Images[8]:=-7c3fH;
  125.     Images[9]:=-7fffH;
  126.     Images[10]:=-0001H;
  127.     Images[11]:=0000H;
  128.     Images[12]:=-0001H; (* empty *)
  129.     Images[13]:=-7fffH;
  130.     Images[14]:=-7fffH;
  131.     Images[15]:=-7fffH;
  132.     Images[16]:=-7fffH;
  133.     Images[17]:=-7fffH;
  134.     Images[18]:=-7fffH;
  135.     Images[19]:=-7fffH;
  136.     Images[20]:=-7fffH;
  137.     Images[21]:=-0001H;
  138.     Images[22]:=0000H;
  139. END SetBoard.
  140.