index 820c7c5c52ad72bcfa0e5a49dfef8afb19e2381b..142401547a3c6b77d9d01bacd8b1bb13f2b74fde 100644 (file)
interface
-uses
- MAPDEF, g_textures, g_base, g_basic, g_weapons, r_graphics, utils, g_gfx,
- ImagingTypes, Imaging, ImagingUtility;
+ uses MAPDEF, g_textures, g_base, g_basic, g_weapons, utils, g_gfx;
const
A_STAND = 0;
function g_PlayerModel_GetNames(): SSArray;
function g_PlayerModel_GetBlood(ModelName: String): TModelBlood;
function g_PlayerModel_Get(ModelName: String): TPlayerModel;
-function g_PlayerModel_GetAnim(ModelName: String; AnimTyp: Byte; var _Anim, _Mask: TAnimation): Boolean;
function g_PlayerModel_GetGibs (ModelID: Integer; var Gibs: TGibsArray): Boolean;
function g_PlayerModel_GetIndex (ModelName: String): Integer;
implementation
uses
- g_sound, g_console, SysUtils, g_player, CONFIG, r_textures, r_animations,
+ g_sound, g_console, SysUtils, g_player, CONFIG,
e_sound, g_options, g_map, Math, e_log, wadreader;
const
end;
end;
-function g_PlayerModel_CalcGibSize (pData: Pointer; dataSize, x, y, w, h: Integer): TRectWH;
- var i, j: Integer; done: Boolean; img: TImageData;
-
- function IsVoid (i, j: Integer): Boolean;
- begin
- result := Byte((PByte(img.bits) + (y+j)*img.width*4 + (x+i)*4 + 3)^) = 0
- end;
-
-begin
- InitImage(img);
- assert(LoadImageFromMemory(pData, dataSize, img));
-
- (* trace x from right to left *)
- done := false; i := 0;
- while not done and (i < w) do
- begin
- j := 0;
- while (j < h) and IsVoid(i, j) do inc(j);
- done := (j < h) and (IsVoid(i, j) = false);
- result.x := i;
- inc(i);
- end;
-
- (* trace y from up to down *)
- done := false; j := 0;
- while not done and (j < h) do
- begin
- i := 0;
- while (i < w) and IsVoid(i, j) do inc(i);
- done := (i < w) and (IsVoid(i, j) = false);
- result.y := j;
- inc(j);
- end;
-
- (* trace x from right to left *)
- done := false; i := w - 1;
- while not done and (i >= 0) do
- begin
- j := 0;
- while (j < h) and IsVoid(i, j) do inc(j);
- done := (j < h) and (IsVoid(i, j) = false);
- result.width := i - result.x + 1;
- dec(i);
- end;
-
- (* trace y from down to up *)
- done := false; j := h - 1;
- while not done and (j >= 0) do
- begin
- i := 0;
- while (i < w) and IsVoid(i, j) do inc(i);
- done := (i < w) and (IsVoid(i, j) = false);
- result.height := j - result.y + 1;
- dec(j);
- end;
-
- FreeImage(img);
-end;
-
function g_PlayerModel_Load(FileName: string): Boolean;
var
ID: DWORD;
end;
end;
-function g_PlayerModel_GetAnim(ModelName: string; AnimTyp: Byte; var _Anim, _Mask: TAnimation): Boolean;
-var
- a: Integer;
- c: Boolean;
- ID: DWORD;
-begin
- Result := False;
-
- if PlayerModelsArray = nil then Exit;
- for a := 0 to High(PlayerModelsArray) do
- if PlayerModelsArray[a].Name = ModelName then
- with PlayerModelsArray[a] do
- begin
- if AnimTyp in [A_STAND, A_WALK] then c := True else c := False;
-
- if not g_Frames_Get(ID, Name + '_RIGHTANIM' + IntToStr(AnimTyp)) then
- if not g_Frames_Get(ID, Name + '_LEFTANIM' + IntToStr(AnimTyp)) then Exit;
-
- _Anim := TAnimation.Create(ID, c, ModelSpeed[AnimTyp]);
- _Anim.Speed := ModelSpeed[AnimTyp];
-
- if not g_Frames_Get(ID, Name + '_RIGHTANIM' + IntToStr(AnimTyp) + '_MASK') then
- if not g_Frames_Get(ID, Name + '_LEFTANIM' + IntToStr(AnimTyp) + '_MASK') then
- Exit;
-
- _Mask := TAnimation.Create(ID, c, ModelSpeed[AnimTyp]);
- _Mask.Speed := ModelSpeed[AnimTyp];
-
- Break;
- end;
-
- Result := True;
-end;
-
function g_PlayerModel_GetGibs (ModelID: Integer; var Gibs: TGibsArray): Boolean;
var i, b: Integer; c: Boolean;
begin