equal
deleted
inserted
replaced
1 unit uAILandMarks; |
1 unit uAILandMarks; |
2 |
2 |
3 interface |
3 interface |
4 const |
4 const |
5 markWalkedHere = $01; |
5 markWalkedHere = $01; |
6 markHJumped = $02; |
6 markHJumped = $02; |
7 markLJumped = $04; |
7 markLJumped = $04; |
8 |
8 |
9 procedure addMark(X, Y: LongInt; mark: byte); |
9 procedure addMark(X, Y: LongInt; mark: byte); |
33 end |
33 end |
34 end; |
34 end; |
35 |
35 |
36 function checkMark(X, Y: LongInt; mark: byte) : boolean; |
36 function checkMark(X, Y: LongInt; mark: byte) : boolean; |
37 begin |
37 begin |
38 checkMark:= ((X and LAND_WIDTH_MASK) = 0) |
38 checkMark:= ((X and LAND_WIDTH_MASK) = 0) |
39 and ((Y and LAND_HEIGHT_MASK) = 0) |
39 and ((Y and LAND_HEIGHT_MASK) = 0) |
40 and ((marks[Y shr gr, X shr gr] and mark) <> 0) |
40 and ((marks[Y shr gr, X shr gr] and mark) <> 0) |
41 end; |
41 end; |
42 |
42 |
43 procedure clearAllMarks; |
43 procedure clearAllMarks; |
44 var |
44 var |
45 Y, X: Longword; |
45 Y, X: Longword; |
46 begin |
46 begin |
47 for Y:= 0 to Pred(HEIGHT) do |
47 for Y:= 0 to Pred(HEIGHT) do |
48 for X:= 0 to Pred(WIDTH) do |
48 for X:= 0 to Pred(WIDTH) do |
49 marks[Y, X]:= 0 |
49 marks[Y, X]:= 0 |
50 end; |
50 end; |
51 |
51 |
52 procedure clearMarks(mark: byte); |
52 procedure clearMarks(mark: byte); |
53 var |
53 var |
54 Y, X: Longword; |
54 Y, X: Longword; |
55 begin |
55 begin |
56 for Y:= 0 to Pred(HEIGHT) do |
56 for Y:= 0 to Pred(HEIGHT) do |
57 for X:= 0 to Pred(WIDTH) do |
57 for X:= 0 to Pred(WIDTH) do |
58 marks[Y, X]:= marks[Y, X] and (not mark) |
58 marks[Y, X]:= marks[Y, X] and (not mark) |
60 |
60 |
61 procedure setAILandMarks; |
61 procedure setAILandMarks; |
62 begin |
62 begin |
63 WIDTH:= LAND_WIDTH shr gr; |
63 WIDTH:= LAND_WIDTH shr gr; |
64 HEIGHT:= LAND_HEIGHT shr gr; |
64 HEIGHT:= LAND_HEIGHT shr gr; |
65 |
65 |
66 SetLength(marks, HEIGHT, WIDTH); |
66 SetLength(marks, HEIGHT, WIDTH); |
67 end; |
67 end; |
68 |
68 |
69 procedure initModule; |
69 procedure initModule; |
70 begin |
70 begin |