diff --git a/src/game/g_map.pas b/src/game/g_map.pas
index 0543abe30aa620cb0506c08d8e2c480dc06a0356..52713fd8785e114aee27e6386f688f3ac52467e9 100644 (file)
--- a/src/game/g_map.pas
+++ b/src/game/g_map.pas
procedure CreateMonster(monster: TMonsterRec_1);
var
- a, i: Integer;
+ a: Integer;
+ mon: TMonster;
begin
if g_Game_IsClient then Exit;
if (gGameSettings.GameType = GT_SINGLE)
or LongBool(gGameSettings.Options and GAME_OPTION_MONSTERS) then
begin
- i := g_Monsters_Create(monster.MonsterType, monster.X, monster.Y,
- TDirection(monster.Direction));
+ mon := g_Monsters_Create(monster.MonsterType, monster.X, monster.Y, TDirection(monster.Direction));
if gTriggers <> nil then
+ begin
for a := 0 to High(gTriggers) do
- if gTriggers[a].TriggerType in [TRIGGER_PRESS,
- TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF] then
- if (gTriggers[a].Data.MonsterID-1) = gMonsters[i].StartID then
- gMonsters[i].AddTrigger(a);
+ begin
+ if gTriggers[a].TriggerType in [TRIGGER_PRESS, TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF] then
+ begin
+ if (gTriggers[a].Data.MonsterID-1) = mon.StartID then mon.AddTrigger(a);
+ end;
+ end;
+ end;
- if monster.MonsterType <> MONSTER_BARREL then
- Inc(gTotalMonsters);
+ if monster.MonsterType <> MONSTER_BARREL then Inc(gTotalMonsters);
end;
end;
procedure g_Map_ReAdd_DieTriggers();
-var
- i, a: Integer;
-begin
- if g_Game_IsClient then Exit;
- for i := 0 to High(gMonsters) do
- if gMonsters[i] <> nil then
+ function monsDieTrig (mon: TMonster): Boolean;
+ var
+ a: Integer;
+ begin
+ result := false; // don't stop
+ mon.ClearTriggers();
+ for a := 0 to High(gTriggers) do
+ begin
+ if gTriggers[a].TriggerType in [TRIGGER_PRESS, TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF] then
begin
- gMonsters[i].ClearTriggers();
-
- for a := 0 to High(gTriggers) do
- if gTriggers[a].TriggerType in [TRIGGER_PRESS,
- TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF] then
- if (gTriggers[a].Data.MonsterID-1) = gMonsters[i].StartID then
- gMonsters[i].AddTrigger(a);
+ if (gTriggers[a].Data.MonsterID-1) = mon.StartID then mon.AddTrigger(a);
end;
+ end;
+ end;
+
+begin
+ if g_Game_IsClient then Exit;
+
+ g_Mons_ForEach(monsDieTrig);
end;
function extractWadName(resourceName: string): string;
mapX1: Integer = -$3fffffff;
mapY1: Integer = -$3fffffff;
- procedure calcBoundingBox (var panels: TPanelArray);
+ procedure calcBoundingBox (constref panels: TPanelArray);
var
idx: Integer;
pan: TPanel;
end;
end;
- procedure addPanelsToGrid (var panels: TPanelArray; tag: Integer);
+ procedure addPanelsToGrid (constref panels: TPanelArray; tag: Integer);
var
idx: Integer;
pan: TPanel;
// old algo
procedure g_Map_DrawPanels (PanelType: Word);
- procedure DrawPanels (var panels: TPanelArray; drawDoors: Boolean=False);
+ procedure DrawPanels (constref panels: TPanelArray; drawDoors: Boolean=False);
var
idx: Integer;
begin
@@ -2094,7 +2101,7 @@ function g_Map_CollideLiquid_TextureOld(X, Y: Integer; Width, Height: Word): DWO
var
texid: DWORD;
- function checkPanels (var panels: TPanelArray): Boolean;
+ function checkPanels (constref panels: TPanelArray): Boolean;
var
a: Integer;
begin