summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 3f758d5)
raw | patch | inline | side by side (parent: 3f758d5)
author | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Sat, 2 Sep 2017 23:26:00 +0000 (02:26 +0300) | ||
committer | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Sat, 2 Sep 2017 23:26:22 +0000 (02:26 +0300) |
src/game/g_monsters.pas | patch | blob | history | |
src/game/g_netmsg.pas | patch | blob | history | |
src/game/g_panel.pas | patch | blob | history |
index ae4389c98ab48bb4b9c79c15ab9d8607de8967c2..a437ff9bdcd13e7c1ea72bc56b75efe61c4a72cb 100644 (file)
--- a/src/game/g_monsters.pas
+++ b/src/game/g_monsters.pas
function findNewPrey(): Boolean;
procedure ActivateTriggers();
+ procedure setGameX (v: Integer); inline;
+ procedure setGameY (v: Integer); inline;
+
public
FNoRespawn: Boolean;
FFireTime: Integer;
procedure positionChanged (); //WARNING! call this after monster position was changed, or coldet will not work right!
+ procedure setPosition (ax, ay: Integer; callPosChanged: Boolean=true); inline;
+
procedure getMapBox (out x, y, w, h: Integer); inline;
public
property UID: Word read FUID write FUID;
property SpawnTrigger: Integer read FSpawnTrigger write FSpawnTrigger;
- property GameX: Integer read FObj.X write FObj.X;
- property GameY: Integer read FObj.Y write FObj.Y;
+ property GameX: Integer read FObj.X write setGameX;
+ property GameY: Integer read FObj.Y write setGameY;
property GameVelX: Integer read FObj.Vel.X write FObj.Vel.X;
property GameVelY: Integer read FObj.Vel.Y write FObj.Vel.Y;
property GameAccelX: Integer read FObj.Accel.X write FObj.Accel.X;
g_language, g_netmsg, idpool;
+
// ////////////////////////////////////////////////////////////////////////// //
procedure g_Mons_ProfilersBegin ();
begin
{ T M o n s t e r : }
+procedure TMonster.setGameX (v: Integer); inline; begin FObj.X := v; positionChanged(); end;
+procedure TMonster.setGameY (v: Integer); inline; begin FObj.Y := v; positionChanged(); end;
+procedure TMonster.setPosition (ax, ay: Integer; callPosChanged: Boolean=true); inline; begin FObj.X := ax; FObj.Y := ay; if callPosChanged then positionChanged(); end;
+
+
procedure TMonster.ActionSound();
begin
case FMonsterType of
FObj.Accel.X := 0;
FObj.Accel.Y := 0;
FDirection := FStartDirection;
- GameX := FStartX;
- GameY := FStartY;
+ {GameX}FObj.X := FStartX;
+ {GameY}FObj.Y := FStartY;
FObj.Rect := MONSTERTABLE[FMonsterType].Rect;
FHealth := MONSTERTABLE[FMonsterType].Health;
FAmmo := 0;
diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index 53ab6a501b063c2cae51a19a9edcf326df2840a4..33d16522865e7e122b6bdbe9e7f9c76c90c43b74 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
with Mon do
begin
- GameX := X;
- GameY := Y;
- GameVelX := VX;
- GameVelY := VY;
MonsterAnim := MAnim;
MonsterTargetUID := MTarg;
SetState(MState);
- positionChanged(); // this updates spatial accelerators
+ setPosition(X, Y); // this will call positionChanged();
+ GameVelX := VX;
+ GameVelY := VY;
+ //positionChanged(); // this updates spatial accelerators
end;
end;
var
Mon: TMonster;
ID: Word;
+ X, Y: Integer;
begin
ID := M.ReadWord();
Mon := g_Monsters_ByUID(ID);
with Mon do
begin
- GameX := M.ReadLongInt();
- GameY := M.ReadLongInt();
+ X := M.ReadLongInt();
+ Y := M.ReadLongInt();
+ Mon.setPosition(X, Y); // this will call `positionChanged()`
GameVelX := M.ReadLongInt();
GameVelY := M.ReadLongInt();
GameDirection := TDirection(M.ReadByte());
- positionChanged(); // this updates spatial accelerators
+ //positionChanged(); // this updates spatial accelerators
end;
end;
diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas
index 94e7b877488b8963eb05bbcb924d0161fe7a7bf4..d104593da3eeb95a875366263c08c5c78b2554f7 100644 (file)
--- a/src/game/g_panel.pas
+++ b/src/game/g_panel.pas
function gety1 (): Integer; inline;
function getvisvalid (): Boolean; inline;
+ function getMovingSpeedX (): Integer; inline;
+ procedure setMovingSpeedX (v: Integer); inline;
+ function getMovingSpeedY (): Integer; inline;
+ procedure setMovingSpeedY (v: Integer); inline;
+
+ function getMovingStartX (): Integer; inline;
+ procedure setMovingStartX (v: Integer); inline;
+ function getMovingStartY (): Integer; inline;
+ procedure setMovingStartY (v: Integer); inline;
+
+ function getMovingEndX (): Integer; inline;
+ procedure setMovingEndX (v: Integer); inline;
+ function getMovingEndY (): Integer; inline;
+ procedure setMovingEndY (v: Integer); inline;
+
public
FCurTexture: Integer; // Íîìåð òåêóùåé òåêñòóðû
FCurFrame: Integer;
procedure positionChanged (); inline;
- function isGBack (): Boolean; inline; // gRenderBackgrounds
- function isGStep (): Boolean; inline; // gSteps
- function isGWall (): Boolean; inline; // gWalls
- function isGAcid1 (): Boolean; inline; // gAcid1
- function isGAcid2 (): Boolean; inline; // gAcid2
- function isGWater (): Boolean; inline; // gWater
- function isGFore (): Boolean; inline; // gRenderForegrounds
- function isGLift (): Boolean; inline; // gLifts
- function isGBlockMon (): Boolean; inline; // gBlockMon
-
+ function getIsGBack (): Boolean; inline; // gRenderBackgrounds
+ function getIsGStep (): Boolean; inline; // gSteps
+ function getIsGWall (): Boolean; inline; // gWalls
+ function getIsGAcid1 (): Boolean; inline; // gAcid1
+ function getIsGAcid2 (): Boolean; inline; // gAcid2
+ function getIsGWater (): Boolean; inline; // gWater
+ function getIsGFore (): Boolean; inline; // gRenderForegrounds
+ function getIsGLift (): Boolean; inline; // gLifts
+ function getIsGBlockMon (): Boolean; inline; // gBlockMon
public
property visvalid: Boolean read getvisvalid; // panel is "visvalid" when it's width and height are positive
property liftType: Byte read FLiftType write FLiftType; // Ñîõðàíÿòü ïðè SaveState?
property lastAnimLoop: Byte read FLastAnimLoop write FLastAnimLoop; // Ñîõðàíÿòü ïðè SaveState?
+ property movingSpeedX: Integer read getMovingSpeedX write setMovingSpeedX;
+ property movingSpeedY: Integer read getMovingSpeedY write setMovingSpeedY;
+ property movingStartX: Integer read getMovingStartX write setMovingStartX;
+ property movingStartY: Integer read getMovingStartY write setMovingStartY;
+ property movingEndX: Integer read getMovingEndX write setMovingEndX;
+ property movingEndY: Integer read getMovingEndY write setMovingEndY;
property movingActive: Boolean read mMovingActive write mMovingActive;
+ property isGBack: Boolean read getIsGBack;
+ property isGStep: Boolean read getIsGStep;
+ property isGWall: Boolean read getIsGWall;
+ property isGAcid1: Boolean read getIsGAcid1;
+ property isGAcid2: Boolean read getIsGAcid2;
+ property isGWater: Boolean read getIsGWater;
+ property isGFore: Boolean read getIsGFore;
+ property isGLift: Boolean read getIsGLift;
+ property isGBlockMon: Boolean read getIsGBlockMon;
+
public
property movingSpeed: TDFPoint read mMovingSpeed write mMovingSpeed;
property movingStart: TDFPoint read mMovingStart write mMovingStart;
function TPanel.gety1 (): Integer; inline; begin result := Y+Height-1; end;
function TPanel.getvisvalid (): Boolean; inline; begin result := (Width > 0) and (Height > 0); end;
-function TPanel.isGBack (): Boolean; inline; begin result := ((tag and GridTagBack) <> 0); end;
-function TPanel.isGStep (): Boolean; inline; begin result := ((tag and GridTagStep) <> 0); end;
-function TPanel.isGWall (): Boolean; inline; begin result := ((tag and (GridTagWall or GridTagDoor)) <> 0); end;
-function TPanel.isGAcid1 (): Boolean; inline; begin result := ((tag and GridTagAcid1) <> 0); end;
-function TPanel.isGAcid2 (): Boolean; inline; begin result := ((tag and GridTagAcid2) <> 0); end;
-function TPanel.isGWater (): Boolean; inline; begin result := ((tag and GridTagWater) <> 0); end;
-function TPanel.isGFore (): Boolean; inline; begin result := ((tag and GridTagFore) <> 0); end;
-function TPanel.isGLift (): Boolean; inline; begin result := ((tag and GridTagLift) <> 0); end;
-function TPanel.isGBlockMon (): Boolean; inline; begin result := ((tag and GridTagBlockMon) <> 0); end;
+function TPanel.getMovingSpeedX (): Integer; inline; begin result := mMovingSpeed.X; end;
+procedure TPanel.setMovingSpeedX (v: Integer); inline; begin mMovingSpeed.X := v; end;
+function TPanel.getMovingSpeedY (): Integer; inline; begin result := mMovingSpeed.Y; end;
+procedure TPanel.setMovingSpeedY (v: Integer); inline; begin mMovingSpeed.Y := v; end;
+
+function TPanel.getMovingStartX (): Integer; inline; begin result := mMovingStart.X; end;
+procedure TPanel.setMovingStartX (v: Integer); inline; begin mMovingStart.X := v; end;
+function TPanel.getMovingStartY (): Integer; inline; begin result := mMovingStart.Y; end;
+procedure TPanel.setMovingStartY (v: Integer); inline; begin mMovingStart.Y := v; end;
+
+function TPanel.getMovingEndX (): Integer; inline; begin result := mMovingEnd.X; end;
+procedure TPanel.setMovingEndX (v: Integer); inline; begin mMovingEnd.X := v; end;
+function TPanel.getMovingEndY (): Integer; inline; begin result := mMovingEnd.Y; end;
+procedure TPanel.setMovingEndY (v: Integer); inline; begin mMovingEnd.Y := v; end;
+
+function TPanel.getIsGBack (): Boolean; inline; begin result := ((tag and GridTagBack) <> 0); end;
+function TPanel.getIsGStep (): Boolean; inline; begin result := ((tag and GridTagStep) <> 0); end;
+function TPanel.getIsGWall (): Boolean; inline; begin result := ((tag and (GridTagWall or GridTagDoor)) <> 0); end;
+function TPanel.getIsGAcid1 (): Boolean; inline; begin result := ((tag and GridTagAcid1) <> 0); end;
+function TPanel.getIsGAcid2 (): Boolean; inline; begin result := ((tag and GridTagAcid2) <> 0); end;
+function TPanel.getIsGWater (): Boolean; inline; begin result := ((tag and GridTagWater) <> 0); end;
+function TPanel.getIsGFore (): Boolean; inline; begin result := ((tag and GridTagFore) <> 0); end;
+function TPanel.getIsGLift (): Boolean; inline; begin result := ((tag and GridTagLift) <> 0); end;
+function TPanel.getIsGBlockMon (): Boolean; inline; begin result := ((tag and GridTagBlockMon) <> 0); end;
procedure TPanel.Draw();
var
function monMove (mon: TMonster): Boolean;
begin
result := false; // don't stop
- mon.GameX := mon.GameX+mMovingSpeed.X;
- mon.GameY := mon.GameY+mMovingSpeed.Y;
+ //mon.GameX := mon.GameX+mMovingSpeed.X;
+ //mon.GameY := mon.GameY+mMovingSpeed.Y;
+ mon.setPosition(mon.GameX+mMovingSpeed.X, mon.GameY+mMovingSpeed.Y, false); // we can't call `positionChanged()` in grid callback
if (monMoveListUsed >= Length(monMoveList)) then SetLength(monMoveList, monMoveListUsed+64);
monMoveList[monMoveListUsed] := mon;
Inc(monMoveListUsed);
mon.getMapBox(px, py, pw, ph);
if doPush(px, py, pw, ph, dx, dy) then
begin
- mon.GameX := mon.GameX+dx;
- mon.GameY := mon.GameY+dy;
+ //mon.GameX := mon.GameX+dx;
+ //mon.GameY := mon.GameY+dy;
+ mon.setPosition(mon.GameX+dx, mon.GameY+dy, false); // we can't call `positionChanged()` in grid callback
if (monMoveListUsed >= Length(monMoveList)) then SetLength(monMoveList, monMoveListUsed+64);
monMoveList[monMoveListUsed] := mon;
Inc(monMoveListUsed);