DEADSOFTWARE

fixed passing thru disabled walls
[d2df-sdl.git] / src / game / g_holmes.pas
index 87788a4b03b6f2ac449ecf91a5de91ae524a6ea1..d7ab6bfec15ac5484115a67a40a23b0f22d30b24 100644 (file)
@@ -159,6 +159,7 @@ begin
   laserY0 := ay0;
   laserX1 := ax1;
   laserY1 := ay1;
+  laserSet := laserSet; // shut up, fpc!
 end;
 
 
@@ -171,6 +172,7 @@ procedure plrDebugMouse (var ev: THMouseEvent);
   function wallToggle (pan: TPanel; tag: Integer): Boolean;
   begin
     result := false; // don't stop
+    e_WriteLog(Format('wall #%d(%d); enabled=%d (%d)', [pan.arrIdx, pan.proxyId, Integer(pan.Enabled), Integer(mapGrid.proxyEnabled[pan.proxyId])]), MSG_NOTIFY);
     if pan.Enabled then g_Map_DisableWall(pan.arrIdx) else g_Map_EnableWall(pan.arrIdx);
   end;
 
@@ -190,9 +192,11 @@ procedure plrDebugMouse (var ev: THMouseEvent);
 
 begin
   //e_WriteLog(Format('mouse: x=%d; y=%d; but=%d; bstate=%d', [msx, msy, but, bstate]), MSG_NOTIFY);
-  if (gPlayer1 = nil) then exit;
+  if (gPlayer1 = nil) or not vpSet then exit;
   if (ev.kind <> THMouseEvent.Press) then exit;
 
+  e_WriteLog(Format('mev: %d', [Integer(ev.kind)]), MSG_NOTIFY);
+
   if (ev.but = THMouseEvent.Left) then
   begin
     if ((kbS and THKeyEvent.ModShift) <> 0) then
@@ -205,7 +209,9 @@ begin
     else
     begin
       // toggle wall
+      e_WriteLog('=== TOGGLE WALL ===', MSG_NOTIFY);
       mapGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY, wallToggle, (GridTagWall or GridTagDoor));
+      e_WriteLog('--- toggle wall ---', MSG_NOTIFY);
     end;
     exit;
   end;
@@ -422,11 +428,14 @@ begin
   msY := ev.y;
   msB := ev.bstate;
   kbS := ev.kstate;
+  msB := msB;
   plrDebugMouse(ev);
 end;
 
 
 function g_Holmes_KeyEvent (var ev: THKeyEvent): Boolean;
+var
+  mon: TMonster;
 begin
   result := false;
   msB := ev.bstate;
@@ -469,6 +478,17 @@ begin
       showAllMonsCells := not showAllMonsCells;
       exit;
     end;
+    // M-A: wake up monster
+    if (ev.scan = SDL_SCANCODE_A) and ((ev.kstate and THKeyEvent.ModAlt) <> 0) then
+    begin
+      result := true;
+      if (monMarkedUID <> -1) then
+      begin
+        mon := g_Monsters_ByUID(monMarkedUID);
+        if (mon <> nil) then mon.WakeUp();
+      end;
+      exit;
+    end;
   end;
 end;
 
@@ -491,6 +511,8 @@ begin
   //drawText8Prop(10, 20, 'Hi there, I''m Holmes!', 255, 255, 0);
 
   drawCursor();
+
+  laserSet := false;
 end;