home *** CD-ROM | disk | FTP | other *** search
- /* f0.c contains function calls for monopoly */
-
- /* Leave this structure definition at the top. Look at gels.h. */
- struct vInfo {
- short vx,vy; /* This VSprites velocity. */
- short id;
- };
-
- #define VUserStuff struct vInfo
-
- #include "mono:defines"
- #include "mono:xvariables"
-
- typedef struct {
- ClientFrame clientFrame;
- UBYTE foundBMHD;
- UBYTE nColorRegs;
- BitMapHeader bmHdr;
- Color4 colorMap[maxColorReg];
- /* If you want to read any other property chunks, e.g. GRAB or CAMG,
- * add fields to this record to store them. */
- } ILBMFrame;
-
- ILBMFrame iFrame, ilbmFrame;
-
- VOID freeimages()
- {
- extern USHORT *Red_chip, *Green_chip, *Blue_chip, *Yellow_chip;
-
- if (Red_chip != 0)
- FreeMem(Red_chip, sizeof(Reddata));
- if (Green_chip != 0)
- FreeMem(Green_chip, sizeof(Greendata));
- if (Blue_chip != 0)
- FreeMem(Blue_chip, sizeof(Bluedata));
- if (Yellow_chip != 0)
- FreeMem(Yellow_chip, sizeof(Yellowdata));
- }
-
- VOID mycleanup()
- {
- if (Redbob != NULL)
- {
- if (Redbob->SaveBuffer != NULL)
- {
- FreeMem(Redbob->SaveBuffer, (sizeof(SHORT)*
- Redbob->BobVSprite->Width*Redbob->BobVSprite->Height*
- Redbob->BobVSprite->Depth));
- }
- if (Redbob->BobVSprite->CollMask != NULL)
- {
- FreeMem(Redbob->BobVSprite->CollMask, (sizeof(WORD)*
- Redbob->BobVSprite->Height*Redbob->BobVSprite->Width));
- }
- if (Redbob->BobVSprite->BorderLine != NULL)
- {
- FreeMem(Redbob->BobVSprite->BorderLine,
- (sizeof(WORD)*Redbob->BobVSprite->Width));
- }
- FreeMem(Redbob->BobVSprite, sizeof(struct VSprite));
- FreeMem(Redbob, sizeof(struct Bob));
- }
- if (Greenbob != NULL)
- {
- if (Greenbob->SaveBuffer != NULL)
- {
- FreeMem(Greenbob->SaveBuffer, (sizeof(SHORT)*
- Greenbob->BobVSprite->Width*Greenbob->BobVSprite->Height*
- Greenbob->BobVSprite->Depth));
- }
- if (Greenbob->BobVSprite->CollMask != NULL)
- {
- FreeMem(Greenbob->BobVSprite->CollMask, (sizeof(WORD)*
- Greenbob->BobVSprite->Height*Greenbob->BobVSprite->Width));
- }
- if (Greenbob->BobVSprite->BorderLine != NULL)
- {
- FreeMem(Greenbob->BobVSprite->BorderLine,
- (sizeof(WORD)*Greenbob->BobVSprite->Width));
- }
- FreeMem(Greenbob->BobVSprite, sizeof(struct VSprite));
- FreeMem(Greenbob, sizeof(struct Bob));
- }
- if (Bluebob != NULL)
- {
- if (Bluebob->SaveBuffer != NULL)
- {
- FreeMem(Bluebob->SaveBuffer, (sizeof(SHORT)*
- Bluebob->BobVSprite->Width*Bluebob->BobVSprite->Height*
- Bluebob->BobVSprite->Depth));
- }
- if (Bluebob->BobVSprite->CollMask != NULL)
- {
- FreeMem(Bluebob->BobVSprite->CollMask, (sizeof(WORD)*
- Bluebob->BobVSprite->Height*Bluebob->BobVSprite->Width));
- }
- if (Bluebob->BobVSprite->BorderLine != NULL)
- {
- FreeMem(Bluebob->BobVSprite->BorderLine,
- (sizeof(WORD)*Bluebob->BobVSprite->Width));
- }
- FreeMem(Bluebob->BobVSprite, sizeof(struct VSprite));
- FreeMem(Bluebob, sizeof(struct Bob));
- }
- if (Yellowbob != NULL)
- {
- if (Yellowbob->SaveBuffer != NULL)
- {
- FreeMem(Yellowbob->SaveBuffer, (sizeof(SHORT)*
- Yellowbob->BobVSprite->Width*Yellowbob->BobVSprite->Height*
- Yellowbob->BobVSprite->Depth));
- }
- if (Yellowbob->BobVSprite->CollMask != NULL)
- {
- FreeMem(Yellowbob->BobVSprite->CollMask, (sizeof(WORD)*
- Yellowbob->BobVSprite->Height*Yellowbob->BobVSprite->Width));
- }
- if (Yellowbob->BobVSprite->BorderLine != NULL)
- {
- FreeMem(Yellowbob->BobVSprite->BorderLine,
- (sizeof(WORD)*Yellowbob->BobVSprite->Width));
- }
- FreeMem(Yellowbob->BobVSprite, sizeof(struct VSprite));
- FreeMem(Yellowbob, sizeof(struct Bob));
- }
-
- (VOID) PurgeGels(&GInfo);
- freeimages();
- } /* end of MyCleanup */
-
- VOID cleanup()
- {
- /* tBitMap planes were deallocated in DisplayPic() */
- mycleanup();
- ClearMenuStrip(boardwindow);
- if (boardwindow) CloseWindow(boardwindow);
- if (screen1) CloseScreen(screen1);
- if (IntuitionBase) CloseLibrary(IntuitionBase);
- if (GfxBase) CloseLibrary(GfxBase);
- exit(0);
- }
-
-
-
-
-
- VOID getID(mes)
- struct IntuiMessage *mes;
- {
- struct Gadget *igad;
-
- igad = (struct Gadget *) mes->IAddress;
- gagid = igad->GadgetID;
- }
-
- /* the following will prepare a message for display as IntuiText */
- VOID CMes(xcm, left, top, mesg, fpen, bpen)
- struct IntuiText *xcm;
- SHORT left, top, fpen, bpen;
- UBYTE *mesg;
- {
- xcm->FrontPen=fpen;
- xcm->BackPen=bpen;
- xcm->DrawMode=JAM1;
- xcm->LeftEdge=left;
- xcm->TopEdge=top;
- xcm->ITextFont=&TextFont;
- xcm->IText=mesg;
- xcm->NextText=NULL;
- }
-
- BOOL really(command) /* make requester to verify command */
- int command;
- {
- struct IntuiText prompt, yesprompt, noprompt, win, win_name;
- USHORT test_ahead;
-
- if (command == QUIT)
- {
- CMes(&prompt, 5, 5, "QUIT PLAYING MONOPOLY?", black, 1);
- CMes(&win, 5, 19, NULL, maroon, 1);
- CMes(&win_name, 5, 29, NULL, black, 1);
- prompt.NextText=&win;
- test_ahead=ahead();
- if (test_ahead == 5)
- win.IText=(UBYTE *)"NO WINNER A TIE EXISTS!";
- if (test_ahead != 5)
- {
- win.NextText=&win_name;
- win.IText=(UBYTE *)"THE WINNER IS:";
- if (test_ahead == 0)
- {
- win_name.IText=&name0[0];
- win_name.FrontPen=25;
- }
- if (test_ahead == 1)
- {
- win_name.IText=&name1[0];
- win_name.FrontPen=26;
- }
- if (test_ahead == 2)
- {
- win_name.IText=&name2[0];
- win_name.FrontPen=27;
- }
- if (test_ahead == 3)
- {
- win_name.IText=&name3[0];
- win_name.FrontPen=28;
- }
- }
- CMes(&yesprompt, 6, 4, "YES", green, 1);
- CMes(&noprompt, 6, 4, "NO", red, 1);
- if (AutoRequest(boardwindow, &prompt, &yesprompt, &noprompt, NULL, NULL,
- 225, 75)) return(TRUE);
- else return(FALSE);
- }
- return(FALSE);
- }
-
- VOID cleanexit(errstr)
- char *errstr;
- {
- printf("\n %s \n",errstr);
- cleanup();
- }
-
- VOID DrawGels()
- {
- SortGList(&screen1->RastPort); /* Put the list in order. */
- WaitTOF();
- DrawGList(&screen1->RastPort, &screen1->ViewPort); /* Draw 'em. */
- WaitTOF(); /* When the beam hits the top... */
- MakeScreen(screen1); /* Tell intuition to do it's stuff. */
- RethinkDisplay(); /* Does a MrgCop & LoadView. */
- }
-
-
- BOOL initimages()
- {
- extern USHORT *Red_chip, *Green_chip, *Blue_chip, *Yellow_chip;
- USHORT iter;
-
- if ((Red_chip = (USHORT *)
- AllocMem(sizeof(Reddata), MEMF_CHIP)) == 0) return(FALSE);
- if ((Green_chip = (USHORT *)
- AllocMem(sizeof(Greendata), MEMF_CHIP)) == 0) return(FALSE);
- if ((Blue_chip = (USHORT *)
- AllocMem(sizeof(Bluedata), MEMF_CHIP)) == 0) return(FALSE);
- if ((Yellow_chip = (USHORT *)
- AllocMem(sizeof(Yellowdata), MEMF_CHIP)) == 0) return(FALSE);
-
- for(iter=0; iter<35; iter++)
- Red_chip[iter] = Reddata[iter];
- for(iter=0; iter<35; iter++)
- Green_chip[iter] = Greendata[iter];
- for(iter=0; iter<35; iter++)
- Blue_chip[iter] = Bluedata[iter];
- for(iter=0; iter<35; iter++)
- Yellow_chip[iter] = Yellowdata[iter];
-
- return(TRUE);
- }
-
- VOID bob()
- {
- /* ReadyGels is in GelTools(). */
- if (ReadyGels(&GInfo, &screen1->RastPort) != 0)
- {
- mycleanup();
- Exit(-1);
- }
-
-
- /* Copy Images to chip memory. */
- if (!initimages())
- {
- mycleanup();
- Exit(-1);
- }
-
-
-
- startRX=50;
- startRY=40;
- startGX=100;
- startGY=40;
- startBX=150;
- startBY=40;
- startYX=200;
- startYY=40;
-
-
- /* First use the routines in geltools to get the bob. */
-
- if ((Redbob = (struct Bob *)MakeBob(BOBWIDTH, BOBHEIGHT, BOBDEPTH,
- Red_chip, 0x001F, 0x00, startRX,
- startRY, SAVEBACK | OVERLAY)) == 0)
- {
- mycleanup();
- Exit(-1);
- }
- Redbob->BobVSprite->VUserExt.id = 0;
- AddBob(Redbob, &screen1->RastPort);
-
- if ((Greenbob = (struct Bob *)MakeBob(BOBWIDTH, BOBHEIGHT, BOBDEPTH,
- Green_chip, 0x001F, 0x00, startGX,
- startGY, SAVEBACK | OVERLAY)) == 0)
- {
- mycleanup();
- Exit(-1);
- }
- Greenbob->BobVSprite->VUserExt.id = 1;
- AddBob(Greenbob, &screen1->RastPort);
-
- if ((ntp == 3) || (ntp == 4))
- {
- if ((Bluebob = (struct Bob *)MakeBob(BOBWIDTH, BOBHEIGHT, BOBDEPTH,
- Blue_chip, 0x001F, 0x00, startBX,
- startBY, SAVEBACK | OVERLAY)) == 0)
- {
- mycleanup();
- Exit(-1);
- }
- Bluebob->BobVSprite->VUserExt.id = 2;
- AddBob(Bluebob, &screen1->RastPort);
- }
- if (ntp == 4)
- {
- if ((Yellowbob = (struct Bob *)MakeBob(BOBWIDTH, BOBHEIGHT, BOBDEPTH,
- Yellow_chip, 0x001F, 0x00, startYX,
- startYY, SAVEBACK | OVERLAY)) == 0)
- {
- mycleanup();
- Exit(-1);
- }
- Yellowbob->BobVSprite->VUserExt.id = 3;
- AddBob(Yellowbob, &screen1->RastPort);
- }
- } /* end of bob() */
-
-
- VOID do_gag()
- {
- nhp=nhpinfo.LongInt;
- ncp=ncpinfo.LongInt;
- switch (gagid)
- {
- case GID0:
- case GID1: break;
- case GID2:
- {
- if (((nhp+ncp)<2 || (nhp+ncp)>4) || (nhp == 0))
- {
- DisplayBeep(screen1);
- break;
- }
- endnum=TRUE;
- break;
- }
- case GN0:
- case GN1:
- case GN2:
- case GN3: break;
- case GN4:
- {
- endname=TRUE;
- break;
- }
- case VN:
- {
- verifyname=TRUE;
- break;
- }
- case DN:
- {
- verifyname=TRUE;
- nameagain=TRUE;
- break;
- }
- }
- }
-
- VOID ckinfomsg()
- {
- ULONG infoclass;
- USHORT infocode;
- infoclass=0;
- infocode=0;
-
- while (infomsg=(struct IntuiMessage *)GetMsg(infowindow->UserPort))
- {
- infoclass = infomsg->Class;
- infocode = infomsg->Code;
- if (infoclass == GADGETDOWN) getID(infomsg);
- ReplyMsg(infomsg);
- if ( (infoclass == RAWKEY) && (infocode == HELP) ) instruction();
- if (infoclass == GADGETDOWN) do_gag();
- }
- }
-
-
- VOID CreateMenuItem(name, item, next, sub, left, top, wide, flags)
- UBYTE *name;
- USHORT left, top, wide;
- ULONG flags;
- struct MenuItem *item, *next, *sub;
- {
- item->NextItem=next;
- item->LeftEdge=left;
- item->TopEdge=top;
- item->Width=wide;
- item->Height=10;
- item->Flags=ITEMTEXT | HIGHBOX | ITEMENABLED | flags;
- item->MutualExclude=NULL;
- item->ItemFill=(APTR)name;
- item->SelectFill=NULL;
- item->Command=NULL;
- item->SubItem=sub;
- }
-
-
-
- /** getBitMap() ***********************************************
- *
- * Open screen or temp bitmap.
- * Returns ptr destBitMap or 0 = error
- *
- **************************************************************/
- struct BitMap *getBitMap(ptilbmFrame)
- ILBMFrame *ptilbmFrame;
- {
- int i, nPlanes, plsize;
- SHORT sWidth, sHeight, dWidth, dHeight;
- struct BitMap *destBitMap;
-
- sWidth = ptilbmFrame->bmHdr.w;
- sHeight = ptilbmFrame->bmHdr.h;
- dWidth = ptilbmFrame->bmHdr.pageWidth;
- dHeight = ptilbmFrame->bmHdr.pageHeight;
- nPlanes = MIN(ptilbmFrame->bmHdr.nPlanes, EXDepth);
-
- for (i = 0; i < ptilbmFrame->nColorRegs; i++)
- {
- allBgColor[i] = ptilbmFrame->colorMap[0];
- }
-
- ns.Width = dWidth;
- ns.Height = dHeight;
- ns.Depth = nPlanes;
-
- if (ptilbmFrame->bmHdr.pageWidth <= 320)
- ns.ViewModes = SPRITES;
- else
- ns.ViewModes = HIRES | SPRITES;
-
- if (ptilbmFrame->bmHdr.pageHeight > 200)
- ns.ViewModes |= LACE | SPRITES;
-
- if ((screen1=(struct Screen *)OpenScreen(&ns))==NULL) return(0);
-
- vport1 = &screen1->ViewPort;
- LoadRGB4(vport1, &allBgColor[0], ptilbmFrame->nColorRegs);
-
- nw.Width = dWidth;
- nw.Height = dHeight;
- nw.Screen = screen1;
-
- if ((boardwindow=(struct Window *)OpenWindow(&nw))==NULL) return(0);
- rportboard=boardwindow->RPort;
-
- ShowTitle(screen1, FALSE);
-
- if ((sWidth == dWidth) && (sHeight == dHeight))
- {
- destBitMap = (struct BitMap *)screen1->RastPort.BitMap;
- }
- else
- {
- InitBitMap( &tBitMap,
- nPlanes,
- sWidth,
- sHeight);
-
- plsize = RowBytes(ptilbmFrame->bmHdr.w) * ptilbmFrame->bmHdr.h;
- if (tBitMap.Planes[0] =
- (PLANEPTR)AllocMem(nPlanes * plsize, MEMF_CHIP))
- {
- for (i = 1; i < nPlanes; i++)
- tBitMap.Planes[i] = (PLANEPTR)tBitMap.Planes[0] + plsize*i;
- destBitMap = &tBitMap;
- }
- else
- {
- return(0); /* can't allocate temp BitMap */
- }
- }
- return(destBitMap); /* destBitMap allocated */
- }
-
-
- /** DisplayPic() **********************************************
- *
- * Display loaded bitmap. If tBitMap, first transfer to screen.
- *
- **************************************************************/
- DisplayPic(ptilbmFrame)
- ILBMFrame *ptilbmFrame;
- {
- int i, row, byte, nrows, nbytes;
- struct BitMap *tbp, *sbp; /* temp and screen BitMap ptrs */
- UBYTE *tpp, *spp; /* temp and screen plane ptrs */
-
- if (tBitMap.Planes[0]) /* transfer from tBitMap if nec. */
- {
- tbp = &tBitMap;
- sbp = screen1->RastPort.BitMap;
- nrows = MIN(tbp->Rows, sbp->Rows);
- nbytes = MIN(tbp->BytesPerRow, sbp->BytesPerRow);
-
- for (i = 0; i < sbp->Depth; i++)
- {
- tpp = (UBYTE *)tbp->Planes[i];
- spp = (UBYTE *)sbp->Planes[i];
- for (row = 0; row < nrows; row++)
- {
- tpp = tbp->Planes[i] + (row * tbp->BytesPerRow);
- spp = sbp->Planes[i] + (row * sbp->BytesPerRow);
- for (byte = 0; byte < nbytes; byte++)
- {
- *spp++ = *tpp++;
- }
- }
- }
- /* Can now deallocate the temp BitMap */
- FreeMem(tBitMap.Planes[0],
- tBitMap.BytesPerRow * tBitMap.Rows * tBitMap.Depth);
- }
-
- vport1 = &screen1->ViewPort;
- LoadRGB4(vport1, ptilbmFrame->colorMap, ptilbmFrame->nColorRegs);
-
- return(0);
- }
-
-
- /** GetLiILBM() *************************************************
- *
- * Called via ReadPicture to handle every LIST encountered in an
- * IFF file.
- *
- ****************************************************************/
- #if Fancy
- IFFP GetLiILBM(parent)
- GroupContext *parent;
- {
- ILBMFrame newFrame; /* allocate a new Frame */
-
- newFrame = *(ILBMFrame *)parent->clientFrame; /* copy parent frame */
-
- return( ReadIList(parent, (ClientFrame *)&newFrame) );
- }
- #endif
-
-
- /** GetPrILBM() **************************************************
- *
- * Called via ReadPicture to handle every PROP encountered in an
- * IFF file. Reads PROPs ILBM and skips all others.
- *
- ****************************************************************/
- #if Fancy
- IFFP GetPrILBM(parent)
- GroupContext *parent;
- {
- /*compilerBug register*/ IFFP iffp;
- GroupContext propContext;
- ILBMFrame *ilbmFrame = (ILBMFrame *)parent->clientFrame;
-
- if (parent->subtype != ID_ILBM)
- return(IFF_OKAY); /* just continue scaning the file */
-
- iffp = OpenRGroup(parent, &propContext);
- CheckIFFP();
-
- do switch (iffp = GetPChunkHdr(&propContext))
- {
- case ID_BMHD:
- {
- ilbmFrame->foundBMHD = TRUE;
- iffp = GetBMHD(&propContext, &ilbmFrame->bmHdr);
- break;
- }
- case ID_CMAP:
- {
- ilbmFrame->nColorRegs = maxColorReg; /* room for this many */
- iffp = GetCMAP( &propContext, (WORD *)ilbmFrame->colorMap,
- &ilbmFrame->nColorRegs);
- break;
- }
-
- } while (iffp >= IFF_OKAY);
- /* loop if valid ID of ignored chunk or
- * subrtn returned IFF_OKAY (no errors).*/
-
- CloseRGroup(&propContext);
- return(iffp == END_MARK ? IFF_OKAY : iffp);
- }
- #endif
-
-
- /** GetFoILBM() *************************************************
- *
- * Called via ReadPicture to handle every FORM encountered in an IFF
- * file. Reads FORMs ILBM and skips all others.
- * Inside a FORM ILBM, it stops once it reads a BODY. It complains if
- * it finds no BODY or if it has no BMHD to decode the BODY.
- *
- * Once we find a BODY chunk, we'll allocate the BitMap and read the
- * image.
- *
- * Modified by C. Scheppner: ilbmFrame moved above main making it
- * global so main can call DisplayPic()
- *
- *****************************************************************/
- IFFP GetFoILBM(parent)
- GroupContext *parent;
- {
- IFFP iffp;
- GroupContext formContext;
- BYTE buffer[bufSz];
- struct BitMap *destBitMap;
-
- if (parent->subtype != ID_ILBM)
- return(IFF_OKAY); /* just continue scaning the file */
-
- ilbmFrame = *(ILBMFrame *)parent->clientFrame;
- iffp = OpenRGroup(parent, &formContext);
- CheckIFFP();
-
- do switch (iffp = GetFChunkHdr(&formContext))
- {
- case ID_BMHD:
- {
- ilbmFrame.foundBMHD = TRUE;
- iffp = GetBMHD(&formContext, &ilbmFrame.bmHdr);
- break;
- }
- case ID_CMAP:
- {
- ilbmFrame.nColorRegs = maxColorReg;
- /* we have room for this many */
-
- iffp = GetCMAP(&formContext, (WORD *)ilbmFrame.colorMap,
- &ilbmFrame.nColorRegs);
- break;
- }
- case ID_BODY:
- {
- if (!ilbmFrame.foundBMHD) return(BAD_FORM);
- /* No BMHD chunk! */
-
- if(destBitMap=(struct BitMap *)getBitMap(&ilbmFrame))
- {
- iffp = GetBODY( &formContext,
- destBitMap,
- NULL,
- &ilbmFrame.bmHdr,
- buffer,
- bufSz);
- if (iffp == IFF_OKAY) iffp = IFF_DONE; /* Eureka */
- }
- else
- iffp = CLIENT_ERROR; /* not enough RAM for the bitmap */
- break;
- }
-
- case END_MARK:
- {
- iffp = BAD_FORM;
- break;
- }
-
- } while (iffp >= IFF_OKAY);
- /* loop if valid ID of ignored chunk or a
- * subroutine returned IFF_OKAY (no errors).*/
-
- if (iffp != IFF_DONE) return(iffp);
-
- CloseRGroup(&formContext);
- return(iffp);
- }
-
- /** Notes on extending GetFoILBM *******************************
- *
- * To read more kinds of chunks, just add clauses to the switch statement.
- * To read more kinds of property chunks (GRAB, CAMG, etc.) add clauses to
- * the switch statement in GetPrILBM, too.
- *
- * To read a FORM type that contains a variable number of data chunks--e.g.
- * a FORM FTXT with any number of CHRS chunks--replace the ID_BODY case with
- * an ID_CHRS case that doesn't set iffp = IFF_DONE, and make the END_MARK
- * case do whatever cleanup you need.
- *
- ****************************************************************/
-
-
- /** ReadPicture() ************************************************
- *
- * Read a picture from an IFF file, given a file handle open for reading.
- *
- * Modified by Carolyn Scheppner CBM 03-86
- * iFrame made global (above main)
- * Close(file) moved to main
- *
- *****************************************************************/
- IFFP ReadPicture(file)
- LONG file;
- {
- IFFP iffp = IFF_OKAY;
-
- #if Fancy
- iFrame.clientFrame.getList = GetLiILBM;
- iFrame.clientFrame.getProp = GetPrILBM;
- #else
- iFrame.clientFrame.getList = SkipGroup;
- iFrame.clientFrame.getProp = SkipGroup;
- #endif
- iFrame.clientFrame.getForm = GetFoILBM;
- iFrame.clientFrame.getCat = ReadICat ;
-
- /* Initialize the top-level client frame's property settings to the
- * program-wide defaults. This example just records that we haven't read
- * any BMHD property or CMAP color registers yet. For the color map, that
- * means the default is to leave the machine's color registers alone.
- * If you want to read a property like GRAB, init it here to (0, 0). */
-
-
- iFrame.foundBMHD = FALSE;
- iFrame.nColorRegs = 0;
-
- iffp = ReadIFF(file, (ClientFrame *)&iFrame);
- return(iffp);
- }
-
- VOID fill_instruct_text()
- {
- int iter, j;
-
- /* these are the text lines for MONOPOLY computer instructions
-
- sample max line:
- instructline[X]="123456789012345678901234567890123456Abc" */
-
- /* find-instructions */
-
- instructline[0]=" ";
- instructline[1]=" THE AMIGA SIMULATION OF";
- instructline[2]=" Parker Brothers' original ";
- instructline[3]=" MONOPOLY";
- instructline[4]=" ";
- instructline[5]=" ";
- instructline[6]=" A game for two to four players.";
- instructline[7]=" ";
- instructline[8]=" Use the scroll and page gadgets";
- instructline[9]="to move through these instructions.";
- instructline[10]="Use the `close window' gadget to exit";
- instructline[11]="these instructions.";
- instructline[12]=" ";
- instructline[13]=" This game uses menus and gadgets";
- instructline[14]="to accomplish all game activities.";
- instructline[15]="The <HELP> key displays these";
- instructline[16]="directions at almost any time. You";
- instructline[17]="may roll the dice by clicking the left";
- instructline[18]="mouse button with the pointer over the";
- instructline[19]="dice cup at the bottom of the board's";
- instructline[20]="center. The computer takes care of all";
- instructline[21]="banking functions, rolls your dice,";
- instructline[22]="moves your token, pays and collects";
- instructline[23]="rent, and displays all information.";
- instructline[24]=" ";
- instructline[25]=" The PROJECT menu gives you five";
- instructline[26]="options, Change Token Colors, New Game,";
- instructline[27]="Old Game, Save Game, and QUIT. You";
- instructline[28]="will get a VERIFY requester any time";
- instructline[29]="your command would destroy any unsaved";
- instructline[30]="game data. Any time a player may roll,";
- instructline[31]="you may choose a command from the";
- instructline[32]="PROJECT menu.";
- instructline[33]=" To modify the colors of the";
- instructline[34]="tokens, choose the first menu option.";
- instructline[35]="This brings up a color-change requester";
- instructline[36]="allowing you to monitor your changes.";
- instructline[37]="The New Game command will start a new";
- instructline[38]="game (after the VERIFY requester.) You";
- instructline[39]="may restore a previously saved game";
- instructline[40]="(after getting the VERIFY requester)";
- instructline[41]="using Old Game, which will bring up a";
- instructline[42]="file requester. Save Game will also";
- instructline[43]="bring up a file requester. The last";
- instructline[44]="command, QUIT, will bring up the VERIFY";
- instructline[45]="requester while showing the name of the";
- instructline[46]="player with the highest net worth.";
- instructline[47]=" ";
- instructline[48]=" The next menu, TRANSACTIONS,";
- instructline[49]="contains commands available at";
- instructline[50]="various times. The first, Build House,";
- instructline[51]="has the players' names as sub-menus.";
- instructline[52]="Players with `ghosted' names have no";
- instructline[53]="monopolies upon which to build. After";
- instructline[54]="selecting the proper name, you will be";
- instructline[55]="instructed to use the menu to choose a";
- instructline[56]="property upon which to build a house.";
- instructline[57]="Once again, `ghosted' properties are";
- instructline[58]="not available for construction, to";
- instructline[59]="the named player. The next command,";
- instructline[60]="Sell House, follows the previous";
- instructline[61]="command's format, and allows you to";
- instructline[62]="remove any or all houses or hotels";
- instructline[63]="(reselling them to the bank.) Of";
- instructline[64]="course, you will take a loss!";
- instructline[65]="Next, Mortgage Property, working";
- instructline[66]="similarly, allows you to borrow";
- instructline[67]="money from the bank. Property";
- instructline[68]="MAY NOT BE MORTGAGED when there";
- instructline[69]="is a house or hotel upon it. ALL";
- instructline[70]="buildings must be sold first! Rent";
- instructline[71]="is not collected on mortgaged property.";
- instructline[72]="Lift Mortgage (same command format),";
- instructline[73]="allows you to repay the money borrowed";
- instructline[74]="with a mortgage. You will pay ten";
- instructline[75]="percent (10%) interest, plus the amount";
- instructline[76]="of the loan. You will collect rent the";
- instructline[77]="next time an opponent lands on this";
- instructline[78]="property.";
- instructline[79]=" The last two commands give you";
- instructline[80]="access to important information, though";
- instructline[81]="no action can be taken with these";
- instructline[82]="commands. Review Property gives you";
- instructline[83]="information about all the properties.";
- instructline[84]="View Title Deeds brings up a notice to";
- instructline[85]="use the menu for access to a specific";
- instructline[86]="Title Deed. The ADJACENT menu allows";
- instructline[87]="you to `page' through the deeds, in";
- instructline[88]="the order in which they appear on the";
- instructline[89]="board. It also allows access to your";
- instructline[90]="bank balance and lets you stop";
- instructline[91]="examining deeds. The PROPERTIES";
- instructline[92]="menu shows color groups with";
- instructline[93]="property names as sub-menus, select";
- instructline[94]="the name of the deed you wish";
- instructline[95]="to review. When the deed appears";
- instructline[96]="the current rent value will be shown";
- instructline[97]="in red. If the property is mortgaged,";
- instructline[98]="the last line will show this";
- instructline[99]="information.";
- instructline[100]=" The next menu, DEALS, can be used";
- instructline[101]="at many times. Offer To Sell allows";
- instructline[102]="you to put an UNDEVELOPED property";
- instructline[103]="up for auction. All players will";
- instructline[104]="have the option of bidding until";
- instructline[105]="satisfied, you will have the option";
- instructline[106]="of accepting any bid, or none at all.";
- instructline[107]="Offer To Buy lets you make offers";
- instructline[108]="on any UNDEVELOPED piece of property";
- instructline[109]="owned by another player. Both of the";
- instructline[110]="Offer To... commands work in the same";
- instructline[111]="manner. You are first instructed to";
- instructline[112]="choose an offeror's name from the";
- instructline[113]="NAME menu (clicking on the CONTINUE";
- instructline[114]="gadget will end the trading session),";
- instructline[115]="then you will be able to select an";
- instructline[116]="offering from the ASSET menu and enter";
- instructline[117]="a bid. Clicking on the NO gadget will";
- instructline[118]="abort the trade at any time, the YES";
- instructline[119]="gadget will signify your approval of";
- instructline[120]="the trade information. If no asset";
- instructline[121]="has been selected from the menu, the";
- instructline[122]="YES gadget will NOT work. BE WARNED,";
- instructline[123]="the dollar gadget ALWAYS contains the";
- instructline[124]="most recently entered figure, insure";
- instructline[125]="that the information for BUYER, SELLER";
- instructline[126]="and AMOUNT are correct BEFORE";
- instructline[127]="finalizing the trade. The last option";
- instructline[128]="under DEALS is Examine Bankroll. This";
- instructline[129]="option displays your cash-on-hand, or";
- instructline[130]="bank balance. Examine Bankroll will";
- instructline[131]="be found in a number of menus, but";
- instructline[132]="will NOT be available to a player";
- instructline[133]="landing on the Income Tax property.";
- instructline[134]=" The final menu, ROLL, controls the";
- instructline[135]="toss of the dice. Roll Dice does just";
- instructline[136]="that. When IN JAIL, you will have";
- instructline[137]="access to the option Get Out Free only";
- instructline[138]="if you have a GET-OUT-OF-JAIL-FREE";
- instructline[139]="card. The third, Roll Doubles, lets";
- instructline[140]="you attempt to roll a pair of doubles,";
- instructline[141]="thereby escaping jail and advancing";
- instructline[142]="the amount shown on the dice. You will";
- instructline[143]="have the option of rolling doubles at";
- instructline[144]="most three times. From JAIL, you may";
- instructline[145]="choose Pay $50, paying your fine and";
- instructline[146]="getting to roll and advance.";
- instructline[147]=" ";
- instructline[148]=" When you land on an un-owned";
- instructline[149]="property you will see some information";
- instructline[150]="about that property and others in it's";
- instructline[151]="group. The menus will give access to";
- instructline[152]="other information and two gadgets will";
- instructline[153]="offer you the option of purchasing the";
- instructline[154]="property or not. If you select YES,";
- instructline[155]="the computer will check your bank";
- instructline[156]="balance; if you have funds to cover the";
- instructline[157]="purchase, the title will be in your";
- instructline[158]="name and your bank balance will be";
- instructline[159]="reduced by the purchase price. If you";
- instructline[160]="select NO, the property will be put";
- instructline[161]="up for immediate auction. If `NO BIDS'";
- instructline[162]="is selected play continues with no one";
- instructline[163]="gaining ownership of the property.";
- instructline[164]="Any player, including the player";
- instructline[165]="landing on the property, may bid on the";
- instructline[166]="property -- there is no minimum bid.";
- instructline[167]="After bidding is concluded, FIRST enter";
- instructline[168]="the amount of the winning bid in the";
- instructline[169]="dollar gadget (use the mouse to select";
- instructline[170]="the gadget, delete the current entry,";
- instructline[171]="then enter the new amount.) LAST,";
- instructline[172]="select the winning player's name";
- instructline[173]="from the menu. This menu selection";
- instructline[174]="will bring up a verification window";
- instructline[175]="showing the property's name, the";
- instructline[176]="buyer's name, and the final bid.";
- instructline[177]="CAREFULLY check all information for";
- instructline[178]="accuracy, then select YES if";
- instructline[179]="everything is correct, NO if changes";
- instructline[180]="need to be made.";
- instructline[181]=" Any time your activity causes";
- instructline[182]="your bank balance to drop below zero";
- instructline[183]="you will see an overdrawn requester.";
- instructline[184]="CAUTION!!! IF YOU CLOSE THIS WINDOW";
- instructline[185]="BEFORE OBTAINING FUNDS YOU MAY BE";
- instructline[186]="REMOVED FROM THE GAME IMMEDIATELY!";
- instructline[187]="ONLY when buying a property upon";
- instructline[188]="which you have JUST LANDED, building";
- instructline[189]="houses or hotels, or lifting a";
- instructline[190]="mortgage will you be able to close";
- instructline[191]="this overdrawn window safely! Every";
- instructline[192]="other time, closing the window will";
- instructline[193]="be an act of ultimate submission,";
- instructline[194]="bringing up the QUIT GAME requester.";
- instructline[195]="If you select YES you will leave";
- instructline[196]="the game and all your assets will be";
- instructline[197]="turned over to the player or bank";
- instructline[198]="to whom you owe money. If you select";
- instructline[199]="NO you will be given further chance";
- instructline[200]="to raise money.";
- instructline[201]=" --end of instructions-- ";
-
- /* must add all instructions for other things!! */
- /* if adding lines must recompile all files with reference to MAX_LINE
- i.e. f18.c */
-
- instructIT[0].FrontPen=dk_blue;
- instructIT[0].BackPen=lt_blue;
- instructIT[0].DrawMode=JAM1;
- instructIT[0].ITextFont=NULL;
- instructIT[0].IText=NULL;
- instructIT[0].NextText=NULL;
- instructIT[0].LeftEdge=3;
- instructIT[0].TopEdge=15;
-
- for (iter=0; iter<SHOW_LINES; iter++) instructIT[iter]=instructIT[0];
- for (iter=0; iter<SHOW_LINES-1; iter++)
- instructIT[iter].NextText=&instructIT[iter+1];
- for (iter=0; iter<SHOW_LINES; iter++)
- instructIT[iter].IText=instructline[iter];
- for (iter=1, j=15; iter<SHOW_LINES; iter++)
- instructIT[iter].TopEdge=j+=10;
- }
-