DIRECTORY BasicTime, Commander, Icons, Imager, ImagerPixelMap, Labels, MazeWarFinder, MazeWarPlayer, MazeWarPlayerRpcControl, Rope, RPC, ViewerClasses; MazeWarPlayerInsides: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Viewer: TYPE = ViewerClasses.Viewer; Context: TYPE = Imager.Context; Bitmap: TYPE = ImagerPixelMap.PixelMap; nilBitmap: Bitmap = [0, 0, 0, 0, 0, 0, NIL]; Label: TYPE = Labels.Label; PlayerId: TYPE = MazeWarFinder.PlayerId; BasicPlayer: TYPE = MazeWarFinder.BasicPlayer; BasicPlayerList: TYPE = MazeWarFinder.BasicPlayerList; Angle: TYPE = MazeWarPlayer.Angle; PlayerInterface: TYPE = MazeWarPlayerRpcControl.InterfaceRecord; MazeView: TYPE = REF MazeViewRep; MazeViewRep: TYPE = RECORD [ asRope: ROPE, players, differentMazePlayers: LIST OF Player _ NIL, container, maze: Viewer _ NIL, rows, cols: INTEGER, topX, topY, inX, inY: Number, squares: SEQUENCE size: CARDINAL OF Square]; Square: TYPE = RECORD [ occupants: PlayerList _ NIL, open: BOOLEAN _ TRUE, changed: BOOLEAN _ FALSE]; PlayerList: TYPE = LIST OF Player; Player: TYPE = REF PlayerRep; PlayerRep: TYPE = RECORD [ id: PlayerId _ -1, ir: PlayerInterface, callFailures: INTEGER _ 0, instanceName: ROPE, destroyed, pausing, --blinking,-- shot, quivering: BOOLEAN _ FALSE, quiverTill: BasicTime.Pulses, row, col, angle, peek: INTEGER _ 0, srow, scol, sangle, speek: INTEGER _ -1, distance, sdistance: INTEGER _ -1, mv: MazeView, name: ROPE, score: INTEGER _ 0, nameLabel, scoreLabel: Label, pics: PlayerPics, announce: BOOL _ FALSE, announceLock: REF MONITORLOCK, announceChange: CONDITION, announceShot: BOOL _ FALSE]; LocatedBitmap: TYPE = RECORD [ bitmap: Bitmap _ nilBitmap, fOrigin, sOrigin: INTEGER _ 0]; pieces: ARRAY [0 .. MaxDistance] OF ARRAY Piece OF LocatedBitmap; Piece: TYPE = {LeftFilled, LeftGap, LeftEdge, RightFilled, RightGap, RightEdge, HorEdges}; Index: PROC [mv: MazeView, row, col: INTEGER] RETURNS [index: INTEGER] = INLINE {index _ row * mv.cols + col}; Direction: PROC [mv: MazeView, drow, dcol: INTEGER] RETURNS [dIndex: INTEGER] = INLINE {dIndex _ Index[mv, drow, dcol]}; dToA: ARRAY [-1 .. 1] OF ARRAY [-1 .. 1] OF [0 .. 4] = [[4, 3, 4], [2, 4, 0], [4, 1, 4]]; aToD: ARRAY [0 .. 4) OF RECORD [drow, dcol: INTEGER] = [[0, 1], [1, 0], [0, -1], [-1, 0]]; tvd: INTEGER = 8; Number: TYPE = INT; Pt3: TYPE = RECORD [x, y, z: Number]; r: Number = 1200; s: Number = 300; dz: Number = r*2/s; z1: Number = dz; hither: Number = 3*dz/4; w: Number = r/hither; peekLeft: INTEGER = 3; peekRight: INTEGER = 1; myself: Player; playerNumber: CARDINAL; myInstance: ROPE; topviews: ARRAY Angle OF Bitmap; PlayerPics: TYPE = REF PlayerPicsRep; PlayerPicsRep: TYPE = RECORD [ name: ROPE, pics: ARRAY [1..MaxDistance] OF ARRAY Angle OF Bitmap]; MaxDistance: INTEGER = 29; defaultPlayerPics: PlayerPics; mazeViewerFlavor: ATOM; mazeViewerClass: ViewerClasses.ViewerClass; mazeWarriorIcon: Icons.IconFlavor; exportedPlayer: BOOLEAN; paints: INTEGER; clippable: BOOLEAN; blt: BOOLEAN; forkNotify: BOOLEAN; quiverTime: BasicTime.Pulses; shownPlayers: PlayerList; StartPlayer, StopPlayer: Commander.CommandProc; MakeNewPlayer: PROC [name, instance, picsSource, mazeSource: ROPE] RETURNS [errmsg: ROPE _ NIL]; EnsurePlayer: PROC [bp: BasicPlayer] RETURNS [q: Player]; FindPlayer: PROC [pl: PlayerList, id: PlayerId] RETURNS [p: Player]; Filter: PROC [org: PlayerList, rem: Player] RETURNS [ohne: PlayerList]; PickAPlace: PROC [mv: MazeView] RETURNS [row, col: INTEGER]; DrawHall: PROC [context: Context, mv: MazeView, row, col, drow, dcol: INTEGER, angle: Angle]; AddScoring: PROC [vp, p: Player]; AddPlayerAt: PROC [mv: MazeView, ir: PlayerInterface, instanceName: ROPE, id: PlayerId, name: ROPE, row, col: INTEGER, angle: Angle, score: INTEGER, pp: PlayerPics] RETURNS [p: Player]; Peek: PROC [peek, row, col, angle: INTEGER] RETURNS [prow, pcol, pdrow, pdcol, pangle: INTEGER]; Visible: PROC [mv: MazeView, frow, fcol, fdrow, fdcol, trow, tcol: INTEGER] RETURNS [distance: INTEGER]; Visibility: PROC [from, to: Player] RETURNS [distance: INTEGER]; NormalizePlayerPicsRoot: PROC [ROPE] RETURNS [ROPE]; GetPlayerPics: PROC [root: ROPE] RETURNS [pp: PlayerPics]; LosePlayerPics: PROC [root: ROPE]; IncrPaint: PROC [p: Player]; PaintMaze: ViewerClasses.PaintProc--PROC [self: Viewer, context: Graphics.Context, whatChanged: REF ANY, clear: BOOL]--; AnnounceStatus: PROC [shot: BOOLEAN]; NoticeCall: PROC [p: Player, ok: BOOLEAN]; HandleCallFailure: PROC [callee: Player, why: RPC.CallFailure] RETURNS [handled: BOOLEAN _ FALSE]; CallUnderMonitor1: PROC [PROC]; END. š[Cedar]Top>MazeWar.df=>MazeWarPlayerInsides.Mesa Mike Spreitzer July 10, 1986 9:36:07 pm PDT Hal Murray, March 16, 1986 7:27:33 pm PST Κj– "cedar" style˜šœΟmœ*™=Icode™+K™)—J˜KšΟk œ{žœ˜—K˜KšΠbxœžœž œ˜)K˜Kšž˜K˜Kšžœžœžœ˜Kšœžœ˜$Kšœ žœ˜Kšœžœ˜'Kšœ'žœ˜,Kšœžœ˜K˜Kšœ žœ˜(Kšœ žœ˜.Kšœžœ!˜6Kšœžœ˜"Kšœžœ+˜@K˜Kšœ žœžœ ˜!šœ žœžœ˜Kšœžœ˜ Kšœžœžœ žœ˜4Kšœžœ˜Kšœ žœ˜K˜Kšœ žœžœžœ ˜,—K˜šœžœžœ˜Kšœžœ˜Kšœžœžœ˜Kšœ žœžœ˜—K˜Kšœ žœžœžœ˜"Kšœžœžœ ˜šœ žœžœ˜K˜K˜Kšœžœ˜Kšœžœ˜KšœΟc œžœžœ˜CKšœ˜Kšœžœ˜#Kšœžœ˜(Kšœžœ˜"Kšœ ˜ Kšœžœ˜ Kšœžœ˜Kšœ˜Kšœ˜Kšœ žœžœ˜Kšœžœž œ˜Kšœž œ˜Kšœžœžœ˜—K˜šœžœžœ˜Kšœ˜Kšœžœ˜—K˜Kš œžœžœžœžœ˜AK˜KšœžœO˜ZK˜Kš Οnœžœžœžœ žœžœ˜nK˜Kš ‘ œžœžœžœ žœžœ"˜xK˜š œžœ žœžœ žœ ˜6K˜"—K˜š œžœ žœžœžœ˜6Kšœ#˜#—K˜Kšœžœ˜K˜Kšœžœžœ˜Kšœžœžœ˜%K˜Kšœ˜K˜Kšœ˜K˜K˜K˜K˜Kšœ žœ˜Kšœ žœ˜K˜Kšœ˜K˜Kšœžœ˜Kšœ žœ˜K˜Kšœ žœžœ˜ K˜Kšœ žœžœ˜&šœžœžœ˜Kšœžœ˜ Kš œžœžœžœžœ ˜7—K˜Kšœ žœ˜K˜K˜K˜Kšœžœ˜Kšœ+˜+K˜"K˜Kšœžœ˜Kšœžœ˜K˜Kšœ žœ˜Kšœžœ˜ Kšœ žœ˜K˜K˜Kšœ˜K˜Kš‘œ˜/K˜Kš ‘ œžœ*žœžœ žœžœ˜`K˜Kš‘ œžœžœ ˜9Kš‘ œžœ žœ ˜DKš‘œžœ žœ‘˜GKš‘ œžœžœ žœ˜