diff --git a/ForgeMapFixer.sln b/ForgeMapFixer.sln new file mode 100644 index 0000000..55e2d4a --- /dev/null +++ b/ForgeMapFixer.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForgeMapFixer", "ForgeMapFixer\ForgeMapFixer.csproj", "{126B8B10-18A0-4DAE-AFFB-0271FB5289F6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ForgeMapFixer/App.config b/ForgeMapFixer/App.config new file mode 100644 index 0000000..d1428ad --- /dev/null +++ b/ForgeMapFixer/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/ForgeMapFixer/ForgeMapFixer.csproj b/ForgeMapFixer/ForgeMapFixer.csproj new file mode 100644 index 0000000..777fc09 --- /dev/null +++ b/ForgeMapFixer/ForgeMapFixer.csproj @@ -0,0 +1,93 @@ + + + + + Debug + AnyCPU + {126B8B10-18A0-4DAE-AFFB-0271FB5289F6} + WinExe + Properties + ForgeMapFixer + ForgeMapFixer + v4.5 + 512 + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + MainForm.cs + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + \ No newline at end of file diff --git a/ForgeMapFixer/ForgeMapFixer.exe.config b/ForgeMapFixer/ForgeMapFixer.exe.config new file mode 100644 index 0000000..d1428ad --- /dev/null +++ b/ForgeMapFixer/ForgeMapFixer.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/ForgeMapFixer/ForgeMapFixer.vshost.exe.config b/ForgeMapFixer/ForgeMapFixer.vshost.exe.config new file mode 100644 index 0000000..d1428ad --- /dev/null +++ b/ForgeMapFixer/ForgeMapFixer.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/ForgeMapFixer/ForgeTagMap.csv b/ForgeMapFixer/ForgeTagMap.csv new file mode 100644 index 0000000..715b672 --- /dev/null +++ b/ForgeMapFixer/ForgeTagMap.csv @@ -0,0 +1,228 @@ +34A4,34A4 +2EB3,2EB3 +2EB4,2EB4 +2EBC,2EBC +34A5,34A5 +34C1,34C1 +2EB1,2EB1 +2EAF,2EAF +34A7,34A7 +34A8,34A8 +34A9,34A9 +4225,4225 +34AB,34AB +2EBF,2EBF +2EBE,2EBE +34A6,34A6 +2EBA,2EBA +2EBB,2EBB +2EB5,2EB5 +2EB6,2EB6 +2EB2,2EB2 +2EBD,2EBD +2EB0,2EB0 +2EB8,2EB8 +2EB9,2EB9 +444A,444A +34C0,34C0 +34C2,34C2 +27EF,27EF +34C5,34C5 +444B,444B +34AA,34AA +3FD4,3FD4 +4221,4221 +444C,444C +4226,4226 +4224,4224 +3FD3,3FD3 +4220,4220 +4223,4223 +3FD6,3FD6 +3FD5,3FD5 +3A94,3A94 +2EE5,2EE5 +3A9E,3A9E +4222,4222 +2EB7,2EB7 +01AC,01AC +01AF,01AF +01B2,01B2 +01B5,01B5 +1564,1564 +1561,1561 +1567,1567 +2EA9,2EA9 +1566,1566 +1560,1560 +1565,1565 +1569,1569 +2EAB,2EAB +2EAC,2EAC +2EAA,2EAA +1B8E,1B8E +1B8F,1B8F +2EC3,2EC3 +2EC4,2EC4 +2EC5,2EC5 +2EC6,2EC6 +2EC7,2EC7 +2EC8,2EC8 +2EC9,2EC9 +2ECA,2ECA +2ECB,2ECB +2E90,2E90 +2E98,2E98 +2E91,2E91 +2E9A,2E9A +2E9D,2E9D +2E92,2E92 +2E9C,2E9C +2E9E,2E9E +2E99,2E99 +2E93,2E93 +2E95,2E95 +2E96,2E96 +2E9B,2E9B +2ECC,2ECC +2E94,2E94 +2E97,2E97 +2E9F,2E9F +2EA7,2EA7 +2EA8,2EA8 +2EC0,2EC0 +2EC1,2EC1 +2EC2,2EC2 +444E,444E +444F,444F +4450,4450 +4451,4451 +4452,4452 +4453,4453 +151F,151F +4441,4441 +4442,4442 +4443,4443 +4447,4447 +1599,1599 +4444,4444 +4445,4445 +4446,4446 +4448,4448 +151A,151A +1518,1518 +1517,1517 +1598,1598 +159B,159B +1596,1596 +1520,1520 +1519,1519 +4449,4449 +1516,1516 +151E,151E +1581,1581 +1582,1582 +1583,1583 +1584,1584 +157C,157C +15BB,15BB +15BC,15BC +1585,1585 +1586,1586 +15BD,15BD +1587,1587 +1A45,1A45 +15B1,15B1 +157D,157D +158C,158C +158D,158D +158E,158E +158F,158F +1500,1500 +157E,157E +1593,1593 +1594,1594 +14F7,14F7 +1595,1595 +14F8,14F8 +14FE,14FE +15C0,15C0 +15C1,15C1 +15C2,15C2 +15C3,15C3 +15C4,15C4 +1591,1591 +1509,1509 +1504,1504 +1592,1592 +1580,1580 +15BF,15BF +1588,1588 +1589,1589 +158A,158A +15BE,15BE +158B,158B +1525,1525 +1590,1590 +14FF,14FF +15B3,15B3 +15B2,15B2 +159E,159E +284C,284C +150C,150C +1A54,1A54 +3A18,3A18 +14FB,14FB +1A56,1A56 +1A55,1A55 +14F9,14F9 +48CB,47B1 +48D4,47BA +48D5,47BB +48E7,47CD +48FF,47E5 +490C,47F2 +4934,481A +4963,4849 +4968,484E +496D,4853 +497F,4865 +4987,486D +499F,4885 +4711,4711 +48C9,47AF +476D,14F9 +480A,1509 +4880,1A56 +4CB8,4BA3 +4CBF,4BAA +4F03,4DED +4F05,4DEF +4F0E,4DF8 +4F10,4DFA +4F12,4DFC +4A7F,4965 +4F1E,4E08 +4F26,4E10 +4F36,4E20 +4F41,4E2B +4F57,4E41 +4F5C,4E46 +4F6E,4E58 +4F02,4441 +527C,5166 +5290,517A +529F,5189 +52A4,518E +5529,541C +5006,4EF0 +4FF9,4EE3 +5534,5427 +554E,5441 +5557,544A +555F,5452 +556D,5460 +2A76,2A76 +5578,546B +5492,5380 +57DF,56DA diff --git a/ForgeMapFixer/MainForm.Designer.cs b/ForgeMapFixer/MainForm.Designer.cs new file mode 100644 index 0000000..cddf36d --- /dev/null +++ b/ForgeMapFixer/MainForm.Designer.cs @@ -0,0 +1,97 @@ +namespace ForgeMapFixer +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.progressBar = new System.Windows.Forms.ProgressBar(); + this.worker = new System.ComponentModel.BackgroundWorker(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.statusLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 48); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(393, 22); + this.statusStrip1.TabIndex = 0; + this.statusStrip1.Text = "statusStrip1"; + // + // statusLabel + // + this.statusLabel.Name = "statusLabel"; + this.statusLabel.Size = new System.Drawing.Size(39, 17); + this.statusLabel.Text = "Ready"; + // + // progressBar + // + this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar.Location = new System.Drawing.Point(13, 13); + this.progressBar.Name = "progressBar"; + this.progressBar.Size = new System.Drawing.Size(368, 23); + this.progressBar.TabIndex = 1; + // + // worker + // + this.worker.WorkerReportsProgress = true; + this.worker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.worker_DoWork); + this.worker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.worker_ProgressChanged); + this.worker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.worker_RunWorkerCompleted); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(393, 70); + this.Controls.Add(this.progressBar); + this.Controls.Add(this.statusStrip1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ElDewrito Forge Map Fixer"; + this.Load += new System.EventHandler(this.MainForm_Load); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel statusLabel; + private System.Windows.Forms.ProgressBar progressBar; + private System.ComponentModel.BackgroundWorker worker; + } +} + diff --git a/ForgeMapFixer/MainForm.cs b/ForgeMapFixer/MainForm.cs new file mode 100644 index 0000000..bfd8bb6 --- /dev/null +++ b/ForgeMapFixer/MainForm.cs @@ -0,0 +1,186 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Microsoft.Win32; + +namespace ForgeMapFixer +{ + public partial class MainForm : Form + { + private const string MapDir = @"mods\maps"; + + private readonly List _fixedMaps = new List(); + + public MainForm() + { + InitializeComponent(); + } + + private void MainForm_Load(object sender, EventArgs e) + { + if (!VerifyInstall()) + { + MessageBox.Show("Please place ForgeMapFixer.exe in the same folder as your ElDewrito 0.5.0.2 install.", + Text, MessageBoxButtons.OK, MessageBoxIcon.Error); + Close(); + return; + } + worker.RunWorkerAsync(); + } + + private void worker_DoWork(object sender, DoWorkEventArgs e) + { + worker.ReportProgress(0, "Initializing..."); + var tagMap = LoadTagMap(); + + worker.ReportProgress(0, "Searching for map files..."); + var files = FindMaps(); + + _fixedMaps.Clear(); + for (var i = 0; i < files.Length; i++) + { + try + { + var file = files[i]; + worker.ReportProgress(i * 100 / files.Length, "Fixing " + file + "..."); + if (FixMap(file, tagMap)) + _fixedMaps.Add(file); + } + catch + { + // TODO: Error handling... + } + } + + worker.ReportProgress(100, "Invalidating cached maps..."); + InvalidatePreferences(); + + worker.ReportProgress(100, "Done!"); + } + + private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + progressBar.Value = e.ProgressPercentage; + statusLabel.Text = e.UserState.ToString(); + } + + private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Error != null) + { + MessageBox.Show(e.Error.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + else if (_fixedMaps.Count > 0) + { + var message = $"Successfully fixed {_fixedMaps.Count} map(s):\n"; + message = _fixedMaps.Aggregate(message, (current, map) => current + $"\n{map}"); + MessageBox.Show(message, Text, MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("No Forge maps seem to be installed.", Text, MessageBoxButtons.OK, + MessageBoxIcon.Information); + } + Close(); + } + + private static bool VerifyInstall() + { + if (!File.Exists("eldorado.exe") || !File.Exists("mtndew.dll")) + return false; + + // Check that version >= 0.5.0.1 + var version = FileVersionInfo.GetVersionInfo("mtndew.dll"); + return version.FileMajorPart > 0 || version.FileMinorPart > 5 || + (version.FileMinorPart == 5 && (version.FileBuildPart > 0 || version.FilePrivatePart >= 1)); + } + + private static string[] FindMaps() + { + return Directory.Exists(MapDir) + ? Directory.GetFiles(MapDir, "*.map", SearchOption.AllDirectories) + : new string[0]; + } + + private static Dictionary LoadTagMap() + { + var tagMap = Properties.Resources.ForgeTagMap; + var result = new Dictionary(); + using (var reader = new StringReader(tagMap)) + { + while (true) + { + var line = reader.ReadLine(); + if (line == null) + break; + line = line.Trim(); + var parts = line.Split(','); + if (parts.Length < 2) + continue; + int oldIndex, newIndex; + if (!int.TryParse(parts[0].Trim(), NumberStyles.HexNumber, null, out oldIndex)) + continue; + if (!int.TryParse(parts[1].Trim(), NumberStyles.HexNumber, null, out newIndex)) + continue; + result[oldIndex] = newIndex; + } + } + return result; + } + + private static bool FixMap(string path, IReadOnlyDictionary tagMap) + { + using (var stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite)) + { + // Check that the file is valid + // I'm just using hardcoded offsets here; this should work for most stuff... + if (stream.Length < 0xE1E0) + return false; + var reader = new BinaryReader(stream); + var writer = new BinaryWriter(stream); + if (new string(reader.ReadChars(4)) != "_blf") + return false; + stream.Position = 0x138; + if (new string(reader.ReadChars(4)) != "mapv") + return false; + + // Go to the tag table and replace all of the indices + for (var i = 0; i < 256; i++) + { + stream.Position = 0xD498 + i * 0xC; + var tagIndex = reader.ReadInt32(); + if (tagIndex < 0) + continue; + int newIndex; + if (!tagMap.TryGetValue(tagIndex, out newIndex)) + continue; + stream.Position -= 4; + writer.Write(newIndex); + } + } + return true; + } + + private static void InvalidatePreferences() + { + if (!File.Exists("preferences.dat")) + return; + using (var writer = new BinaryWriter(File.Open("preferences.dat", FileMode.Open, FileAccess.Write))) + { + writer.BaseStream.Position = 0x378; // "multiplayer valid" flag + writer.Write(0); + writer.BaseStream.Position = 0xEA90; // "forge valid" flag + writer.Write(0); + } + } + } +} diff --git a/ForgeMapFixer/MainForm.resx b/ForgeMapFixer/MainForm.resx new file mode 100644 index 0000000..6daa248 --- /dev/null +++ b/ForgeMapFixer/MainForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 133, 17 + + \ No newline at end of file diff --git a/ForgeMapFixer/Program.cs b/ForgeMapFixer/Program.cs new file mode 100644 index 0000000..6a09b66 --- /dev/null +++ b/ForgeMapFixer/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ForgeMapFixer +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/ForgeMapFixer/Properties/AssemblyInfo.cs b/ForgeMapFixer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b637288 --- /dev/null +++ b/ForgeMapFixer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ForgeMapFixer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ForgeMapFixer")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("126b8b10-18a0-4dae-affb-0271fb5289f6")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ForgeMapFixer/Properties/Resources.Designer.cs b/ForgeMapFixer/Properties/Resources.Designer.cs new file mode 100644 index 0000000..fafabce --- /dev/null +++ b/ForgeMapFixer/Properties/Resources.Designer.cs @@ -0,0 +1,118 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ForgeMapFixer.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [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("ForgeMapFixer.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to 34A4,34A4 + ///2EB3,2EB3 + ///2EB4,2EB4 + ///2EBC,2EBC + ///34A5,34A5 + ///34C1,34C1 + ///2EB1,2EB1 + ///2EAF,2EAF + ///34A7,34A7 + ///34A8,34A8 + ///34A9,34A9 + ///4225,4225 + ///34AB,34AB + ///2EBF,2EBF + ///2EBE,2EBE + ///34A6,34A6 + ///2EBA,2EBA + ///2EBB,2EBB + ///2EB5,2EB5 + ///2EB6,2EB6 + ///2EB2,2EB2 + ///2EBD,2EBD + ///2EB0,2EB0 + ///2EB8,2EB8 + ///2EB9,2EB9 + ///444A,444A + ///34C0,34C0 + ///34C2,34C2 + ///27EF,27EF + ///34C5,34C5 + ///444B,444B + ///34AA,34AA + ///3FD4,3FD4 + ///4221,4221 + ///444C,444C + ///4226,4226 + ///4224,4224 + ///3FD3,3FD3 + ///4220,4220 + ///4223,4223 + ///3FD6,3FD6 + ///3FD5,3FD5 + ///3A94,3A94 + ///2EE5,2EE5 + ///3A9E,3A9E + ///4222,4222 + ///2EB7,2 [rest of string was truncated]";. + /// + internal static string ForgeTagMap { + get { + return ResourceManager.GetString("ForgeTagMap", resourceCulture); + } + } + } +} diff --git a/ForgeMapFixer/Properties/Resources.resx b/ForgeMapFixer/Properties/Resources.resx new file mode 100644 index 0000000..c32f6f9 --- /dev/null +++ b/ForgeMapFixer/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\ForgeTagMap.csv;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + \ No newline at end of file diff --git a/ForgeMapFixer/Properties/Settings.Designer.cs b/ForgeMapFixer/Properties/Settings.Designer.cs new file mode 100644 index 0000000..d55481e --- /dev/null +++ b/ForgeMapFixer/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ForgeMapFixer.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.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/ForgeMapFixer/Properties/Settings.settings b/ForgeMapFixer/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/ForgeMapFixer/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +