hedgewars/uAILandMarks.pas
changeset 10017 de822cd3df3a
parent 7850 fcbb024090a4
equal deleted inserted replaced
10015:4feced261c68 10017:de822cd3df3a
     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