X-Git-Url: https://deadsoftware.ru/gitweb?p=cavecraft.git;a=blobdiff_plain;f=src%2Fmobs.pas;h=519cf9cd0a6f698634bbf94fecb90aaa142d86c5;hp=c255d0ea2f265ad7b19bdcce60a44c70452e5b48;hb=90bc20fc7666db31948953ec7ae11f6f5f90f509;hpb=f92b5193f873a667d40bdca3faa6c002014ac309 diff --git a/src/mobs.pas b/src/mobs.pas index c255d0e..519cf9c 100644 --- a/src/mobs.pas +++ b/src/mobs.pas @@ -44,16 +44,16 @@ implementation procedure UseObject(i : integer); begin - Phy.LoadObject(mx[i], my[i], tw[mtype[i]], th[mtype[i]], mvx[i], mvy[i], mjump[i]); + Phy.SetObject(mx[i], my[i], tw[mtype[i]], th[mtype[i]], mvx[i], mvy[i], mjump[i]); end; procedure UpdateObject(i : integer); begin mx[i] := Phy.GetX; my[i] := Phy.GetY; - mvx[i] := Phy.GetVelX; - mvy[i] := Phy.GetVelY; - mjump[i] := Phy.GetJmp; + mvx[i] := Phy.GetVX; + mvy[i] := Phy.GetVY; + mjump[i] := Phy.GetJump; end; procedure InitTab(typ, w, h, hp, jump : integer); @@ -93,13 +93,13 @@ implementation else if vec > 0 then x := (mx[i] + GetW(i) + 4) / 16; else x := (mx[i] + GetW(i) / 2) / 16; y := (my[i] + GetH(i) - 8) / 16; - result := Phy.IsSolid(x, y, mvx[i] + vec, mvy[i]); + result := Phy.IsSolid(x, y); end; procedure Swim(i, vec : integer); begin - if Phy.MapCollType(50, mx[i], my[i], GetW(i), GetH(i) / 2) or - Phy.MapCollType(51, mx[i], my[i], GetW(i), GetH(i) / 2) + if Phy.AreaWithBlock(50, mx[i], my[i], GetW(i), GetH(i) / 2) or + Phy.AreaWithBlock(51, mx[i], my[i], GetW(i), GetH(i) / 2) then begin if (vec <> 0) and IsSolidStep(i, vec) then mvy[i] := -10 else mvy[i] := -2; end; @@ -123,13 +123,13 @@ implementation procedure Jump(i, vec : integer); begin UseObject(i); - Phy.JumpObj(GetJumpHeight(i)); + Phy.Jump(GetJumpHeight(i)); UpdateObject(i); end; function CollisionWithPlayer(i : integer) : boolean; begin - result := CollTwoObj( + result := Phy.IntersectRects( mx[i], my[i], GetW(i), GetH(i), Player.GetX, Player.GetY, Player.GetW, Player.GetH ); @@ -141,10 +141,9 @@ implementation begin x := mx[i] + GetW(i) / 2; y := my[i] + GetH(i) / 2; - if mtype[i] = zomby then - begin - Drop.Create(Items.rottenMeat, x, y, Random(3)); - end; + if mtype[i] = zomby then begin + Drop.Create(Items.rottenMeat, x, y, Random(3)); + end; mtype[i] := none; end; @@ -180,7 +179,7 @@ implementation (* Вижу игрока - сразу агрюсь и бегу за ним некоторое время *) if (mpos[i] = 0) and (Player.GetX - mx[i] < 0) or (mpos[i] = 1) and (Player.GetX - mx[i] > 0) then - if Phy.CanSeeObj(mx[i], my[i], Player.GetX, Player.GetY) then + if Phy.RayTraced(mx[i], my[i], Player.GetX, Player.GetY) then begin mb[i] := angryTime; mc[i] := angry; @@ -206,7 +205,7 @@ implementation if mb[i] <= 0 then mc[i] := stay; end else if mc[i] = angry then begin if mb[i] <= 0 then begin - if Phy.CanSeeObj(mx[i], my[i], Player.GetX, Player.GetY) then begin + if Phy.RayTraced(mx[i], my[i], Player.GetX, Player.GetY) then begin (* Видижу игрока - устанавливаю время преследования *) mb[i] := angryTime; end else begin @@ -272,7 +271,7 @@ implementation i : integer; begin for i := 0 to lastMob do if mtype[i] <> none then - if CollTwoObj(x, y, w, h, mx[i], my[i], GetW(i), GetH(i)) then + if Phy.IntersectRects(x, y, w, h, mx[i], my[i], GetW(i), GetH(i)) then begin mvx[i] := mvx[i] + addvx; mvy[i] := mvy[i] + addvy; @@ -302,7 +301,7 @@ implementation for i := 0 to lastMob do begin UseObject(i); - Phy.Calc(true); + Phy.Step(true); UpdateObject(i); end; end;