From 0a1f14e05148a861c4be3d01c68fd6cbbe279718 Mon Sep 17 00:00:00 2001 From: morkt Date: Thu, 24 Jul 2014 05:43:20 +0400 Subject: [PATCH] added preliminary archive creation support. --- App.config | 3 + ArcFormats/ArcAMI.cs | 7 +- ArcFormats/ArcINT.cs | 14 ++- ArcFormats/ArcNPA.cs | 3 +- ArcFormats/ArcXFL.cs | 8 +- ArcFormats/ArcXP3.cs | 3 +- ArcFormats/ArcYPF.cs | 3 +- ArcFormats/Strings/arcStrings.Designer.cs | 99 ++++++++++++++++++++ ArcFormats/Strings/arcStrings.resx | 33 +++++++ ArcFormats/Strings/arcStrings.ru-RU.resx | 3 + ArcFormats/WidgetINT.xaml | 4 +- ArcFormats/WidgetINT.xaml.cs | 2 +- CreateArchive.xaml | 50 ++++++++++ CreateArchive.xaml.cs | 102 ++++++++++++++++++++ ExtractArchive.xaml | 2 +- ExtractArchive.xaml.cs | 2 +- ExtractFile.xaml | 2 +- ExtractFile.xaml.cs | 2 +- GARbro.GUI.csproj | 10 +- GameRes/GameRes.cs | 4 +- MainWindow.xaml | 10 +- MainWindow.xaml.cs | 55 ++++++++++- Makefile | 9 +- Properties/Settings.Designer.cs | 12 +++ Properties/Settings.settings | 3 + Strings/guiStrings.Designer.cs | 108 ++++++++++++++++++---- Strings/guiStrings.resx | 36 ++++++-- Strings/guiStrings.ru-RU.resx | 36 ++++++-- packages/repositories.config | 1 + 29 files changed, 568 insertions(+), 58 deletions(-) create mode 100644 CreateArchive.xaml create mode 100644 CreateArchive.xaml.cs diff --git a/App.config b/App.config index a803b2e5..5c352765 100644 --- a/App.config +++ b/App.config @@ -68,6 +68,9 @@ + + + diff --git a/ArcFormats/ArcAMI.cs b/ArcFormats/ArcAMI.cs index cbda2ee6..7357667d 100644 --- a/ArcFormats/ArcAMI.cs +++ b/ArcFormats/ArcAMI.cs @@ -39,8 +39,9 @@ namespace GameRes.Formats public class AmiOpener : ArchiveFormat { public override string Tag { get { return "AMI"; } } - public override string Description { get { return "Amaterasu Translations Muv-Luv archive"; } } + public override string Description { get { return Strings.arcStrings.AMIDescription; } } public override uint Signature { get { return 0x00494d41; } } + public override bool IsHierarchic { get { return false; } } public AmiOpener () { @@ -109,7 +110,7 @@ namespace GameRes.Formats public class GrpFormat : ImageFormat { public override string Tag { get { return "GRP"; } } - public override string Description { get { return "âge proprietary image format"; } } + public override string Description { get { return Strings.arcStrings.GRPDescription; } } public override uint Signature { get { return 0x00505247; } } public override ImageMetaData ReadMetaData (Stream stream) @@ -191,7 +192,7 @@ namespace GameRes.Formats public class ScrFormat : ScriptFormat { public override string Tag { get { return "SCR"; } } - public override string Description { get { return "Amaterasu Translations Muv-Luv script file"; } } + public override string Description { get { return Strings.arcStrings.SCRDescription; } } public override uint Signature { get { return 0x00524353; } } public override ScriptData Read (string name, Stream stream) diff --git a/ArcFormats/ArcINT.cs b/ArcFormats/ArcINT.cs index 1934b80d..58b175df 100644 --- a/ArcFormats/ArcINT.cs +++ b/ArcFormats/ArcINT.cs @@ -41,8 +41,9 @@ namespace GameRes.Formats public class IntOpener : ArchiveFormat { public override string Tag { get { return "INT"; } } - public override string Description { get { return "FrontWing game resource archive"; } } + public override string Description { get { return arcStrings.INTDescription; } } public override uint Signature { get { return 0x0046494b; } } + public override bool IsHierarchic { get { return false; } } public override ArcFile TryOpen (ArcView file) { @@ -267,11 +268,9 @@ namespace GameRes.Formats { "Sengoku Tenshi Djibril (trial)", new KeyData { Key=0xef870610, Passphrase="FW-8O9B6WDS" }}, }; - IntEncryptionInfo m_info = Settings.Default.INTEncryption ?? new IntEncryptionInfo(); - uint? QueryEncryptionInfo () { - var widget = new GUI.WidgetINT (m_info); + var widget = new GUI.WidgetINT (Settings.Default.INTEncryption ?? new IntEncryptionInfo()); var args = new ParametersRequestEventArgs { Notice = arcStrings.INTNotice, @@ -284,5 +283,12 @@ namespace GameRes.Formats Settings.Default.INTEncryption = widget.Info; return widget.GetKey(); } + + public override ResourceOptions GetOptions () + { + return new ResourceOptions { + Widget = new GUI.WidgetINT (Settings.Default.INTEncryption ?? new IntEncryptionInfo()) + }; + } } } diff --git a/ArcFormats/ArcNPA.cs b/ArcFormats/ArcNPA.cs index 10780bba..253c1361 100644 --- a/ArcFormats/ArcNPA.cs +++ b/ArcFormats/ArcNPA.cs @@ -49,8 +49,9 @@ namespace GameRes.Formats public class NpaOpener : ArchiveFormat { public override string Tag { get { return "NPA"; } } - public override string Description { get { return "Nitro+ resource archive"; } } + public override string Description { get { return arcStrings.NPADescription; } } public override uint Signature { get { return 0x0141504e; } } // NPA\x01 + public override bool IsHierarchic { get { return true; } } /// Known encryption schemes. public static readonly string[] KnownSchemes = new string[] { diff --git a/ArcFormats/ArcXFL.cs b/ArcFormats/ArcXFL.cs index 360b6d9d..988d7dfe 100644 --- a/ArcFormats/ArcXFL.cs +++ b/ArcFormats/ArcXFL.cs @@ -16,8 +16,9 @@ namespace GameRes.Formats public class XflOpener : ArchiveFormat { public override string Tag { get { return "XFL"; } } - public override string Description { get { return "Liar-soft game resource archive"; } } + public override string Description { get { return Strings.arcStrings.XFLDescription; } } public override uint Signature { get { return 0x0001424c; } } + public override bool IsHierarchic { get { return false; } } public override ArcFile TryOpen (ArcView file) { @@ -62,8 +63,9 @@ namespace GameRes.Formats public class LwgOpener : ArchiveFormat { public override string Tag { get { return "LWG"; } } - public override string Description { get { return "Liar-soft image archive"; } } + public override string Description { get { return Strings.arcStrings.LWGDescription; } } public override uint Signature { get { return 0x0001474c; } } + public override bool IsHierarchic { get { return false; } } public override ArcFile TryOpen (ArcView file) { @@ -112,7 +114,7 @@ namespace GameRes.Formats public class GscFormat : ScriptFormat { public override string Tag { get { return "GSC"; } } - public override string Description { get { return "Liar-soft proprietary script format"; } } + public override string Description { get { return Strings.arcStrings.GSCDescription; } } public override uint Signature { get { return 0; } } public override ScriptData Read (string name, Stream stream) diff --git a/ArcFormats/ArcXP3.cs b/ArcFormats/ArcXP3.cs index 1bbe2971..d6cde3ac 100644 --- a/ArcFormats/ArcXP3.cs +++ b/ArcFormats/ArcXP3.cs @@ -45,8 +45,9 @@ namespace GameRes.Formats.KiriKiri public class Xp3Opener : ArchiveFormat { public override string Tag { get { return "XP3"; } } - public override string Description { get { return "KiriKiri game engine resource archive"; } } + public override string Description { get { return arcStrings.XP3Description; } } public override uint Signature { get { return 0x0d335058; } } + public override bool IsHierarchic { get { return false; } } private static readonly ICrypt NoCryptAlgorithm = new NoCrypt(); diff --git a/ArcFormats/ArcYPF.cs b/ArcFormats/ArcYPF.cs index 0e7cb2fa..cd8c762b 100644 --- a/ArcFormats/ArcYPF.cs +++ b/ArcFormats/ArcYPF.cs @@ -20,8 +20,9 @@ namespace GameRes.Formats public class YpfOpener : ArchiveFormat { public override string Tag { get { return "YPF"; } } - public override string Description { get { return "Yu-Ris game engine resource archive"; } } + public override string Description { get { return arcStrings.YPFDescription; } } public override uint Signature { get { return 0x00465059; } } + public override bool IsHierarchic { get { return true; } } private const uint DefaultKey = 0xffffffff; diff --git a/ArcFormats/Strings/arcStrings.Designer.cs b/ArcFormats/Strings/arcStrings.Designer.cs index cbd0cc5a..35c795c3 100644 --- a/ArcFormats/Strings/arcStrings.Designer.cs +++ b/ArcFormats/Strings/arcStrings.Designer.cs @@ -60,6 +60,15 @@ namespace GameRes.Formats.Strings { } } + /// + /// Looks up a localized string similar to Amaterasu Translations Muv-Luv archive. + /// + public static string AMIDescription { + get { + return ResourceManager.GetString("AMIDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Archive content is encrypted. ///Choose appropriate encryption scheme.. @@ -79,6 +88,42 @@ namespace GameRes.Formats.Strings { } } + /// + /// Looks up a localized string similar to âge proprietary image format. + /// + public static string GRPDescription { + get { + return ResourceManager.GetString("GRPDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Liar-soft proprietary script format. + /// + public static string GSCDescription { + get { + return ResourceManager.GetString("GSCDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to FrontWing game resource archive. + /// + public static string INTDescription { + get { + return ResourceManager.GetString("INTDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Numeric key should be a 32-bit hexadecimal integer. + /// + public static string INTKeyRequirement { + get { + return ResourceManager.GetString("INTKeyRequirement", resourceCulture); + } + } + /// /// Looks up a localized string similar to Numeric key. /// @@ -117,6 +162,60 @@ namespace GameRes.Formats.Strings { } } + /// + /// Looks up a localized string similar to Liar-soft image archive. + /// + public static string LWGDescription { + get { + return ResourceManager.GetString("LWGDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nitro+ resource archive. + /// + public static string NPADescription { + get { + return ResourceManager.GetString("NPADescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Amaterasu Translations Muv-Luv script file. + /// + public static string SCRDescription { + get { + return ResourceManager.GetString("SCRDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Liar-soft game resource archive. + /// + public static string XFLDescription { + get { + return ResourceManager.GetString("XFLDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to KiriKiri game engine resource archive. + /// + public static string XP3Description { + get { + return ResourceManager.GetString("XP3Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Yu-Ris game engine resource archive. + /// + public static string YPFDescription { + get { + return ResourceManager.GetString("YPFDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to 8-bit encryption key. /// diff --git a/ArcFormats/Strings/arcStrings.resx b/ArcFormats/Strings/arcStrings.resx index d9b96374..c58aca90 100644 --- a/ArcFormats/Strings/arcStrings.resx +++ b/ArcFormats/Strings/arcStrings.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Amaterasu Translations Muv-Luv archive + Archive content is encrypted. Choose appropriate encryption scheme. @@ -124,6 +127,18 @@ Choose appropriate encryption scheme. no encryption + + âge proprietary image format + + + Liar-soft proprietary script format + + + FrontWing game resource archive + + + Numeric key should be a 32-bit hexadecimal integer + Numeric key @@ -138,6 +153,24 @@ Choose appropriate encryption scheme. Enter archive encryption key or choose predefined encryption scheme. + + Liar-soft image archive + + + Nitro+ resource archive + + + Amaterasu Translations Muv-Luv script file + + + Liar-soft game resource archive + + + KiriKiri game engine resource archive + + + Yu-Ris game engine resource archive + 8-bit encryption key diff --git a/ArcFormats/Strings/arcStrings.ru-RU.resx b/ArcFormats/Strings/arcStrings.ru-RU.resx index ca4c9fa0..6c8b7625 100644 --- a/ArcFormats/Strings/arcStrings.ru-RU.resx +++ b/ArcFormats/Strings/arcStrings.ru-RU.resx @@ -124,6 +124,9 @@ без шифрования + + Цифровой ключ должен быть 32-битным шестнадцатиричным числом + Цифровой ключ diff --git a/ArcFormats/WidgetINT.xaml b/ArcFormats/WidgetINT.xaml index cd3e168b..a91a5eb9 100644 --- a/ArcFormats/WidgetINT.xaml +++ b/ArcFormats/WidgetINT.xaml @@ -3,7 +3,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:GameRes.Formats.Strings" xmlns:local="clr-namespace:GameRes.Formats.GUI" - MaxWidth="250"> + MaxWidth="260"> @@ -106,7 +107,7 @@ - + -