diff --git a/src/game/g_player.pas b/src/game/g_player.pas
index 23570cc87a246320d55d04086b925fdeb57ab63c..8981721df6bbddeb5e0cde76baa242b1e8c0cab6 100644 (file)
--- a/src/game/g_player.pas
+++ b/src/game/g_player.pas
uses
e_log, g_map, g_items, g_console, SysUtils, g_gfx, Math,
- g_options, g_triggers, g_menu, MAPDEF, g_game,
- wadreader, g_main, g_monsters, CONFIG, g_language, g_net, g_netmsg;
+ g_options, g_triggers, g_menu, MAPDEF, g_game, g_grid,
+ wadreader, g_main, g_monsters, CONFIG, g_language,
+ g_net, g_netmsg;
type
TBotProfile = record
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, true) then
+ 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);
begin
e_DrawLine(sz, ax0, ay0, ex, ey, 0, 0, 255, 96);
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
+ begin
+ e_DrawLine(2, ax0, ay0, ex, ey, 255, 255, 0, 96);
+ end
+ else
+ begin
+ e_DrawLine(2, ax0, ay0, ex, ey, 255, 127, 0, 96);
+ end;
+ }
+
+ g_Mons_AlongLine(ax0, ay0, ax1, ay1, monsCollector, true);
end;
var