Glider4/RoomEditor_103/Sources/E-Globals.p
John Calhoun e178486ce8 Initial check-in
There was an effort to organize the files a little bit for presenting
in this repository. I hope I have included everything needed for both
Glider 4.05 and the Room Editor 1.0.3. The code is in Pascal — THINK
Pascal was used to build the original. I’m not sure how someone would
open the project files (or for that matter the resource files) these
days. Never mind there is also a .o file (SMS.a) representing a
statically linked library (from hand-coded 68K assembly) for doing
performant 4-channel sound on 68K Macs in the day (this was licensed
from Patrick Buckland — I’m sure he won’t mind my preserving it here
for posterity, right?). Art files, sound files of unknown format…. What
a joy it will be sleuthing through these files…. Enjoy.
2016-01-26 20:30:26 -08:00

1 line
7.7 KiB
OpenEdge ABL
Executable File

unit Globals;
interface
uses
Palettes;
const
dlgTop = 50;
dlgLeft = 85;
kDeleteKey = $08;
kTabKey = $09;
kLeftArrow = $1C;
kRightArrow = $1D;
kTabKeyMap = $30;
kCommandKeyMap = $37;
mApple = 128; {Menu resource ID}
iNothing = 0;
iAboutEdit = 1;
mFile = 129; {Menu resource ID}
iNew = 1;
iOpen = 2;
iClose = 4;
iSave = 5;
iSaveAs = 6;
iQuit = 8;
mEdit = 130; {Menu resource ID}
iCut = 1;
iCopy = 2;
iPaste = 3;
iClear = 4;
mSpecial = 131; {Menu resource ID}
iTryGlider = 1;
iControls = 2;
iRestoreDeep = 3;
iGoToRoom = 5;
iPrevRoom = 6;
iNextRoom = 7;
iNewRoom = 9;
mWindows = 132; {Menu resource ID}
iTools = 1;
iAutoHideTools = 2;
iHouse = 4;
iRoomBack = 5;
iRoomCond = 6;
iObject = 7;
iHelp = 9;
mControls = 133;{Menu resource ID}
iHoldKey = 1;
iDropKey = 2;
iAbsMouse = 3;
iRelMouse = 4;
iConfigure = 6;
editToObject = 1;
editToRoom = 2;
fileExists = 3;
fileIsNew = 4;
noFileOpen = 5;
alertStrIDs = 128;
fileStrIDs = 129;
mainWndoID = 129;
fileAlertID = 129;
alertID = 128;
saveNoQuitID = 132;
saveNoCloseID = 133;
houseInfoID = 134;
depthAlertID = 136;
rCustomKeysID = 137;
lockAlertID = 138;
custGetID = 256;
objectPictID = 128;
maskPictID = 129;
sleep = 4;
ceilingVert = 24;
stairVert = 54;
floorVert = 325;
stackSize = 40960;
floorLimit = floorVert + 5;
maxThrust = 5;
holdKey = 1;
dropKey = 2;
absMouse = 3;
relMouse = 4;
mouseSlop = 10;
defaultLeftKey = $2B;
defaultRightKey = $2F;
defaultEnergyKey = $24;
defaultBandKey = $31;
defaultLeftName = ', key';
defaultRightName = '. key';
defaultEnergyName = 'return';
defaultBandName = 'space';
kErrUnaccounted = 1; {error codes}
kErrMacPlusNeeded = 2; {these correspond with STR#}
kErr2Or16Colors = 4; {resources for the TEXT part}
kErrNotEnoughMem = 5; {of the message}
kErrUnknownAtInit = 6;
kErrMemLow = 7; {unused}
kErrGraphicsNotFound = 8;
kErrGraphicLoad = 9;
kErrTooManyRooms = 10;
kErrTooManyObjects = 11;
kErrLoadingRes = 12;
kErrFileExists = 13;
kErrNothingToPrint = 14;
{15 unused}
kErrWrongHouseVers = 17;
kErrExitSansGraphics = 20;
kErrSavingPrefs = 25;
{furniture}
nulObj = 0;
table = 1;
shelf = 2;
books = 3;
cabnet = 4;
extRct = 5;
obsRct = 6;
{blowers}
flrVnt = 8;
celVnt = 9;
celDct = 10;
candle = 11;
lftFan = 12;
ritFan = 13;
{table objects}
clock = 16;
paper = 17;
grease = 18;
bnsRct = 19;
battry = 20;
rbrBnd = 21;
{wall objects}
litSwt = 24;
outlet = 25;
thermo = 26;
shredr = 27;
pwrSwt = 28;
guitar = 29;
{animate objects}
drip = 32;
toastr = 33;
ball = 34;
fshBwl = 35;
teaKtl = 36;
window = 37;
{jewelry}
paintg = 40;
mirror = 41;
basket = 42;
macTsh = 43;
upStar = 44;
dnStar = 45;
{------------------------------------}
normal = 0; {mode}
fadingIn = 1;
fadingOut = 2;
turnRt2Lf = 3;
turnLf2Rt = 4;
burning = 5;
ascending = 6;
descending = 7;
shredding = 8;
ignoreIt = 0; {null or unknown objects}
crashIt = 1; {tables, shelves, cabinets, etc...}
liftIt = 2; {floor vents}
dropIt = 3; {ceiling blower, some ducts}
moveIt = 4; {exit rects/suction ceiling ducts}
burnIt = 5; {candle if too close}
turnItLeft = 6; {left fan}
turnItRight = 7; {right fan}
awardIt = 8; {clocks}
extraIt = 9; {folded pieces of paper}
slideIt = 10; {grease fallen}
trickIt = 11; {bonus rect}
energizeIt = 12; {battery}
bandIt = 13; {rubber bands}
playIt = 14; {guitar}
lightIt = 15; {light switch}
zapIt = 16; {wall outlet}
airOnIt = 17; {thermostats}
shredIt = 18; {shredder}
toggleIt = 19; {power switch}
weightIt = 20;
spillIt = 21; {grease standing up}
ascendIt = 22; {up stair case}
descendIt = 23; {down stair case}
steamIt = 24;
acurID = 128;
kCursCount = 12;
type
SICN = array[0..15] of Integer;
SICNPtr = ^SICN;
SICNHand = ^SICNPtr;
objectData = record
objectIs: Integer;
boundRect: Rect;
amount: Integer;
extra: Integer;
isOn: Boolean;
end;
roomData = record
roomName: string[24];
numberOObjects: Integer;
backPictID: Integer;
tileOrder: array[0..7] of Integer;
leftOpen, rightOpen: Boolean;
animateKind: Integer;
animateNumber: Integer;
animateDelay: LongInt;
conditionCode: Integer;
theObjects: array[1..16] of objectData;
end;
houseRec = record
version: Integer;
numberORooms: Integer;
timeStamp: LongInt;
hiScores: array[0..19] of LongInt;
hiLevel: array[0..19] of Integer;
hiName: array[0..19] of string[24];
hiRoom: array[0..19] of string[24];
pictFile: string[32];
nextFile: string[32];
firstFile: string[32];
theRooms: array[1..40] of roomData;
end;
gliderRec = record
destRect, oldRect, wholeRect: Rect;
shadoDest, oldShado, wholeShado: Rect;
touchRect: Rect;
mode, phase: Integer;
isRight, isForward: Boolean;
srcNum: Integer;
forVel: Integer;
mass: Integer;
bands, energy: Integer;
end;
cycleRec = record
holdRect, wholeRect, oldRect: Rect;
tiedTo, kindIs, phase: Integer;
reset, position: LongInt;
accel, velocity: Integer;
end;
acur = record
whichBall: LongInt;
ball: array[1..kCursCount] of CursHandle;
end;
acurPtr = ^acur;
acurHand = ^acurPtr;
BitMapPtr = ^BitMap;
var
theEvent: EventRecord;
mainWndo, toolWndo: WindowPtr;
mainPalette: PaletteHandle;
screenArea, wholeArea, fullArea, nullRect: Rect;
wholeRgn: RgnHandle;
{---b&w---}
offMaskMap, offVirginMap, offLoadMap, offPlayerMap: BitMap;
offMaskPort, offVirginPort, offLoadPort, offPlayerPort: GrafPtr;
offMaskBits, offVirginBits, offLoadBits, offPlayerBits: Ptr;
{---color---}
virginCPort, loadCPort, objectCPort: CGrafPort;
virginCPtr, loadCPtr, objectCPtr: CGrafPtr;
virginCBits, loadCBits, objectCBits: Ptr;
rgbBlack, rgbWhite, rgbLtBlue, rgbRed, rgbDkGray: RGBColor;
rgbYellow, rgbViolet, rgbBrown, rgbLtBrown: RGBColor;
holdCorner: Point;
marqueePat: array[0..4] of Pattern;
theKeys: KeyMap;
ballC: array[1..kCursCount] of CCrsrHandle;
marqueeIndex, roomAt, setOTools, oneActive: Integer;
rightOffset, downOffset, wasDepth, herKeyboard: Integer;
fileNumber, volumeNumber, editorResNum: Integer;
leftArrow, rightArrow, deleteKey, controlMethod: Integer;
leftKey, rightKey, energyKey, bandKey, iGlidersHelp: Integer;
leftName, rightName, energyName, bandName: string[12];
housesName, resourceName: string[32];
startPt, endPt: Point;
handleRect: Rect;
thisHouse: houseRec;
thisRoom, scrapRoom: roomData;
scrapObject, selectObject: objectData;
currentBall: Integer;
ballList: acurHand;
{flying the glider}
nCycleObs: Integer;
cycleObjects: array[1..16] of cycleRec;
theGlider: GliderRec;
lifeNormal: Boolean;
currMass, liftAmount, nMortals, shiftAmount: Integer;
glideRct: array[0..27] of Rect;
shadoRct: array[0..1] of Rect;
nextPhase: array[1..4, 0..16] of Integer;
binaryFlip: Integer;
toastRgn: RgnHandle;
eventRect: array[0..16] of Rect;
eventKind: array[0..16, 0..2] of LongInt;
{end}
tileRects: array[0..7] of Rect;
iconRect: array[0..5] of Rect;
selectRect: array[0..5] of Rect;
srcRect: array[0..69] of Rect;
toolIcnID: array[0..47] of Integer;
lightsOut, airOut, leftIsOpen, rightIsOpen: Boolean;
hasToast, windowOpen: Boolean;
editRoom, marqueeTime, soundPlaying, fileIsOpen, cantColor, sliding: Boolean;
soundOn, playing, pausing, inhibitSound, doneFlag, restoreColor: Boolean;
roomScrapDirty, objectScrapDirty, changed, inColor, cantSwitch: Boolean;
autoHide, inBackground, hasWNE, buttonFires, bandBorne, hasSys7: Boolean;
useColorCursor, lockIt: Boolean;
implementation
end.