diff --git a/src/game/g_player.pas b/src/game/g_player.pas
index 1c01e2f032ae7750f7531d20322c569baac24623..afd5b7af33fbbf7a596800a70fa1e721ee957c3d 100644 (file)
--- a/src/game/g_player.pas
+++ b/src/game/g_player.pas
procedure CatchFire(Attacker: Word);
//WARNING! this does nothing for now, but still call it!
- procedure positionChanged (); //WARNING! call this after monster position was changed, or coldet will not work right!
+ procedure positionChanged (); //WARNING! call this after entity position was changed, or coldet will not work right!
procedure getMapBox (out x, y, w, h: Integer); inline;
procedure LoadState(var Mem: TBinMemoryReader); override;
end;
+ PGib = ^TGib;
TGib = record
alive: Boolean;
ID: DWORD;
Color: TRGB;
Obj: TObj;
- procedure positionChanged (); //WARNING! call this after monster position was changed, or coldet will not work right!
+ procedure getMapBox (out x, y, w, h: Integer); inline;
+
+ procedure positionChanged (); inline; //WARNING! call this after entity position was changed, or coldet will not work right!
end;
+ PShell = ^TShell;
TShell = record
SpriteID: DWORD;
alive: Boolean;
CX, CY: Integer;
Obj: TObj;
- procedure positionChanged (); //WARNING! call this after monster position was changed, or coldet will not work right!
+ procedure getMapBox (out x, y, w, h: Integer); inline;
+
+ procedure positionChanged (); inline; //WARNING! call this after entity position was changed, or coldet will not work right!
end;
TCorpse = class (TObject)
procedure SaveState(var Mem: TBinMemoryWriter);
procedure LoadState(var Mem: TBinMemoryReader);
- procedure positionChanged (); //WARNING! call this after monster position was changed, or coldet will not work right!
+ procedure getMapBox (out x, y, w, h: Integer); inline;
+
+ procedure moveBy (dx, dy: Integer); inline;
+
+ procedure positionChanged (); inline; //WARNING! call this after entity position was changed, or coldet will not work right!
property Obj: TObj read FObj;
property State: Byte read FState;
BotList: Array of TBotProfile;
-procedure TGib.positionChanged (); begin end;
-procedure TShell.positionChanged (); begin end;
-
-
function Lerp(X, Y, Factor: Integer): Integer;
begin
Result := X + ((Y - X) div Factor);
end;
end;
+
+procedure TGib.getMapBox (out x, y, w, h: Integer); inline;
+begin
+ x := Obj.X+Obj.Rect.X;
+ y := Obj.Y+Obj.Rect.Y;
+ w := Obj.Rect.Width;
+ h := Obj.Rect.Height;
+end;
+
+procedure TShell.getMapBox (out x, y, w, h: Integer); inline;
+begin
+ x := Obj.X;
+ y := Obj.Y;
+ w := Obj.Rect.Width;
+ h := Obj.Rect.Height;
+end;
+
+
+procedure TGib.positionChanged (); inline; begin end;
+procedure TShell.positionChanged (); inline; begin end;
+
procedure g_Player_DrawCorpses();
var
i: Integer;
resetWeaponQueue();
end;
-procedure TPlayer.positionChanged ();
+procedure TPlayer.positionChanged (); inline;
begin
end;
inherited;
end;
-procedure TCorpse.positionChanged (); begin end;
+procedure TCorpse.positionChanged (); inline; begin end;
+
+procedure TCorpse.moveBy (dx, dy: Integer); inline;
+begin
+ if (dx <> 0) or (dy <> 0) then
+ begin
+ FObj.X += dx;
+ FObj.Y += dy;
+ positionChanged();
+ end;
+end;
+
+
+procedure TCorpse.getMapBox (out x, y, w, h: Integer); inline;
+begin
+ x := FObj.X+PLAYER_CORPSERECT.X;
+ y := FObj.Y+PLAYER_CORPSERECT.Y;
+ w := PLAYER_CORPSERECT.Width;
+ h := PLAYER_CORPSERECT.Height;
+end;
procedure TCorpse.Damage(Value: Word; vx, vy: Integer);
var