index dcc91b7dda3e9b1a633a57890c3e36ba7f6c0890..bdf6605849405c044781a9cc89723a2a29c50060 100644 (file)
--- a/src/game/g_textures.pas
+++ b/src/game/g_textures.pas
+{$MODE DELPHI}
unit g_textures;
interface
FWidth: Word;
FMinLength: Byte; // Îæèäàíèå ïîñëå ïðîèãðûâàíèÿ
FRevert: Boolean; // Ñìåíà êàäðîâ îáðàòíàÿ?
-
+
public
constructor Create(FramesID: DWORD; Loop: Boolean; Speed: Byte);
destructor Destroy(); override;
FWidth, FHeight, FCount: Word; BackAnimation: Boolean = False): Boolean;
function g_Frames_CreateFile(ID: PDWORD; Name: ShortString; FileName: String;
FWidth, FHeight, FCount: Word; BackAnimation: Boolean = False): Boolean;
-function g_Frames_CreateMemory(ID: PDWORD; Name: ShortString; pData: Pointer;
+function g_Frames_CreateMemory(ID: PDWORD; Name: ShortString; pData: Pointer; dataSize: LongInt;
FWidth, FHeight, FCount: Word; BackAnimation: Boolean = False): Boolean;
//function g_Frames_CreateRevert(ID: PDWORD; Name: ShortString; Frames: string): Boolean;
function g_Frames_Get(var ID: DWORD; FramesName: ShortString): Boolean;
implementation
uses
- g_game, e_log, g_basic, SysUtils, g_console, WADEDITOR,
+ g_game, e_log, g_basic, SysUtils, g_console, wadreader,
g_language;
type
function g_Texture_CreateWAD(var ID: DWORD; Resource: String): Boolean;
var
- WAD: TWADEditor_1;
+ WAD: TWADFile;
FileName,
SectionName,
ResourceName: String;
Result := False;
g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName);
- WAD := TWADEditor_1.Create;
+ WAD := TWADFile.Create;
WAD.ReadFile(FileName);
if WAD.GetResource(SectionName, ResourceName, TextureData, ResourceLength) then
begin
- if e_CreateTextureMem(TextureData, ID) then
+ if e_CreateTextureMem(TextureData, ResourceLength, ID) then
Result := True
else
FreeMem(TextureData);
else
begin
e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING);
- e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
+ //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
end;
WAD.Free();
end;
function g_Texture_CreateWADEx(TextureName: ShortString; Resource: String): Boolean;
var
- WAD: TWADEditor_1;
+ WAD: TWADFile;
FileName,
SectionName,
ResourceName: String;
find_id := FindTexture();
- WAD := TWADEditor_1.Create;
+ WAD := TWADFile.Create;
WAD.ReadFile(FileName);
if WAD.GetResource(SectionName, ResourceName, TextureData, ResourceLength) then
begin
- Result := e_CreateTextureMem(TextureData, TexturesArray[find_id].ID);
+ Result := e_CreateTextureMem(TextureData, ResourceLength, TexturesArray[find_id].ID);
if Result then
begin
e_GetTextureSize(TexturesArray[find_id].ID, @TexturesArray[find_id].Width,
else
begin
e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING);
- e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
+ //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
Result := False;
end;
WAD.Free();
a: DWORD;
begin
Result := False;
-
+
if TexturesArray = nil then Exit;
if TextureName = '' then Exit;
Result := True;
end;
-function CreateFramesMem(pData: Pointer; ID: PDWORD; Name: ShortString;
+function CreateFramesMem(pData: Pointer; dataSize: LongInt; ID: PDWORD; Name: ShortString;
FWidth, FHeight, FCount: Word; BackAnimation: Boolean = False): Boolean;
var
find_id: DWORD;
else SetLength(FramesArray[find_id].TexturesID, FCount);
for a := 0 to FCount-1 do
- if not e_CreateTextureMemEx(pData, FramesArray[find_id].TexturesID[a],
+ if not e_CreateTextureMemEx(pData, dataSize, FramesArray[find_id].TexturesID[a],
a*FWidth, 0, FWidth, FHeight) then
begin
FreeMem(pData);
function g_Frames_CreateWAD(ID: PDWORD; Name: ShortString; Resource: string;
FWidth, FHeight, FCount: Word; BackAnimation: Boolean = False): Boolean;
var
- WAD: TWADEditor_1;
+ WAD: TWADFile;
FileName,
SectionName,
ResourceName: string;
g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName);
- WAD := TWADEditor_1.Create();
+ WAD := TWADFile.Create();
WAD.ReadFile(FileName);
if not WAD.GetResource(SectionName, ResourceName, TextureData, ResourceLength) then
begin
WAD.Free();
e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING);
- e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
+ //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
Exit;
end;
- if not CreateFramesMem(TextureData, ID, Name, FWidth, FHeight, FCount, BackAnimation) then
+ if not CreateFramesMem(TextureData, ResourceLength, ID, Name, FWidth, FHeight, FCount, BackAnimation) then
begin
WAD.Free();
Exit;
Result := True;
end;
-function g_Frames_CreateMemory(ID: PDWORD; Name: ShortString; pData: Pointer;
+function g_Frames_CreateMemory(ID: PDWORD; Name: ShortString; pData: Pointer; dataSize: LongInt;
FWidth, FHeight, FCount: Word; BackAnimation: Boolean = False): Boolean;
begin
- Result := CreateFramesMem(pData, ID, Name, FWidth, FHeight, FCount, BackAnimation);
+ Result := CreateFramesMem(pData, dataSize, ID, Name, FWidth, FHeight, FCount, BackAnimation);
end;
{function g_Frames_CreateRevert(ID: PDWORD; Name: ShortString; Frames: string): Boolean;