1 line
17 KiB
C
Executable File
1 line
17 KiB
C
Executable File
/*============================================================*/
|
|
/*============================================================*/
|
|
/*== ==*/
|
|
/*== Main Window Routines ==*/
|
|
/*== ==*/
|
|
/*============================================================*/
|
|
/*============================================================*/
|
|
|
|
|
|
/*======================================================== Includes */
|
|
|
|
#include "Globals.h"
|
|
#include "UnivUtilities.h"
|
|
#include "MainWindow.h"
|
|
#include "Render.h"
|
|
|
|
|
|
/*======================================================== Functions */
|
|
/*======================================================== EraseMenuBarRect */
|
|
|
|
void EraseMenuBarRect (void)
|
|
|
|
{
|
|
RgnHandle newVis;
|
|
GrafPtr wasPort;
|
|
Rect theRect;
|
|
Point thePoint;
|
|
|
|
GetPort(&wasPort);
|
|
SetPort((GrafPtr)mainWndo);
|
|
GetOrigin(&thePoint);
|
|
SetOrigin(0, 0);
|
|
|
|
theRect = screenBits.bounds;
|
|
theRect.bottom = theRect.top + wasMenuBarHeight;
|
|
|
|
newVis = NewRgn();
|
|
RectRgn(newVis, &theRect);
|
|
|
|
UnionRgn(mainWndo->visRgn, newVis, mainWndo->visRgn);
|
|
|
|
if (isColor)
|
|
CopyBits(&((GrafPtr)offCWorkPtr)->portBits, &(((GrafPtr)mainWndo)->portBits),
|
|
&theRect, &theRect, srcCopy, kNilPointer);
|
|
else
|
|
CopyBits(&offWorkBits, &(mainWndo->portBits), &theRect, &theRect,
|
|
srcCopy, kNilPointer);
|
|
|
|
DisposeRgn(newVis);
|
|
SetOrigin(thePoint.h, thePoint.v);
|
|
SetPort((GrafPtr)wasPort);
|
|
}
|
|
|
|
|
|
/*======================================================== FixVisRegion */
|
|
|
|
void FixVisRegion (void)
|
|
|
|
{
|
|
RgnHandle newVis;
|
|
GrafPtr wasPort;
|
|
Rect theRect;
|
|
Point thePoint;
|
|
|
|
GetPort(&wasPort);
|
|
SetPort((GrafPtr)mainWndo);
|
|
GetOrigin(&thePoint);
|
|
SetOrigin(0, 0);
|
|
|
|
theRect = screenBits.bounds;
|
|
theRect.top += wasMenuBarHeight;
|
|
|
|
newVis = NewRgn();
|
|
RectRgn(newVis, &theRect);
|
|
|
|
SectRgn(mainWndo->visRgn, newVis, mainWndo->visRgn);
|
|
|
|
DisposeRgn(newVis);
|
|
SetOrigin(thePoint.h, thePoint.v);
|
|
SetPort((GrafPtr)wasPort);
|
|
}
|
|
|
|
/*======================================================== LoadBackgroundPict */
|
|
|
|
void LoadBackgroundPict (void)
|
|
|
|
{
|
|
Rect pictRect;
|
|
PicHandle thePict;
|
|
|
|
if (isColor)
|
|
{
|
|
SetPort((GrafPtr)offCBackPtr);
|
|
|
|
if (displayMode == kDisplay13Inch)
|
|
thePict = GetPicture(rArenaPictLg4BitID);
|
|
else
|
|
thePict = GetPicture(rArenaPictSm4BitID);
|
|
|
|
if (thePict != kNilPointer)
|
|
{
|
|
HLock((Handle)thePict);
|
|
pictRect = (**thePict).picFrame;
|
|
DrawPicture(thePict, &pictRect);
|
|
HUnlock((Handle)thePict);
|
|
ReleaseResource((Handle)thePict);
|
|
}
|
|
else
|
|
DeathError(kErrNoPictRsrc);
|
|
}
|
|
else
|
|
{
|
|
SetPort((GrafPtr)offBackPtr);
|
|
|
|
if (displayMode == kDisplay13Inch)
|
|
thePict = GetPicture(rArenaPictLg1BitID);
|
|
else
|
|
thePict = GetPicture(rArenaPictSm1BitID);
|
|
|
|
if (thePict != kNilPointer)
|
|
{
|
|
HLock((Handle)thePict);
|
|
pictRect = (**thePict).picFrame;
|
|
DrawPicture(thePict, &pictRect);
|
|
HUnlock((Handle)thePict);
|
|
ReleaseResource((Handle)thePict);
|
|
}
|
|
else
|
|
DeathError(kErrNoPictRsrc);
|
|
}
|
|
}
|
|
|
|
|
|
/*======================================================== UpdateGoalPicts */
|
|
|
|
void UpdateGoalPicts (Boolean drawToMain)
|
|
|
|
{
|
|
#define kBackBoardHeight 20
|
|
RGBColor theRGBColor;
|
|
Rect tempRect;
|
|
RgnHandle leftRgn, rightRgn, tempRgn;
|
|
GrafPtr wasPort;
|
|
|
|
LoadBackgroundPict();
|
|
|
|
leftRgn = kNilPointer;
|
|
rightRgn = kNilPointer;
|
|
|
|
if (arenaSize == kSmallArena)
|
|
{
|
|
leftRgn = NewRgn(); /* define left & right goal regions for small arena */
|
|
OpenRgn();
|
|
MoveTo(6, 174);
|
|
LineTo(14, 138);
|
|
LineTo(39, 104);
|
|
LineTo(78, 76);
|
|
LineTo(132, 53);
|
|
LineTo(191, 40);
|
|
LineTo(256, 34);
|
|
LineTo(256, 34 - kBackBoardHeight);
|
|
LineTo(191, 40 - kBackBoardHeight);
|
|
LineTo(132, 53 - kBackBoardHeight);
|
|
LineTo(78, 76 - kBackBoardHeight);
|
|
LineTo(39, 104 - kBackBoardHeight);
|
|
LineTo(14, 138 - kBackBoardHeight);
|
|
LineTo(6, 174 - kBackBoardHeight);
|
|
LineTo(6, 174);
|
|
CloseRgn(leftRgn);
|
|
|
|
rightRgn = NewRgn();
|
|
OpenRgn();
|
|
MoveTo(512 - 6, 174);
|
|
LineTo(512 - 14, 138);
|
|
LineTo(512 - 39, 104);
|
|
LineTo(512 - 78, 76);
|
|
LineTo(512 - 132, 53);
|
|
LineTo(512 - 191, 40);
|
|
LineTo(512 - 256, 34);
|
|
LineTo(512 - 256, 34 - kBackBoardHeight);
|
|
LineTo(512 - 191, 40 - kBackBoardHeight);
|
|
LineTo(512 - 132, 53 - kBackBoardHeight);
|
|
LineTo(512 - 78, 76 - kBackBoardHeight);
|
|
LineTo(512 - 39, 104 - kBackBoardHeight);
|
|
LineTo(512 - 14, 138 - kBackBoardHeight);
|
|
LineTo(512 - 6, 174 - kBackBoardHeight);
|
|
LineTo(512 - 6, 174);
|
|
CloseRgn(rightRgn);
|
|
}
|
|
else
|
|
{
|
|
leftRgn = NewRgn(); /* define left & right goal regions for large arena */
|
|
OpenRgn();
|
|
MoveTo(12, 250);
|
|
LineTo(22, 203);
|
|
LineTo(53, 158);
|
|
LineTo(102, 119);
|
|
LineTo(166, 89);
|
|
LineTo(240, 70);
|
|
LineTo(320, 64);
|
|
LineTo(320, 64 - kBackBoardHeight);
|
|
LineTo(240, 70 - kBackBoardHeight);
|
|
LineTo(166, 89 - kBackBoardHeight);
|
|
LineTo(102, 119 - kBackBoardHeight);
|
|
LineTo(53, 158 - kBackBoardHeight);
|
|
LineTo(22, 203 - kBackBoardHeight);
|
|
LineTo(12, 250 - kBackBoardHeight);
|
|
LineTo(12, 250);
|
|
CloseRgn(leftRgn);
|
|
|
|
rightRgn = NewRgn();
|
|
OpenRgn();
|
|
MoveTo(640 - 12, 250);
|
|
LineTo(640 - 22, 203);
|
|
LineTo(640 - 53, 158);
|
|
LineTo(640 - 102, 119);
|
|
LineTo(640 - 166, 89);
|
|
LineTo(640 - 240, 70);
|
|
LineTo(640 - 320, 64);
|
|
LineTo(640 - 320, 64 - kBackBoardHeight);
|
|
LineTo(640 - 240, 70 - kBackBoardHeight);
|
|
LineTo(640 - 166, 89 - kBackBoardHeight);
|
|
LineTo(640 - 102, 119 - kBackBoardHeight);
|
|
LineTo(640 - 53, 158 - kBackBoardHeight);
|
|
LineTo(640 - 22, 203 - kBackBoardHeight);
|
|
LineTo(640 - 12, 250 - kBackBoardHeight);
|
|
LineTo(640 - 12, 250);
|
|
CloseRgn(rightRgn);
|
|
}
|
|
|
|
|
|
if (arenaSize == kSmallArena)
|
|
{
|
|
switch (leftGoalLeague)
|
|
{
|
|
case kLittleLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 11, 0, 208, 384); /* A, 0, D, 384 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 34, 0, 140, 384); /* B, 0, C, 384 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kJuniorVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 14, 0, 188, 384); /* A, 0, D, 384 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 40, 0, 132, 384); /* B, 0, C, 384 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 19, 0, 173, 384); /* A, 0, D, 384 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 50, 0, 113, 384); /* B, 0, C, 384 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kMinorLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 22, 0, 166, 384); /* A, 0, D, 384 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 55, 0, 104, 384); /* B, 0, C, 384 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kProfessional:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 27, 0, 154, 384); /* A, 0, D, 384 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 69, 0, 82, 384); /* B, 0, C, 384 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (leftGoalLeague)
|
|
{
|
|
case kLittleLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 20, 0, 246, 480); /* A, 0, D, 480 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 47, 0, 174, 480); /* B, 0, C, 480 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kJuniorVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 25, 0, 230, 480); /* A, 0, D, 480 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 58, 0, 158, 480); /* B, 0, C, 480 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 32, 0, 208, 480); /* A, 0, D, 480 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 67, 0, 145, 480); /* B, 0, C, 480 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kMinorLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 42, 0, 190, 480); /* A, 0, D, 480 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 80, 0, 125, 480); /* B, 0, C, 480 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kProfessional:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 50, 0, 170, 480); /* A, 0, D, 480 */
|
|
SectRgn(leftRgn, tempRgn, leftRgn);
|
|
SetRectRgn(tempRgn, 96, 0, 110, 480); /* B, 0, C, 480 */
|
|
DiffRgn(leftRgn, tempRgn, leftRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (arenaSize == kSmallArena)
|
|
{
|
|
switch (rightGoalLeague)
|
|
{
|
|
case kLittleLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 512 - 208, 0, 512 - 11, 384); /* D, 0, A, 384 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 512 - 140, 0, 512 - 34, 384); /* C, 0, B, 384 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kJuniorVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 512 - 188, 0, 512 - 14, 384); /* D, 0, A, 384 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 512 - 132, 0, 512 - 40, 384); /* C, 0, B, 384 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 512 - 173, 0, 512 - 19, 384); /* D, 0, A, 384 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 512 - 113, 0, 512 - 50, 384); /* C, 0, B, 384 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kMinorLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 512 - 166, 0, 512 - 22, 384); /* D, 0, A, 384 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 512 - 104, 0, 512 - 55, 384); /* C, 0, B, 384 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kProfessional:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 512 - 154, 0, 512 - 27, 384); /* D, 0, A, 384 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 512 - 82, 0, 512 - 69, 384); /* C, 0, B, 384 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (rightGoalLeague)
|
|
{
|
|
case kLittleLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 640 - 246, 0, 640 - 20, 480); /* D, 0, A, 480 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 640 - 174, 0, 640 - 47, 480); /* C, 0, B, 480 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kJuniorVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 640 - 230, 0, 640 - 25, 480); /* D, 0, A, 480 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 640 - 158, 0, 640 - 58, 480); /* C, 0, B, 480 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kVarsity:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 640 - 208, 0, 640 - 32, 480); /* D, 0, A, 480 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 640 - 145, 0, 640 - 67, 480); /* C, 0, B, 480 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kMinorLeague:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 640 - 190, 0, 640 - 42, 480); /* D, 0, A, 480 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 640 - 125, 0, 640 - 80, 480); /* C, 0, B, 480 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
case kProfessional:
|
|
tempRgn = NewRgn();
|
|
SetRectRgn(tempRgn, 640 - 170, 0, 640 - 50, 480); /* D, 0, A, 480 */
|
|
SectRgn(rightRgn, tempRgn, rightRgn);
|
|
SetRectRgn(tempRgn, 640 - 110, 0, 640 - 96, 480); /* C, 0, B, 480 */
|
|
DiffRgn(rightRgn, tempRgn, rightRgn);
|
|
DisposeRgn(tempRgn);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
GetPort(&wasPort);
|
|
|
|
if (isColor)
|
|
{
|
|
SetPort((GrafPtr)offCBackPtr);
|
|
|
|
Index2Color(kYellowColor4Bit, &theRGBColor);
|
|
RGBForeColor(&theRGBColor);
|
|
OffsetRgn(leftRgn, -1, -1);
|
|
PaintRgn(leftRgn);
|
|
OffsetRgn(leftRgn, 1, 1);
|
|
OffsetRgn(rightRgn, 1, -1);
|
|
PaintRgn(rightRgn);
|
|
OffsetRgn(rightRgn, -1, 1);
|
|
|
|
Index2Color(kBlueColor4Bit, &theRGBColor);
|
|
RGBForeColor(&theRGBColor);
|
|
PaintRgn(leftRgn);
|
|
|
|
Index2Color(kVioletColor4Bit, &theRGBColor);
|
|
RGBForeColor(&theRGBColor);
|
|
PaintRgn(rightRgn);
|
|
|
|
RGBForeColor(&RGBBlackColor);
|
|
}
|
|
else
|
|
{
|
|
SetPort((GrafPtr)offBackPtr);
|
|
|
|
OffsetRgn(leftRgn, -1, -1);
|
|
FillRgn(leftRgn, white);
|
|
OffsetRgn(leftRgn, 1, 1);
|
|
OffsetRgn(rightRgn, 1, -1);
|
|
FillRgn(rightRgn, white);
|
|
OffsetRgn(rightRgn, -1, 1);
|
|
|
|
FillRgn(leftRgn, white);
|
|
FillRgn(rightRgn, gray);
|
|
}
|
|
|
|
if (leftRgn != kNilPointer)
|
|
DisposeRgn(leftRgn);
|
|
if (rightRgn != kNilPointer)
|
|
DisposeRgn(rightRgn);
|
|
|
|
if (isColor)
|
|
{
|
|
CopyBits(&((GrafPtr)offCBackPtr)->portBits, &((GrafPtr)offCWorkPtr)->portBits,
|
|
&offWorkRect, &offWorkRect, srcCopy, kNilPointer);
|
|
if ((drawToMain) && (!splashIsUp))
|
|
{
|
|
CopyBits(&((GrafPtr)offCBackPtr)->portBits, &(((GrafPtr)mainWndo)->portBits),
|
|
&offWorkRect, &offWorkRect, srcCopy, ((GrafPtr)mainWndo)->visRgn);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CopyBits(&offBackBits, &offWorkBits, &offWorkRect, &offWorkRect, srcCopy,
|
|
kNilPointer);
|
|
if ((drawToMain) && (!splashIsUp))
|
|
{
|
|
CopyBits(&offBackBits, &(mainWndo->portBits), &offWorkRect, &offWorkRect,
|
|
srcCopy, mainWndo->visRgn);
|
|
}
|
|
}
|
|
|
|
SetPort((GrafPtr)wasPort);
|
|
}
|
|
|
|
|
|
/*======================================================== RefreshMainWindow */
|
|
|
|
void RefreshMainWindow (void)
|
|
|
|
{
|
|
Rect borderRect;
|
|
GrafPtr wasPort;
|
|
Point zeroPoint;
|
|
short playWide, playHigh;
|
|
|
|
GetPort(&wasPort);
|
|
SetPort((GrafPtr)mainWndo);
|
|
|
|
PenNormal();
|
|
playHigh = offWorkRect.bottom - offWorkRect.top;
|
|
playWide = offWorkRect.right - offWorkRect.left;
|
|
|
|
GetOrigin(&zeroPoint);
|
|
SetOrigin(0, 0);
|
|
|
|
borderRect = screenBits.bounds;
|
|
if (primaryMode != kPlayMode)
|
|
borderRect.top += GetMBarHeight();
|
|
|
|
ClipRect(&borderRect);
|
|
|
|
SetRect(&borderRect, screenBits.bounds.left, screenBits.bounds.top,
|
|
screenBits.bounds.right, -zeroPoint.v);
|
|
FillRect(&borderRect, black); /* top peice */
|
|
|
|
SetRect(&borderRect, screenBits.bounds.left, playHigh - zeroPoint.v,
|
|
screenBits.bounds.right, screenBits.bounds.bottom);
|
|
FillRect(&borderRect, black); /* bottom peice */
|
|
|
|
SetRect(&borderRect, screenBits.bounds.left, -zeroPoint.v, -zeroPoint.h,
|
|
playHigh - zeroPoint.v);
|
|
FillRect(&borderRect, black); /* left peice */
|
|
|
|
SetRect(&borderRect, playWide - zeroPoint.h, -zeroPoint.v, screenBits.bounds.right,
|
|
playHigh - zeroPoint.v);
|
|
FillRect(&borderRect, black); /* right peice */
|
|
|
|
SetOrigin(zeroPoint.h, zeroPoint.v);
|
|
|
|
DrawAllStars();
|
|
|
|
if (isColor)
|
|
CopyBits(&((GrafPtr)offCWorkPtr)->portBits, &(((GrafPtr)mainWndo)->portBits),
|
|
&offWorkRect, &offWorkRect, srcCopy, ((GrafPtr)mainWndo)->visRgn);
|
|
else
|
|
CopyBits(&offWorkBits, &(mainWndo->portBits), &offWorkRect, &offWorkRect,
|
|
srcCopy, mainWndo->visRgn);
|
|
|
|
DisplayPlayerFouls(0);
|
|
DisplayOpponentFouls(0);
|
|
|
|
SetPort((GrafPtr)wasPort);
|
|
}
|
|
|
|
|
|
/*======================================================== OpenMainWindow */
|
|
|
|
void OpenMainWindow (void)
|
|
|
|
{
|
|
if (isColor)
|
|
{
|
|
mainWndo = GetNewCWindow(rMainWndoID, kNilPointer, kPutInFront );
|
|
}
|
|
else
|
|
{
|
|
mainWndo = GetNewWindow(rMainWndoID, kNilPointer, kPutInFront );
|
|
}
|
|
|
|
horizontal = screenBits.bounds.right - screenBits.bounds.left;
|
|
vertical = screenBits.bounds.bottom - screenBits.bounds.top;
|
|
SizeWindow((GrafPtr)mainWndo, horizontal, vertical, kNormalUpdates);
|
|
ShowWindow((GrafPtr)mainWndo);
|
|
SetPort((GrafPtr)mainWndo);
|
|
ClipRect(&screenBits.bounds);
|
|
|
|
if (!isColor)
|
|
FillRect(&screenBits.bounds, black);
|
|
|
|
horizontal = (screenWide - (screenBits.bounds.right - screenBits.bounds.left)) / 2;
|
|
vertical = (screenHigh - (screenBits.bounds.bottom - screenBits.bounds.top)) / 2;
|
|
SetOrigin(horizontal, vertical);
|
|
|
|
if (isColor) /* If in color, we need to dick with palettes */
|
|
{
|
|
Index2Color(kBlackColor4Bit, &RGBBlackColor);
|
|
Index2Color(kWhiteColor4Bit, &RGBWhiteColor);
|
|
RGBForeColor(&RGBBlackColor);
|
|
RGBBackColor(&RGBWhiteColor);
|
|
}
|
|
|
|
/* Define dragRect for limiting dragging of a window */
|
|
dragRect = screenBits.bounds;
|
|
dragRect.top += 30; /* menu bar height + title bar height */
|
|
InsetRect(&dragRect, 4, 4);
|
|
}
|
|
|
|
|
|
/*======================================================== DoSplashScreen */
|
|
|
|
void DoSplashScreen (void)
|
|
|
|
{
|
|
Rect frame;
|
|
GrafPtr wasPort;
|
|
PicHandle thePict;
|
|
Point origin;
|
|
|
|
GetPort((GrafPtr *)&wasPort);
|
|
SetPort((GrafPtr)mainWndo);
|
|
splashIsUp = TRUE;
|
|
|
|
GetOrigin(&origin);
|
|
SetOrigin(0, 0);
|
|
|
|
if (isColor)
|
|
thePict = GetPicture(rSplashPICT4);
|
|
else
|
|
thePict = GetPicture(rSplashPICT1);
|
|
|
|
if (thePict != kNilPointer)
|
|
{
|
|
HLock((Handle)thePict);
|
|
frame = (**thePict).picFrame;
|
|
HUnlock((Handle)thePict);
|
|
OffsetRect(&frame, -frame.left, -frame.top);
|
|
|
|
OffsetRect(&frame, 0, ((screenBits.bounds.bottom - screenBits.bounds.top -
|
|
frame.bottom - 20) / 2) + 10);
|
|
|
|
if ((screenBits.bounds.right - screenBits.bounds.left) < frame.right)
|
|
{
|
|
OffsetRect(&frame, screenBits.bounds.right - screenBits.bounds.left -
|
|
frame.right, 0);
|
|
}
|
|
else if ((screenBits.bounds.right - screenBits.bounds.left) > frame.right)
|
|
{
|
|
OffsetRect(&frame, (screenBits.bounds.right - screenBits.bounds.left -
|
|
frame.right) / 2, 0);
|
|
}
|
|
|
|
DrawPicture(thePict, &frame);
|
|
|
|
ReleaseResource((Handle)thePict);
|
|
}
|
|
|
|
SetOrigin(origin.h, origin.v);
|
|
SetPort((GrafPtr)wasPort);
|
|
}
|
|
|
|
|
|
/*======================================================== CloseMainWindow */
|
|
|
|
void CloseMainWindow (void)
|
|
|
|
{
|
|
if (mainWndo != kNilPointer)
|
|
DisposeWindow((GrafPtr)mainWndo);
|
|
}
|
|
|
|
|