diff --git a/BundleManager.sln b/BundleManager.sln index e215bd9..17495f6 100644 --- a/BundleManager.sln +++ b/BundleManager.sln @@ -55,6 +55,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{DA4D9C10-E EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorldCollisionHandler", "WorldCollisionHandler\WorldCollisionHandler.csproj", "{754DDA1C-8F2F-4F6C-8BC0-D6553A9A7451}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LuaList", "LuaList\LuaList.csproj", "{D1395FDE-6A64-4D9F-9DCA-60825BD0A43C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -133,6 +135,10 @@ Global {754DDA1C-8F2F-4F6C-8BC0-D6553A9A7451}.Debug|Any CPU.Build.0 = Debug|Any CPU {754DDA1C-8F2F-4F6C-8BC0-D6553A9A7451}.Release|Any CPU.ActiveCfg = Release|Any CPU {754DDA1C-8F2F-4F6C-8BC0-D6553A9A7451}.Release|Any CPU.Build.0 = Release|Any CPU + {D1395FDE-6A64-4D9F-9DCA-60825BD0A43C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1395FDE-6A64-4D9F-9DCA-60825BD0A43C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1395FDE-6A64-4D9F-9DCA-60825BD0A43C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1395FDE-6A64-4D9F-9DCA-60825BD0A43C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -156,6 +162,7 @@ Global {4FC1C1EE-618A-4B65-A103-A51568A01629} = {3BA7CE56-4E22-418F-9D13-F2189413D30B} {7743D330-6A1A-496C-872B-E36C9EB38CE7} = {60F98E02-807F-4EDC-8747-147C365606B1} {754DDA1C-8F2F-4F6C-8BC0-D6553A9A7451} = {60F98E02-807F-4EDC-8747-147C365606B1} + {D1395FDE-6A64-4D9F-9DCA-60825BD0A43C} = {60F98E02-807F-4EDC-8747-147C365606B1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {566130B7-31A2-4407-A2E1-C22E60C85C2C} diff --git a/BundleUtilities/Utilities.cs b/BundleUtilities/Utilities.cs index 3c46c1a..c2b2760 100644 --- a/BundleUtilities/Utilities.cs +++ b/BundleUtilities/Utilities.cs @@ -46,6 +46,18 @@ public void Log(string logMessage, TextWriter txtWriter) } } } + + public static class Util + { + // reverse byte order (64-bit) + public static UInt64 ReverseBytes(UInt64 value) + { + return (value & 0x00000000000000FFUL) << 56 | (value & 0x000000000000FF00UL) << 40 | + (value & 0x0000000000FF0000UL) << 24 | (value & 0x00000000FF000000UL) << 8 | + (value & 0x000000FF00000000UL) >> 8 | (value & 0x0000FF0000000000UL) >> 24 | + (value & 0x00FF000000000000UL) >> 40 | (value & 0xFF00000000000000UL) >> 56; + } + } public static class Utilities { public static ulong calcLookup8(string text) @@ -56,6 +68,20 @@ public static ulong calcLookup8(string text) return hashValue; } + public static EncryptedString ReadEncryptedString(this BinaryReader self) + { + ulong value = self.ReadUInt64(); + EncryptedString id = new EncryptedString(value); + return id; + } + + public static void WriteEncryptedString(this BinaryWriter self, EncryptedString id, bool xbox = false) + { + ulong value = id.Encrypted; + if (xbox) + value = Util.ReverseBytes(value); + self.Write(value); + } public static bool IsValidPath(string path) { diff --git a/LuaList/EncryptedStringConverter.cs b/LuaList/EncryptedStringConverter.cs new file mode 100644 index 0000000..44027b5 --- /dev/null +++ b/LuaList/EncryptedStringConverter.cs @@ -0,0 +1,64 @@ +using System; +using System.ComponentModel; + +namespace LuaList +{ + // Included... + // [1] Define TypeConverter class for hex. + // [2] use it when defining a member of a data class using attribute TypeConverter. + // [3] Connect the data class to a PropertyGrid. + + + // [1] define UInt32HexTypeConverter is-a TypeConverter + public class EncryptedStringConverter : TypeConverter + { + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) + { + if (sourceType == typeof(string)) + { + return true; + } + else + { + return base.CanConvertFrom(context, sourceType); + } + } + + public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) + { + if (destinationType == typeof(string)) + { + return true; + } + else + { + return base.CanConvertTo(context, destinationType); + } + } + + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) + { + if (destinationType == typeof(string) && value.GetType() == typeof(BundleUtilities.EncryptedString)) + { + return ((BundleUtilities.EncryptedString)value).Value; + } + else + { + return base.ConvertTo(context, culture, value, destinationType); + } + } + + public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) + { + if (value.GetType() == typeof(string)) + { + string input = (string)value; + return new BundleUtilities.EncryptedString(input); + } + else + { + return base.ConvertFrom(context, culture, value); + } + } + } +} diff --git a/LuaList/LuaList.cs b/LuaList/LuaList.cs new file mode 100644 index 0000000..fdafe4d --- /dev/null +++ b/LuaList/LuaList.cs @@ -0,0 +1,209 @@ +using BundleFormat; +using PluginAPI; +using BundleUtilities; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.ComponentModel; +using System; + +namespace LuaList +{ + public class LuaList : IEntryData + { + public int version { get; set; } + + [TypeConverter(typeof(EncryptedStringConverter))] + public EncryptedString CgsId { get; set; } + + public int dataLength; + public string listTitle { get; set; } + public List entries { get; set; } + public List types { get; set; } + public List variables { get; set; } + public IEntryEditor GetEditor(BundleEntry entry) + { + LuaListEditor luaListEditor = new LuaListEditor(); + luaListEditor.LuaList = this; + luaListEditor.EditEvent += () => + { + Write(entry); + }; + return luaListEditor; + } + + public EntryType GetEntryType(BundleEntry entry) + { + return EntryType.LUAList; + } + + public int getLengthOfHeader() + { + List bytes = new List(); + bytes.Add(BitConverter.GetBytes(version)); + bytes.Add(new byte[4]); + bytes.Add(BitConverter.GetBytes(CgsId.Encrypted)); + bytes.Add(BitConverter.GetBytes(192)); + bytes.Add(BitConverter.GetBytes(1231)); + bytes.Add(BitConverter.GetBytes(312312)); + bytes.Add(BitConverter.GetBytes(entries.Count)); + bytes.Add(BitConverter.GetBytes(dataLength)); + bytes.Add(Encoding.ASCII.GetBytes((listTitle.PadRight(128).Substring(0, 128).ToCharArray()))); + bytes.Add(new byte[] { (byte)types.Count() }); + bytes.Add(new byte[] { (byte)variables.Count() }); + bytes.Add(new byte[26]); + return bytes.SelectMany(i => i).Count(); + } + + public int getLengthOfTypes() + { + if (types.Count == 0) + { + return 0; + } + return (types.Count * 32) + 32; // Pointer Array of 32 bytes + } + + public int getLengthOfVariables() + { + if (variables.Count == 0) + { + return 0; + } + return (variables.Count * 32) + 32; // Pointer Array of 32 bytes + } + + public int getLengthOfEntries() + { + return entries.Sum(i => i.getDataSize()); + } + + public bool Read(BundleEntry entry, ILoader loader = null) + { + MemoryStream ms = entry.MakeStream(); + BinaryReader2 br = new BinaryReader2(ms); + + version = br.ReadInt32(); //0x0 0x4 int32_t Version number 1 + br.ReadBytes(4); // 0x4 0x4 padding + CgsId = br.ReadEncryptedString(); //0x8 0x8 CgsID List ID Encoded + var entriesPointer = br.ReadInt32(); //0x10 0x4 Unk0* Script list Unk0 format + var typePointer = br.ReadInt32(); //0x14 0x4 char[32] * * Types + var variablePointer = br.ReadInt32(); //0x18 0x4 char[32] * * Variables + var numScripts = br.ReadInt32(); //0x1C 0x4 uint32_t Num scripts + var dataLength = br.ReadInt32(); //0x20 0x4 uint32_t Data length Not including padding to end + listTitle = br.ReadLenString(128); //0x24 0x80 char[128] List title + var numTypes = br.ReadByte(); //0xA4 0x1 uint8_t Num types + var numVariables = br.ReadByte(); //0xA5 0x1 uint8_t Num variables + br.ReadBytes(26); // padding + + entries = new List(); + for (int i = 0; i < numScripts; i++) + { + LuaListEntry luaentry = new LuaListEntry(); + luaentry.Read(loader, br); + entries.Add(luaentry); + } + + br.BaseStream.Position = typePointer; + long currentAddress = br.BaseStream.Position; + types = new List(); + for (int i = 0; i < numTypes; i++) + { + int pointer = br.ReadInt32(); + currentAddress = br.BaseStream.Position; + br.BaseStream.Position = pointer; + types.Add(br.ReadLenString(32)); + br.BaseStream.Position = currentAddress; + } + br.BaseStream.Position = variablePointer; + variables = new List(); + for (int i = 0; i < numVariables; i++) + { + int pointer = br.ReadInt32(); + currentAddress = br.BaseStream.Position; + br.BaseStream.Position = pointer; + if (dataLength - pointer > 31) + { + variables.Add(br.ReadLenString(32)); + } + else + { + Console.WriteLine(dataLength - pointer); + variables.Add(br.ReadLenString(dataLength - pointer)); + } + br.BaseStream.Position = currentAddress; + } + Console.WriteLine(getLengthOfHeader() + getLengthOfEntries() + getLengthOfTypes() + getLengthOfVariables()); + Console.WriteLine(dataLength); + br.Close(); + ms.Close(); + + return true; + } + + public bool Write(BundleEntry entry) + { + MemoryStream ms = new MemoryStream(); + BinaryWriter bw = new BinaryWriter(ms); + bw.Write(version); + bw.WriteUniquePadding(4); + bw.WriteEncryptedString(CgsId); + bw.Write(getLengthOfHeader()); + bw.Write(getLengthOfHeader() + getLengthOfEntries()); + bw.Write(getLengthOfHeader() + getLengthOfEntries() + getLengthOfTypes()); + bw.Write(entries.Count); + bw.Write(getLengthOfHeader() + getLengthOfEntries() + getLengthOfTypes() + getLengthOfVariables()); //Calculate this + bw.Write(listTitle.PadRight(128, '\0').Substring(0, 128).ToCharArray()); + bw.Write((byte)types.Count); + bw.Write((byte)variables.Count); + bw.WriteUniquePadding(26); + foreach (LuaListEntry luaentry in entries) + { + luaentry.Write(bw); + } + var counter = 0; + var pointerAddress = bw.BaseStream.Position; + // Skip pointer address for now + bw.BaseStream.Position = bw.BaseStream.Position + 32; + foreach (string type in types) + { + // Save pointer to text + int pointer = (int)bw.BaseStream.Position; + bw.Write(type.PadRight(32, '\0').Substring(0, 32).ToCharArray()); + long currentAddress = bw.BaseStream.Position; + // Go to pointer array + bw.BaseStream.Position = pointerAddress + (4 * counter); + bw.Write(pointer); + counter++; + // Go back to old position + bw.BaseStream.Position = currentAddress; + } + counter = 0; + pointerAddress = bw.BaseStream.Position; + // Skip pointer address for now + bw.BaseStream.Position = bw.BaseStream.Position + 32; + foreach (string variable in variables) + { + // Save pointer to text + int pointer = (int)bw.BaseStream.Position; + bw.Write(variable.PadRight(32, '\0').Substring(0, 32).ToCharArray()); + long currentAddress = bw.BaseStream.Position; + // Go to pointer array + bw.BaseStream.Position = pointerAddress + (4 * counter); + bw.Write(pointer); + counter++; + // Go back to old position + bw.BaseStream.Position = currentAddress; + } + bw.Flush(); + byte[] data = ms.ToArray(); + bw.Close(); + ms.Close(); + + entry.EntryBlocks[0].Data = data; + entry.Dirty = true; + return true; + } + } +} diff --git a/LuaList/LuaList.csproj b/LuaList/LuaList.csproj new file mode 100644 index 0000000..4a81178 --- /dev/null +++ b/LuaList/LuaList.csproj @@ -0,0 +1,108 @@ + + + + + Debug + AnyCPU + {D1395FDE-6A64-4D9F-9DCA-60825BD0A43C} + Library + LuaList + LuaList + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + Form + + + LuaListEditor.cs + + + + + + + LuaListEditor.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {49b81828-760c-42db-9fad-96755597c871} + BundleFormat + + + {34471573-f236-4a7c-abd9-c1fe4686b37e} + BundleUtilities + + + {757f0204-f091-464d-aa42-fe8919ff73bb} + PluginAPI + + + {557FC08F-7ACD-44D7-AC1F-FB815A267A36} + VehicleList + + + + + xcopy "$(TargetPath)" "$(SolutionDir)BundleManager\bin\$(ConfigurationName)\plugins\" /s /e /y + + \ No newline at end of file diff --git a/LuaList/LuaListEditor.Designer.cs b/LuaList/LuaListEditor.Designer.cs new file mode 100644 index 0000000..78a4c74 --- /dev/null +++ b/LuaList/LuaListEditor.Designer.cs @@ -0,0 +1,56 @@ + +namespace LuaList +{ + partial class LuaListEditor + { + + private System.ComponentModel.IContainer components = null; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); + this.SuspendLayout(); + // + // propertyGrid1 + // + this.propertyGrid1.Location = new System.Drawing.Point(-2, -4); + this.propertyGrid1.Name = "propertyGrid1"; + this.propertyGrid1.Size = new System.Drawing.Size(802, 456); + this.propertyGrid1.TabIndex = 0; + this.propertyGrid1.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.propertyGrid1_PropertyValueChanged); + // + // LuaListEditor + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.propertyGrid1); + this.Name = "LuaListEditor"; + this.Text = "Lua List Editor"; + this.ResumeLayout(false); + + this.Controls.Add(this.propertyGrid1); + + } + + #endregion + + private System.Windows.Forms.PropertyGrid propertyGrid1; + } +} + diff --git a/LuaList/LuaListEditor.cs b/LuaList/LuaListEditor.cs new file mode 100644 index 0000000..a56b6ff --- /dev/null +++ b/LuaList/LuaListEditor.cs @@ -0,0 +1,41 @@ +using System; +using System.Windows.Forms; +using PluginAPI; + +namespace LuaList +{ + public delegate void Notify(); // delegate + public partial class LuaListEditor : Form, IEntryEditor + { + public event Notify EditEvent; + + private LuaList _luaList; + public LuaList LuaList + { + get => _luaList; + set + { + _luaList = value; + UpdateComponent(); + } + } + + public void UpdateComponent() + { + + propertyGrid1.SelectedObject = LuaList; + } + + public LuaListEditor() + { + InitializeComponent(); + UpdateComponent(); + } + + private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) + { + EditEvent?.Invoke(); + } + + } +} diff --git a/LuaList/LuaListEditor.resx b/LuaList/LuaListEditor.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/LuaList/LuaListEditor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LuaList/LuaListEntry.cs b/LuaList/LuaListEntry.cs new file mode 100644 index 0000000..54aa17d --- /dev/null +++ b/LuaList/LuaListEntry.cs @@ -0,0 +1,74 @@ +using BundleUtilities; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.ComponentModel; +using System; + +namespace LuaList +{ + public enum ScoreMultiplier { + StandardPoints = 0, + DoublePoints = 1 , + TriplePoints = 2 + } + + public enum ScoringMethod + { + ScoreByPosition = 0, + ScoreBySuccessOrFail = 1 + } + + public class LuaListEntry + { + [TypeConverter(typeof(EncryptedStringConverter))] + public EncryptedString CgsId { get; set; } = new EncryptedString("SC_1000000"); + public string Name { get; set; } = ""; + public string Goal { get; set; } = ""; + public string Description { get; set; } = ""; + public ScoreMultiplier ScoreMultiplier { get; set; } = ScoreMultiplier.StandardPoints; + public ScoringMethod ScoringMethod { get; set; } = ScoringMethod.ScoreBySuccessOrFail; + public int Type { get; set; } = 0; + public int Variables { get; set; } = 0; + + public int getDataSize() { + List bytes = new List(); + bytes.Add(BitConverter.GetBytes(CgsId.Encrypted)); + bytes.Add(Encoding.ASCII.GetBytes((Name.PadRight(128, '\0').Substring(0, 128).ToCharArray()))); + bytes.Add(Encoding.ASCII.GetBytes((Goal.PadRight(128, '\0').Substring(0, 128).ToCharArray()))); + bytes.Add(Encoding.ASCII.GetBytes((Description.PadRight(256, '\0').Substring(0, 256).ToCharArray()))); + bytes.Add(BitConverter.GetBytes((int)ScoreMultiplier)); + bytes.Add(BitConverter.GetBytes((int)ScoringMethod)); + bytes.Add(BitConverter.GetBytes((int)Type)); + bytes.Add(BitConverter.GetBytes((int)Variables)); + bytes.Add(new byte[8]); + return bytes.SelectMany(i => i).Count(); + } + + public void Read(ILoader loader, BinaryReader2 br) { + CgsId = br.ReadEncryptedString(); + Name = br.ReadLenString(128); + Goal = br.ReadLenString(128); + Description = br.ReadLenString(256); + ScoreMultiplier = (ScoreMultiplier) br.ReadInt32(); + ScoringMethod = (ScoringMethod) br.ReadInt32(); + Type = br.ReadInt32(); + Variables = br.ReadInt32(); + br.ReadBytes(8); // padding + } + + public void Write(BinaryWriter wr) + { + wr.WriteEncryptedString(CgsId); + wr.Write(Encoding.ASCII.GetBytes((Name.PadRight(128, '\0').Substring(0, 128).ToCharArray()))); + wr.Write(Encoding.ASCII.GetBytes((Goal.PadRight(128, '\0').Substring(0, 128).ToCharArray()))); + wr.Write(Encoding.ASCII.GetBytes((Description.PadRight(256, '\0').Substring(0, 256).ToCharArray()))); + wr.Write((int)ScoreMultiplier); + wr.Write((int)ScoringMethod); + wr.Write(Type); + wr.Write(Variables); + wr.WriteUniquePadding(8); + } + } +} diff --git a/LuaList/LuaListPlugin.cs b/LuaList/LuaListPlugin.cs new file mode 100644 index 0000000..bfd89dc --- /dev/null +++ b/LuaList/LuaListPlugin.cs @@ -0,0 +1,30 @@ +using BundleFormat; +using PluginAPI; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace LuaList +{ + + public class LuaListPlugin : Plugin + { + public override void Init() + { + EntryTypeRegistry.Register(EntryType.LUAList, new LuaList()); + } + + public override string GetID() + { + return "lualistplugin"; + } + + public override string GetName() + { + return "Lua List Resource Handler"; + } + + } +} diff --git a/LuaList/Properties/AssemblyInfo.cs b/LuaList/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3bcbfaf --- /dev/null +++ b/LuaList/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("LuaList")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("LuaList")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("d1395fde-6a64-4d9f-9dca-60825bd0a43c")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LuaList/Properties/Resources.Designer.cs b/LuaList/Properties/Resources.Designer.cs new file mode 100644 index 0000000..c52b803 --- /dev/null +++ b/LuaList/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace LuaList.Properties { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LuaList.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/LuaList/Properties/Resources.resx b/LuaList/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/LuaList/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LuaList/Properties/Settings.Designer.cs b/LuaList/Properties/Settings.Designer.cs new file mode 100644 index 0000000..687764d --- /dev/null +++ b/LuaList/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace LuaList.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/LuaList/Properties/Settings.settings b/LuaList/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/LuaList/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/VaultFormat/AttribSysVaultForm.cs b/VaultFormat/AttribSysVaultForm.cs index 161584b..918191e 100644 --- a/VaultFormat/AttribSysVaultForm.cs +++ b/VaultFormat/AttribSysVaultForm.cs @@ -1,13 +1,10 @@ using System; using System.Collections; -using System.Collections.Generic; using System.Globalization; using System.Windows.Forms; using PluginAPI; using BundleUtilities; -using System.Threading.Tasks; using LangEditor; -using BundleFormat; namespace VaultFormat { diff --git a/VaultFormat/AttribSysVaultPlugin.cs b/VaultFormat/AttribSysVaultPlugin.cs index 573cd1b..978cf2c 100644 --- a/VaultFormat/AttribSysVaultPlugin.cs +++ b/VaultFormat/AttribSysVaultPlugin.cs @@ -9,7 +9,7 @@ namespace VaultFormat { - public class VehicleListPlugin : Plugin + public class AttribsSysVaultPlugin : Plugin { public override void Init() {