SUBROUTINE GUNSIT # # THIS SUBROUTINE CONTROLS THE POSITIONING OF THE PLAYER'S GUNSIGHT. # THIS IS DONE BY MOVING THE GUNSIGHT IN THE DIRECTION SPECIFIED IN # THE VARIABLE 'CURDIR', WHICH IS SET BY THE UNSOLICITED CHARACTER # INPUT AST ROUTINE, INPAST. # IMPLICIT INTEGER (A-Z) INCLUDE SY:MISSIL.CMN INCLUDE SY:UVT100.DAT IF (CURDIR > HALT) [ #MOTION REQUESTED CALL UVT100(CUP,GUNX,GUNY) #BLANK OUT CURRENT DISPLAY OF GUNSIGHT OUTBUF(LEN+1) = SPACE LEN = LEN + 1 IF (CURDIR == UP) #UPDATE GUNSIGHT X,Y COORDINATES GUNX = GUNX - 1 ELSE IF (CURDIR == DOWN) GUNX = GUNX + 1 ELSE IF (CURDIR == LEFT) GUNY = GUNY - 1 ELSE IF (CURDIR == RIGHT) GUNY = GUNY + 1 ELSE IF (CURDIR == UPL) [ GUNX = GUNX - 1 GUNY = GUNY - 1 ] ELSE IF (CURDIR == UPR) [ GUNX = GUNX - 1 GUNY = GUNY + 1 ] ELSE IF (CURDIR == DOWNL) [ GUNX = GUNX + 1 GUNY = GUNY - 1 ] ELSE IF (CURDIR == DOWNR) [ GUNX = GUNX + 1 GUNY = GUNY + 1 ] # # IF NEW POSITION IS OUTSIDE OF LEGAL LIMITS, # CORRECT IT AND ADJUST DIRECTION OF MOTION. # IF (GUNX < TMAR) [ #TOO FAR TO TOP OF SCREEN GUNX = TMAR IF (CURDIR == UPL) CURDIR = LEFT ELSE IF (CURDIR == UPR) CURDIR = RIGHT ELSE IF (CURDIR == UP) CURDIR = HALT ] ELSE IF (GUNX > BMAR) [ #TOO FAR TO BOTTOM OF SCREEN GUNX = BMAR IF (CURDIR == DOWNL) CURDIR = LEFT ELSE IF (CURDIR == DOWNR) CURDIR = RIGHT ELSE IF (CURDIR == DOWN) CURDIR = HALT ] IF (GUNY < LMAR) [ #TOO FAR TO LEFT OF SCREEN GUNY = LMAR IF (CURDIR == UPL) CURDIR = UP ELSE IF (CURDIR == DOWNL) CURDIR = DOWN ELSE IF (CURDIR == LEFT) CURDIR = HALT ] ELSE IF (GUNY > RMAR) [ #TOO FAR TO RIGHT OF SCREEN GUNY = RMAR IF (CURDIR == UPR) CURDIR = UP ELSE IF (CURDIR == UPL) CURDIR = DOWN ELSE IF (CURDIR == RIGHT) CURDIR = HALT ] ] CALL UVT100(CUP,GUNX,GUNY) OUTBUF(LEN+1) = GSITE LEN = LEN + 1 RETURN END