#include #include #include #include #include #include extern struct Window *window; extern ULONG RangeRand(); extern struct TextAttr font; cycle(color) int color; { struct ColorMap *cm; struct ViewPort *vp; UWORD orig, r, g, b, ro, go, bo; int i; vp = ViewPortAddress( window ); cm = vp -> ColorMap; orig = GetRGB4( cm, (LONG) color ); b = (bo = (orig ) & 15); g = (go = (orig >> 4) & 15); r = (ro = (orig >> 8) & 15); for (i=0; i<1000; i++) { r = RangeRand(2L) * 15; g = RangeRand(2L) * 15; b = RangeRand(2L) * 15; SetRGB4(vp,(LONG)color,(LONG)r,(LONG)g,(LONG)b); } SetRGB4(vp,(LONG)color,(LONG)ro,(LONG)go,(LONG)bo); } #define reqW 544 #define reqH 152 #define centerX(chars) (reqW/2 - (chars)*8/2) #define centerXright(chars) (reqW - 111 - (chars)*8/2) #define centerXleft(chars) (111 - (chars)*8/2) SHORT reqborderXY[] = { 2,1, 541,1, 541,150, 2,150, 2,1 }; struct Border reqborder = { 0,0, /* LeftEdge, TopEdge */ 1,1, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 5, /* Count */ reqborderXY,/* SHORT *XY */ NULL, /* NextBorder */ }; SHORT gadborderXY[] = { 2,1, 97,1, 97,28, 2,28, 2,1 }; struct Border gadborder = { 2,1, /* LeftEdge, TopEdge */ 1,2, /* FrontPen, BackPen */ JAM2, /* DrawMode */ 5, /* Count */ gadborderXY, /* SHORT *XY */ NULL, /* NextBorder */ }; struct IntuiText gadtext = { 1,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 18,11, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "Continue", /* IText */ NULL, /* struct IntuiText *NextText */ }; struct Gadget aboutgad = { NULL, /* NextGadget */ 222,117,100,30, /* LeftEdge, TopEdge, Width, Height */ GADGHNONE, /* Flags */ ENDGADGET | TOGGLESELECT, /* Activation Flags */ REQGADGET | BOOLGADGET, /* GadgetType */ (APTR)&gadborder, /* GadgetRender */ NULL, /* SelectRender */ &gadtext, /* GadgetText */ NULL, /* MutualExclude */ NULL, /* SpecialInfo */ 0, /* GadgetID */ NULL, /* UserData */ }; struct IntuiText ab_txt8= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 20,102, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "Comments and suggestions are welcome.", /* IText */ NULL, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt7= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 20,92, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "writing it. Please feel free to share it with your friends.", /* IText */ &ab_txt8, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt6= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 20,82, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) " I hope you enjoy playing this game as much as I enjoyed", /* IText */ &ab_txt7, /* struct IntuiText *NextText */ }; struct IntuiText ab_inst3= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 20,68, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "give you a hint. Select new mazes from the menu. Good luck!", /* IText */ &ab_txt6, /* struct IntuiText *NextText */ }; struct IntuiText ab_inst2= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 20,59, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "red spot to the dark red spot. The left mouse button will", /* IText */ &ab_inst3, /* struct IntuiText *NextText */ }; struct IntuiText ab_inst1= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ 20,50, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) " Move the mouse pointer through the maze from the bright", /* IText */ &ab_inst2, /* struct IntuiText *NextText */ }; struct IntuiText ab_left2= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerXleft(19),120, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "Usenet Distribution", /* IText */ &ab_inst1, /* struct IntuiText *NextText */ }; struct IntuiText ab_left1= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerXleft(12),130, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "Spring, 1989", /* IText */ &ab_left2, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt5= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerXright(24),140, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "utoddl@ecsvax.uncecs.edu", /* IText */ &ab_left1, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt4= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerXright(20),130, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "utoddl@ecsvax.BITNET", /* IText */ &ab_txt5, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt3= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerXright(21),120, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "Author: Todd M. Lewis", /* IText */ &ab_txt4, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt2= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerX(32),35, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "The Disk Magazine for the Amiga.", /* IText */ &ab_txt3, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt1= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerX(30),25, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "First distributed on JUMPDISK,", /* IText */ &ab_txt2, /* struct IntuiText *NextText */ }; struct IntuiText ab_txt0= { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerX(33),15, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "Copyright (c) 1988, Todd M. Lewis", /* IText */ &ab_txt1, /* struct IntuiText *NextText */ }; struct IntuiText firsttext = { 3,2, /* FrontPen, BackPen */ JAM1, /* DrawMode */ centerX(27),6, /* LeftEdge, TopEdge */ &font, /* TextAttr *ITextFont */ (UBYTE *) "TML's AmigaMaze version 1.2", /* IText */ &ab_txt0, /* struct IntuiText *NextText */ }; struct Requester aboutreq; about() { struct IntuiMessage *msg; int class; InitRequester( &aboutreq ); aboutreq.LeftEdge = 4; aboutreq.TopEdge = 15; aboutreq.Width = reqW; aboutreq.Height = reqH; aboutreq.ReqGadget = &aboutgad; aboutreq.ReqText = &firsttext; aboutreq.ReqBorder = &reqborder; aboutreq.BackFill = 2; /* BLACK */ if (Request( &aboutreq, window )) { do { Wait( 1L << window->UserPort->mp_SigBit ); while (msg = (struct IntuiMessage *)GetMsg( window->UserPort )) { class = msg->Class; ReplyMsg(msg); } } while ( class != REQCLEAR ); } }