diff --git a/src/game/g_basic.pas b/src/game/g_basic.pas
index a5790239f616380501b8e33b29ce7a19d0d7954d..53177473ac59a0c7da0a4f9d264fd60167f80212 100644 (file)
--- a/src/game/g_basic.pas
+++ b/src/game/g_basic.pas
function b_Text_Format(S: string): string;
function b_Text_Unformat(S: string): string;
function b_Text_Format(S: string): string;
function b_Text_Unformat(S: string): string;
+
+var
+ gmon_dbg_los_enabled: Boolean = true;
+
implementation
uses
implementation
uses
- Math, g_map, g_gfx, g_player, SysUtils, MAPDEF,
- StrUtils, e_graphics, g_monsters, g_items;
+ Math, e_log, g_map, g_gfx, g_player, SysUtils, MAPDEF,
+ StrUtils, e_graphics, g_monsters, g_items, g_game;
function g_PatchLength(X1, Y1, X2, Y2: Integer): Word;
begin
function g_PatchLength(X1, Y1, X2, Y2: Integer): Word;
begin
Result := True;
*)
Result := True;
*)
- result := false;
- if g_Map_traceToNearestWall(x1, y1, x2, y2, @wallHitX, @wallHitY) then
- begin
- // check distance
- //result := ((wallHitX-x1)*(wallHitX-x1)+(wallHitY-y1)*(wallHitY-y1) > (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
- result := false;
- end
- else
- begin
- result := true; // no obstacles
- end;
+ // `true` if no obstacles
+ if (g_profile_los) then g_Mons_LOS_Start();
+ result := (g_Map_traceToNearestWall(x1, y1, x2, y2, @wallHitX, @wallHitY) = nil);
+ if (g_profile_los) then g_Mons_LOS_End();
end;
end;
function g_Look(a, b: PObj; d: TDirection): Boolean;
begin
function g_Look(a, b: PObj; d: TDirection): Boolean;
begin
+ if not gmon_dbg_los_enabled then begin result := false; exit; end; // always "wall hit"
+
if ((b^.X > a^.X) and (d = D_LEFT)) or
((b^.X < a^.X) and (d = D_RIGHT)) then
begin
if ((b^.X > a^.X) and (d = D_LEFT)) or
((b^.X < a^.X) and (d = D_RIGHT)) then
begin