diff --git a/master/.vs/TTG Tools/v17/.suo b/master/.vs/TTG Tools/v17/.suo index 69b698a..5bd53b7 100644 Binary files a/master/.vs/TTG Tools/v17/.suo and b/master/.vs/TTG Tools/v17/.suo differ diff --git a/master/.vs/TTG Tools/v17/DocumentLayout.backup.json b/master/.vs/TTG Tools/v17/DocumentLayout.backup.json index c653aea..91bf394 100644 --- a/master/.vs/TTG Tools/v17/DocumentLayout.backup.json +++ b/master/.vs/TTG Tools/v17/DocumentLayout.backup.json @@ -3,28 +3,60 @@ "WorkspaceRootPath": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\about.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:about.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" }, { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|C:\\Users\\test\\source\\repos\\ttg-tools\\master\\autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" }, { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\textureworker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\textureworker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\dds\\someactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\dds\\someactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\dds\\decompress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\dds\\decompress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\dds\\dds.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\dds\\dds.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -34,7 +66,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 4, + "SelectedChildIndex": 11, "Children": [ { "$type": "Bookmark", @@ -44,80 +76,182 @@ "$type": "Bookmark", "Name": "ST:129:0:{1fc202d4-d401-403c-9834-5b218574bb67}" }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "Decompress.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\Decompress.cs", + "RelativeDocumentMoniker": "Graphics\\DDS\\Decompress.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\Decompress.cs", + "RelativeToolTip": "Graphics\\DDS\\Decompress.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:19:51.54Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "MainMenu.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs", + "RelativeDocumentMoniker": "MainMenu.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs", + "RelativeToolTip": "MainMenu.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAuAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:17:53.989Z", + "EditorCaption": "" + }, { "$type": "Document", "DocumentIndex": 3, + "Title": "FontEditor.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs", + "RelativeDocumentMoniker": "FontEditor.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs", + "RelativeToolTip": "FontEditor.cs", + "ViewState": "AgIAAMsHAAAAAAAAAAAYwN0HAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:17:16.913Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "Settings.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Settings.cs", + "RelativeDocumentMoniker": "Settings.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Settings.cs", + "RelativeToolTip": "Settings.cs", + "ViewState": "AgIAAAsCAAAAAAAAAAAjwAcCAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:13:52.838Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "FontEditor.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs", + "RelativeDocumentMoniker": "FontEditor.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "FontEditor.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:11:30.115Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "dds.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\dds.cs", + "RelativeDocumentMoniker": "Graphics\\DDS\\dds.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\dds.cs", + "RelativeToolTip": "Graphics\\DDS\\dds.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T09:48:53.471Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "AutoPacker.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs", + "RelativeDocumentMoniker": "AutoPacker.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs", + "RelativeToolTip": "AutoPacker.cs", + "ViewState": "AgIAAEsBAAAAAAAAAAAkwF0BAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-11T15:53:52.29Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, "Title": "TextureWorker.cs", "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\TextureWorker.cs", "RelativeDocumentMoniker": "Graphics\\TextureWorker.cs", "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\TextureWorker.cs", "RelativeToolTip": "Graphics\\TextureWorker.cs", - "ViewState": "AgIAAGwGAAAAAAAAAAAiwIEGAAAmAAAAAAAAAA==", + "ViewState": "AgIAAG4IAAAAAAAAAADwv4AIAABuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T17:10:27.635Z", + "WhenOpened": "2024-11-16T09:38:13.103Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 1, "Title": "AutoPacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs", "RelativeDocumentMoniker": "AutoPacker.cs", "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "RelativeToolTip": "AutoPacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T17:10:17.582Z", + "WhenOpened": "2024-11-11T15:53:46.48Z", "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" }, { "$type": "Document", "DocumentIndex": 0, - "Title": "ArchivePacker.cs", - "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs", - "RelativeDocumentMoniker": "ArchivePacker.cs", - "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs", - "RelativeToolTip": "ArchivePacker.cs", - "ViewState": "AgIAAB0CAAAAAAAAAADwvzgCAAAeAAAAAAAAAA==", + "Title": "About.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\About.cs", + "RelativeDocumentMoniker": "About.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\About.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "About.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:50:41.635Z", - "EditorCaption": "" + "WhenOpened": "2024-11-16T08:45:31.699Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" }, { "$type": "Document", - "DocumentIndex": 1, - "Title": "ArchivePacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", - "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs", - "RelativeDocumentMoniker": "ArchivePacker.cs", - "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", - "RelativeToolTip": "ArchivePacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentIndex": 9, + "Title": "SomeActions.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\SomeActions.cs", + "RelativeDocumentMoniker": "Graphics\\DDS\\SomeActions.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\SomeActions.cs", + "RelativeToolTip": "Graphics\\DDS\\SomeActions.cs", + "ViewState": "AgIAABgAAAAAAAAAAAAEwDQAAAAoAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:50:40.419Z", - "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + "WhenOpened": "2024-11-16T10:20:51.616Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 5, - "Title": "ArchiveUnpacker.cs", - "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", - "RelativeDocumentMoniker": "ArchiveUnpacker.cs", - "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", - "RelativeToolTip": "ArchiveUnpacker.cs", - "ViewState": "AgIAAAABAAAAAAAAAAAiwBMBAAAgAAAAAAAAAA==", + "DocumentIndex": 8, + "Title": "MainMenu.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs", + "RelativeDocumentMoniker": "MainMenu.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "MainMenu.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:41:28.894Z", - "EditorCaption": "" + "WhenOpened": "2024-11-16T12:02:59.151Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 11, "Title": "ArchiveUnpacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", "RelativeDocumentMoniker": "ArchiveUnpacker.cs", "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "RelativeToolTip": "ArchiveUnpacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:41:23.507Z", + "WhenOpened": "2024-11-16T10:27:04.216Z", "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "ArchiveUnpacker.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", + "RelativeDocumentMoniker": "ArchiveUnpacker.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", + "RelativeToolTip": "ArchiveUnpacker.cs", + "ViewState": "AgIAAMgEAAAAAAAAAAAWwMwEAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:27:08.286Z", + "EditorCaption": "" } ] } diff --git a/master/.vs/TTG Tools/v17/DocumentLayout.json b/master/.vs/TTG Tools/v17/DocumentLayout.json index 0dc6281..91bf394 100644 --- a/master/.vs/TTG Tools/v17/DocumentLayout.json +++ b/master/.vs/TTG Tools/v17/DocumentLayout.json @@ -3,28 +3,60 @@ "WorkspaceRootPath": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\about.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:about.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" }, { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archivepacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|C:\\Users\\test\\source\\repos\\ttg-tools\\master\\autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" }, { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:fonteditor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\textureworker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\textureworker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:autopacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\dds\\someactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\dds\\someactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:archiveunpacker.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\dds\\decompress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\dds\\decompress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|c:\\users\\test\\source\\repos\\ttg-tools\\master\\graphics\\dds\\dds.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{91A4EBF7-4A84-4501-8C14-6215B75B3239}|TTG Tools.csproj|solutionrelative:graphics\\dds\\dds.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -34,7 +66,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 4, + "SelectedChildIndex": 11, "Children": [ { "$type": "Bookmark", @@ -44,80 +76,182 @@ "$type": "Bookmark", "Name": "ST:129:0:{1fc202d4-d401-403c-9834-5b218574bb67}" }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "Decompress.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\Decompress.cs", + "RelativeDocumentMoniker": "Graphics\\DDS\\Decompress.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\Decompress.cs", + "RelativeToolTip": "Graphics\\DDS\\Decompress.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:19:51.54Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "MainMenu.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs", + "RelativeDocumentMoniker": "MainMenu.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs", + "RelativeToolTip": "MainMenu.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAuAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:17:53.989Z", + "EditorCaption": "" + }, { "$type": "Document", "DocumentIndex": 3, + "Title": "FontEditor.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs", + "RelativeDocumentMoniker": "FontEditor.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs", + "RelativeToolTip": "FontEditor.cs", + "ViewState": "AgIAAMsHAAAAAAAAAAAYwN0HAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:17:16.913Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "Settings.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Settings.cs", + "RelativeDocumentMoniker": "Settings.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Settings.cs", + "RelativeToolTip": "Settings.cs", + "ViewState": "AgIAAAsCAAAAAAAAAAAjwAcCAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:13:52.838Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "FontEditor.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs", + "RelativeDocumentMoniker": "FontEditor.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\FontEditor.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "FontEditor.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:11:30.115Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "dds.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\dds.cs", + "RelativeDocumentMoniker": "Graphics\\DDS\\dds.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\dds.cs", + "RelativeToolTip": "Graphics\\DDS\\dds.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T09:48:53.471Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "AutoPacker.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs", + "RelativeDocumentMoniker": "AutoPacker.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs", + "RelativeToolTip": "AutoPacker.cs", + "ViewState": "AgIAAEsBAAAAAAAAAAAkwF0BAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-11T15:53:52.29Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, "Title": "TextureWorker.cs", "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\TextureWorker.cs", "RelativeDocumentMoniker": "Graphics\\TextureWorker.cs", "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\TextureWorker.cs", "RelativeToolTip": "Graphics\\TextureWorker.cs", - "ViewState": "AgIAAGwGAAAAAAAAAAAiwIEGAAAmAAAAAAAAAA==", + "ViewState": "AgIAAG4IAAAAAAAAAADwv4AIAABuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T17:10:27.635Z", + "WhenOpened": "2024-11-16T09:38:13.103Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 1, "Title": "AutoPacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs", "RelativeDocumentMoniker": "AutoPacker.cs", "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\AutoPacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "RelativeToolTip": "AutoPacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T17:10:17.582Z", + "WhenOpened": "2024-11-11T15:53:46.48Z", "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" }, { "$type": "Document", "DocumentIndex": 0, - "Title": "ArchivePacker.cs", - "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs", - "RelativeDocumentMoniker": "ArchivePacker.cs", - "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs", - "RelativeToolTip": "ArchivePacker.cs", - "ViewState": "AgIAAGICAAAAAAAAAADwv3ICAAA+AAAAAAAAAA==", + "Title": "About.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\About.cs", + "RelativeDocumentMoniker": "About.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\About.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "About.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:50:41.635Z", - "EditorCaption": "" + "WhenOpened": "2024-11-16T08:45:31.699Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" }, { "$type": "Document", - "DocumentIndex": 1, - "Title": "ArchivePacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", - "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs", - "RelativeDocumentMoniker": "ArchivePacker.cs", - "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchivePacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", - "RelativeToolTip": "ArchivePacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentIndex": 9, + "Title": "SomeActions.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\SomeActions.cs", + "RelativeDocumentMoniker": "Graphics\\DDS\\SomeActions.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\Graphics\\DDS\\SomeActions.cs", + "RelativeToolTip": "Graphics\\DDS\\SomeActions.cs", + "ViewState": "AgIAABgAAAAAAAAAAAAEwDQAAAAoAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:50:40.419Z", - "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + "WhenOpened": "2024-11-16T10:20:51.616Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 5, - "Title": "ArchiveUnpacker.cs", - "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", - "RelativeDocumentMoniker": "ArchiveUnpacker.cs", - "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", - "RelativeToolTip": "ArchiveUnpacker.cs", - "ViewState": "AgIAAAABAAAAAAAAAAAiwBMBAAAgAAAAAAAAAA==", + "DocumentIndex": 8, + "Title": "MainMenu.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs", + "RelativeDocumentMoniker": "MainMenu.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\MainMenu.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "MainMenu.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:41:28.894Z", - "EditorCaption": "" + "WhenOpened": "2024-11-16T12:02:59.151Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 11, "Title": "ArchiveUnpacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", "RelativeDocumentMoniker": "ArchiveUnpacker.cs", "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "RelativeToolTip": "ArchiveUnpacker.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-26T16:41:23.507Z", + "WhenOpened": "2024-11-16T10:27:04.216Z", "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "ArchiveUnpacker.cs", + "DocumentMoniker": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", + "RelativeDocumentMoniker": "ArchiveUnpacker.cs", + "ToolTip": "C:\\Users\\test\\source\\repos\\ttg-tools\\master\\ArchiveUnpacker.cs", + "RelativeToolTip": "ArchiveUnpacker.cs", + "ViewState": "AgIAAMgEAAAAAAAAAAAWwMwEAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-11-16T10:27:08.286Z", + "EditorCaption": "" } ] } diff --git a/master/About.resx b/master/About.resx index 6e26a78..b3a1bf7 100644 --- a/master/About.resx +++ b/master/About.resx @@ -141,13 +141,18 @@ Maybe some games doesn't work. === [Version history] -v.1.14.4 (XX.XX.20XX) +v.1.14.4 (16.11.2024) + Archive packer: Fix packing ttarch archives with version 9 + Auto(De)Packer and Font editor: -Add support ps3 textures for oldest games +Add support ps3 textures for oldest games (not completely tested!) + Text editor: Minor fixes with progress bars ++ Archive packer: +Minor fixes ++ Archive unpacker: +Minor fixes. +Add support search files in archive. v.1.14.3 (19.10.2024) + Auto(De)Packer: diff --git a/master/ArchivePacker.cs b/master/ArchivePacker.cs index 8b72850..6ed77db 100644 --- a/master/ArchivePacker.cs +++ b/master/ArchivePacker.cs @@ -1,13 +1,13 @@ -using Microsoft.Win32; -using OodleTools; -using System; -using System.Configuration; -using System.Drawing.Drawing2D; -using System.Globalization; +using System; +using System.Threading; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.ComponentModel; +using System.Threading.Tasks; namespace TTG_Tools { @@ -18,14 +18,13 @@ public partial class ArchivePacker : Form public static FileInfo[] fi; //Получение списка файлов int archiveVersion; - public ArchivePacker() { InitializeComponent(); } - void AddNewReport(string report) + public void AddNewReport(string report) { if (messageListBox.InvokeRequired) { @@ -39,7 +38,7 @@ void AddNewReport(string report) } } - void Progress(int i) + public void Progress(int i) { if (progressBar1.InvokeRequired) { @@ -50,24 +49,17 @@ void Progress(int i) progressBar1.Value = i; } } - - private bool CheckDll(string filePath) + + public void SetMaximum(int i) { - if (File.Exists(filePath) == true) + if (progressBar1.InvokeRequired) { - try - { - byte[] testBlock = { 0x43, 0x48, 0x45, 0x43, 0x4B, 0x20, 0x54, 0x45, 0x53, 0x54, 0x20, 0x42, 0x4C, 0x4F, 0x43, 0x4B }; - testBlock = ZlibCompressor(testBlock); - - return true; - } - catch - { - return false; - } + progressBar1.Invoke(new ProgressHandler(SetMaximum), i); + } + else + { + progressBar1.Maximum = i; } - else return false; } private static byte[] ZlibCompressor(byte[] bytes) //Для старых архивов (с версии 3 по 7) @@ -122,7 +114,7 @@ private static byte[] DeflateCompressor(byte[] bytes) //Для старых (в - public byte[] encryptFunction(byte[] bytes, byte[] key, int archiveVersion) + private static byte[] encryptFunction(byte[] bytes, byte[] key, int archiveVersion) { BlowFishCS.BlowFish enc = new BlowFishCS.BlowFish(key, archiveVersion); //Methods.meta_crypt(bytes, key, archiveVersion, false); @@ -130,9 +122,8 @@ public byte[] encryptFunction(byte[] bytes, byte[] key, int archiveVersion) } - public void builder_ttarch2(string inputFolder, string outputPath, bool compression, bool encryption, bool encLua, byte[] key, int versionArchive, bool newEngine, int compressAlgorithm) + async Task ttarch2Builder(string inputFolder, string outputPath, bool compression, bool encryption, bool encLua, byte[] key, int versionArchive, bool newEngine, int compressAlgorithm) { - if (messageListBox.Items.Count > 1) messageListBox.Items.Clear(); DirectoryInfo di = new DirectoryInfo(inputFolder); fi = di.GetFiles("*", SearchOption.AllDirectories); @@ -208,7 +199,6 @@ public void builder_ttarch2(string inputFolder, string outputPath, bool compress byte[] subHeader = versionArchive == 1 ? Encoding.ASCII.GetBytes("3ATT") : Encoding.ASCII.GetBytes("4ATT"); - //Перепроверить код на рассчёт общего размера nameSize = Methods.pad_it(nameSize, 0x10000); //Pad size of file name's block by 64KB commonSize = versionArchive == 1 ? dataSize + tableSize + nameSize + 4 + 4 + 4 + 4 : dataSize + tableSize + nameSize + 4 + 4 + 4; //Common archive's size @@ -278,7 +268,7 @@ public void builder_ttarch2(string inputFolder, string outputPath, bool compress int ch = 0; int a = 0; - progressBar1.Maximum = fi.Length; + SetMaximum(fi.Length); //Try write subheader and file table int tableChunksCount = versionArchive == 1 ? Methods.pad_size(16 + table.Length + namesTable.Length, chunkSize) / chunkSize : Methods.pad_size(12 + table.Length + namesTable.Length, chunkSize) / chunkSize; @@ -446,9 +436,8 @@ public void builder_ttarch2(string inputFolder, string outputPath, bool compress AddNewReport("Packing archive complete"); } - public void builder_ttarch(string inputFolder, string outputPath, byte[] key, bool compression, int versionArchive, bool encryptCheck, bool DontEncLua, int compressAlgorithm) //Функция сборки + async Task ttarchBuilder(string inputFolder, string outputPath, byte[] key, bool compression, int versionArchive, bool encryptCheck, bool DontEncLua, int compressAlgorithm) //Функция сборки { - if (messageListBox.Items.Count > 1) messageListBox.Items.Clear(); DirectoryInfo di = new DirectoryInfo(inputFolder); DirectoryInfo[] di1 = di.GetDirectories("*", SearchOption.AllDirectories); //Just for fun if files were in different directories for Telltale Tool engine this optional @@ -585,7 +574,7 @@ public void builder_ttarch(string inputFolder, string outputPath, byte[] key, bo bw.Write(platform); uint pos = 0; - if(archiveVersion >= 3) + if(versionArchive >= 3) { bw.Write(unknown2); int headerChunksCount = compression ? chunksCount : 0; @@ -602,16 +591,16 @@ public void builder_ttarch(string inputFolder, string outputPath, byte[] key, bo pos = (uint)bw.BaseStream.Position; bw.Write(fileOffset); //Archive size - if (archiveVersion == 4 || archiveVersion >= 7) + if (versionArchive == 4 || versionArchive >= 7) { int priority = 0; - int unknownValue = checkXmode.Checked ? 1 : 0; + int unknownValue = MainMenu.settings.oldXmode ? 1 : 0; byte[] binChunkSize = BitConverter.GetBytes(headerChunkSize); bw.Write(priority); bw.Write(priority); - if (archiveVersion > 4) + if (versionArchive > 4) { bw.Write(unknownValue); bw.Write(unknownValue); @@ -633,7 +622,7 @@ public void builder_ttarch(string inputFolder, string outputPath, byte[] key, bo bw.Write(tableSize); bw.Write(table); - progressBar1.Maximum = fi.Length; + SetMaximum(fi.Length); int ch = 0; int a = 0; @@ -647,9 +636,9 @@ public void builder_ttarch(string inputFolder, string outputPath, byte[] key, bo string name = (fi[a].Extension.ToLower() == ".lua") && !DontEncLua ? fi[a].Name.Remove(fi[a].Name.Length - 3, 3) + "lenc" : fi[a].Name; byte[] file = File.ReadAllBytes(fi[a].FullName); - int res = Methods.meta_crypt(file, key, archiveVersion, false); + int res = Methods.meta_crypt(file, key, versionArchive, false); - if ((!DontEncLua && fi[a].Extension.ToLower() == ".lua") || fi[a].Extension.ToLower() == ".lenc") file = Methods.encryptLua(file, key, false, archiveVersion); + if ((!DontEncLua && fi[a].Extension.ToLower() == ".lua") || fi[a].Extension.ToLower() == ".lenc") file = Methods.encryptLua(file, key, false, versionArchive); int fileChunkCount = Methods.pad_size(chunkOff + file.Length, chunkSize) / chunkSize; int chunkFile = file.Length; @@ -857,7 +846,7 @@ private void button2_Click(object sender, EventArgs e) } } - private void buildButton_Click(object sender, EventArgs e) + private async void buildButton_Click(object sender, EventArgs e) { if ((MainMenu.settings.inputDirPath != "") && (MainMenu.settings.archivePath != "")) { @@ -894,8 +883,19 @@ private void buildButton_Click(object sender, EventArgs e) else if (ttarchRB.Checked && (versionSelection.SelectedIndex == 5 || versionSelection.SelectedIndex == 6) && (compressionCB.SelectedIndex == 1)) algorithmCompress = 1; else if (ttarchRB.Checked && versionSelection.SelectedIndex == 7) algorithmCompress = 1; //Latest version uses deflate algorithm - if (ttarchRB.Checked == true) builder_ttarch(MainMenu.settings.inputDirPath, MainMenu.settings.archivePath, keyEnc, MainMenu.settings.compressArchive, archiveVersion, MainMenu.settings.encArchive, MainMenu.settings.encryptLuaInArchive, algorithmCompress); - else builder_ttarch2(MainMenu.settings.inputDirPath, MainMenu.settings.archivePath, MainMenu.settings.compressArchive, MainMenu.settings.encArchive, !MainMenu.settings.encryptLuaInArchive, keyEnc, archiveVersion, MainMenu.settings.encNewLua, algorithmCompress); + if (messageListBox.Items.Count > 1) messageListBox.Items.Clear(); + + if(ttarchRB.Checked) + { + await Task.Run(() => ttarchBuilder(MainMenu.settings.inputDirPath, MainMenu.settings.archivePath, keyEnc, MainMenu.settings.compressArchive, archiveVersion, MainMenu.settings.encArchive, MainMenu.settings.encryptLuaInArchive, algorithmCompress)); + } + else + { + await Task.Run(() => ttarch2Builder(MainMenu.settings.inputDirPath, MainMenu.settings.archivePath, MainMenu.settings.compressArchive, MainMenu.settings.encArchive, !MainMenu.settings.encryptLuaInArchive, keyEnc, archiveVersion, MainMenu.settings.encNewLua, algorithmCompress)); + } + + /*if (ttarchRB.Checked == true) ttarchBuilder(MainMenu.settings.inputDirPath, MainMenu.settings.archivePath, keyEnc, MainMenu.settings.compressArchive, archiveVersion, MainMenu.settings.encArchive, MainMenu.settings.encryptLuaInArchive, algorithmCompress); + else builder_ttarch2(MainMenu.settings.inputDirPath, MainMenu.settings.archivePath, MainMenu.settings.compressArchive, MainMenu.settings.encArchive, !MainMenu.settings.encryptLuaInArchive, keyEnc, archiveVersion, MainMenu.settings.encNewLua, algorithmCompress);*/ } else MessageBox.Show("This folder doesn't exist!", "Error"); diff --git a/master/ArchiveUnpacker.Designer.cs b/master/ArchiveUnpacker.Designer.cs index 8039217..c4cebdc 100644 --- a/master/ArchiveUnpacker.Designer.cs +++ b/master/ArchiveUnpacker.Designer.cs @@ -38,6 +38,7 @@ private void InitializeComponent() this.unpackSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.filesDataGridView = new System.Windows.Forms.DataGridView(); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.encrLuaLabel = new System.Windows.Forms.Label(); this.xmodeLabel = new System.Windows.Forms.Label(); this.chunkSizeLabel = new System.Windows.Forms.Label(); this.compressionLabel = new System.Windows.Forms.Label(); @@ -51,7 +52,9 @@ private void InitializeComponent() this.decryptLuaCB = new System.Windows.Forms.CheckBox(); this.useCustomKeyCB = new System.Windows.Forms.CheckBox(); this.customKeyTB = new System.Windows.Forms.TextBox(); - this.encrLuaLabel = new System.Windows.Forms.Label(); + this.searchFilesByNameCB = new System.Windows.Forms.CheckBox(); + this.searchTB = new System.Windows.Forms.TextBox(); + this.searchBtn = new System.Windows.Forms.Button(); this.menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.filesDataGridView)).BeginInit(); this.groupBox1.SuspendLayout(); @@ -81,14 +84,14 @@ private void InitializeComponent() // this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); - this.openToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.openToolStripMenuItem.Size = new System.Drawing.Size(146, 22); this.openToolStripMenuItem.Text = "Open"; this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); // // exitToolStripMenuItem // this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.exitToolStripMenuItem.Size = new System.Drawing.Size(146, 22); this.exitToolStripMenuItem.Text = "Exit"; this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); // @@ -104,24 +107,24 @@ private void InitializeComponent() // unpackToolStripMenuItem // this.unpackToolStripMenuItem.Name = "unpackToolStripMenuItem"; - this.unpackToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.unpackToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.unpackToolStripMenuItem.Text = "Unpack"; this.unpackToolStripMenuItem.Click += new System.EventHandler(this.unpackToolStripMenuItem_Click); // // unpackSelectedToolStripMenuItem // this.unpackSelectedToolStripMenuItem.Name = "unpackSelectedToolStripMenuItem"; - this.unpackSelectedToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.unpackSelectedToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.unpackSelectedToolStripMenuItem.Text = "Unpack selected"; this.unpackSelectedToolStripMenuItem.Click += new System.EventHandler(this.unpackSelectedToolStripMenuItem_Click); // // filesDataGridView // this.filesDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.filesDataGridView.Location = new System.Drawing.Point(12, 180); + this.filesDataGridView.Location = new System.Drawing.Point(12, 226); this.filesDataGridView.Name = "filesDataGridView"; this.filesDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.filesDataGridView.Size = new System.Drawing.Size(953, 495); + this.filesDataGridView.Size = new System.Drawing.Size(953, 449); this.filesDataGridView.TabIndex = 1; // // groupBox1 @@ -139,6 +142,15 @@ private void InitializeComponent() this.groupBox1.TabStop = false; this.groupBox1.Text = "Archive info"; // + // encrLuaLabel + // + this.encrLuaLabel.AutoSize = true; + this.encrLuaLabel.Location = new System.Drawing.Point(175, 34); + this.encrLuaLabel.Name = "encrLuaLabel"; + this.encrLuaLabel.Size = new System.Drawing.Size(111, 13); + this.encrLuaLabel.TabIndex = 5; + this.encrLuaLabel.Text = "Lua scripts encrypted:"; + // // xmodeLabel // this.xmodeLabel.AutoSize = true; @@ -214,7 +226,7 @@ private void InitializeComponent() // // progressBar1 // - this.progressBar1.Location = new System.Drawing.Point(16, 144); + this.progressBar1.Location = new System.Drawing.Point(16, 189); this.progressBar1.Name = "progressBar1"; this.progressBar1.Size = new System.Drawing.Size(949, 23); this.progressBar1.TabIndex = 6; @@ -257,20 +269,42 @@ private void InitializeComponent() this.customKeyTB.Size = new System.Drawing.Size(298, 20); this.customKeyTB.TabIndex = 10; // - // encrLuaLabel + // searchFilesByNameCB // - this.encrLuaLabel.AutoSize = true; - this.encrLuaLabel.Location = new System.Drawing.Point(175, 34); - this.encrLuaLabel.Name = "encrLuaLabel"; - this.encrLuaLabel.Size = new System.Drawing.Size(111, 13); - this.encrLuaLabel.TabIndex = 5; - this.encrLuaLabel.Text = "Lua scripts encrypted:"; + this.searchFilesByNameCB.AutoSize = true; + this.searchFilesByNameCB.Location = new System.Drawing.Point(16, 146); + this.searchFilesByNameCB.Name = "searchFilesByNameCB"; + this.searchFilesByNameCB.Size = new System.Drawing.Size(89, 17); + this.searchFilesByNameCB.TabIndex = 11; + this.searchFilesByNameCB.Text = "Search name"; + this.searchFilesByNameCB.UseVisualStyleBackColor = true; + this.searchFilesByNameCB.CheckedChanged += new System.EventHandler(this.searchFilesByNameCB_CheckedChanged); + // + // searchTB + // + this.searchTB.Location = new System.Drawing.Point(135, 143); + this.searchTB.Name = "searchTB"; + this.searchTB.Size = new System.Drawing.Size(415, 20); + this.searchTB.TabIndex = 13; + // + // searchBtn + // + this.searchBtn.Location = new System.Drawing.Point(572, 141); + this.searchBtn.Name = "searchBtn"; + this.searchBtn.Size = new System.Drawing.Size(75, 23); + this.searchBtn.TabIndex = 14; + this.searchBtn.Text = "Search"; + this.searchBtn.UseVisualStyleBackColor = true; + this.searchBtn.Click += new System.EventHandler(this.searchBtn_Click); // // ArchiveUnpacker // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(978, 696); + this.Controls.Add(this.searchBtn); + this.Controls.Add(this.searchTB); + this.Controls.Add(this.searchFilesByNameCB); this.Controls.Add(this.customKeyTB); this.Controls.Add(this.useCustomKeyCB); this.Controls.Add(this.decryptLuaCB); @@ -324,5 +358,8 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox useCustomKeyCB; private System.Windows.Forms.TextBox customKeyTB; private System.Windows.Forms.Label encrLuaLabel; + private System.Windows.Forms.CheckBox searchFilesByNameCB; + private System.Windows.Forms.TextBox searchTB; + private System.Windows.Forms.Button searchBtn; } } \ No newline at end of file diff --git a/master/ArchiveUnpacker.cs b/master/ArchiveUnpacker.cs index 1a742f4..b6b950c 100644 --- a/master/ArchiveUnpacker.cs +++ b/master/ArchiveUnpacker.cs @@ -5,6 +5,8 @@ using System.IO; using System.Windows.Forms; using TTG_Tools.ClassesStructs; +using System.Threading.Tasks; +using System.Runtime.Remoting.Messaging; namespace TTG_Tools { @@ -15,8 +17,12 @@ public ArchiveUnpacker() InitializeComponent(); } - public static ClassesStructs.TtarchClass ttarch; - public static ClassesStructs.Ttarch2Class ttarch2; + private static ClassesStructs.TtarchClass ttarch; + private static ClassesStructs.Ttarch2Class ttarch2; + private ClassesStructs.TtarchClass.ttarchFiles[] searchFiles; + private ClassesStructs.Ttarch2Class.Ttarch2files[] search2Files; + private bool decrypt = false; + private byte[] key = null; private void exitToolStripMenuItem_Click(object sender, EventArgs e) { @@ -35,6 +41,30 @@ void Progress(int i) } } + void SetMinimum(int i) + { + if (progressBar1.InvokeRequired) + { + progressBar1.Invoke(new ProgressHandler(SetMinimum), i); + } + else + { + progressBar1.Minimum = i; + } + } + + void SetMaximum(int i) + { + if(progressBar1.InvokeRequired) + { + progressBar1.Invoke(new ProgressHandler(SetMaximum), i); + } + else + { + progressBar1.Maximum = i; + } + } + private static byte[] decompressBlock(byte[] bytes, int algorithmCompress) { try @@ -161,7 +191,7 @@ private static byte[] OodleDecompressor(byte[] bytes) return tmp; } - private static void ReadHeaderTtarch(string path, byte[] key) + private void ReadHeaderTtarch(string path, byte[] key) { try { @@ -319,16 +349,15 @@ private void UnpackTtarch(string folderPath, string format, int[] indexes = null { var files = format == "All files" ? ttarch.files : ttarch.files.Where(x => Methods.GetExtension(x.fileName).ToLower() == format.ToLower()).ToArray(); + if ((searchFiles != null) && (searchFiles.Length > 0)) files = searchFiles; + FileStream fs = new FileStream(ttarch.filePath, FileMode.Open); BinaryReader br = new BinaryReader(fs); - bool decrypt = decryptLuaCB.Checked; - byte[] key = MainMenu.gamelist[gameListCB.SelectedIndex].key; - int count = indexes != null ? indexes.Length : files.Length; - progressBar1.Minimum = 0; - progressBar1.Maximum = count; + SetMinimum(0); + SetMaximum(count); int chunkSz = ttarch.chunkSize * 1024; @@ -354,7 +383,7 @@ private void UnpackTtarch(string folderPath, string format, int[] indexes = null fs.Close(); } - private static void ReadHeaderTtarch2(string path, byte[] key) + private void ReadHeaderTtarch2(string path, byte[] key) { try { @@ -602,7 +631,7 @@ private static void ReadHeaderTtarch2(string path, byte[] key) } catch { - MessageBox.Show("Something goes wrong", "Unknown error. Please try another archive or change encryption key.", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("Unknown error. Please try another archive or change encryption key.", "Something goes wrong", MessageBoxButtons.OK, MessageBoxIcon.Error); ttarch2 = null; } } @@ -611,13 +640,12 @@ private void UnpackTtarch2(string folderPath, string format, int[] indexes = nul { var files = format == "All files" ? ttarch2.files : ttarch2.files.Where(x => Methods.GetExtension(x.fileName).ToLower() == format.ToLower()).ToArray(); + if ((search2Files != null) && (search2Files.Length > 0)) files = search2Files; + int count = indexes != null ? indexes.Length : files.Length; - progressBar1.Minimum = 0; - progressBar1.Maximum = count; - - bool decrypt = decryptLuaCB.Checked; - byte[] key = MainMenu.gamelist[gameListCB.SelectedIndex].key; + SetMinimum(0); + SetMaximum(count); FileStream fs = new FileStream(ttarch2.fileName, FileMode.Open); BinaryReader br = new BinaryReader(fs); @@ -732,6 +760,43 @@ private void loadTtarchData(string format) filesDataGridView.ClearSelection(); } + private void loadTtarchData(ClassesStructs.TtarchClass.ttarchFiles[] files) + { + filesDataGridView.ColumnCount = 4; + + filesDataGridView.Columns[0].HeaderText = "No."; + filesDataGridView.Columns[1].HeaderText = "File name"; + filesDataGridView.Columns[2].HeaderText = "File offset"; + filesDataGridView.Columns[3].HeaderText = "File size"; + + filesDataGridView.RowCount = files.Length; + + int maxnameLen = 0; + int maxOffLen = 0; + int maxSizeLen = 0; + int maxNoLen = 0; + + for (int i = 0; i < files.Length; i++) + { + filesDataGridView[0, i].Value = Convert.ToString(i + 1); + filesDataGridView[1, i].Value = files[i].fileName; + filesDataGridView[2, i].Value = Convert.ToString(files[i].fileOffset); + filesDataGridView[3, i].Value = Convert.ToString(files[i].fileSize); + + maxNoLen = Convert.ToString(i + 1).Length > maxNoLen ? Convert.ToString(i + 1).Length : maxNoLen; + maxnameLen = files[i].fileName.Length > maxnameLen ? files[i].fileName.Length : maxnameLen; + maxSizeLen = Convert.ToString(files[i].fileSize).Length > maxSizeLen ? Convert.ToString(files[i].fileSize).Length : maxSizeLen; + maxOffLen = Convert.ToString(files[i].fileOffset).Length > maxOffLen ? Convert.ToString(files[i].fileOffset).Length : maxOffLen; + } + + filesDataGridView.Columns[0].Width = maxNoLen * 10; + filesDataGridView.Columns[1].Width = maxnameLen * 8; + filesDataGridView.Columns[2].Width = maxOffLen * 10; + filesDataGridView.Columns[3].Width = maxSizeLen * 10; + + filesDataGridView.ClearSelection(); + } + private static byte[] getTtarchFile(ClassesStructs.TtarchClass ttarch, ClassesStructs.TtarchClass.ttarchFiles file, byte[] key, int chunkSz, BinaryReader br) { byte[] result = null; @@ -883,6 +948,7 @@ private static byte[] getTtarch2File(Ttarch2Class ttarch2, Ttarch2Class.Ttarch2f return result; } + private void loadTtarch2Data(string format) { filesDataGridView.ColumnCount = 4; @@ -921,7 +987,44 @@ private void loadTtarch2Data(string format) filesDataGridView.ClearSelection(); } - private void openToolStripMenuItem_Click(object sender, EventArgs e) + private void loadTtarch2Data(ClassesStructs.Ttarch2Class.Ttarch2files[] files) + { + filesDataGridView.ColumnCount = 4; + + filesDataGridView.Columns[0].HeaderText = "No."; + filesDataGridView.Columns[1].HeaderText = "File name"; + filesDataGridView.Columns[2].HeaderText = "File offset"; + filesDataGridView.Columns[3].HeaderText = "File size"; + + filesDataGridView.RowCount = files.Length; + + int maxnameLen = 0; + int maxOffLen = 0; + int maxSizeLen = 0; + int maxNoLen = 0; + + for (int i = 0; i < files.Length; i++) + { + filesDataGridView[0, i].Value = Convert.ToString(i + 1); + filesDataGridView[1, i].Value = files[i].fileName; + filesDataGridView[2, i].Value = Convert.ToString(files[i].fileOffset); + filesDataGridView[3, i].Value = Convert.ToString(files[i].fileSize); + + maxNoLen = Convert.ToString(i + 1).Length > maxNoLen ? Convert.ToString(i + 1).Length : maxNoLen; + maxnameLen = files[i].fileName.Length > maxnameLen ? files[i].fileName.Length : maxnameLen; + maxSizeLen = Convert.ToString(files[i].fileSize).Length > maxSizeLen ? Convert.ToString(files[i].fileSize).Length : maxSizeLen; + maxOffLen = Convert.ToString(files[i].fileOffset).Length > maxOffLen ? Convert.ToString(files[i].fileOffset).Length : maxOffLen; + } + + filesDataGridView.Columns[0].Width = maxNoLen * 10; + filesDataGridView.Columns[1].Width = maxnameLen * 8; + filesDataGridView.Columns[2].Width = maxOffLen * 10; + filesDataGridView.Columns[3].Width = maxSizeLen * 10; + + filesDataGridView.ClearSelection(); + } + + private async void openToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "All supported files (*.ttarch, *.ttarch2) | *.ttarch;*.ttarch2| TTARCH archives (*.ttarch) | *.ttarch| TTARCH2 archives (*.ttarch2) | *.ttarch2"; @@ -943,7 +1046,7 @@ private void openToolStripMenuItem_Click(object sender, EventArgs e) { case ".ttarch": ttarch = new ClassesStructs.TtarchClass(); - ReadHeaderTtarch(fi.FullName, key); + await Task.Run(() => ReadHeaderTtarch(fi.FullName, key)); if (ttarch != null) { @@ -973,7 +1076,7 @@ private void openToolStripMenuItem_Click(object sender, EventArgs e) case ".ttarch2": ttarch2 = new ClassesStructs.Ttarch2Class(); - ReadHeaderTtarch2(fi.FullName, key); + await Task.Run(() => ReadHeaderTtarch2(fi.FullName, key)); if(ttarch2 != null) { @@ -1019,18 +1122,25 @@ private void ArchiveUnpacker_Load(object sender, EventArgs e) customKeyTB.Text = MainMenu.settings.encCustomKey; useCustomKeyCB.Checked = MainMenu.settings.customKey; + searchTB.Enabled = searchFilesByNameCB.Checked; + searchBtn.Enabled = searchFilesByNameCB.Checked; + actionsToolStripMenuItem.Enabled = false; } - private void unpackToolStripMenuItem_Click(object sender, EventArgs e) + private async void unpackToolStripMenuItem_Click(object sender, EventArgs e) { - if(ttarch != null) + decrypt = decryptLuaCB.Checked; + key = MainMenu.gamelist[gameListCB.SelectedIndex].key; + string format = fileFormatsCB.Text; + + if (ttarch != null) { FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK) { - UnpackTtarch(fbd.SelectedPath, fileFormatsCB.Text); + await Task.Run(() => UnpackTtarch(fbd.SelectedPath, format)); } } else if(ttarch2 != null) @@ -1039,7 +1149,7 @@ private void unpackToolStripMenuItem_Click(object sender, EventArgs e) if (fbd.ShowDialog() == DialogResult.OK) { - UnpackTtarch2(fbd.SelectedPath, fileFormatsCB.Text); + await Task.Run(() => UnpackTtarch2(fbd.SelectedPath, format)); } } else @@ -1048,6 +1158,44 @@ private void unpackToolStripMenuItem_Click(object sender, EventArgs e) } } + private ClassesStructs.TtarchClass.ttarchFiles[] searchTtarchFiles(string pattern) + { + try + { + List collection = new List(); + + for (int i = 0; i < ttarch.files.Length; i++) + { + if (ttarch.files[i].fileName.ToLower().Contains(pattern.ToLower())) collection.Add(ttarch.files[i]); + } + + return collection.ToArray(); + } + catch + { + return null; + } + } + + private ClassesStructs.Ttarch2Class.Ttarch2files[] searchTtarch2Files(string pattern) + { + try + { + List collection = new List(); + + for (int i = 0; i < ttarch2.files.Length; i++) + { + if (ttarch2.files[i].fileName.ToLower().Contains(pattern.ToLower())) collection.Add(ttarch2.files[i]); + } + + return collection.ToArray(); + } + catch + { + return null; + } + } + private void fileFormatsCB_SelectedIndexChanged(object sender, EventArgs e) { if (ttarch != null) @@ -1076,32 +1224,35 @@ private void useCustomKeyCB_CheckedChanged(object sender, EventArgs e) Settings.SaveConfig(MainMenu.settings); } - private void unpackSelectedToolStripMenuItem_Click(object sender, EventArgs e) + private async void unpackSelectedToolStripMenuItem_Click(object sender, EventArgs e) { if (filesDataGridView.SelectedRows.Count > 0) { + key = MainMenu.gamelist[gameListCB.SelectedIndex].key; + decrypt = decryptLuaCB.Checked; + FolderBrowserDialog fbd = new FolderBrowserDialog(); int[] indexes = new int[filesDataGridView.SelectedRows.Count]; + string format = fileFormatsCB.Text; for (int i = 0; i < indexes.Length; i++) { indexes[i] = Convert.ToInt32(filesDataGridView.SelectedRows[i].Cells[0].Value) - 1; - //indexes[i] = filesDataGridView.SelectedRows[i].Index; } if(ttarch != null) { if (fbd.ShowDialog() == DialogResult.OK) { - UnpackTtarch(fbd.SelectedPath, fileFormatsCB.Text, indexes); + await Task.Run(() => UnpackTtarch(fbd.SelectedPath, format, indexes)); } } else if(ttarch2 != null) { if(fbd.ShowDialog() == DialogResult.OK) { - UnpackTtarch2(fbd.SelectedPath, fileFormatsCB.Text, indexes); + await Task.Run(() => UnpackTtarch2(fbd.SelectedPath, format, indexes)); } } } @@ -1110,5 +1261,53 @@ private void unpackSelectedToolStripMenuItem_Click(object sender, EventArgs e) MessageBox.Show("Please select files from list first.", "No selected files from list", MessageBoxButtons.OK, MessageBoxIcon.Information); } } + + private void searchFilesByNameCB_CheckedChanged(object sender, EventArgs e) + { + searchBtn.Enabled = searchFilesByNameCB.Checked; + searchTB.Enabled = searchFilesByNameCB.Checked; + } + + private void searchBtn_Click(object sender, EventArgs e) + { + if((ttarch == null) && (ttarch2 == null)) + { + MessageBox.Show("Nothing to search.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + else + { + string searchParam = searchTB.Text; + string param = fileFormatsCB.Text; + + if(ttarch != null) + { + searchFiles = searchTtarchFiles(searchParam); + + if ((searchFiles != null) && (searchFiles.Length > 0)) + { + loadTtarchData(searchFiles); + } + else + { + searchFiles = null; + loadTtarchData(param); + } + } + if(ttarch2 != null) + { + search2Files = searchTtarch2Files(searchParam); + + if ((search2Files != null) && (search2Files.Length > 0)) + { + loadTtarch2Data(search2Files); + } + else + { + search2Files = null; + loadTtarch2Data(param); + } + } + } + } } } diff --git a/master/AutoPacker.Designer.cs b/master/AutoPacker.Designer.cs index 621a70e..660d59d 100644 --- a/master/AutoPacker.Designer.cs +++ b/master/AutoPacker.Designer.cs @@ -93,12 +93,12 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.listBox1.FormattingEnabled = true; - this.listBox1.Location = new System.Drawing.Point(10, 184); + this.listBox1.Location = new System.Drawing.Point(10, 197); this.listBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); this.listBox1.Name = "listBox1"; this.listBox1.ScrollAlwaysVisible = true; this.listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; - this.listBox1.Size = new System.Drawing.Size(801, 407); + this.listBox1.Size = new System.Drawing.Size(801, 394); this.listBox1.TabIndex = 2; // // buttonDecrypt @@ -126,7 +126,7 @@ private void InitializeComponent() this.groupBox1.Margin = new System.Windows.Forms.Padding(2); this.groupBox1.Name = "groupBox1"; this.groupBox1.Padding = new System.Windows.Forms.Padding(2); - this.groupBox1.Size = new System.Drawing.Size(442, 140); + this.groupBox1.Size = new System.Drawing.Size(442, 147); this.groupBox1.TabIndex = 5; this.groupBox1.TabStop = false; this.groupBox1.Text = "Some functions"; @@ -311,7 +311,7 @@ private void InitializeComponent() // sortLabel // this.sortLabel.AutoSize = true; - this.sortLabel.Location = new System.Drawing.Point(7, 162); + this.sortLabel.Location = new System.Drawing.Point(19, 169); this.sortLabel.Name = "sortLabel"; this.sortLabel.Size = new System.Drawing.Size(51, 13); this.sortLabel.TabIndex = 16; @@ -322,8 +322,8 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(821, 612); - this.Controls.Add(this.sortLabel); this.Controls.Add(this.textBox1); + this.Controls.Add(this.sortLabel); this.Controls.Add(this.checkCustomKey); this.Controls.Add(this.label1); this.Controls.Add(this.groupBox1); diff --git a/master/AutoPacker.cs b/master/AutoPacker.cs index 08b04ba..33d6fe9 100644 --- a/master/AutoPacker.cs +++ b/master/AutoPacker.cs @@ -345,5 +345,9 @@ private void rbSwitchSwizzle_CheckedChanged(object sender, EventArgs e) Settings.SaveConfig(MainMenu.settings); } } + + private void convertArgb8888Cb_CheckedChanged(object sender, EventArgs e) + { + } } } diff --git a/master/FontEditor.Designer.cs b/master/FontEditor.Designer.cs index c12068d..64a907c 100644 --- a/master/FontEditor.Designer.cs +++ b/master/FontEditor.Designer.cs @@ -87,9 +87,9 @@ private void InitializeComponent() this.textBox1 = new System.Windows.Forms.TextBox(); this.button1 = new System.Windows.Forms.Button(); this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.rbNoSwizzle = new System.Windows.Forms.RadioButton(); - this.rbPS4Swizzle = new System.Windows.Forms.RadioButton(); this.rbSwitchSwizzle = new System.Windows.Forms.RadioButton(); + this.rbPS4Swizzle = new System.Windows.Forms.RadioButton(); + this.rbNoSwizzle = new System.Windows.Forms.RadioButton(); this.groupBox1.SuspendLayout(); this.menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewWithTextures)).BeginInit(); @@ -236,7 +236,7 @@ private void InitializeComponent() this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2); - this.menuStrip1.Size = new System.Drawing.Size(1004, 24); + this.menuStrip1.Size = new System.Drawing.Size(1011, 24); this.menuStrip1.TabIndex = 24; this.menuStrip1.Text = "menuStrip1"; // @@ -418,11 +418,11 @@ private void InitializeComponent() this.Column11, this.Column12, this.Column13}); - this.dataGridViewWithCoord.Location = new System.Drawing.Point(12, 130); + this.dataGridViewWithCoord.Location = new System.Drawing.Point(12, 134); this.dataGridViewWithCoord.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); this.dataGridViewWithCoord.Name = "dataGridViewWithCoord"; this.dataGridViewWithCoord.RowHeadersWidth = 51; - this.dataGridViewWithCoord.Size = new System.Drawing.Size(979, 377); + this.dataGridViewWithCoord.Size = new System.Drawing.Size(986, 373); this.dataGridViewWithCoord.TabIndex = 27; this.dataGridViewWithCoord.CellBeginEdit += new System.Windows.Forms.DataGridViewCellCancelEventHandler(this.dataGridViewWithCoord_CellBeginEdit); this.dataGridViewWithCoord.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewWithCoord_CellEndEdit); @@ -669,17 +669,17 @@ private void InitializeComponent() this.groupBox4.TabStop = false; this.groupBox4.Text = "Swizzle methods"; // - // rbNoSwizzle + // rbSwitchSwizzle // - this.rbNoSwizzle.AutoSize = true; - this.rbNoSwizzle.Location = new System.Drawing.Point(7, 22); - this.rbNoSwizzle.Name = "rbNoSwizzle"; - this.rbNoSwizzle.Size = new System.Drawing.Size(51, 17); - this.rbNoSwizzle.TabIndex = 0; - this.rbNoSwizzle.TabStop = true; - this.rbNoSwizzle.Text = "None"; - this.rbNoSwizzle.UseVisualStyleBackColor = true; - this.rbNoSwizzle.CheckedChanged += new System.EventHandler(this.rbNoSwizzle_CheckedChanged); + this.rbSwitchSwizzle.AutoSize = true; + this.rbSwitchSwizzle.Location = new System.Drawing.Point(7, 74); + this.rbSwitchSwizzle.Name = "rbSwitchSwizzle"; + this.rbSwitchSwizzle.Size = new System.Drawing.Size(103, 17); + this.rbSwitchSwizzle.TabIndex = 2; + this.rbSwitchSwizzle.TabStop = true; + this.rbSwitchSwizzle.Text = "Nintendo Switch"; + this.rbSwitchSwizzle.UseVisualStyleBackColor = true; + this.rbSwitchSwizzle.CheckedChanged += new System.EventHandler(this.rbSwitchSwizzle_CheckedChanged); // // rbPS4Swizzle // @@ -693,23 +693,23 @@ private void InitializeComponent() this.rbPS4Swizzle.UseVisualStyleBackColor = true; this.rbPS4Swizzle.CheckedChanged += new System.EventHandler(this.rbPS4Swizzle_CheckedChanged); // - // rbSwitchSwizzle + // rbNoSwizzle // - this.rbSwitchSwizzle.AutoSize = true; - this.rbSwitchSwizzle.Location = new System.Drawing.Point(7, 74); - this.rbSwitchSwizzle.Name = "rbSwitchSwizzle"; - this.rbSwitchSwizzle.Size = new System.Drawing.Size(103, 17); - this.rbSwitchSwizzle.TabIndex = 2; - this.rbSwitchSwizzle.TabStop = true; - this.rbSwitchSwizzle.Text = "Nintendo Switch"; - this.rbSwitchSwizzle.UseVisualStyleBackColor = true; - this.rbSwitchSwizzle.CheckedChanged += new System.EventHandler(this.rbSwitchSwizzle_CheckedChanged); + this.rbNoSwizzle.AutoSize = true; + this.rbNoSwizzle.Location = new System.Drawing.Point(7, 22); + this.rbNoSwizzle.Name = "rbNoSwizzle"; + this.rbNoSwizzle.Size = new System.Drawing.Size(51, 17); + this.rbNoSwizzle.TabIndex = 0; + this.rbNoSwizzle.TabStop = true; + this.rbNoSwizzle.Text = "None"; + this.rbNoSwizzle.UseVisualStyleBackColor = true; + this.rbNoSwizzle.CheckedChanged += new System.EventHandler(this.rbNoSwizzle_CheckedChanged); // // FontEditor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1004, 519); + this.ClientSize = new System.Drawing.Size(1011, 519); this.Controls.Add(this.groupBox4); this.Controls.Add(this.groupBox3); this.Controls.Add(this.dataGridViewWithCoord); diff --git a/master/FontEditor.cs b/master/FontEditor.cs index 60d51e3..b569e01 100644 --- a/master/FontEditor.cs +++ b/master/FontEditor.cs @@ -2009,5 +2009,9 @@ private void rbSwitchSwizzle_CheckedChanged(object sender, EventArgs e) MainMenu.settings.swizzleNintendoSwitch = true; Settings.SaveConfig(MainMenu.settings); } + + private void convertArgb8888CB_CheckedChanged(object sender, EventArgs e) + { + } } } \ No newline at end of file diff --git a/master/Graphics/DDS/SomeActions.cs b/master/Graphics/DDS/SomeActions.cs new file mode 100644 index 0000000..384ea2d --- /dev/null +++ b/master/Graphics/DDS/SomeActions.cs @@ -0,0 +1,65 @@ +using System; +using System.Drawing; +using System.IO; + +namespace TTG_Tools.Graphics.DDS +{ + public class SomeActions + { + public static byte[] ConvertARGBtoBGRA(byte[] data) + { + byte[] result = new byte[data.Length]; + uint offset = 0; + + using (MemoryStream ms = new MemoryStream(data)) + { + using (BinaryReader br = new BinaryReader(ms)) + { + for (int i = 0; i < data.Length; i += 4) + { + byte[] argb = br.ReadBytes(4); + + byte[] bgra = new byte[4]; + bgra[0] = argb[3]; + bgra[1] = argb[2]; + bgra[2] = argb[1]; + bgra[3] = argb[0]; + + Array.Copy(bgra, 0, result, offset, bgra.Length); + offset += 4; + } + } + } + + return result; + } + + public static byte[] ConvertBGRAtoARGB(byte[] data) + { + byte[] result = new byte[data.Length]; + uint offset = 0; + + using (MemoryStream ms = new MemoryStream(data)) + { + using (BinaryReader br = new BinaryReader(ms)) + { + for (int i = 0; i < data.Length; i += 4) + { + byte[] bgra = br.ReadBytes(4); + + byte[] argb = new byte[4]; + argb[0] = bgra[3]; + argb[1] = bgra[1]; + argb[2] = bgra[2]; + argb[3] = bgra[0]; + + Array.Copy(argb, 0, result, offset, argb.Length); + offset += 4; + } + } + } + + return result; + } + } +} diff --git a/master/Graphics/TextureWorker.cs b/master/Graphics/TextureWorker.cs index f230fa3..4db8d0a 100644 --- a/master/Graphics/TextureWorker.cs +++ b/master/Graphics/TextureWorker.cs @@ -1737,6 +1737,7 @@ public static ClassesStructs.TextureClass.OldT3Texture GetOldTextures(byte[] bin Array.Copy(binContent, poz, tmp, 0, tmp.Length); tex.TexSize = BitConverter.ToInt32(tmp, 0); poz += 4; + tex.BlockPos += 4; } @@ -2156,6 +2157,7 @@ public static ClassesStructs.TextureClass.NewT3Texture GetNewTextures(byte[] bin texPoz -= tex.Tex.Textures[i].MipSize; tex.Tex.Textures[i].Block = new byte[tex.Tex.Textures[i].MipSize]; Array.Copy(binContent, tmpPoz, tex.Tex.Textures[i].Block, 0, tex.Tex.Textures[i].Block.Length); + tmpPoz += (uint)tex.Tex.Textures[i].MipSize; Array.Copy(tex.Tex.Textures[i].Block, 0, tex.Tex.Content, texPoz, tex.Tex.Textures[i].Block.Length); diff --git a/master/TTG Tools.csproj b/master/TTG Tools.csproj index 34b0abc..c36dca2 100644 --- a/master/TTG Tools.csproj +++ b/master/TTG Tools.csproj @@ -120,6 +120,7 @@ +