index 283113e0dc5e4f4f33bfae98e848a7f0a78f4df0..9b67c0033f19a42d0fff2d793356da90851090f5 100644 (file)
+(* Copyright (C) DooM 2D:Forever Developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *)
+{$MODE DELPHI}
unit g_playermodel;
interface
uses
unit g_playermodel;
interface
uses
- g_textures, g_basic, e_graphics, WADEDITOR,
- WADSTRUCT, g_weapons;
+ g_textures, g_basic, g_weapons, e_graphics, wadreader;
const
A_STAND = 0;
const
A_STAND = 0;
MODELSOUND_PAIN = 0;
MODELSOUND_DIE = 1;
MODELSOUND_PAIN = 0;
MODELSOUND_DIE = 1;
-
+
type
TModelInfo = record
Name: String;
type
TModelInfo = record
Name: String;
s: String;
begin
Result := False;
s: String;
begin
Result := False;
+ x := 0;
+ y := 0;
str := Trim(str);
if Length(str) < 3 then
str := Trim(str);
if Length(str) < 3 then
function g_PlayerModel_Load(FileName: string): Boolean;
var
ID: DWORD;
function g_PlayerModel_Load(FileName: string): Boolean;
var
ID: DWORD;
- a, b, len, aa, bb, f: Integer;
+ a, b, len, lenpd, lenpd2, aa, bb, f: Integer;
cc: TDirection;
config: TConfig;
pData, pData2: Pointer;
cc: TDirection;
config: TConfig;
pData, pData2: Pointer;
- WAD: TWADEditor_1;
+ WAD: TWADFile;
s: string;
prefix: string;
ok: Boolean;
s: string;
prefix: string;
ok: Boolean;
Result := False;
Result := False;
- WAD := TWADEditor_1.Create;
+ WAD := TWADFile.Create;
WAD.ReadFile(FileName);
WAD.ReadFile(FileName);
- if WAD.GetLastError <> DFWAD_NOERROR then
+ if {WAD.GetLastError <> DFWAD_NOERROR} not WAD.isOpen then
begin
WAD.Free();
Exit;
end;
begin
WAD.Free();
Exit;
end;
- if not WAD.GetResource('TEXT', 'MODEL', pData, len) then
+ if not WAD.GetResource('TEXT/MODEL', pData, len) then
begin
WAD.Free();
Exit;
end;
begin
WAD.Free();
Exit;
end;
-
+
config := TConfig.CreateMem(pData, len);
FreeMem(pData);
config := TConfig.CreateMem(pData, len);
FreeMem(pData);
config.Free();
WAD.Free();
Exit;
config.Free();
WAD.Free();
Exit;
- end;
+ end;
SetLength(PlayerModelsArray, Length(PlayerModelsArray)+1);
ID := High(PlayerModelsArray);
SetLength(PlayerModelsArray, Length(PlayerModelsArray)+1);
ID := High(PlayerModelsArray);
SetLength(Gibs, ReadInt('Gibs', 'count', 0));
if (Gibs <> nil) and
SetLength(Gibs, ReadInt('Gibs', 'count', 0));
if (Gibs <> nil) and
- (WAD.GetResource('TEXTURES', config.ReadStr('Gibs', 'resource', 'GIBS'), pData, len)) and
- (WAD.GetResource('TEXTURES', config.ReadStr('Gibs', 'mask', 'GIBSMASK'), pData2, len)) then
+ (WAD.GetResource('TEXTURES/'+config.ReadStr('Gibs', 'resource', 'GIBS'), pData, lenpd)) and
+ (WAD.GetResource('TEXTURES/'+config.ReadStr('Gibs', 'mask', 'GIBSMASK'), pData2, lenpd2)) then
begin
for a := 0 to High(Gibs) do
begin
for a := 0 to High(Gibs) do
- if e_CreateTextureMemEx(pData, Gibs[a].ID, a*32, 0, 32, 32) and
- e_CreateTextureMemEx(pData2, Gibs[a].MaskID, a*32, 0, 32, 32) then
+ if e_CreateTextureMemEx(pData, lenpd, Gibs[a].ID, a*32, 0, 32, 32) and
+ e_CreateTextureMemEx(pData2, lenpd2, Gibs[a].MaskID, a*32, 0, 32, 32) then
begin
Gibs[a].Rect := e_GetTextureSize2(Gibs[a].ID);
with Gibs[a].Rect do
begin
Gibs[a].Rect := e_GetTextureSize2(Gibs[a].ID);
with Gibs[a].Rect do
var
a: Integer;
begin
var
a: Integer;
begin
+ FillChar(Result, SizeOf(Result), 0);
if PlayerModelsArray = nil then Exit;
for a := 0 to High(PlayerModelsArray) do
if PlayerModelsArray = nil then Exit;
for a := 0 to High(PlayerModelsArray) do
for a := WEAPON_SAW to WEAPON_SUPERPULEMET do
for b := W_POS_NORMAL to W_POS_DOWN do
for c := W_ACT_NORMAL to W_ACT_FIRE do
for a := WEAPON_SAW to WEAPON_SUPERPULEMET do
for b := W_POS_NORMAL to W_POS_DOWN do
for c := W_ACT_NORMAL to W_ACT_FIRE do
- e_DeleteTexture(WeaponID[a][b][c]);
+ e_DeleteTexture(WeaponID[a][b][c]);
e_WriteLog('Releasing models...', MSG_NOTIFY);
e_WriteLog('Releasing models...', MSG_NOTIFY);
for b := 0 to High(Gibs) do
begin
e_DeleteTexture(Gibs[b].ID);
for b := 0 to High(Gibs) do
begin
e_DeleteTexture(Gibs[b].ID);
- e_DeleteTexture(Gibs[b].MaskID);
+ e_DeleteTexture(Gibs[b].MaskID);
end;
end;
end;
end;