X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=ebbd2043e5fc69d7784346b031c5b51d804f637c;hb=a17222535319cb4089e3f9a92711731c015819b3;hp=8981721df6bbddeb5e0cde76baa242b1e8c0cab6;hpb=b79ddd98d923ee15f4bfd1db5111e669fc19964a;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 8981721..ebbd204 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -249,6 +249,11 @@ type FDummy: Boolean; FFireTime: Integer; + // debug: viewport offset + viewPortX, viewPortY, viewPortW, viewPortH: Integer; + + function isValidViewPort (): Boolean; inline; + constructor Create(); virtual; destructor Destroy(); override; procedure Respawn(Silent: Boolean; Force: Boolean = False); virtual; @@ -521,7 +526,7 @@ uses e_log, g_map, g_items, g_console, SysUtils, g_gfx, Math, g_options, g_triggers, g_menu, MAPDEF, g_game, g_grid, wadreader, g_main, g_monsters, CONFIG, g_language, - g_net, g_netmsg; + g_net, g_netmsg, g_window, GL, g_holmes; type TBotProfile = record @@ -1845,6 +1850,8 @@ end; { T P l a y e r : } +function TPlayer.isValidViewPort (): Boolean; inline; begin result := (viewPortW > 0) and (viewPortH > 0); end; + procedure TPlayer.BFGHit(); begin g_Weapon_BFGHit(FObj.X+FObj.Rect.X+(FObj.Rect.Width div 2), @@ -1988,6 +1995,11 @@ end; constructor TPlayer.Create(); begin + viewPortX := 0; + viewPortY := 0; + viewPortW := 0; + viewPortH := 0; + FIamBot := False; FDummy := False; FSpawned := False; @@ -2303,57 +2315,26 @@ begin DrawAim(); end; + procedure TPlayer.DrawAim(); procedure drawCast (sz: Integer; ax0, ay0, ax1, ay1: Integer); - - function monsCollector (mon: TMonster; tag: Integer): Boolean; - var - ex, ey: Integer; - mx, my, mw, mh: Integer; - begin - result := false; - mon.getMapBox(mx, my, mw, mh); - e_DrawQuad(mx, my, mx+mw-1, my+mh-1, 255, 255, 0, 96); - if lineAABBIntersects(ax0, ay0, ax1, ay1, mx, my, mw, mh, ex, ey) then - begin - e_DrawPoint(8, ex, ey, 0, 255, 0); - end; - end; - var ex, ey: Integer; - //mon: TMonster; - //mx, my, mw, mh: Integer; begin - e_DrawLine(sz, ax0, ay0, ax1, ay1, 255, 0, 0, 96); - if g_Map_traceToNearestWall(ax0, ay0, ax1, ay1, @ex, @ey) then - begin - e_DrawLine(sz, ax0, ay0, ex, ey, 0, 255, 0, 96); - e_DrawPoint(4, ex, ey, 255, 127, 0); - end - else + if isValidViewPort and (self = gPlayer1) then begin - e_DrawLine(sz, ax0, ay0, ex, ey, 0, 0, 255, 96); + g_Holmes_plrLaser(ax0, ay0, ax1, ay1); end; - { - mon := g_Mons_ByIdx(0); - mon.getMapBox(mx, my, mw, mh); - ax1 := mx+mw div 2; - ay1 := my+mh div 2; - e_DrawLine(2, ax0, ay0, ax1, ay1, 0, 96, 96, 96); - - if lineAABBIntersects(ax0, ay0, ax1, ay1, mx, my, mw, mh, ex, ey) then + e_DrawLine(sz, ax0, ay0, ax1, ay1, 255, 0, 0, 96); + if (g_Map_traceToNearestWall(ax0, ay0, ax1, ay1, @ex, @ey) <> nil) then begin - e_DrawLine(2, ax0, ay0, ex, ey, 255, 255, 0, 96); + e_DrawLine(sz, ax0, ay0, ex, ey, 0, 255, 0, 96); end else begin - e_DrawLine(2, ax0, ay0, ex, ey, 255, 127, 0, 96); + e_DrawLine(sz, ax0, ay0, ex, ey, 0, 0, 255, 96); end; - } - - g_Mons_AlongLine(ax0, ay0, ax1, ay1, monsCollector, true); end; var @@ -2442,10 +2423,10 @@ begin end; xx := Trunc(Cos(-DegToRad(angle)) * len) + wx; yy := Trunc(Sin(-DegToRad(angle)) * len) + wy; - {$IF FALSE} - e_DrawLine(sz, wx, wy, xx, yy, 255, 0, 0, 96); - {$ELSE} + {$IF DEFINED(D2F_DEBUG)} drawCast(sz, wx, wy, xx, yy); + {$ELSE} + e_DrawLine(sz, wx, wy, xx, yy, 255, 0, 0, 96); {$ENDIF} end;