DEADSOFTWARE

holmes now can work without lasersight
[d2df-sdl.git] / src / game / g_holmes.pas
index 210368deda7b60c463d95b1acc1b13fe11395527..37ade0969ba649690bfaecbb95c1821fa85842c3 100644 (file)
@@ -104,6 +104,7 @@ var
   kbS: Word = 0; // keyboard modifiers state
   showMonsInfo: Boolean = false;
   showMonsLOS2Plr: Boolean = false;
+  showAllMonsCells: Boolean = false;
 
 
 // ////////////////////////////////////////////////////////////////////////// //
@@ -372,6 +373,12 @@ procedure plrDebugDraw ();
     }
   end;
 
+  function highlightAllMonsterCells (mon: TMonster): Boolean;
+  begin
+    result := false; // don't stop
+    monsGrid.forEachBodyCell(mon.proxyId, hilightCell);
+  end;
+
 var
   mon: TMonster;
   mx, my, mw, mh: Integer;
@@ -399,6 +406,8 @@ begin
     end;
   end;
 
+  if showAllMonsCells then g_Mons_ForEach(highlightAllMonsterCells);
+
   //e_DrawPoint(16, laserX0, laserY0, 255, 255, 255);
 
   glPopMatrix();
@@ -418,6 +427,8 @@ end;
 
 
 function g_Holmes_KeyEvent (var ev: THKeyEvent): Boolean;
+var
+  mon: TMonster;
 begin
   result := false;
   msB := ev.bstate;
@@ -453,6 +464,24 @@ begin
       showMonsLOS2Plr := not showMonsLOS2Plr;
       exit;
     end;
+    // M-G: toggle "show all cells occupied by monsters"
+    if (ev.scan = SDL_SCANCODE_G) and ((ev.kstate and THKeyEvent.ModAlt) <> 0) then
+    begin
+      result := true;
+      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;
 
@@ -475,6 +504,8 @@ begin
   //drawText8Prop(10, 20, 'Hi there, I''m Holmes!', 255, 255, 0);
 
   drawCursor();
+
+  laserSet := false;
 end;