X-Git-Url: https://deadsoftware.ru/gitweb?p=d2df-editor.git;a=blobdiff_plain;f=src%2Feditor%2Fg_textures.pas;h=52c6169b807bf8cd88d4cb6db89a171f0abfb017;hp=786229a847ef6dd5777801191e59647400c89950;hb=7bc7d5022ae82e37fee8b3003432f9294176a470;hpb=925cb8bc2e99a4a04ad1b6029672976d0f4ca42b diff --git a/src/editor/g_textures.pas b/src/editor/g_textures.pas index 786229a..52c6169 100644 --- a/src/editor/g_textures.pas +++ b/src/editor/g_textures.pas @@ -28,7 +28,7 @@ procedure g_DeleteAllTextures(); implementation uses - e_log, WADEDITOR, g_basic, SysUtils; + e_log, WADEDITOR, g_basic, SysUtils, g_resources; type _TTexture = record @@ -65,32 +65,26 @@ begin end; end; -function g_SimpleCreateTextureWAD(var ID: DWORD; Resource: string): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: string; - TextureData: Pointer; - ResourceLength: Integer; +function g_SimpleCreateTextureWAD (var ID: DWORD; Resource: string): Boolean; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: string; begin - Result := False; - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(utf2win(SectionName), utf2win(ResourceName), TextureData, ResourceLength) then - begin - if e_CreateTextureMem(TextureData, ResourceLength, ID) then Result := True; - FreeMem(TextureData); - end + Result := False; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then + begin + if e_CreateTextureMem(TextureData, ResourceLength, ID) then + Result := True; + FreeMem(TextureData) + end else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - end; - WAD.Destroy; + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING) + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + end; end; function g_CreateTextureMemorySize(pData: Pointer; dataLen: Integer; Name: ShortString; X, Y, @@ -121,109 +115,88 @@ begin end; function g_CreateTextureWAD(TextureName: ShortString; Resource: string; flag: Byte = 0): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: string; - TextureData: Pointer; - find_id: DWORD; - ResourceLength: Integer; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: string; + find_id: DWORD; begin - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - find_id := FindTexture; - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(utf2win(SectionName), utf2win(ResourceName), TextureData, ResourceLength) then - begin - Result := e_CreateTextureMem(TextureData, ResourceLength, TexturesArray[find_id].ID); - FreeMem(TextureData); - if Result then - begin - e_GetTextureSize(TexturesArray[find_id].ID, @TexturesArray[find_id].Width, - @TexturesArray[find_id].Height); - TexturesArray[find_id].Name := TextureName; - TexturesArray[find_id].flag := flag; - end; - end - else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - Result := False; - end; - WAD.Destroy; + find_id := FindTexture; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then + begin + Result := e_CreateTextureMem(TextureData, ResourceLength, TexturesArray[find_id].ID); + FreeMem(TextureData); + if Result then + begin + e_GetTextureSize( + TexturesArray[find_id].ID, + @TexturesArray[find_id].Width, + @TexturesArray[find_id].Height + ); + TexturesArray[find_id].Name := TextureName; + TexturesArray[find_id].flag := flag + end + end + else + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + Result := False + end end; -function g_SimpleCreateTextureWADSize(var ID: DWORD; Resource: string; - X, Y, Width, Height: Word): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: String; - TextureData: Pointer; - ResourceLength: Integer; +function g_SimpleCreateTextureWADSize(var ID: DWORD; Resource: String; X, Y, Width, Height: Word): Boolean; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: String; begin - Result := False; - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(utf2win(SectionName), utf2win(ResourceName), TextureData, ResourceLength) then - begin - if e_CreateTextureMemEx(TextureData, ResourceLength, ID, X, Y, Width, Height) then Result := True; - FreeMem(TextureData); - end - else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - end; - WAD.Destroy; + Result := False; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then + begin + if e_CreateTextureMemEx(TextureData, ResourceLength, ID, X, Y, Width, Height) then + Result := True; + FreeMem(TextureData) + end + else + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING) + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING) + end end; -function g_CreateTextureWADSize(TextureName: ShortString; Resource: string; - X, Y, Width, Height: Word; flag: Byte = 0): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: String; - TextureData: Pointer; - find_id: DWORD; - ResourceLength: Integer; +function g_CreateTextureWADSize(TextureName: ShortString; Resource: String; X, Y, Width, Height: Word; flag: Byte = 0): Boolean; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: String; + find_id: DWORD; begin - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - find_id := FindTexture; - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(utf2win(SectionName), utf2win(ResourceName), TextureData, ResourceLength) then - begin - Result := e_CreateTextureMemEx(TextureData, ResourceLength, TexturesArray[find_id].ID, X, Y, Width, Height); - FreeMem(TextureData); - if Result then + find_id := FindTexture; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then begin - TexturesArray[find_id].Width := Width; - TexturesArray[find_id].Height := Height; - TexturesArray[find_id].Name := TextureName; - TexturesArray[find_id].flag := flag; - end; - end + Result := e_CreateTextureMemEx(TextureData, ResourceLength, TexturesArray[find_id].ID, X, Y, Width, Height); + FreeMem(TextureData); + if Result then + begin + TexturesArray[find_id].Width := Width; + TexturesArray[find_id].Height := Height; + TexturesArray[find_id].Name := TextureName; + TexturesArray[find_id].flag := flag + end + end else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - Result := False; - end; - WAD.Destroy; + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + Result := False + end end; function g_GetTexture(TextureName: ShortString; var ID: DWORD): Boolean;