X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_textures.pas;h=bdf6605849405c044781a9cc89723a2a29c50060;hb=3c27cda3a6e6188d113073beb31a19b82d21e3b6;hp=dcc91b7dda3e9b1a633a57890c3e36ba7f6c0890;hpb=88ce644db1b40111bdb380f4357fa59bdb5173be;p=d2df-sdl.git diff --git a/src/game/g_textures.pas b/src/game/g_textures.pas index dcc91b7..bdf6605 100644 --- a/src/game/g_textures.pas +++ b/src/game/g_textures.pas @@ -1,3 +1,4 @@ +{$MODE DELPHI} unit g_textures; interface @@ -34,7 +35,7 @@ Type FWidth: Word; FMinLength: Byte; // Îæèäàíèå ïîñëå ïðîèãðûâàíèÿ FRevert: Boolean; // Ñìåíà êàäðîâ îáðàòíàÿ? - + public constructor Create(FramesID: DWORD; Loop: Boolean; Speed: Byte); destructor Destroy(); override; @@ -78,7 +79,7 @@ function g_Frames_CreateWAD(ID: PDWORD; Name: ShortString; Resource: String; 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; @@ -93,7 +94,7 @@ procedure DumpTextureNames(); 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 @@ -143,7 +144,7 @@ end; function g_Texture_CreateWAD(var ID: DWORD; Resource: String): Boolean; var - WAD: TWADEditor_1; + WAD: TWADFile; FileName, SectionName, ResourceName: String; @@ -153,12 +154,12 @@ begin 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); @@ -166,7 +167,7 @@ begin 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; @@ -183,7 +184,7 @@ end; function g_Texture_CreateWADEx(TextureName: ShortString; Resource: String): Boolean; var - WAD: TWADEditor_1; + WAD: TWADFile; FileName, SectionName, ResourceName: String; @@ -195,12 +196,12 @@ begin 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, @@ -213,7 +214,7 @@ begin 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(); @@ -240,7 +241,7 @@ var a: DWORD; begin Result := False; - + if TexturesArray = nil then Exit; if TextureName = '' then Exit; @@ -349,7 +350,7 @@ begin 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; @@ -365,7 +366,7 @@ begin 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); @@ -391,7 +392,7 @@ end; 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; @@ -402,18 +403,18 @@ begin 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; @@ -424,10 +425,10 @@ begin 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;