DEADSOFTWARE

hacked new ray tracer: it is complete shit, but at least it seems to work; i'll rewri...
[d2df-sdl.git] / src / game / g_holmes.pas
index 47d34812cea47f6dd0f13797b9f144292a95f1c7..b6724a994d7c2fca015d85a67fbf8bbdb73584e1 100644 (file)
@@ -83,7 +83,8 @@ function g_Holmes_MouseEvent (var ev: THMouseEvent): Boolean; // returns `true`
 function g_Holmes_KeyEvent (var ev: THKeyEvent): Boolean; // returns `true` if event was eaten
 
 // hooks for player
-procedure g_Holmes_plrView (viewPortX, viewPortY, viewPortW, viewPortH: Integer);
+procedure g_Holmes_plrViewPos (viewPortX, viewPortY: Integer);
+procedure g_Holmes_plrViewSize (viewPortW, viewPortH: Integer);
 procedure g_Holmes_plrLaser (ax0, ay0, ax1, ay1: Integer);
 
 
@@ -656,11 +657,16 @@ var
   platMarkedGUID: Integer = -1;
 
 
-procedure g_Holmes_plrView (viewPortX, viewPortY, viewPortW, viewPortH: Integer);
+procedure g_Holmes_plrViewPos (viewPortX, viewPortY: Integer);
 begin
   vpSet := true;
   vpx := viewPortX;
   vpy := viewPortY;
+end;
+
+procedure g_Holmes_plrViewSize (viewPortW, viewPortH: Integer);
+begin
+  vpSet := true;
   vpw := viewPortW;
   vph := viewPortH;
 end;
@@ -961,6 +967,8 @@ procedure plrDebugDraw ();
   procedure hilightCell1 (cx, cy: Integer);
   begin
     //e_WriteLog(Format('h1: (%d,%d)', [cx, cy]), MSG_NOTIFY);
+    cx := cx and (not (monsGrid.tileSize-1));
+    cy := cy and (not (monsGrid.tileSize-1));
     fillRect(cx, cy, monsGrid.tileSize, monsGrid.tileSize, 255, 255, 0, 92);
   end;
 
@@ -1031,7 +1039,7 @@ procedure plrDebugDraw ();
       mon.getMapBox(mx, my, mw, mh);
       drawLine(mx+mw div 2, my+mh div 2, emx+emw div 2, emy+emh div 2, 255, 0, 0, 255);
       {$IF DEFINED(D2F_DEBUG)}
-      //mapGrid.dbgRayTraceTileHitCB := hilightCell1;
+      mapGrid.dbgRayTraceTileHitCB := hilightCell1;
       {$ENDIF}
       if (g_Map_traceToNearestWall(mx+mw div 2, my+mh div 2, emx+emw div 2, emy+emh div 2, @ex, @ey) <> nil) then
       //if (mapGrid.traceRay(ex, ey, mx+mw div 2, my+mh div 2, emx+emw div 2, emy+emh div 2, hilightWallTrc, (GridTagWall or GridTagDoor)) <> nil) then
@@ -1039,7 +1047,7 @@ procedure plrDebugDraw ();
         drawLine(mx+mw div 2, my+mh div 2, ex, ey, 0, 255, 0, 255);
       end;
       {$IF DEFINED(D2F_DEBUG)}
-      //mapGrid.dbgRayTraceTileHitCB := nil;
+      mapGrid.dbgRayTraceTileHitCB := nil;
       {$ENDIF}
     end;
 
@@ -1142,16 +1150,16 @@ procedure plrDebugDraw ();
       TRIGGER_TEXTURE: begin end;
       TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF, TRIGGER_PRESS:
         begin
-          if (trig.trigData.trigTWidth > 0) and (trig.trigData.trigTHeight > 0) then
+          if (trig.trigDataRec.trigTWidth > 0) and (trig.trigDataRec.trigTHeight > 0) then
           begin
             fillRect(
-              trig.trigData.trigTX, trig.trigData.trigTY,
-              trig.trigData.trigTWidth, trig.trigData.trigTHeight,
+              trig.trigDataRec.trigTX, trig.trigDataRec.trigTY,
+              trig.trigDataRec.trigTWidth, trig.trigDataRec.trigTHeight,
               0, 255, 255, 42);
             drawLine(
               trig.trigCenter.x, trig.trigCenter.y,
-              trig.trigData.trigTX+trig.trigData.trigTWidth div 2,
-              trig.trigData.trigTY+trig.trigData.trigTHeight div 2,
+              trig.trigDataRec.trigTX+trig.trigDataRec.trigTWidth div 2,
+              trig.trigDataRec.trigTY+trig.trigDataRec.trigTHeight div 2,
               255, 0, 255, 220);
           end;
         end;
@@ -1199,6 +1207,8 @@ procedure plrDebugDraw ();
 var
   mon: TMonster;
   mx, my, mw, mh: Integer;
+  //pan: TPanel;
+  //ex, ey: Integer;
 begin
   if (gPlayer1 = nil) then exit;
 
@@ -1235,6 +1245,22 @@ begin
 
   //drawGibsBoxes();
 
+
+  //pan := g_Map_traceToNearest(16, 608, 16, 8, (GridTagObstacle or GridTagLiquid), @ex, @ey);
+  (*
+  {$IF DEFINED(D2F_DEBUG)}
+  mapGrid.dbgRayTraceTileHitCB := hilightCell1;
+  {$ENDIF}
+  pan := mapGrid.traceRay(ex, ey, 16, 608, 16, 8, nil, (GridTagObstacle or GridTagLiquid));
+  if (pan <> nil) then writeln('end=(', ex, ',', ey, ')');
+  {$IF DEFINED(D2F_DEBUG)}
+  mapGrid.dbgRayTraceTileHitCB := nil;
+  {$ENDIF}
+
+  pan := g_Map_PanelAtPoint(16, 608, (GridTagObstacle or GridTagLiquid));
+  if (pan <> nil) then writeln('hit!');
+  *)
+
   glPopMatrix();
 
   glDisable(GL_SCISSOR_TEST);
@@ -1530,7 +1556,7 @@ begin
   cmdAdd('atcur_dump_walls', cbAtcurDumpWalls, 'dump walls in cell', 'wall control');
   cmdAdd('atcur_disable_walls', cbAtcurToggleWalls, 'disable walls', 'wall control');
 
-  cmdAdd('dbg_tracebox', dbgToggleTraceBox, 'disable walls', 'wall control');
+  cmdAdd('dbg_tracebox', dbgToggleTraceBox, 'test traceBox()', 'player control');
 end;