diff --git a/src/game/g_holmes.pas b/src/game/g_holmes.pas
index f4fe415cbf97a6f499b01b65e342e0ae1b12136e..34fac81284217c51e8303d09c2a0ffd89f2d9855 100644 (file)
--- a/src/game/g_holmes.pas
+++ b/src/game/g_holmes.pas
implementation
uses
+ {$INCLUDE ../nogl/noGLuses.inc}
{rttiobj,} typinfo, e_texture,
- SysUtils, Classes, GL, SDL2,
+ SysUtils, Classes, SDL2,
MAPDEF, g_main, g_options,
utils, hashtable, xparser;
procedure hilightBodyCells (proxyId: Integer);
var
- pmark: PoolMark;
- hitcount: Integer;
+ it: CellCoordIter;
pcellxy: PGridCellCoord;
begin
//monsGrid.forEachBodyCell(mon.proxyId, hilightCell);
- pmark := framePool.mark();
- hitcount := monsGrid.forEachBodyCell(proxyId);
- pcellxy := PGridCellCoord(framePool.getPtr(pmark));
- while (hitcount > 0) do
- begin
- hilightCell(pcellxy^.x, pcellxy^.y);
- Inc(pcellxy);
- Dec(hitcount);
- end;
- framePool.release(pmark);
+ it := monsGrid.forEachBodyCell(proxyId);
+ for pcellxy in it do hilightCell(pcellxy^.x, pcellxy^.y);
+ it.release();
end;
procedure hilightCell1 (cx, cy: Integer);
var
mon: TMonster;
+ mit: PMonster;
+ it: TMonsterGrid.Iter;
mx, my, mw, mh: Integer;
//pan: TPanel;
//ex, ey: Integer;
- pmark: PoolMark;
- hitcount: Integer;
- pmon: PMonster;
+ s: AnsiString;
+ dx, dy: Integer;
begin
if (gPlayer1 = nil) then exit;
if (laserSet) then
begin
//g_Mons_AlongLine(laserX0, laserY0, laserX1, laserY1, monsCollector, true);
- pmark := framePool.mark();
- hitcount := monsGrid.forEachAlongLine(laserX0, laserY0, laserX1, laserY1, -1, true);
- pmon := PMonster(framePool.getPtr(pmark));
- while (hitcount > 0) do
- begin
- monsCollector(pmon^);
- Inc(pmon);
- Dec(hitcount);
- end;
- framePool.release(pmark);
+ it := monsGrid.forEachAlongLine(laserX0, laserY0, laserX1, laserY1, -1, true);
+ for mit in it do monsCollector(mit^);
+ it.release();
end;
if (monMarkedUID <> -1) then
if showMapCurPos then
begin
+ s := Format('mappos:(%d,%d)', [pmsCurMapX, pmsCurMapY]);
gxSetContext(hlmContext);
hlmContext.font := 'win8';
+ hlmContext.color := TGxRGBA.Create(0, 0, 0);
+ for dy := -1 to 1 do
+ begin
+ for dx := -1 to 1 do
+ begin
+ if (dx <> 0) or (dy <> 0) then hlmContext.drawText(4+dx, gWinSizeY-10+dy, s);
+ end;
+ end;
hlmContext.color := TGxRGBA.Create(255, 255, 0);
- hlmContext.drawText(4, gWinSizeY-10, Format('mappos:(%d,%d)', [pmsCurMapX, pmsCurMapY]));
+ hlmContext.drawText(4, gWinSizeY-10, s);
gxSetContext(nil);
end;
end;
var
plr: TPlayer;
x, y, w, h: Integer;
- pmark: PoolMark;
- hitcount: Integer;
- pmon: PMonster;
+ mit: PMonster;
+ it: TMonsterGrid.Iter;
begin
monMarkedUID := -1;
if (Length(gPlayers) > 0) then
end;
end;
//e_WriteLog('===========================', MSG_NOTIFY);
- pmark := framePool.mark();
- hitcount := monsGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY);
- pmon := PMonster(framePool.getPtr(pmark));
- while (hitcount > 0) do
- begin
- monsAtDump(pmon^);
- Inc(pmon);
- Dec(hitcount);
- end;
- framePool.release(pmark);
+ it := monsGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY);
+ for mit in it do monsAtDump(mit^);
+ it.release();
//e_WriteLog('---------------------------', MSG_NOTIFY);
end;
e_WriteLog(Format('monster #%d (UID:%u) (proxyid:%d)', [mon.arrIdx, mon.UID, mon.proxyId]), TMsgType.Notify);
end;
var
- pmark: PoolMark;
- hitcount: Integer;
- pmon: PMonster;
+ mit: PMonster;
+ it: TMonsterGrid.Iter;
begin
- pmark := framePool.mark();
- hitcount := monsGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY);
- if (hitcount > 0) then
+ it := monsGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY);
+ if (it.length > 0) then
begin
e_WriteLog('===========================', TMsgType.Notify);
- pmon := PMonster(framePool.getPtr(pmark));
- while (hitcount > 0) do
- begin
- monsAtDump(pmon^);
- Inc(pmon);
- Dec(hitcount);
- end;
+ for mit in it do monsAtDump(mit^);
e_WriteLog('---------------------------', TMsgType.Notify);
end;
- framePool.release(pmark);
+ it.release();
end;
procedure cbAtcurDumpWalls ();
hasTrigs: Boolean = false;
f: Integer;
trig: PTrigger;
- pmark: PoolMark;
- hitcount: Integer;
- ppan: PPanel;
+ mwit: PPanel;
+ it: TPanelGrid.Iter;
begin
platMarkedGUID := -1;
- pmark := framePool.mark();
- hitcount := mapGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY, (GridTagWall or GridTagDoor));
- if (hitcount > 0) then
+ it := mapGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY, (GridTagWall or GridTagDoor));
+ if (it.length > 0) then
begin
e_WriteLog('=== TOGGLE WALL ===', TMsgType.Notify);
- ppan := PPanel(framePool.getPtr(pmark));
- while (hitcount > 0) do
- begin
- wallToggle(ppan^);
- Inc(ppan);
- Dec(hitcount);
- end;
+ for mwit in it do wallToggle(mwit^);
e_WriteLog('--- toggle wall ---', TMsgType.Notify);
end;
- framePool.release(pmark);
+ it.release();
if showTriggers then
begin
for f := 0 to High(gTriggers) do
if pan.Enabled then g_Map_DisableWallGUID(pan.guid) else g_Map_EnableWallGUID(pan.guid);
end;
var
- pmark: PoolMark;
- hitcount: Integer;
- ppan: PPanel;
+ mwit: PPanel;
+ it: TPanelGrid.Iter;
begin
//e_WriteLog('=== TOGGLE WALL ===', MSG_NOTIFY);
//e_WriteLog('--- toggle wall ---', MSG_NOTIFY);
- pmark := framePool.mark();
- hitcount := mapGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY, (GridTagWall or GridTagDoor));
- ppan := PPanel(framePool.getPtr(pmark));
- while (hitcount > 0) do
- begin
- wallToggle(ppan^);
- Inc(ppan);
- Dec(hitcount);
- end;
- framePool.release(pmark);
+ it := mapGrid.forEachAtPoint(pmsCurMapX, pmsCurMapY, (GridTagWall or GridTagDoor));
+ for mwit in it do wallToggle(mwit^);
+ it.release();
end;