diff --git a/src/mobs.pas b/src/mobs.pas
index c255d0ea2f265ad7b19bdcce60a44c70452e5b48..519cf9cd0a6f698634bbf94fecb90aaa142d86c5 100644 (file)
--- a/src/mobs.pas
+++ b/src/mobs.pas
\r
procedure UseObject(i : integer);\r
begin\r
- Phy.LoadObject(mx[i], my[i], tw[mtype[i]], th[mtype[i]], mvx[i], mvy[i], mjump[i]);\r
+ Phy.SetObject(mx[i], my[i], tw[mtype[i]], th[mtype[i]], mvx[i], mvy[i], mjump[i]);\r
end;\r
\r
procedure UpdateObject(i : integer);\r
begin\r
mx[i] := Phy.GetX;\r
my[i] := Phy.GetY;\r
- mvx[i] := Phy.GetVelX;\r
- mvy[i] := Phy.GetVelY;\r
- mjump[i] := Phy.GetJmp;\r
+ mvx[i] := Phy.GetVX;\r
+ mvy[i] := Phy.GetVY;\r
+ mjump[i] := Phy.GetJump;\r
end;\r
\r
procedure InitTab(typ, w, h, hp, jump : integer);\r
else if vec > 0 then x := (mx[i] + GetW(i) + 4) / 16;\r
else x := (mx[i] + GetW(i) / 2) / 16;\r
y := (my[i] + GetH(i) - 8) / 16;\r
- result := Phy.IsSolid(x, y, mvx[i] + vec, mvy[i]);\r
+ result := Phy.IsSolid(x, y);\r
end;\r
\r
procedure Swim(i, vec : integer);\r
begin\r
- if Phy.MapCollType(50, mx[i], my[i], GetW(i), GetH(i) / 2) or\r
- Phy.MapCollType(51, mx[i], my[i], GetW(i), GetH(i) / 2)\r
+ if Phy.AreaWithBlock(50, mx[i], my[i], GetW(i), GetH(i) / 2) or\r
+ Phy.AreaWithBlock(51, mx[i], my[i], GetW(i), GetH(i) / 2)\r
then begin\r
if (vec <> 0) and IsSolidStep(i, vec) then mvy[i] := -10 else mvy[i] := -2;\r
end;\r
procedure Jump(i, vec : integer);\r
begin\r
UseObject(i);\r
- Phy.JumpObj(GetJumpHeight(i));\r
+ Phy.Jump(GetJumpHeight(i));\r
UpdateObject(i);\r
end;\r
\r
function CollisionWithPlayer(i : integer) : boolean;\r
begin\r
- result := CollTwoObj(\r
+ result := Phy.IntersectRects(\r
mx[i], my[i], GetW(i), GetH(i),\r
Player.GetX, Player.GetY, Player.GetW, Player.GetH\r
);\r
begin\r
x := mx[i] + GetW(i) / 2;\r
y := my[i] + GetH(i) / 2;\r
- if mtype[i] = zomby then\r
- begin\r
- Drop.Create(Items.rottenMeat, x, y, Random(3));\r
- end;\r
+ if mtype[i] = zomby then begin\r
+ Drop.Create(Items.rottenMeat, x, y, Random(3));\r
+ end;\r
mtype[i] := none;\r
end;\r
\r
\r
(* Вижу игрока - сразу агрюсь и бегу за ним некоторое время *)\r
if (mpos[i] = 0) and (Player.GetX - mx[i] < 0) or (mpos[i] = 1) and (Player.GetX - mx[i] > 0) then\r
- if Phy.CanSeeObj(mx[i], my[i], Player.GetX, Player.GetY) then\r
+ if Phy.RayTraced(mx[i], my[i], Player.GetX, Player.GetY) then\r
begin\r
mb[i] := angryTime;\r
mc[i] := angry;\r
if mb[i] <= 0 then mc[i] := stay;\r
end else if mc[i] = angry then begin\r
if mb[i] <= 0 then begin\r
- if Phy.CanSeeObj(mx[i], my[i], Player.GetX, Player.GetY) then begin\r
+ if Phy.RayTraced(mx[i], my[i], Player.GetX, Player.GetY) then begin\r
(* Видижу игрока - устанавливаю время преследования *)\r
mb[i] := angryTime;\r
end else begin\r
i : integer;\r
begin\r
for i := 0 to lastMob do if mtype[i] <> none then\r
- if CollTwoObj(x, y, w, h, mx[i], my[i], GetW(i), GetH(i)) then\r
+ if Phy.IntersectRects(x, y, w, h, mx[i], my[i], GetW(i), GetH(i)) then\r
begin\r
mvx[i] := mvx[i] + addvx;\r
mvy[i] := mvy[i] + addvy;\r
for i := 0 to lastMob do\r
begin\r
UseObject(i);\r
- Phy.Calc(true);\r
+ Phy.Step(true);\r
UpdateObject(i);\r
end;\r
end;\r