From: DeaDDooMER Date: Wed, 9 Jun 2021 10:42:03 +0000 (+0300) Subject: cleanup: move monster-specific code from g_basic X-Git-Url: http://deadsoftware.ru/gitweb?a=commitdiff_plain;h=8ef31e93656fa721dbcdc9169aff3d277632405c;p=d2df-sdl.git cleanup: move monster-specific code from g_basic --- diff --git a/src/game/g_basic.pas b/src/game/g_basic.pas index bc61b88..60b6a96 100644 --- a/src/game/g_basic.pas +++ b/src/game/g_basic.pas @@ -55,7 +55,6 @@ function g_CollidePlayer(X, Y: Integer; Width, Height: Word): Boolean; inline; function g_PatchLength(X1, Y1, X2, Y2: Integer): Word; function g_TraceVector(X1, Y1, X2, Y2: Integer): Boolean; // `true`: no wall hit function g_GetAcidHit(X, Y: Integer; Width, Height: Word): Byte; -function g_Look(a, b: PObj; d: TDirection): Boolean; procedure IncMax(var A: Integer; B, Max: Integer); overload; procedure IncMax(var A: Single; B, Max: Single); overload; procedure IncMax(var A: Integer; Max: Integer); overload; @@ -565,23 +564,6 @@ begin Result := tab[a]; end; -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 = TDirection.D_LEFT)) or - ((b^.X < a^.X) and (d = TDirection.D_RIGHT)) then - begin - Result := False; - Exit; - end; - - Result := g_TraceVector(a^.X+a^.Rect.X+(a^.Rect.Width div 2), - a^.Y+a^.Rect.Y+(a^.Rect.Height div 2), - b^.X+b^.Rect.X+(b^.Rect.Width div 2), - b^.Y+b^.Rect.Y+(b^.Rect.Height div 2)); -end; - function GetAngle(baseX, baseY, pointX, PointY: Integer): SmallInt; var c: Single; diff --git a/src/game/g_monsters.pas b/src/game/g_monsters.pas index d55b6bb..11c98da 100644 --- a/src/game/g_monsters.pas +++ b/src/game/g_monsters.pas @@ -494,6 +494,22 @@ uses g_language, g_netmsg, idpool, utils, xstreams; +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 = TDirection.D_LEFT)) or + ((b^.X < a^.X) and (d = TDirection.D_RIGHT)) then + begin + Result := False; + Exit; + end; + + Result := g_TraceVector(a^.X+a^.Rect.X+(a^.Rect.Width div 2), + a^.Y+a^.Rect.Y+(a^.Rect.Height div 2), + b^.X+b^.Rect.X+(b^.Rect.Width div 2), + b^.Y+b^.Rect.Y+(b^.Rect.Height div 2)); +end; // ////////////////////////////////////////////////////////////////////////// // procedure g_Mons_ProfilersBegin ();