Glider4/RoomEditor_103/Sources/E-RoomStuff.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
21 KiB
OpenEdge ABL
Executable File
Raw Permalink Blame History

unit RoomStuff;
interface
uses
Palettes, Globals, Utilities, Drawing;
procedure SortObjects;
function InsertNewRoom: Boolean;
procedure FlushRoom (var whichRoom: roomData);
procedure DoGotoDial;
function roomFltr (theDlg: DialogPtr; var theEvnt: EventRecord; var itemHit: integer): boolean;
procedure DoRoomBackInfo (var shouldOpen: Boolean);
procedure DoRoomCondInfo (var shouldOpen: Boolean);
implementation
const
roomCondID = 129;
roomBackID = 130;
var
tempTile: array[0..7] of Integer;
backNumber: Integer;
{=================================}
procedure SortObjects;
var
holdActive, i, count, itemType: Integer;
holdRoom: RoomData;
begin
FlushRoom(holdRoom);
count := 0;
holdActive := oneActive;
for i := 1 to 16 do
begin
itemType := thisRoom.theObjects[i].objectIs;
if ((itemType <> paintg) and (itemType <> mirror) and (itemType <> window) and (itemType <> 0)) then
begin
count := count + 1;
if (oneActive = i) then
holdActive := count;
holdRoom.theObjects[count] := thisRoom.theObjects[i];
thisRoom.theObjects[i].objectIs := 0;
end;
end;
for i := 1 to 16 do
begin
itemType := thisRoom.theObjects[i].objectIs;
if (itemType <> 0) then
begin
count := count + 1;
if (oneActive = i) then
holdActive := count;
holdRoom.theObjects[count] := thisRoom.theObjects[i];
end;
end;
for i := 1 to thisRoom.numberOObjects do
thisRoom.theObjects[i] := holdRoom.theObjects[i];
with thisRoom do
if (count <> numberOObjects) then {*** Check for agreement}
begin
count := 0; {*** Run a second check}
for i := 1 to 16 do
if (theObjects[i].objectIs <> 0) then
count := count + 1;
numberOObjects := count; {*** We'll go with this #}
if (numberOObjects < 16) then
for i := numberOObjects + 1 to 16 do
begin
theObjects[i].objectIs := 0; {*** Zero-out excess fields}
theObjects[i].boundRect := nullRect;
theObjects[i].amount := 0;
theObjects[i].extra := 0;
theObjects[i].isOn := FALSE;
end;
end;
oneActive := holdActive; {*** Restore active object}
end;
{=================================}
function InsertNewRoom;
var
i: Integer;
begin
InsertNewRoom := FALSE;
if (thisHouse.numberORooms >= 40) then {trying to add 41 rooms}
begin
GenericAlert(kErrTooManyRooms);
Exit(InsertNewRoom);
end;
thisHouse.theRooms[roomAt] := thisRoom; {insert room to date}
if (roomAt < thisHouse.numberORooms) then {shift only if in middle}
for i := thisHouse.numberORooms downto roomAt + 1 do
thisHouse.theRooms[i + 1] := thisHouse.theRooms[i]; {shift rooms right}
roomAt := roomAt + 1; {kick active over to right}
FlushRoom(thisRoom); {flush new room copy}
thisHouse.theRooms[roomAt] := thisRoom; {copy active into house}
thisHouse.numberORooms := thisHouse.numberORooms + 1; {one more room}
InsertNewRoom := TRUE;
end;
{=================================}
procedure FlushRoom;
var
index: Integer;
defaultName: Str255;
begin
NumToString(roomAt, defaultName);
defaultName := CONCAT('Room # ', defaultName);
with whichRoom do
begin
roomName := defaultName;
numberOObjects := 0;
backPictID := 200;
for index := 0 to 7 do
tileOrder[index] := 0;
animateKind := 0;
animateNumber := 0;
animateDelay := 0;
conditionCode := 0;
for index := 1 to 16 do
begin
theObjects[index].objectIs := 0;
theObjects[index].boundRect := nullRect;
theObjects[index].amount := 0;
theObjects[index].extra := 0;
theObjects[index].isOn := FALSE;
end;
end;
end;
{=================================}
procedure DoGotoDial;
const
okayBut = 1;
cancelBut = 2;
gotoEdit = 3;
numOfStat = 4;
currStat = 5;
var
leaveDlg: Boolean;
tempLong: LongInt;
theDlgPtr: DialogPtr;
tempRect: Rect;
cntlType, index, itemHit, tempInt, rightOff, downOff: Integer;
dlgItem: Handle;
cntlHand, tempCntlHand: controlhandle;
strTemp: Str255;
{-------------------------}
procedure Redraw;
var
index: Integer;
begin
SetPort(theDlgPtr); {Point to our dialog window}
GetDItem(theDlgPtr, okayBut, cntlType, dlgItem, tempRect);{Get the item handle}
PenSize(3, 3); {Change pen to draw thick default outline}
InsetRect(tempRect, -4, -4); {Draw outside the button by 1 pixel}
FrameRoundRect(tempRect, 16, 16); {Draw the outline}
PenNormal;
end;
{-------------------------}
begin
theDlgPtr := GetNewDialog(261, nil, Pointer(-1));
with theDlgPtr^.portBits do
begin
rightOff := rightOffset - bounds.left;
downOff := downOffset - bounds.top;
end;
MoveWindow(theDlgPtr, rightOff, downOff, FALSE);
ShowWindow(theDlgPtr);
SelectWindow(theDlgPtr);
SetPort(theDlgPtr);
with thisHouse do
begin
NumToString(numberORooms, strTemp);
GetDItem(theDlgPtr, numOfStat, cntlType, dlgItem, tempRect);
SetIText(dlgItem, strTemp);
end;
NumToString(roomAt, strTemp);
GetDItem(theDlgPtr, currStat, cntlType, dlgItem, tempRect);
SetIText(dlgItem, strTemp);
NumToString(roomAt, strTemp);
GetDItem(theDlgPtr, gotoEdit, cntlType, dlgItem, tempRect);
SetIText(dlgItem, strTemp);
SelIText(theDlgPtr, gotoEdit, 0, 3);
Redraw;
leaveDlg := FALSE;
repeat
ModalDialog(nil, itemHit);
GetDItem(theDlgPtr, itemHit, cntlType, dlgItem, tempRect);
if (itemHit = okayBut) then
begin
GetDItem(theDlgPtr, gotoEdit, cntlType, dlgItem, tempRect);
GetIText(dlgItem, strTemp); {Get the text entered}
StringToNum(strTemp, tempLong);
if ((LoWord(tempLong) > 0) and (LoWord(tempLong) < thisHouse.numberORooms + 1)) then
begin
leaveDlg := TRUE;
roomAt := LoWord(tempLong);
end
else
begin
SysBeep(1);
NumToString(roomAt, strTemp);
GetDItem(theDlgPtr, gotoEdit, cntlType, dlgItem, tempRect);
SetIText(dlgItem, strTemp);
SelIText(theDlgPtr, gotoEdit, 0, 3);
end;
end;
if (itemHit = cancelBut) then
begin
leaveDlg := TRUE;
end;
until leaveDlg;
DisposDialog(theDlgPtr);
if (toolWndo <> nil) then
SetPort(toolWndo)
else
SetPort(mainWndo);
end;
{=================================}
function roomFltr;
var
cntlType, index, whichTile, itemDropped: Integer;
wasPt, newPt: Point;
dlgItem: Handle;
thePict: PicHandle;
tempRect, sameRect, dest, tempRect2: Rect;
tempByte: SignedByte;
{----------------}
procedure ClickedInLeftBox;
var
index2: Integer;
begin
whichTile := (wasPt.h - 17) div 8;
SetRect(tempRect, 0, 0, 8, 49); {a tile rect}
OffsetRect(tempRect, 17 + (whichTile * 8), 83);
GetMouse(wasPt);
newPt := wasPt;
PenPat(gray);
PenMode(patXOr);
FrameRect(tempRect);
while (WaitMouseUp) do
begin
GetMouse(newPt);
if (newPt.h <> wasPt.h) then
begin
FrameRect(tempRect);
OffsetRect(tempRect, newPt.h - wasPt.h, 0);
FrameRect(tempRect);
wasPt := newPt;
end; {end - if (a)}
end; {end - while}
FrameRect(tempRect);
PenNormal;
SetRect(dest, 111, 83, 175, 132);
if (PtInRect(newPt, dest)) then
begin
itemDropped := (newPt.h - 111) div 8;
if ((itemDropped > -1) and (itemDropped < 8)) then
tempTile[itemDropped] := whichTile
else
SysBeep(1);
end;
for index2 := 0 to 7 do
begin
SetRect(tempRect, 0, 0, 8, 49);
OffsetRect(tempRect, 111 + (index2 * 8), 83);
thePict := GetPicture(300 + tempTile[index2] + (backNumber * 8));
if (thePict <> nil) then
begin
tempByte := HGetState(Handle(thePict));
HLock(Handle(thePict));
DrawPicture(thePict, tempRect);
HSetState(Handle(thePict), tempByte);
end
else
begin
GenericAlert(kErrGraphicLoad);
end;
ReleaseResource(Handle(thePict));
end; {end - for}
end; {end - if PtInRect}
{----------------}
begin
roomFltr := FALSE; {assume no events}
if ((theEvnt.what = KeyDown) and (BitAnd(theEvnt.message, CharCodeMask) = $0D)) then
begin {'carriage' return hit}
itemHit := 1;
roomFltr := TRUE;
end;
if (theEvnt.what = MouseDown) then
begin
GetMouse(wasPt);
SetRect(tempRect, 17, 83, 81, 132);
if (PtInRect(wasPt, tempRect)) then {tempRect => left tile rect}
ClickedInLeftBox;
end; {end - if mouseDown}
SetRect(tempRect2, 17, 78, 81, 81); {erase any old markers}
EraseRect(tempRect2);
SetRect(tempRect2, 17, 134, 81, 137);
EraseRect(tempRect2);
GetMouse(wasPt);
SetRect(tempRect, 17, 83, 81, 132);
if (PtInRect(wasPt, tempRect)) then {tempRect => left tile rect}
begin
whichTile := (wasPt.h - 17) div 8;
SetRect(tempRect, 0, 0, 8, 49); {a tile rect}
OffsetRect(tempRect, 17 + (whichTile * 8), 83);
tempRect2 := tempRect; {draw top marker over tile}
tempRect2.top := tempRect2.top - 5;
tempRect2.bottom := tempRect2.top + 3;
ForeColor(redColor);
PaintRect(tempRect2);
ForeColor(blackColor);
tempRect2 := tempRect; {draw bottom marker under tile}
tempRect2.bottom := tempRect2.bottom + 5;
tempRect2.top := tempRect2.bottom - 3;
ForeColor(redColor);
PaintRect(tempRect2);
ForeColor(blackColor);
end;
end;
{=================================}
procedure DoRoomBackInfo;
const
okayBut = 1;
cancelBut = 2;
backIcon1 = 3;
backIcon10 = 12;
backStat = 13;
tileStat = 14;
var
wasPort: GrafPtr;
leaveDlg: Boolean;
theDlgPtr: DialogPtr;
tempRect, wasRect: Rect;
cntlType, i, i2, itemHit, tempInt, rightOff, downOff: Integer;
dlgItem: Handle;
strTemp: Str255;
backName: array[0..9] of string[18];
thePict: PicHandle;
tempRoom: roomData;
{-------------------------}
procedure Redraw;
var
i, width: Integer;
tempByte: SignedByte;
begin
SetPort(theDlgPtr); {Point to our dialog window}
GetDItem(theDlgPtr, okayBut, cntlType, dlgItem, tempRect);{Get the item handle}
PenSize(3, 3); {Change pen to draw thick default outline}
InsetRect(tempRect, -4, -4); {Draw outside the button by 1 pixel}
FrameRoundRect(tempRect, 16, 16); {Draw the outline}
GetDItem(theDlgPtr, backNumber + backIcon1, cntlType, dlgItem, tempRect);
PenSize(2, 2);
InsetRect(tempRect, -2, -2);
ForeColor(redColor);
FrameRect(tempRect);
ForeColor(blackColor);
wasRect := tempRect;
PenNormal;
with theDlgPtr^.portRect do
width := right - left;
MoveTo(4, 38);
Line(width - 8, 0);
MoveTo(4, 40);
Line(width - 8, 0);
for i := 0 to 7 do
begin
SetRect(tempRect, 0, 0, 8, 49);
OffsetRect(tempRect, 111 + (i * 8), 83);
thePict := GetPicture(300 + tempTile[i] + (backNumber * 8));
if (thePict <> nil) then
begin
tempByte := HGetState(Handle(thePict));
HLock(Handle(thePict));
DrawPicture(thePict, tempRect);
HSetState(Handle(thePict), tempByte);
end
else
begin
GenericAlert(kErrGraphicLoad);
end;
ReleaseResource(Handle(thePict));
end;
for i := 0 to 7 do
begin
SetRect(tempRect, 0, 0, 8, 49);
OffsetRect(tempRect, 17 + (i * 8), 83);
thePict := GetPicture(300 + i + (backNumber * 8));
if (thePict <> nil) then
begin
tempByte := HGetState(Handle(thePict));
HLock(Handle(thePict));
DrawPicture(thePict, tempRect);
HSetState(Handle(thePict), tempByte);
end
else
begin
GenericAlert(kErrGraphicLoad);
end;
ReleaseResource(Handle(thePict));
end;
ForeColor(redColor);
SetRect(tempRect, 15, 81, 83, 134);
FrameRect(tempRect);
ForeColor(blueColor);
SetRect(tempRect, 109, 81, 177, 134);
FrameRect(tempRect);
ForeColor(blackColor);
end;
{-------------------------}
begin
GetPort(wasPort);
theDlgPtr := GetNewDialog(roomBackID, nil, Pointer(-1));
if (theDlgPtr = nil) then
begin
GenericAlert(kErrLoadingRes);
Exit(DoRoomBackInfo);
end;
with theDlgPtr^.portBits do
begin
rightOff := rightOffset - bounds.left;
downOff := downOffset - bounds.top;
end;
MoveWindow(theDlgPtr, rightOff, downOff, FALSE);
ShowWindow(theDlgPtr);
SelectWindow(theDlgPtr);
SetPort(theDlgPtr);
backName[0] := 'Plain Room';
backName[1] := 'Paneled Room';
backName[2] := 'Basement';
backName[3] := 'Japanese Room';
backName[4] := 'Child<6C>s Room';
backName[5] := 'Unfinished Room';
backName[6] := 'Hip Wallpaper';
backName[7] := 'Entertainment';
backName[8] := 'Bathroom';
backName[9] := 'Kitchen';
tempRoom := thisRoom;
with tempRoom do
begin
backNumber := backPictID - 200;
for i := 0 to 7 do
tempTile[i] := tileOrder[i];
GetDItem(theDlgPtr, backStat, cntlType, dlgItem, tempRect);
SetIText(dlgItem, backName[backNumber]);
end;
if (not shouldOpen) then
HideDItem(theDlgPtr, cancelBut);
Redraw;
leaveDlg := FALSE;
shouldOpen := FALSE;
repeat
ModalDialog(@roomFltr, itemHit);
GetDItem(theDlgPtr, itemHit, cntlType, dlgItem, tempRect);
for i := backIcon1 to backIcon10 do
if (itemHit = i) then
begin
PenSize(2, 2);
PenPat(white);
FrameRect(wasRect);
GetDItem(theDlgPtr, i, cntlType, dlgItem, tempRect);
InsetRect(tempRect, -2, -2);
PenPat(black);
ForeColor(redColor);
FrameRect(tempRect);
ForeColor(blackColor);
wasRect := tempRect;
PenNormal;
backNumber := i - backIcon1;
GetDItem(theDlgPtr, backStat, cntlType, dlgItem, tempRect);
SetIText(dlgItem, backName[backNumber]);
tempRoom.backPictID := backNumber + 200;
for i2 := 0 to 7 do
case backNumber of
0..3, 5:
tempTile[i2] := 0;
otherwise
tempTile[i2] := i2
end;
Redraw;
end;
if (itemHit = okayBut) then
begin
leaveDlg := TRUE;
changed := TRUE;
with tempRoom do
begin
for i := 0 to 7 do
begin
tileOrder[i] := tempTile[i];
end;
case backPictId of
200..203, 205:
begin
if (tileOrder[0] = 6) then {don't allow backward walls}
tileOrder[0] := 0;
if (tileOrder[7] = 7) then
tileOrder[7] := 0;
if (tileOrder[0] = 7) then {check left open}
leftOpen := FALSE
else
leftOpen := TRUE;
if (tileOrder[7] = 6) then {check right open}
rightOpen := FALSE
else
rightOpen := TRUE;
for i := 1 to 6 do {don't allow walls in the middle}
if ((tileOrder[i] = 6) or (tileOrder[i] = 7)) then
begin
SysBeep(1);
tileOrder[i] := 0;
end;
end;
otherwise
begin
leftOpen := TRUE;
rightOpen := TRUE;
end;
end; {end - case}
if (roomAt = 1) then
leftOpen := FALSE;
end; {end - with}
if (leaveDlg) then
begin
thisRoom := tempRoom;
end;
end;
if (itemHit = cancelBut) then
begin
if (thisHouse.numberORooms < 1) then
shouldOpen := TRUE;
leaveDlg := TRUE;
end;
until leaveDlg;
DisposDialog(theDlgPtr);
if (toolWndo <> nil) then
SetPort(toolWndo)
else
SetPort(wasPort);
end;
{=================================}
{=================================}
procedure DoRoomCondInfo;
const
inactive = 255;
active = 0;
okayBut = 1;
cancelBut = 2;
normalRadio = 3;
lightsRadio = 5;
nothingRadio = 6;
dartsRadio = 9;
numOfEdit = 10;
delayEdit = 11;
nameEdit = 12;
objectsStat = 13;
roomNumStat = 14;
var
leaveDlg: Boolean;
theDlgPtr: DialogPtr;
tempRect, wasRect: Rect;
cntlType, itemHit, tempInt, rightOff, downOff, i: Integer;
tempLong: LongInt;
dlgItem: Handle;
strTemp: Str255;
wasPort: GrafPtr;
tempRoom: roomData;
{-------------------------}
procedure Redraw;
var
width: Integer;
begin
SetPort(theDlgPtr); {Point to our dialog window}
GetDItem(theDlgPtr, okayBut, cntlType, dlgItem, tempRect);{Get the item handle}
PenSize(3, 3); {Change pen to draw thick default outline}
InsetRect(tempRect, -4, -4); {Draw outside the button by 1 pixel}
FrameRoundRect(tempRect, 16, 16); {Draw the outline}
PenNormal;
with theDlgPtr^.portRect do
width := right - left;
MoveTo(4, 38);
Line(width - 8, 0);
MoveTo(4, 40);
Line(width - 8, 0);
end;
{-------------------------}
begin
GetPort(wasPort);
theDlgPtr := GetNewDialog(roomCondID, nil, Pointer(-1));
if (theDlgPtr = nil) then
begin
GenericAlert(kErrLoadingRes);
Exit(DoRoomCondInfo);
end;
with theDlgPtr^.portBits do
begin
rightOff := rightOffset - bounds.left;
downOff := downOffset - bounds.top;
end;
MoveWindow(theDlgPtr, rightOff, downOff, FALSE);
ShowWindow(theDlgPtr);
SelectWindow(theDlgPtr);
SetPort(theDlgPtr);
tempRoom := thisRoom;
with tempRoom do
begin
{pop name of room into edit text field}
GetDItem(theDlgPtr, nameEdit, cntlType, dlgItem, tempRect);
strTemp := roomName;
SetIText(dlgItem, strTemp);
{pop the room number as static text}
GetDItem(theDlgPtr, roomNumStat, cntlType, dlgItem, tempRect);
NumToString(roomAt, strTemp);
SetIText(dlgItem, strTemp);
{pop up number of animates into edit text field}
GetDItem(theDlgPtr, numOfEdit, cntlType, dlgItem, tempRect);
NumToString(animateNumber, strTemp);
SetIText(dlgItem, strTemp);
{pop up delay - convert to seconds}
GetDItem(theDlgPtr, delayEdit, cntlType, dlgItem, tempRect);
NumToString(animateDelay, strTemp);
SetIText(dlgItem, strTemp);
{pop up number of objects as static text}
GetDItem(theDlgPtr, objectsStat, cntlType, dlgItem, tempRect);
NumToString(numberOObjects, strTemp);
SetIText(dlgItem, strTemp);
{select radio button representing animate kind}
if (animateNumber > 0) then
begin
tempInt := 9 - animateKind;
GetDItem(theDlgPtr, tempInt, cntlType, dlgItem, tempRect);
SetCtlValue(ControlHandle(dlgItem), 1);
end
else
begin
GetDItem(theDlgPtr, nothingRadio, cntlType, dlgItem, tempRect);
SetCtlValue(ControlHandle(dlgItem), 1);
end;
{select radio button representing condition of room}
GetDItem(theDlgPtr, conditionCode + 3, cntlType, dlgItem, tempRect);
SetCtlValue(ControlHandle(dlgItem), 1);
{decide whether or not to gray out cancel button}
if (not shouldOpen) then
begin
GetDItem(theDlgPtr, cancelBut, cntlType, dlgItem, tempRect);
HiliteControl(ControlHandle(dlgItem), inactive);
end;
end; {end - with tempRoom do}
{select the name of the room}
SelIText(theDlgPtr, nameEdit, 0, 24);
Redraw;
leaveDlg := FALSE;
shouldOpen := FALSE;
repeat
ModalDialog(nil, itemHit);
GetDItem(theDlgPtr, itemHit, cntlType, dlgItem, tempRect);
for i := normalRadio to lightsRadio do
if (itemHit = i) then
begin
for tempInt := normalRadio to lightsRadio do
begin
GetDItem(theDlgPtr, tempInt, cntlType, dlgItem, tempRect);
SetCtlValue(ControlHandle(dlgItem), 0);
end;
GetDItem(theDlgPtr, i, cntlType, dlgItem, tempRect);
SetCtlValue(ControlHandle(dlgItem), 1);
tempRoom.conditionCode := i - normalRadio;
end;
for i := nothingRadio to dartsRadio do
if (itemHit = i) then
begin
for tempInt := nothingRadio to dartsRadio do
begin
GetDItem(theDlgPtr, tempInt, cntlType, dlgItem, tempRect);
SetCtlValue(ControlHandle(dlgItem), 0);
end;
GetDItem(theDlgPtr, i, cntlType, dlgItem, tempRect);
SetCtlValue(ControlHandle(dlgItem), 1);
if (itemHit = nothingRadio) then
begin
tempRoom.animateNumber := 0;
GetDItem(theDlgPtr, numOfEdit, cntlType, dlgItem, tempRect);
NumToString(tempRoom.animateNumber, strTemp);
SetIText(dlgItem, strTemp);
end
else
begin
tempRoom.animateKind := 9 - i;
end;
end;
if (itemHit = okayBut) then
begin
leaveDlg := TRUE;
with tempRoom do
begin
GetDItem(theDlgPtr, numOfEdit, cntlType, dlgItem, tempRect);
GetIText(dlgItem, strTemp); {Get the text entered}
StringToNum(strTemp, tempLong);
tempRoom.animateNumber := LoWord(tempLong);
if (tempRoom.animateNumber < 0) then
begin
SysBeep(1);
leaveDlg := FALSE;
tempInt := -tempRoom.animateNumber;
if (tempInt > 16) then
tempInt := 16;
NumToString(tempInt, strTemp);
SetIText(dlgItem, strTemp);
end;
if (tempRoom.animateNumber > 16) then
begin
SysBeep(1);
leaveDlg := FALSE;
NumToString(16, strTemp);
SetIText(dlgItem, strTemp);
end;
GetDItem(theDlgPtr, delayEdit, cntlType, dlgItem, tempRect);
GetIText(dlgItem, strTemp); {Get the text entered}
StringToNum(strTemp, tempLong);
tempRoom.animateDelay := LoWord(tempLong);
if (tempRoom.animateDelay < 0) then
begin
SysBeep(1);
leaveDlg := FALSE;
tempInt := -tempRoom.animateDelay;
if (tempInt > 16) then
tempInt := 16;
NumToString(tempInt, strTemp);
SetIText(dlgItem, strTemp);
end;
GetDItem(theDlgPtr, nameEdit, cntlType, dlgItem, tempRect);
GetIText(dlgItem, strTemp); {Get the text entered}
if (LENGTH(strTemp) > 24) then
strTemp := COPY(strTemp, 1, 24);
tempRoom.roomName := strTemp;
end; {end - with tempRoom}
if (leaveDlg) then
begin
changed := TRUE;
thisRoom := tempRoom;
DrawRoomNum;
end;
end;
if (itemHit = cancelBut) then
begin
if (thisHouse.numberORooms < 1) then
shouldOpen := TRUE;
leaveDlg := TRUE;
end;
until leaveDlg;
DisposDialog(theDlgPtr);
if (toolWndo <> nil) then
SetPort(toolWndo)
else
SetPort(wasPort);
end;
{=================================}
end.