home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 March
/
Chip_1998-03_cd.bin
/
tema
/
MINICAD
/
MC7DEMO
/
MINICAD.1
/
SCENECHG.MPC
< prev
next >
Wrap
Text File
|
1997-04-30
|
3KB
|
112 lines
PROCEDURE sceneChangeTemplate;
CONST
MOVES = 4;
VAR
h:HANDLE;
i : INTEGER;
the1stNum,the2ndNum : REAL;
checkNum : BOOLEAN;
Error,theName,theAction,str : STRING;
sceneChange:ARRAY[1..MOVES] OF STRING;
PROCEDURE ParseStr(theStr : STRING; VAR errorStr,what,action : STRING; VAR num1,num2 : REAL);
VAR
delimitPos: INTEGER;
paramItemStr,numStr: STRING;
BEGIN
paramItemStr := theStr;
errorStr:= '';
delimitPos:= POS(',',paramItemStr);
IF (POS(',',paramItemStr) <> 0) THEN what:= COPY(paramItemStr,1,delimitPos-1) ELSE error := theStr;
DELETE(paramItemStr,1,delimitPos);
delimitPos:= POS(',',paramItemStr);
IF (POS(',',paramItemStr) <> 0) THEN action:= COPY(paramItemStr,1,delimitPos-1) ELSE error := theStr;
DELETE(paramItemStr,1,delimitPos);
delimitPos:= POS(',',paramItemStr);
IF (POS(',',paramItemStr) <> 0) THEN numStr:=COPY(paramItemStr,1,delimitPos-1);
checkNum:= ValidNumStr(numStr,num1);
IF NOT(checkNum) THEN errorStr:= CONCAT(errorStr,' 3rd param;');
delimitPos:= POS(',',paramItemStr);
IF (POS(',',paramItemStr) <> 0) THEN numStr:=COPY(paramItemStr,1,delimitPos-1);
checkNum:= ValidNumStr(numStr,num2);
IF NOT(checkNum) THEN errorStr:= CONCAT(errorStr,' 4th param;');
UprString(action);
WRITELN('final sendoff ',what,action,num1,num2);
END;
PROCEDURE doRotate(what: STRING; degrees: REAL);
VAR
rotateHan: HANDLE;
ang, X1, Y1: REAL;
BEGIN
rotateHan:= GetObject(what);
ang:= GetSymRot(rotateHan);
HCenter(rotateHan, X1, Y1);
HRotate(rotateHan, X1, Y1, -ang);
HRotate(rotateHan, X1, Y1, degrees);
END;
PROCEDURE doMove(what: STRING; x1,y1: REAL);
VAR
moveHan:HANDLE;
xC,yC : REAL;
BEGIN
moveHan:= GetObject(what);
HCenter(moveHan, xC, yC);
HMove(moveHan, x1-xC, y1-yc);
END;
PROCEDURE doShow(what: STRING);
VAR
showHan:HANDLE;
BEGIN
showHan:= GetObject(what);
Show(N=what);
END;
PROCEDURE doHide(what: STRING);
VAR
hideHan:HANDLE;
BEGIN
hideHan:= GetObject(what);
Hide(N=what);
END;
PROCEDURE doError(error,what: STRING);
VAR
errorStr:STRING;
BEGIN
errorStr:= CONCAT(error,'I can╒t read the action for ',what,'.');
AlrtDialog(errorStr);
END;
BEGIN
{_____________________________________________}
{** Put your scene change assignments here. **};
sceneChange[1]:='None,Rotate,0,0';
sceneChange[2]:='None,Move,0,0';
sceneChange[3]:='None,Show,0,0';
sceneChange[4]:='None,Hide,0,0';
{_____________________________________________}
PUSHATTRS;
DSELECTALL;
FOR i:= 1 TO MOVES DO
BEGIN
ParseStr(sceneChange[i],Error,theName,theAction,the1stNum,the2ndNum);
WRITELN('RETURNED ',theName,theAction,the1stNum,the2ndNum);
IF Error = '' THEN BEGIN
IF theAction = 'ROTATE' THEN doRotate(theName,the1stNum);
IF theAction = 'MOVE' THEN doMove(theName,the1stNum,the2ndNum);
IF theAction = 'SHOW' THEN doShow(theName);
IF theAction = 'HIDE' THEN doHide(theName);
END
ELSE doError(Error,theName);
END;
POPATTRS;
CLRMESSAGE;
END;
RUN(sceneChangeTemplate);