GliderPRO/Sources/InterfaceInit.c
John Calhoun 7a70d18ba6 First check-in.
Sources for Glider PRO, a Macintosh game written by John Calhoun and
published by Casady & Greene, Inc. I believe it was using CodeWarrior
IDE to create a fat (68K and PowerPC) binary.
2016-01-28 08:10:38 -08:00

1 line
6.0 KiB
C
Executable File
Raw Blame History

//============================================================================
//----------------------------------------------------------------------------
// InterfaceInit.c
//----------------------------------------------------------------------------
//============================================================================
#include "Externs.h"
#include "Environ.h"
#include "Map.h"
#include "RectUtils.h"
#include "Tools.h"
#define kHandCursorID 128
#define kVertCursorID 129
#define kHoriCursorID 130
#define kDiagCursorID 131
extern RgnHandle mirrorRgn;
extern WindowPtr mapWindow, toolsWindow, linkWindow;
extern WindowPtr menuWindow;
extern Rect shieldRect, boardSrcRect, localRoomsDest[];
extern CursHandle handCursorH, beamCursorH, vertCursorH, horiCursorH;
extern CursHandle diagCursorH;
extern Cursor handCursor, beamCursor, vertCursor, horiCursor;
extern Cursor diagCursor;
extern MenuHandle appleMenu, gameMenu, optionsMenu, houseMenu;
extern Point shieldPt;
extern long incrementModeTime;
extern UInt32 doubleTime;
extern short fadeInSequence[], idleMode;
extern short toolSelected, lastBackground, wasFlower, numExtraHouses;
extern short houseResFork, lastHighScore, maxFiles, willMaxFiles;
extern Boolean quitting, playing, fadeGraysOut;
extern Boolean houseOpen, newRoomNow, evenFrame, menusUp, demoGoing;
extern Boolean twoPlayerGame, paused, hasMirror, splashDrawn;
//============================================================== Functions
//-------------------------------------------------------------- InitializeMenus
// The menus are loaded from disk and the menu bar set up and drawn.
void InitializeMenus (void)
{
appleMenu = GetMenu(kAppleMenuID);
if (appleMenu == nil)
RedAlert(kErrFailedResourceLoad);
AppendResMenu(appleMenu, 'DRVR');
InsertMenu(appleMenu, 0);
gameMenu = GetMenu(kGameMenuID);
if (gameMenu == nil)
RedAlert(kErrFailedResourceLoad);
InsertMenu(gameMenu, 0);
optionsMenu = GetMenu(kOptionsMenuID);
if (optionsMenu == nil)
RedAlert(kErrFailedResourceLoad);
InsertMenu(optionsMenu, 0);
menusUp = true;
DrawMenuBar();
houseMenu = GetMenu(kHouseMenuID);
if (houseMenu == nil)
RedAlert(kErrFailedResourceLoad);
UpdateMenus(false);
}
//-------------------------------------------------------------- GetExtraCursors
// Extra cursors (custom cursors) like the "hand" and various room<6F>
// editing cursors are loaded up.
void GetExtraCursors (void)
{
handCursorH = GetCursor(kHandCursorID);
if (handCursorH == nil)
RedAlert(kErrFailedResourceLoad);
HLock((Handle)handCursorH);
handCursor = **handCursorH;
beamCursorH = GetCursor(iBeamCursor);
if (beamCursorH == nil)
RedAlert(kErrFailedResourceLoad);
HLock((Handle)beamCursorH);
beamCursor = **beamCursorH;
vertCursorH = GetCursor(kVertCursorID);
if (vertCursorH == nil)
RedAlert(kErrFailedResourceLoad);
HLock((Handle)vertCursorH);
vertCursor = **vertCursorH;
horiCursorH = GetCursor(kHoriCursorID);
if (horiCursorH == nil)
RedAlert(kErrFailedResourceLoad);
HLock((Handle)horiCursorH);
horiCursor = **horiCursorH;
diagCursorH = GetCursor(kDiagCursorID);
if (diagCursorH == nil)
RedAlert(kErrFailedResourceLoad);
HLock((Handle)diagCursorH);
diagCursor = **diagCursorH;
}
//-------------------------------------------------------------- VariableInit
// All the simple interface variables are intialized here - Booleans,<2C>
// shorts, a few Rects, etc.
void VariableInit (void)
{
short i;
shieldPt.h = 0;
shieldPt.v = 0;
shieldRect = thisMac.screen;
menusUp = false;
quitting = false;
houseOpen = false;
newRoomNow = false;
playing = false;
evenFrame = false;
if (thisMac.isDepth == 8)
fadeGraysOut = true;
else
fadeGraysOut = false;
twoPlayerGame = false;
paused = false;
hasMirror = false;
demoGoing = false;
// scrapIsARoom = true;
splashDrawn = false;
#ifndef COMPILEDEMO
// SeeIfValidScrapAvailable(false);
#endif
theGlider.which = kPlayer1;
theGlider2.leftKey = kControlKeyMap;
theGlider2.rightKey = kCommandKeyMap;
theGlider2.battKey = kOptionKeyMap;
theGlider2.bandKey = kShiftKeyMap;
theGlider2.which = kPlayer2;
theMode = kSplashMode;
thisRoomNumber = 0;
previousRoom = -1;
toolSelected = kSelectTool;
houseResFork = -1;
lastBackground = kBaseBackgroundID;
wasFlower = RandomInt(kNumFlowers);
lastHighScore = -1;
idleMode = kIdleSplashMode;
incrementModeTime = TickCount() + kIdleSplashTicks;
willMaxFiles = maxFiles;
numExtraHouses = 0;
fadeInSequence[0] = 4; // 4
fadeInSequence[1] = 5;
fadeInSequence[2] = 6;
fadeInSequence[3] = 7;
fadeInSequence[4] = 5; // 5
fadeInSequence[5] = 6;
fadeInSequence[6] = 7;
fadeInSequence[7] = 8;
fadeInSequence[8] = 6; // 6
fadeInSequence[9] = 7;
fadeInSequence[10] = 8;
fadeInSequence[11] = 9;
fadeInSequence[12] = 7; // 7
fadeInSequence[13] = 8;
fadeInSequence[14] = 9;
fadeInSequence[15] = 10;
doubleTime = GetDblTime();
mirrorRgn = nil;
mainWindow = nil;
mapWindow = nil;
toolsWindow = nil;
linkWindow = nil;
coordWindow = nil;
toolSrcMap = nil;
nailSrcMap = nil;
menuWindow = nil;
houseRect = thisMac.screen;
houseRect.bottom -= kScoreboardTall;
if (houseRect.right > kMaxViewWidth)
houseRect.right = kMaxViewWidth;
if (houseRect.bottom > kMaxViewHeight)
houseRect.bottom = kMaxViewHeight;
playOriginH = (RectWide(&thisMac.screen) - kRoomWide) / 2;
playOriginV = (RectTall(&thisMac.screen) - kTileHigh) / 2;
for (i = 0; i < 9; i++)
{
QSetRect(&localRoomsDest[i], 0, 0, kRoomWide, kTileHigh);
QOffsetRect(&localRoomsDest[i], playOriginH, playOriginV);
}
QOffsetRect(&localRoomsDest[kNorthRoom], 0, -kVertLocalOffset);
QOffsetRect(&localRoomsDest[kNorthEastRoom], kRoomWide, -kVertLocalOffset);
QOffsetRect(&localRoomsDest[kEastRoom], kRoomWide, 0);
QOffsetRect(&localRoomsDest[kSouthEastRoom], kRoomWide, kVertLocalOffset);
QOffsetRect(&localRoomsDest[kSouthRoom], 0, kVertLocalOffset);
QOffsetRect(&localRoomsDest[kSouthWestRoom], -kRoomWide, kVertLocalOffset);
QOffsetRect(&localRoomsDest[kWestRoom], -kRoomWide, 0);
QOffsetRect(&localRoomsDest[kNorthWestRoom], -kRoomWide, -kVertLocalOffset);
}