Перемещение основного проекта в отдельную папку

Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
This commit is contained in:
2025-03-28 20:16:38 +07:00
parent aa59e09e05
commit 116e4cb28f
24 changed files with 126 additions and 111 deletions

6
SaveWizard/App.config Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>

View File

@@ -0,0 +1,35 @@
<Project>
<Import Project="$(ProjectDir)ILRepack.Config.props" Condition="Exists('$(ProjectDir)ILRepack.Config.props')"/>
<UsingTask AssemblyFile="$(MSBuildThisFileDirectory)ILRepack.Lib.MSBuild.Task.dll" TaskName="ILRepackCustom"/>
<Target Name="ILRepackCustom" AfterTargets="Build" Condition="$(Configuration.Contains('Release'))">
<ItemGroup>
<InputAssemblies Include="$(OutputPath)$(TargetName)$(TargetExt)"/>
<InputAssemblies Include="$(OutputPath)*.dll" Exclude="$(OutputPath)$(TargetName)$(TargetExt);$(OutputPath)SII_Decrypt.dll"/>
</ItemGroup>
<ILRepack
Parallel="true"
DebugInfo="true"
AllowDuplicateResources="false"
InputAssemblies="@(InputAssemblies)"
TargetKind="SameAsPrimaryAssembly"
KeyFile="$(KeyFile)"
OutputFile="$(OutputPath)$(TargetName)$(TargetExt)"
/>
</Target>
<Target
AfterTargets="ILRepackCustom"
Name="CleanReferenceCopyLocalPathsCustom"
Condition="$(Configuration.Contains('Release')) and '$(ClearOutputDirectory)' != 'False'">
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')"/>
<ItemGroup>
<Directories Include="$([System.IO.Directory]::GetDirectories('$(OutDir)%(DestinationSubDirectory)', '*', System.IO.SearchOption.AllDirectories))"/>
<Directories>
<Files>$([System.IO.Directory]::GetFiles("%(Directories.Identity)", "*", System.IO.SearchOption.AllDirectories).get_Length())</Files>
</Directories>
</ItemGroup>
<RemoveDir Directories="@(Directories)" Condition="%(Files)=='0'"/>
</Target>
</Project>

586
SaveWizard/MainForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,586 @@
namespace SaveWizard
{
partial class MainForm
{
/// <summary>
/// Обязательная переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Требуемый метод для поддержки конструктора — не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
private void InitializeComponent()
{
this.btn_open_save = new System.Windows.Forms.Button();
this.tlp_basic_info = new System.Windows.Forms.TableLayoutPanel();
this.txt_loan_limit = new System.Windows.Forms.TextBox();
this.chk_loan_limit = new System.Windows.Forms.CheckBox();
this.chk_experience = new System.Windows.Forms.CheckBox();
this.lbl_loan_limit = new System.Windows.Forms.Label();
this.txt_experience = new System.Windows.Forms.TextBox();
this.chk_money = new System.Windows.Forms.CheckBox();
this.txt_money = new System.Windows.Forms.TextBox();
this.lbl_money = new System.Windows.Forms.Label();
this.lbl_experience = new System.Windows.Forms.Label();
this.lbl_basic_info = new System.Windows.Forms.Label();
this.chk_update_on_start = new System.Windows.Forms.CheckBox();
this.tlp_skills = new System.Windows.Forms.TableLayoutPanel();
this.lbl_skills = new System.Windows.Forms.Label();
this.lbl_adr = new System.Windows.Forms.Label();
this.txt_adr = new System.Windows.Forms.TextBox();
this.chk_adr = new System.Windows.Forms.CheckBox();
this.lbl_long_distance = new System.Windows.Forms.Label();
this.lbl_high_value_cargo = new System.Windows.Forms.Label();
this.lbl_fragile_cargo = new System.Windows.Forms.Label();
this.lbl_urgent_delivery = new System.Windows.Forms.Label();
this.lbl_ecodriving = new System.Windows.Forms.Label();
this.txt_long_distance = new System.Windows.Forms.TextBox();
this.txt_high_value_cargo = new System.Windows.Forms.TextBox();
this.txt_fragile_cargo = new System.Windows.Forms.TextBox();
this.txt_urgent_delivery = new System.Windows.Forms.TextBox();
this.txt_ecodriving = new System.Windows.Forms.TextBox();
this.chk_long_distance = new System.Windows.Forms.CheckBox();
this.chk_high_value_cargo = new System.Windows.Forms.CheckBox();
this.chk_fragile_cargo = new System.Windows.Forms.CheckBox();
this.chk_urgent_delivery = new System.Windows.Forms.CheckBox();
this.chk_ecodriving = new System.Windows.Forms.CheckBox();
this.btn_unlock_garages = new System.Windows.Forms.Button();
this.btn_recover_backup = new System.Windows.Forms.Button();
this.btn_apply_changes = new System.Windows.Forms.Button();
this.tlp_basic_info.SuspendLayout();
this.tlp_skills.SuspendLayout();
this.SuspendLayout();
//
// btn_open_save
//
this.btn_open_save.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_open_save.Location = new System.Drawing.Point(12, 12);
this.btn_open_save.Name = "btn_open_save";
this.btn_open_save.Size = new System.Drawing.Size(115, 28);
this.btn_open_save.TabIndex = 0;
this.btn_open_save.Text = "Open save";
this.btn_open_save.UseVisualStyleBackColor = true;
this.btn_open_save.Click += new System.EventHandler(this.btn_open_save_Click);
//
// tlp_basic_info
//
this.tlp_basic_info.ColumnCount = 3;
this.tlp_basic_info.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F));
this.tlp_basic_info.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F));
this.tlp_basic_info.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F));
this.tlp_basic_info.Controls.Add(this.txt_loan_limit, 1, 3);
this.tlp_basic_info.Controls.Add(this.chk_loan_limit, 2, 3);
this.tlp_basic_info.Controls.Add(this.chk_experience, 2, 2);
this.tlp_basic_info.Controls.Add(this.lbl_loan_limit, 0, 3);
this.tlp_basic_info.Controls.Add(this.txt_experience, 1, 2);
this.tlp_basic_info.Controls.Add(this.chk_money, 2, 1);
this.tlp_basic_info.Controls.Add(this.txt_money, 1, 1);
this.tlp_basic_info.Controls.Add(this.lbl_money, 0, 1);
this.tlp_basic_info.Controls.Add(this.lbl_experience, 0, 2);
this.tlp_basic_info.Controls.Add(this.lbl_basic_info, 1, 0);
this.tlp_basic_info.Location = new System.Drawing.Point(12, 46);
this.tlp_basic_info.Name = "tlp_basic_info";
this.tlp_basic_info.RowCount = 4;
this.tlp_basic_info.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 24.99927F));
this.tlp_basic_info.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 24.99927F));
this.tlp_basic_info.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 24.99927F));
this.tlp_basic_info.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00219F));
this.tlp_basic_info.Size = new System.Drawing.Size(343, 146);
this.tlp_basic_info.TabIndex = 1;
//
// txt_loan_limit
//
this.txt_loan_limit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_loan_limit.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_loan_limit.Location = new System.Drawing.Point(105, 114);
this.txt_loan_limit.MaxLength = 9;
this.txt_loan_limit.Name = "txt_loan_limit";
this.txt_loan_limit.Size = new System.Drawing.Size(131, 26);
this.txt_loan_limit.TabIndex = 6;
//
// chk_loan_limit
//
this.chk_loan_limit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_loan_limit.AutoSize = true;
this.chk_loan_limit.Checked = true;
this.chk_loan_limit.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_loan_limit.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_loan_limit.Location = new System.Drawing.Point(242, 117);
this.chk_loan_limit.Name = "chk_loan_limit";
this.chk_loan_limit.Size = new System.Drawing.Size(98, 19);
this.chk_loan_limit.TabIndex = 7;
this.chk_loan_limit.Text = "Don\'t change";
this.chk_loan_limit.UseVisualStyleBackColor = true;
//
// chk_experience
//
this.chk_experience.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_experience.AutoSize = true;
this.chk_experience.Checked = true;
this.chk_experience.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_experience.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_experience.Location = new System.Drawing.Point(242, 80);
this.chk_experience.Name = "chk_experience";
this.chk_experience.Size = new System.Drawing.Size(98, 19);
this.chk_experience.TabIndex = 5;
this.chk_experience.Text = "Don\'t change";
this.chk_experience.UseVisualStyleBackColor = true;
//
// lbl_loan_limit
//
this.lbl_loan_limit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_loan_limit.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_loan_limit.Location = new System.Drawing.Point(3, 115);
this.lbl_loan_limit.Name = "lbl_loan_limit";
this.lbl_loan_limit.Size = new System.Drawing.Size(96, 23);
this.lbl_loan_limit.TabIndex = 9;
this.lbl_loan_limit.Text = "Loan limit:";
//
// txt_experience
//
this.txt_experience.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_experience.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_experience.Location = new System.Drawing.Point(105, 77);
this.txt_experience.MaxLength = 9;
this.txt_experience.Name = "txt_experience";
this.txt_experience.Size = new System.Drawing.Size(131, 26);
this.txt_experience.TabIndex = 4;
//
// chk_money
//
this.chk_money.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_money.AutoSize = true;
this.chk_money.Checked = true;
this.chk_money.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_money.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_money.Location = new System.Drawing.Point(242, 44);
this.chk_money.Name = "chk_money";
this.chk_money.Size = new System.Drawing.Size(98, 19);
this.chk_money.TabIndex = 3;
this.chk_money.Text = "Don\'t change";
this.chk_money.UseVisualStyleBackColor = true;
//
// txt_money
//
this.txt_money.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_money.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_money.Location = new System.Drawing.Point(105, 41);
this.txt_money.MaxLength = 9;
this.txt_money.Name = "txt_money";
this.txt_money.Size = new System.Drawing.Size(131, 26);
this.txt_money.TabIndex = 2;
//
// lbl_money
//
this.lbl_money.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_money.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_money.Location = new System.Drawing.Point(3, 42);
this.lbl_money.Name = "lbl_money";
this.lbl_money.Size = new System.Drawing.Size(96, 23);
this.lbl_money.TabIndex = 1;
this.lbl_money.Text = "Money:";
//
// lbl_experience
//
this.lbl_experience.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_experience.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_experience.Location = new System.Drawing.Point(3, 78);
this.lbl_experience.Name = "lbl_experience";
this.lbl_experience.Size = new System.Drawing.Size(96, 23);
this.lbl_experience.TabIndex = 4;
this.lbl_experience.Text = "Experience:";
//
// lbl_basic_info
//
this.lbl_basic_info.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lbl_basic_info.AutoSize = true;
this.lbl_basic_info.Font = new System.Drawing.Font("Calibri", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_basic_info.Location = new System.Drawing.Point(124, 5);
this.lbl_basic_info.Name = "lbl_basic_info";
this.lbl_basic_info.Size = new System.Drawing.Size(93, 26);
this.lbl_basic_info.TabIndex = 0;
this.lbl_basic_info.Text = "Basic info";
//
// chk_update_on_start
//
this.chk_update_on_start.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_update_on_start.Location = new System.Drawing.Point(174, 15);
this.chk_update_on_start.Name = "chk_update_on_start";
this.chk_update_on_start.Size = new System.Drawing.Size(181, 24);
this.chk_update_on_start.TabIndex = 1;
this.chk_update_on_start.Text = "Update configs on start";
this.chk_update_on_start.UseVisualStyleBackColor = true;
this.chk_update_on_start.CheckedChanged += new System.EventHandler(this.chk_update_on_start_CheckedChanged);
//
// tlp_skills
//
this.tlp_skills.ColumnCount = 3;
this.tlp_skills.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 37.60933F));
this.tlp_skills.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.36152F));
this.tlp_skills.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 29.73761F));
this.tlp_skills.Controls.Add(this.lbl_skills, 1, 0);
this.tlp_skills.Controls.Add(this.lbl_adr, 0, 1);
this.tlp_skills.Controls.Add(this.txt_adr, 1, 1);
this.tlp_skills.Controls.Add(this.chk_adr, 2, 1);
this.tlp_skills.Controls.Add(this.lbl_long_distance, 0, 2);
this.tlp_skills.Controls.Add(this.lbl_high_value_cargo, 0, 3);
this.tlp_skills.Controls.Add(this.lbl_fragile_cargo, 0, 4);
this.tlp_skills.Controls.Add(this.lbl_urgent_delivery, 0, 5);
this.tlp_skills.Controls.Add(this.lbl_ecodriving, 0, 6);
this.tlp_skills.Controls.Add(this.txt_long_distance, 1, 2);
this.tlp_skills.Controls.Add(this.txt_high_value_cargo, 1, 3);
this.tlp_skills.Controls.Add(this.txt_fragile_cargo, 1, 4);
this.tlp_skills.Controls.Add(this.txt_urgent_delivery, 1, 5);
this.tlp_skills.Controls.Add(this.txt_ecodriving, 1, 6);
this.tlp_skills.Controls.Add(this.chk_long_distance, 2, 2);
this.tlp_skills.Controls.Add(this.chk_high_value_cargo, 2, 3);
this.tlp_skills.Controls.Add(this.chk_fragile_cargo, 2, 4);
this.tlp_skills.Controls.Add(this.chk_urgent_delivery, 2, 5);
this.tlp_skills.Controls.Add(this.chk_ecodriving, 2, 6);
this.tlp_skills.Location = new System.Drawing.Point(12, 198);
this.tlp_skills.Name = "tlp_skills";
this.tlp_skills.RowCount = 7;
this.tlp_skills.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tlp_skills.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tlp_skills.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tlp_skills.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tlp_skills.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tlp_skills.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tlp_skills.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tlp_skills.Size = new System.Drawing.Size(343, 254);
this.tlp_skills.TabIndex = 3;
//
// lbl_skills
//
this.lbl_skills.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lbl_skills.AutoSize = true;
this.lbl_skills.Font = new System.Drawing.Font("Calibri", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_skills.Location = new System.Drawing.Point(157, 5);
this.lbl_skills.Name = "lbl_skills";
this.lbl_skills.Size = new System.Drawing.Size(55, 26);
this.lbl_skills.TabIndex = 1;
this.lbl_skills.Text = "Skills";
//
// lbl_adr
//
this.lbl_adr.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_adr.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_adr.Location = new System.Drawing.Point(3, 42);
this.lbl_adr.Name = "lbl_adr";
this.lbl_adr.Size = new System.Drawing.Size(123, 23);
this.lbl_adr.TabIndex = 2;
this.lbl_adr.Text = "ADR:";
//
// txt_adr
//
this.txt_adr.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_adr.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_adr.Location = new System.Drawing.Point(132, 41);
this.txt_adr.Name = "txt_adr";
this.txt_adr.Size = new System.Drawing.Size(105, 26);
this.txt_adr.TabIndex = 8;
//
// chk_adr
//
this.chk_adr.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_adr.AutoSize = true;
this.chk_adr.Checked = true;
this.chk_adr.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_adr.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_adr.Location = new System.Drawing.Point(243, 44);
this.chk_adr.Name = "chk_adr";
this.chk_adr.Size = new System.Drawing.Size(97, 19);
this.chk_adr.TabIndex = 9;
this.chk_adr.Text = "Don\'t change";
this.chk_adr.UseVisualStyleBackColor = true;
//
// lbl_long_distance
//
this.lbl_long_distance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_long_distance.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_long_distance.Location = new System.Drawing.Point(3, 78);
this.lbl_long_distance.Name = "lbl_long_distance";
this.lbl_long_distance.Size = new System.Drawing.Size(123, 23);
this.lbl_long_distance.TabIndex = 8;
this.lbl_long_distance.Text = "Long distance:";
//
// lbl_high_value_cargo
//
this.lbl_high_value_cargo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_high_value_cargo.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_high_value_cargo.Location = new System.Drawing.Point(3, 114);
this.lbl_high_value_cargo.Name = "lbl_high_value_cargo";
this.lbl_high_value_cargo.Size = new System.Drawing.Size(123, 23);
this.lbl_high_value_cargo.TabIndex = 9;
this.lbl_high_value_cargo.Text = "High value cargo:";
//
// lbl_fragile_cargo
//
this.lbl_fragile_cargo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_fragile_cargo.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_fragile_cargo.Location = new System.Drawing.Point(3, 150);
this.lbl_fragile_cargo.Name = "lbl_fragile_cargo";
this.lbl_fragile_cargo.Size = new System.Drawing.Size(123, 23);
this.lbl_fragile_cargo.TabIndex = 10;
this.lbl_fragile_cargo.Text = "Fragile cargo:";
//
// lbl_urgent_delivery
//
this.lbl_urgent_delivery.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_urgent_delivery.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_urgent_delivery.Location = new System.Drawing.Point(3, 186);
this.lbl_urgent_delivery.Name = "lbl_urgent_delivery";
this.lbl_urgent_delivery.Size = new System.Drawing.Size(123, 23);
this.lbl_urgent_delivery.TabIndex = 11;
this.lbl_urgent_delivery.Text = "Urgent delivery:";
//
// lbl_ecodriving
//
this.lbl_ecodriving.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_ecodriving.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_ecodriving.Location = new System.Drawing.Point(3, 223);
this.lbl_ecodriving.Name = "lbl_ecodriving";
this.lbl_ecodriving.Size = new System.Drawing.Size(123, 23);
this.lbl_ecodriving.TabIndex = 12;
this.lbl_ecodriving.Text = "Ecodriving:";
//
// txt_long_distance
//
this.txt_long_distance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_long_distance.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_long_distance.Location = new System.Drawing.Point(132, 77);
this.txt_long_distance.MaxLength = 1;
this.txt_long_distance.Name = "txt_long_distance";
this.txt_long_distance.Size = new System.Drawing.Size(105, 26);
this.txt_long_distance.TabIndex = 10;
//
// txt_high_value_cargo
//
this.txt_high_value_cargo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_high_value_cargo.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_high_value_cargo.Location = new System.Drawing.Point(132, 113);
this.txt_high_value_cargo.MaxLength = 1;
this.txt_high_value_cargo.Name = "txt_high_value_cargo";
this.txt_high_value_cargo.Size = new System.Drawing.Size(105, 26);
this.txt_high_value_cargo.TabIndex = 12;
//
// txt_fragile_cargo
//
this.txt_fragile_cargo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_fragile_cargo.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_fragile_cargo.Location = new System.Drawing.Point(132, 149);
this.txt_fragile_cargo.MaxLength = 1;
this.txt_fragile_cargo.Name = "txt_fragile_cargo";
this.txt_fragile_cargo.Size = new System.Drawing.Size(105, 26);
this.txt_fragile_cargo.TabIndex = 14;
//
// txt_urgent_delivery
//
this.txt_urgent_delivery.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_urgent_delivery.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_urgent_delivery.Location = new System.Drawing.Point(132, 185);
this.txt_urgent_delivery.MaxLength = 1;
this.txt_urgent_delivery.Name = "txt_urgent_delivery";
this.txt_urgent_delivery.Size = new System.Drawing.Size(105, 26);
this.txt_urgent_delivery.TabIndex = 16;
//
// txt_ecodriving
//
this.txt_ecodriving.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_ecodriving.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_ecodriving.Location = new System.Drawing.Point(132, 222);
this.txt_ecodriving.MaxLength = 1;
this.txt_ecodriving.Name = "txt_ecodriving";
this.txt_ecodriving.Size = new System.Drawing.Size(105, 26);
this.txt_ecodriving.TabIndex = 18;
//
// chk_long_distance
//
this.chk_long_distance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_long_distance.AutoSize = true;
this.chk_long_distance.Checked = true;
this.chk_long_distance.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_long_distance.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_long_distance.Location = new System.Drawing.Point(243, 80);
this.chk_long_distance.Name = "chk_long_distance";
this.chk_long_distance.Size = new System.Drawing.Size(97, 19);
this.chk_long_distance.TabIndex = 11;
this.chk_long_distance.Text = "Don\'t change";
this.chk_long_distance.UseVisualStyleBackColor = true;
//
// chk_high_value_cargo
//
this.chk_high_value_cargo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_high_value_cargo.AutoSize = true;
this.chk_high_value_cargo.Checked = true;
this.chk_high_value_cargo.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_high_value_cargo.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_high_value_cargo.Location = new System.Drawing.Point(243, 116);
this.chk_high_value_cargo.Name = "chk_high_value_cargo";
this.chk_high_value_cargo.Size = new System.Drawing.Size(97, 19);
this.chk_high_value_cargo.TabIndex = 13;
this.chk_high_value_cargo.Text = "Don\'t change";
this.chk_high_value_cargo.UseVisualStyleBackColor = true;
//
// chk_fragile_cargo
//
this.chk_fragile_cargo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_fragile_cargo.AutoSize = true;
this.chk_fragile_cargo.Checked = true;
this.chk_fragile_cargo.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_fragile_cargo.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_fragile_cargo.Location = new System.Drawing.Point(243, 152);
this.chk_fragile_cargo.Name = "chk_fragile_cargo";
this.chk_fragile_cargo.Size = new System.Drawing.Size(97, 19);
this.chk_fragile_cargo.TabIndex = 15;
this.chk_fragile_cargo.Text = "Don\'t change";
this.chk_fragile_cargo.UseVisualStyleBackColor = true;
//
// chk_urgent_delivery
//
this.chk_urgent_delivery.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_urgent_delivery.AutoSize = true;
this.chk_urgent_delivery.Checked = true;
this.chk_urgent_delivery.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_urgent_delivery.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_urgent_delivery.Location = new System.Drawing.Point(243, 188);
this.chk_urgent_delivery.Name = "chk_urgent_delivery";
this.chk_urgent_delivery.Size = new System.Drawing.Size(97, 19);
this.chk_urgent_delivery.TabIndex = 17;
this.chk_urgent_delivery.Text = "Don\'t change";
this.chk_urgent_delivery.UseVisualStyleBackColor = true;
//
// chk_ecodriving
//
this.chk_ecodriving.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chk_ecodriving.AutoSize = true;
this.chk_ecodriving.Checked = true;
this.chk_ecodriving.CheckState = System.Windows.Forms.CheckState.Checked;
this.chk_ecodriving.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.chk_ecodriving.Location = new System.Drawing.Point(243, 225);
this.chk_ecodriving.Name = "chk_ecodriving";
this.chk_ecodriving.Size = new System.Drawing.Size(97, 19);
this.chk_ecodriving.TabIndex = 19;
this.chk_ecodriving.Text = "Don\'t change";
this.chk_ecodriving.UseVisualStyleBackColor = true;
//
// btn_unlock_garages
//
this.btn_unlock_garages.Enabled = false;
this.btn_unlock_garages.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_unlock_garages.Location = new System.Drawing.Point(12, 458);
this.btn_unlock_garages.Name = "btn_unlock_garages";
this.btn_unlock_garages.Size = new System.Drawing.Size(105, 34);
this.btn_unlock_garages.TabIndex = 20;
this.btn_unlock_garages.Text = "Unlock garages";
this.btn_unlock_garages.UseVisualStyleBackColor = true;
this.btn_unlock_garages.Click += new System.EventHandler(this.btn_unlock_garages_Click);
//
// btn_recover_backup
//
this.btn_recover_backup.Enabled = false;
this.btn_recover_backup.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_recover_backup.Location = new System.Drawing.Point(131, 458);
this.btn_recover_backup.Name = "btn_recover_backup";
this.btn_recover_backup.Size = new System.Drawing.Size(105, 34);
this.btn_recover_backup.TabIndex = 21;
this.btn_recover_backup.Text = "Recover backup";
this.btn_recover_backup.UseVisualStyleBackColor = true;
this.btn_recover_backup.Click += new System.EventHandler(this.btn_recover_backup_Click);
//
// btn_apply_changes
//
this.btn_apply_changes.Enabled = false;
this.btn_apply_changes.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_apply_changes.Location = new System.Drawing.Point(250, 458);
this.btn_apply_changes.Name = "btn_apply_changes";
this.btn_apply_changes.Size = new System.Drawing.Size(105, 34);
this.btn_apply_changes.TabIndex = 22;
this.btn_apply_changes.Text = "Apply changes";
this.btn_apply_changes.UseVisualStyleBackColor = true;
this.btn_apply_changes.Click += new System.EventHandler(this.btn_apply_changes_Click);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(369, 501);
this.Controls.Add(this.btn_apply_changes);
this.Controls.Add(this.btn_recover_backup);
this.Controls.Add(this.btn_unlock_garages);
this.Controls.Add(this.tlp_skills);
this.Controls.Add(this.chk_update_on_start);
this.Controls.Add(this.tlp_basic_info);
this.Controls.Add(this.btn_open_save);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.Name = "MainForm";
this.Text = "SaveWizard";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed);
this.Load += new System.EventHandler(this.MainForm_Load);
this.tlp_basic_info.ResumeLayout(false);
this.tlp_basic_info.PerformLayout();
this.tlp_skills.ResumeLayout(false);
this.tlp_skills.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btn_open_save;
private System.Windows.Forms.TableLayoutPanel tlp_basic_info;
private System.Windows.Forms.Label lbl_basic_info;
private System.Windows.Forms.Label lbl_money;
private System.Windows.Forms.CheckBox chk_update_on_start;
private System.Windows.Forms.TextBox txt_money;
private System.Windows.Forms.TextBox txt_experience;
private System.Windows.Forms.Label lbl_experience;
private System.Windows.Forms.TextBox txt_loan_limit;
private System.Windows.Forms.CheckBox chk_money;
private System.Windows.Forms.CheckBox chk_experience;
private System.Windows.Forms.CheckBox chk_loan_limit;
private System.Windows.Forms.Label lbl_loan_limit;
private System.Windows.Forms.TableLayoutPanel tlp_skills;
private System.Windows.Forms.Label lbl_skills;
private System.Windows.Forms.Label lbl_adr;
private System.Windows.Forms.TextBox txt_adr;
private System.Windows.Forms.CheckBox chk_adr;
private System.Windows.Forms.Label lbl_long_distance;
private System.Windows.Forms.Label lbl_high_value_cargo;
private System.Windows.Forms.Label lbl_fragile_cargo;
private System.Windows.Forms.Label lbl_urgent_delivery;
private System.Windows.Forms.Label lbl_ecodriving;
private System.Windows.Forms.TextBox txt_long_distance;
private System.Windows.Forms.TextBox txt_high_value_cargo;
private System.Windows.Forms.TextBox txt_fragile_cargo;
private System.Windows.Forms.TextBox txt_urgent_delivery;
private System.Windows.Forms.TextBox txt_ecodriving;
private System.Windows.Forms.CheckBox chk_long_distance;
private System.Windows.Forms.CheckBox chk_high_value_cargo;
private System.Windows.Forms.CheckBox chk_fragile_cargo;
private System.Windows.Forms.CheckBox chk_urgent_delivery;
private System.Windows.Forms.CheckBox chk_ecodriving;
private System.Windows.Forms.Button btn_unlock_garages;
private System.Windows.Forms.Button btn_recover_backup;
private System.Windows.Forms.Button btn_apply_changes;
}
}

278
SaveWizard/MainForm.cs Normal file
View File

@@ -0,0 +1,278 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace SaveWizard
{
public partial class MainForm: Form
{
private readonly string config_file_name = "update.cfg";
[DllImport("SII_Decrypt.dll")]
public static extern int GetFileFormat(string FileName);
[DllImport("SII_Decrypt.dll")]
public static extern int DecryptAndDecodeFile(string InputFile, string OutputFile);
private Dictionary<TextBox, WindowItem> items = null;
private string opened_file_path, selected_game;
private Dictionary<string, bool> owns = null;
public MainForm()
{
InitializeComponent();
// Test stuff
//string path = Path.Combine(Environment.CurrentDirectory, "configs");
//if (Directory.Exists(path))
// Directory.Delete(path, true);
//path = Path.Combine(Environment.CurrentDirectory, "update.cfg");
//if (File.Exists(path))
// File.Delete(path);
}
private class WindowItem
{
private readonly CheckBox Check;
private readonly string Str;
public WindowItem(CheckBox _check, string _str)
{
Check = _check;
Str = _str;
}
public CheckBox GetCheck()
{
return Check;
}
public string GetString()
{
return Str;
}
}
private void boxTextChanged(object sender, EventArgs e)
{
TextBox _sender = sender as TextBox;
if (_sender != txt_adr)
items[_sender].GetCheck().Checked = false;
else
chk_adr.Checked = false;
}
private void ValidateBasic(object sender, KeyPressEventArgs e)
{
//if (!(e.KeyChar >= '0' && e.KeyChar <= '9') && !char.IsControl(e.KeyChar))
if (!(e.KeyChar >= '0' && e.KeyChar <= '9') && e.KeyChar != (char)Keys.Back)
e.Handled = true;
}
private void ValidateSkills(object sender, KeyPressEventArgs e)
{
//if (!(e.KeyChar >= '0' && e.KeyChar <= '6') && !char.IsControl(e.KeyChar))
if (!(e.KeyChar >= '0' && e.KeyChar <= '6') && e.KeyChar != (char)Keys.Back)
e.Handled = true;
}
private List<string> GetADR(string value)
{
string binaryCode = Convert.ToString(int.Parse(value), 2);
binaryCode = new string('0', 6 - binaryCode.Length) + binaryCode;
List<string> result = new List<string>();
foreach (char character in binaryCode)
result.Add(character.ToString());
return result;
}
private void GetFileData(string filename)
{
RegexHandler.FillLines(File.ReadAllLines(filename).ToList());
foreach (KeyValuePair<TextBox, WindowItem> item in items)
{
item.Key.Text = RegexHandler.GetValue(RegexHandler.SearchLine(item.Value.GetString()));
item.Value.GetCheck().Checked = true;
}
List<string> adr_value = GetADR(RegexHandler.GetValue(RegexHandler.SearchLine("adr:")));
for (int i = 0; i < 6; i++)
{
txt_adr.Text += adr_value[i];
if (i != 5)
txt_adr.Text += ",";
}
if (RegexHandler.SearchLine("company.volatile.stokes.calais") != 0)
selected_game = "ets2";
else if (RegexHandler.SearchLine("company.volatile.ed_mkt.elko") != 0)
selected_game = "ats";
else
selected_game = null;
if (selected_game != null)
{
string config_path = $"configs/{selected_game}/dlc.json";
if (File.Exists(config_path))
{
Dictionary<string, string> dlc = JsonConvert.DeserializeObject<Dictionary<string, string>>(File.ReadAllText(config_path));
owns = new Dictionary<string, bool>
{
{ "base", true }
};
List<string> companies = RegexHandler.GetArrayItems("companies:");
foreach (string company in companies)
foreach (KeyValuePair<string, string> item in dlc)
if (company.Contains(item.Value))
owns[item.Key] = true;
}
else
Utils.ShowError($"'dlc.json' from '{selected_game}' have errors or not found, functionality has been limited");
}
btn_unlock_garages.Enabled = true;
btn_recover_backup.Enabled = true;
btn_apply_changes.Enabled = true;
}
private void ClearData()
{
opened_file_path = null;
RegexHandler.FillLines(null);
selected_game = null;
owns = null;
foreach (KeyValuePair<TextBox, WindowItem> item in items)
{
item.Key.Text = "";
item.Value.GetCheck().Checked = true;
}
btn_unlock_garages.Enabled = false;
btn_recover_backup.Enabled = false;
btn_apply_changes.Enabled = false;
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
private void MainForm_Load(object sender, EventArgs e)
{
if (!File.Exists("SII_Decrypt.dll"))
{
Utils.ShowError("SII_Decrypt.dll not found! Place dll file near this executable.");
Close();
}
items = new Dictionary<TextBox, WindowItem>
{
{ txt_money, new WindowItem(chk_money, "money_account:") },
{ txt_experience, new WindowItem(chk_experience, "experience_points:") },
{ txt_loan_limit, new WindowItem(chk_loan_limit, "loan_limit:") },
{ txt_long_distance, new WindowItem(chk_long_distance, "long_dist:") },
{ txt_high_value_cargo, new WindowItem(chk_high_value_cargo, "heavy:") },
{ txt_fragile_cargo, new WindowItem(chk_fragile_cargo, "fragile:") },
{ txt_urgent_delivery, new WindowItem(chk_urgent_delivery, "urgent:") },
{ txt_ecodriving, new WindowItem(chk_ecodriving, "mechanical:") },
};
KeyPressEventHandler basic = new KeyPressEventHandler(ValidateBasic);
txt_money.KeyPress += basic;
txt_experience.KeyPress += basic;
txt_loan_limit.KeyPress += basic;
//txt_adr.KeyPress += new KeyPressEventHandler(ValidateADR);
KeyPressEventHandler skills = new KeyPressEventHandler(ValidateSkills);
txt_long_distance.KeyPress += skills;
txt_high_value_cargo.KeyPress += skills;
txt_fragile_cargo.KeyPress += skills;
txt_urgent_delivery.KeyPress += skills;
txt_ecodriving.KeyPress += skills;
foreach (TextBox txtbox in items.Keys)
txtbox.TextChanged += boxTextChanged;
txt_adr.TextChanged += boxTextChanged;
Dictionary<string, bool> update_conf = new Dictionary<string, bool>
{
{ "update_on_start", false }
};
string path = Path.Combine(Environment.CurrentDirectory, config_file_name);
if (File.Exists(path))
update_conf = JsonConvert.DeserializeObject<Dictionary<string, bool>>(File.ReadAllText(path));
if (update_conf["update_on_start"])
{
chk_update_on_start.Checked = true;
UpdateForm window = new UpdateForm();
window.ShowDialog();
window.Focus();
}
}
private void chk_update_on_start_CheckedChanged(object sender, EventArgs e)
{
File.WriteAllText(
Path.Combine(Environment.CurrentDirectory, config_file_name),
JsonConvert.SerializeObject(new Dictionary<string, bool>
{
{ "update_on_start", chk_update_on_start.Checked }
})
);
}
private void btn_open_save_Click(object sender, EventArgs e)
{
ClearData();
OpenFileDialog ofd = new OpenFileDialog()
{
Title = "Выберите файл сохранения",
Filter = "Сохранение в формате SII|game.sii",
Multiselect = false,
};
if (ofd.ShowDialog() == DialogResult.OK)
{
if (GetFileFormat(ofd.FileName) == 2)
{
if (DecryptAndDecodeFile(ofd.FileName, ofd.FileName) != 0)
{
Utils.ShowError("Something went wrong with decrypting file. Try again.");
return;
}
}
GetFileData(ofd.FileName);
opened_file_path = ofd.FileName;
}
}
private void btn_unlock_garages_Click(object sender, EventArgs e)
{
SecondForm dlg = new SecondForm(selected_game, owns);
dlg.ShowDialog();
dlg.Focus();
}
private void btn_recover_backup_Click(object sender, EventArgs e)
{
string backup_path = opened_file_path + ".swbak";
if (!File.Exists(backup_path))
{
Utils.ShowError("Backup not found.");
return;
}
File.WriteAllLines(opened_file_path, File.ReadAllLines(backup_path));
File.Delete(backup_path);
Utils.ShowInfo("Backup successfully recovered.");
GetFileData(opened_file_path);
}
private void btn_apply_changes_Click(object sender, EventArgs e)
{
foreach (KeyValuePair<TextBox, WindowItem> item in items)
if (!item.Value.GetCheck().Checked)
RegexHandler.SetValue(RegexHandler.SearchLine(item.Value.GetString()), item.Key.Text);
File.WriteAllLines(opened_file_path + ".swbak", RegexHandler.GetBackup());
File.WriteAllLines(opened_file_path, RegexHandler.GetAllLines());
Utils.ShowInfo("Changes successfully applied.");
GetFileData(opened_file_path);
}
}
}

120
SaveWizard/MainForm.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

19
SaveWizard/Program.cs Normal file
View File

@@ -0,0 +1,19 @@
using System;
using System.Windows.Forms;
namespace SaveWizard
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Общие сведения об этой сборке предоставляются следующим набором
// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
// связанных со сборкой.
[assembly: AssemblyTitle("SaveWizard")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SaveWizard")]
[assembly: AssemblyCopyright("Lev Rusanov © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
// COM, следует установить атрибут ComVisible в TRUE для этого типа.
[assembly: ComVisible(false)]
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("a08c24b5-43a9-4e0b-8c5c-0ab019cbafe8")]
// Сведения о версии сборки состоят из указанных ниже четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер сборки
// Редакция
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SaveWizard.Properties {
using System;
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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() {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// </summary>
[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("SaveWizard.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SaveWizard.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.13.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;
}
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

155
SaveWizard/RegexHandler.cs Normal file
View File

@@ -0,0 +1,155 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace SaveWizard
{
static class RegexHandler
{
private static List<string> lines;
private static List<string> backup;
public static void FillLines(List<string> _lines)
{
if (_lines == null)
return;
lines = new List<string>();
lines.AddRange(_lines);
backup = new List<string>();
backup.AddRange(_lines);
}
public static string GetLine(int index)
{
return lines[index];
}
public static List<string> GetAllLines()
{
return lines;
}
public static List<string> GetBackup()
{
return backup;
}
public static int SearchLine(string term, int start = 0, string cancel = "this_string_must_not_exist")
{
if (lines[start].Contains(term))
return start;
start += 1;
while (start <= (lines.Count-1)) {
if (lines[start].Contains(term))
return start;
if (lines[start].Contains(cancel))
return 0;
start += 1;
}
return 0;
}
public static int SearchLineInUnit(string term, string unit)
{
return SearchLine(term, start: SearchLine(" : " + unit + " {"), cancel: "}");
}
public static List<int> SearchAllLines(string term)
{
List<int> matches = new List<int>();
int line = 0;
while (SearchLine(term, start: line + 1) != 0)
{
line = SearchLine(term, start: line + 1);
matches.Add(line);
}
if (matches.Count == 0)
return null;
return matches;
}
public static string GetValue(int line)
{
return Regex.Match(lines[line], ": (.+)$").Groups[1].ToString();
}
public static void SetValue(int line, string value)
{
string name = Regex.Match(lines[line], "(.+):").Groups[1].ToString();
lines[line] = $"{name}: {value}";
}
//public static string GetUnitName(int line)
//{
// return Regex.Match(lines[line], " : (.+) {$").Groups[1].ToString();
//}
public static int GetArrayLength(int line)
{
return Convert.ToInt32(GetValue(line));
}
//public static string GetArrayValueByIndex(int line, int index)
//{
// return Regex.Match(lines[line + index + 1], ": (.+)$").Groups[1].ToString();
//}
//public static int GetArrayIndexByValue(int line, string value)
//{
// int count = 0;
// for (int i = 0; i < GetArrayLength(line); i++)
// {
// if (GetValue(line + count + 1) == value)
// return count;
// count += 1;
// }
// return 0;
//}
public static List<string> GetArrayItems(string search_term)
{
List<string> items = new List<string>();
int line = SearchLine(search_term);
for (int i = 0; i < GetArrayLength(line); i++)
items.Add(Regex.Match(lines[line + i + 1], ": (.+)$").Groups[1].ToString());
if (items.Count == 0)
return null;
return items;
}
public static List<string> GetArrayItems(int line)
{
List<string> items = new List<string>();
for (int i = 0; i < GetArrayLength(line); i++)
items.Add(Regex.Match(lines[line + i + 1], ": (.+)$").Groups[1].ToString());
if (items.Count == 0)
return null;
return items;
}
public static void AddArrayValue(int line, string value)
{
string name = Regex.Match(lines[line], "(.+):").Groups[1].ToString();
int length = GetArrayLength(line);
lines[line] = $"{name}: {length + 1}";
lines.Insert(line + length + 1, $"{name}[{length}]: {value}");
}
//public static void RemoveArrayValue(int line, string value)
//{
// string name = Regex.Match(lines[line], "(.+):").Groups[1].ToString();
// lines.Remove(lines[line + 1 + GetArrayIndexByValue(line, value)]);
// int count = GetArrayLength(line);
// lines[line] = $"{name}: {count - 1}";
// for (int i = 0; i < count; i++)
// //lines[line + i + 1] = ("")
// lines[line + i + 1].Replace("[[0-9]+]", $"{i}");
//}
//public static void ChangeArrayValue(int line, int index, string value)
//{
// line += index + 1;
// SetValue(line, value);
//}
}
}

BIN
SaveWizard/SII_Decrypt.dll Normal file

Binary file not shown.

View File

@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A08C24B5-43A9-4E0B-8C5C-0AB019CBAFE8}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>SaveWizard</RootNamespace>
<AssemblyName>SaveWizard</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>$(SolutionDir)\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="SecondForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SecondForm.Designer.cs">
<DependentUpon>SecondForm.cs</DependentUpon>
</Compile>
<Compile Include="UpdateForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UpdateForm.Designer.cs">
<DependentUpon>UpdateForm.cs</DependentUpon>
</Compile>
<Compile Include="Utils.cs" />
<Compile Include="RegexHandler.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SecondForm.resx">
<DependentUpon>SecondForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateForm.resx">
<DependentUpon>UpdateForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="ILRepack.targets" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="SII_Decrypt.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.8 %28x86 и x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\packages\ILRepack.Lib.MSBuild.Task.2.0.37\build\ILRepack.Lib.MSBuild.Task.targets" Condition="Exists('$(SolutionDir)\packages\ILRepack.Lib.MSBuild.Task.2.0.37\build\ILRepack.Lib.MSBuild.Task.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их. Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\packages\ILRepack.Lib.MSBuild.Task.2.0.37\build\ILRepack.Lib.MSBuild.Task.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\ILRepack.Lib.MSBuild.Task.2.0.37\build\ILRepack.Lib.MSBuild.Task.targets'))" />
</Target>
</Project>

649
SaveWizard/SecondForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,649 @@
namespace SaveWizard
{
partial class SecondForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tbl_owned_garages = new System.Windows.Forms.TableLayoutPanel();
this.lb_owned_garages = new System.Windows.Forms.ListBox();
this.lbl_owned_garages = new System.Windows.Forms.Label();
this.btn_owned_garages_analyze = new System.Windows.Forms.Button();
this.tbl_add_garage = new System.Windows.Forms.TableLayoutPanel();
this.lbl_garage_name = new System.Windows.Forms.Label();
this.txt_garage_name = new System.Windows.Forms.TextBox();
this.cb_garage_size = new System.Windows.Forms.ComboBox();
this.btn_garage_unlock = new System.Windows.Forms.Button();
this.btn_garage_unlock_all = new System.Windows.Forms.Button();
this.tbl_headquarter = new System.Windows.Forms.TableLayoutPanel();
this.lbl_headquarter = new System.Windows.Forms.Label();
this.txt_headquarter = new System.Windows.Forms.TextBox();
this.btn_headquarter_change = new System.Windows.Forms.Button();
this.tbl_visited_cities = new System.Windows.Forms.TableLayoutPanel();
this.lbl_visited_cities = new System.Windows.Forms.Label();
this.lb_visited_cities = new System.Windows.Forms.ListBox();
this.tbl_add_city = new System.Windows.Forms.TableLayoutPanel();
this.lbl_city_name = new System.Windows.Forms.Label();
this.txt_city_name = new System.Windows.Forms.TextBox();
this.btn_visit_city = new System.Windows.Forms.Button();
this.btn_visit_all = new System.Windows.Forms.Button();
this.tbl_dealerships = new System.Windows.Forms.TableLayoutPanel();
this.lb_dealerships = new System.Windows.Forms.ListBox();
this.lbl_dealership = new System.Windows.Forms.Label();
this.tbl_agencies = new System.Windows.Forms.TableLayoutPanel();
this.lbl_agencies = new System.Windows.Forms.Label();
this.lb_agencies = new System.Windows.Forms.ListBox();
this.tbl_add_dealer = new System.Windows.Forms.TableLayoutPanel();
this.lbl_dealer_name = new System.Windows.Forms.Label();
this.txt_dealer_name = new System.Windows.Forms.TextBox();
this.btn_dealer_research_all = new System.Windows.Forms.Button();
this.btn_dealer_research = new System.Windows.Forms.Button();
this.tbl_add_agency = new System.Windows.Forms.TableLayoutPanel();
this.btn_agency_research_all = new System.Windows.Forms.Button();
this.txt_agency_name = new System.Windows.Forms.TextBox();
this.btn_agency_research = new System.Windows.Forms.Button();
this.lbl_agency_name = new System.Windows.Forms.Label();
this.tbl_owned_garages.SuspendLayout();
this.tbl_add_garage.SuspendLayout();
this.tbl_headquarter.SuspendLayout();
this.tbl_visited_cities.SuspendLayout();
this.tbl_add_city.SuspendLayout();
this.tbl_dealerships.SuspendLayout();
this.tbl_agencies.SuspendLayout();
this.tbl_add_dealer.SuspendLayout();
this.tbl_add_agency.SuspendLayout();
this.SuspendLayout();
//
// tbl_owned_garages
//
this.tbl_owned_garages.ColumnCount = 1;
this.tbl_owned_garages.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_owned_garages.Controls.Add(this.lb_owned_garages, 0, 1);
this.tbl_owned_garages.Controls.Add(this.lbl_owned_garages, 0, 0);
this.tbl_owned_garages.Controls.Add(this.btn_owned_garages_analyze, 0, 2);
this.tbl_owned_garages.Location = new System.Drawing.Point(12, 36);
this.tbl_owned_garages.Name = "tbl_owned_garages";
this.tbl_owned_garages.RowCount = 3;
this.tbl_owned_garages.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 13.19797F));
this.tbl_owned_garages.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 69.54314F));
this.tbl_owned_garages.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 17.01031F));
this.tbl_owned_garages.Size = new System.Drawing.Size(143, 197);
this.tbl_owned_garages.TabIndex = 0;
//
// lb_owned_garages
//
this.lb_owned_garages.Dock = System.Windows.Forms.DockStyle.Fill;
this.lb_owned_garages.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lb_owned_garages.FormattingEnabled = true;
this.lb_owned_garages.ItemHeight = 15;
this.lb_owned_garages.Location = new System.Drawing.Point(3, 29);
this.lb_owned_garages.Name = "lb_owned_garages";
this.lb_owned_garages.SelectionMode = System.Windows.Forms.SelectionMode.None;
this.lb_owned_garages.Size = new System.Drawing.Size(137, 131);
this.lb_owned_garages.TabIndex = 1;
//
// lbl_owned_garages
//
this.lbl_owned_garages.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_owned_garages.AutoSize = true;
this.lbl_owned_garages.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_owned_garages.Location = new System.Drawing.Point(3, 3);
this.lbl_owned_garages.Name = "lbl_owned_garages";
this.lbl_owned_garages.Size = new System.Drawing.Size(137, 19);
this.lbl_owned_garages.TabIndex = 0;
this.lbl_owned_garages.Text = "Owned garages";
this.lbl_owned_garages.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btn_owned_garages_analyze
//
this.btn_owned_garages_analyze.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_owned_garages_analyze.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_owned_garages_analyze.Location = new System.Drawing.Point(3, 168);
this.btn_owned_garages_analyze.Name = "btn_owned_garages_analyze";
this.btn_owned_garages_analyze.Size = new System.Drawing.Size(137, 23);
this.btn_owned_garages_analyze.TabIndex = 2;
this.btn_owned_garages_analyze.Text = "Analyze";
this.btn_owned_garages_analyze.UseVisualStyleBackColor = true;
this.btn_owned_garages_analyze.Visible = false;
//
// tbl_add_garage
//
this.tbl_add_garage.ColumnCount = 1;
this.tbl_add_garage.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_add_garage.Controls.Add(this.lbl_garage_name, 0, 0);
this.tbl_add_garage.Controls.Add(this.txt_garage_name, 0, 1);
this.tbl_add_garage.Controls.Add(this.cb_garage_size, 0, 2);
this.tbl_add_garage.Controls.Add(this.btn_garage_unlock, 0, 3);
this.tbl_add_garage.Controls.Add(this.btn_garage_unlock_all, 0, 4);
this.tbl_add_garage.Location = new System.Drawing.Point(161, 12);
this.tbl_add_garage.Name = "tbl_add_garage";
this.tbl_add_garage.RowCount = 5;
this.tbl_add_garage.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tbl_add_garage.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tbl_add_garage.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tbl_add_garage.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tbl_add_garage.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tbl_add_garage.Size = new System.Drawing.Size(153, 151);
this.tbl_add_garage.TabIndex = 1;
//
// lbl_garage_name
//
this.lbl_garage_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_garage_name.AutoSize = true;
this.lbl_garage_name.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_garage_name.Location = new System.Drawing.Point(3, 5);
this.lbl_garage_name.Name = "lbl_garage_name";
this.lbl_garage_name.Size = new System.Drawing.Size(147, 19);
this.lbl_garage_name.TabIndex = 0;
this.lbl_garage_name.Text = "Enter garage name:";
this.lbl_garage_name.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// txt_garage_name
//
this.txt_garage_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_garage_name.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_garage_name.Location = new System.Drawing.Point(3, 33);
this.txt_garage_name.Name = "txt_garage_name";
this.txt_garage_name.Size = new System.Drawing.Size(147, 23);
this.txt_garage_name.TabIndex = 1;
//
// cb_garage_size
//
this.cb_garage_size.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.cb_garage_size.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_garage_size.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.cb_garage_size.Location = new System.Drawing.Point(3, 63);
this.cb_garage_size.Name = "cb_garage_size";
this.cb_garage_size.Size = new System.Drawing.Size(147, 23);
this.cb_garage_size.TabIndex = 2;
//
// btn_garage_unlock
//
this.btn_garage_unlock.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_garage_unlock.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_garage_unlock.Location = new System.Drawing.Point(3, 93);
this.btn_garage_unlock.Name = "btn_garage_unlock";
this.btn_garage_unlock.Size = new System.Drawing.Size(147, 23);
this.btn_garage_unlock.TabIndex = 3;
this.btn_garage_unlock.Text = "Unlock";
this.btn_garage_unlock.UseVisualStyleBackColor = true;
this.btn_garage_unlock.Click += new System.EventHandler(this.btn_garage_unlock_Click);
//
// btn_garage_unlock_all
//
this.btn_garage_unlock_all.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_garage_unlock_all.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_garage_unlock_all.Location = new System.Drawing.Point(3, 124);
this.btn_garage_unlock_all.Name = "btn_garage_unlock_all";
this.btn_garage_unlock_all.Size = new System.Drawing.Size(147, 23);
this.btn_garage_unlock_all.TabIndex = 4;
this.btn_garage_unlock_all.Text = "Unlock all";
this.btn_garage_unlock_all.UseVisualStyleBackColor = true;
this.btn_garage_unlock_all.Click += new System.EventHandler(this.btn_garage_unlock_all_Click);
//
// tbl_headquarter
//
this.tbl_headquarter.ColumnCount = 1;
this.tbl_headquarter.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_headquarter.Controls.Add(this.lbl_headquarter, 0, 0);
this.tbl_headquarter.Controls.Add(this.txt_headquarter, 0, 1);
this.tbl_headquarter.Controls.Add(this.btn_headquarter_change, 0, 2);
this.tbl_headquarter.Location = new System.Drawing.Point(161, 169);
this.tbl_headquarter.Name = "tbl_headquarter";
this.tbl_headquarter.RowCount = 3;
this.tbl_headquarter.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tbl_headquarter.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tbl_headquarter.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tbl_headquarter.Size = new System.Drawing.Size(153, 89);
this.tbl_headquarter.TabIndex = 2;
//
// lbl_headquarter
//
this.lbl_headquarter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_headquarter.AutoSize = true;
this.lbl_headquarter.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_headquarter.Location = new System.Drawing.Point(3, 5);
this.lbl_headquarter.Name = "lbl_headquarter";
this.lbl_headquarter.Size = new System.Drawing.Size(147, 19);
this.lbl_headquarter.TabIndex = 0;
this.lbl_headquarter.Text = "Your headquarter:";
this.lbl_headquarter.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// txt_headquarter
//
this.txt_headquarter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_headquarter.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_headquarter.Location = new System.Drawing.Point(3, 32);
this.txt_headquarter.Name = "txt_headquarter";
this.txt_headquarter.Size = new System.Drawing.Size(147, 23);
this.txt_headquarter.TabIndex = 1;
//
// btn_headquarter_change
//
this.btn_headquarter_change.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_headquarter_change.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_headquarter_change.Location = new System.Drawing.Point(3, 62);
this.btn_headquarter_change.Name = "btn_headquarter_change";
this.btn_headquarter_change.Size = new System.Drawing.Size(147, 23);
this.btn_headquarter_change.TabIndex = 2;
this.btn_headquarter_change.Text = "Change";
this.btn_headquarter_change.UseVisualStyleBackColor = true;
this.btn_headquarter_change.Click += new System.EventHandler(this.btn_headquarter_change_Click);
//
// tbl_visited_cities
//
this.tbl_visited_cities.ColumnCount = 1;
this.tbl_visited_cities.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_visited_cities.Controls.Add(this.lbl_visited_cities, 0, 0);
this.tbl_visited_cities.Controls.Add(this.lb_visited_cities, 0, 1);
this.tbl_visited_cities.Location = new System.Drawing.Point(12, 281);
this.tbl_visited_cities.Name = "tbl_visited_cities";
this.tbl_visited_cities.RowCount = 2;
this.tbl_visited_cities.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 15.22843F));
this.tbl_visited_cities.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 84.77158F));
this.tbl_visited_cities.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tbl_visited_cities.Size = new System.Drawing.Size(140, 189);
this.tbl_visited_cities.TabIndex = 3;
//
// lbl_visited_cities
//
this.lbl_visited_cities.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_visited_cities.AutoSize = true;
this.lbl_visited_cities.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_visited_cities.Location = new System.Drawing.Point(3, 4);
this.lbl_visited_cities.Name = "lbl_visited_cities";
this.lbl_visited_cities.Size = new System.Drawing.Size(134, 19);
this.lbl_visited_cities.TabIndex = 0;
this.lbl_visited_cities.Text = "Visited cities";
this.lbl_visited_cities.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lb_visited_cities
//
this.lb_visited_cities.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lb_visited_cities.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lb_visited_cities.FormattingEnabled = true;
this.lb_visited_cities.ItemHeight = 15;
this.lb_visited_cities.Location = new System.Drawing.Point(3, 31);
this.lb_visited_cities.Name = "lb_visited_cities";
this.lb_visited_cities.SelectionMode = System.Windows.Forms.SelectionMode.None;
this.lb_visited_cities.Size = new System.Drawing.Size(134, 154);
this.lb_visited_cities.TabIndex = 1;
//
// tbl_add_city
//
this.tbl_add_city.ColumnCount = 1;
this.tbl_add_city.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_add_city.Controls.Add(this.lbl_city_name, 0, 0);
this.tbl_add_city.Controls.Add(this.txt_city_name, 0, 1);
this.tbl_add_city.Controls.Add(this.btn_visit_city, 0, 2);
this.tbl_add_city.Controls.Add(this.btn_visit_all, 0, 3);
this.tbl_add_city.Location = new System.Drawing.Point(161, 302);
this.tbl_add_city.Name = "tbl_add_city";
this.tbl_add_city.RowCount = 4;
this.tbl_add_city.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_city.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_city.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_city.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_city.Size = new System.Drawing.Size(153, 138);
this.tbl_add_city.TabIndex = 4;
//
// lbl_city_name
//
this.lbl_city_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_city_name.AutoSize = true;
this.lbl_city_name.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_city_name.Location = new System.Drawing.Point(3, 7);
this.lbl_city_name.Name = "lbl_city_name";
this.lbl_city_name.Size = new System.Drawing.Size(147, 19);
this.lbl_city_name.TabIndex = 0;
this.lbl_city_name.Text = "Enter city name:";
this.lbl_city_name.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// txt_city_name
//
this.txt_city_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_city_name.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_city_name.Location = new System.Drawing.Point(3, 39);
this.txt_city_name.Name = "txt_city_name";
this.txt_city_name.Size = new System.Drawing.Size(147, 23);
this.txt_city_name.TabIndex = 1;
//
// btn_visit_city
//
this.btn_visit_city.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_visit_city.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_visit_city.Location = new System.Drawing.Point(3, 73);
this.btn_visit_city.Name = "btn_visit_city";
this.btn_visit_city.Size = new System.Drawing.Size(147, 23);
this.btn_visit_city.TabIndex = 2;
this.btn_visit_city.Text = "Visit";
this.btn_visit_city.UseVisualStyleBackColor = true;
this.btn_visit_city.Click += new System.EventHandler(this.btn_visit_city_Click);
//
// btn_visit_all
//
this.btn_visit_all.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_visit_all.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_visit_all.Location = new System.Drawing.Point(3, 108);
this.btn_visit_all.Name = "btn_visit_all";
this.btn_visit_all.Size = new System.Drawing.Size(147, 23);
this.btn_visit_all.TabIndex = 3;
this.btn_visit_all.Text = "Visit all";
this.btn_visit_all.UseVisualStyleBackColor = true;
this.btn_visit_all.Click += new System.EventHandler(this.btn_visit_all_Click);
//
// tbl_dealerships
//
this.tbl_dealerships.ColumnCount = 1;
this.tbl_dealerships.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_dealerships.Controls.Add(this.lb_dealerships, 0, 1);
this.tbl_dealerships.Controls.Add(this.lbl_dealership, 0, 0);
this.tbl_dealerships.Location = new System.Drawing.Point(338, 36);
this.tbl_dealerships.Name = "tbl_dealerships";
this.tbl_dealerships.RowCount = 2;
this.tbl_dealerships.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.81481F));
this.tbl_dealerships.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 85.18519F));
this.tbl_dealerships.Size = new System.Drawing.Size(140, 189);
this.tbl_dealerships.TabIndex = 5;
//
// lb_dealerships
//
this.lb_dealerships.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lb_dealerships.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lb_dealerships.FormattingEnabled = true;
this.lb_dealerships.ItemHeight = 15;
this.lb_dealerships.Location = new System.Drawing.Point(3, 30);
this.lb_dealerships.Name = "lb_dealerships";
this.lb_dealerships.SelectionMode = System.Windows.Forms.SelectionMode.None;
this.lb_dealerships.Size = new System.Drawing.Size(134, 154);
this.lb_dealerships.TabIndex = 0;
//
// lbl_dealership
//
this.lbl_dealership.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_dealership.AutoSize = true;
this.lbl_dealership.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_dealership.Location = new System.Drawing.Point(3, 4);
this.lbl_dealership.Name = "lbl_dealership";
this.lbl_dealership.Size = new System.Drawing.Size(134, 19);
this.lbl_dealership.TabIndex = 9;
this.lbl_dealership.Text = "Dealerships";
this.lbl_dealership.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// tbl_agencies
//
this.tbl_agencies.ColumnCount = 1;
this.tbl_agencies.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tbl_agencies.Controls.Add(this.lbl_agencies, 0, 0);
this.tbl_agencies.Controls.Add(this.lb_agencies, 0, 1);
this.tbl_agencies.Location = new System.Drawing.Point(338, 281);
this.tbl_agencies.Name = "tbl_agencies";
this.tbl_agencies.RowCount = 2;
this.tbl_agencies.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 15.34391F));
this.tbl_agencies.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 84.65608F));
this.tbl_agencies.Size = new System.Drawing.Size(140, 189);
this.tbl_agencies.TabIndex = 6;
//
// lbl_agencies
//
this.lbl_agencies.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_agencies.AutoSize = true;
this.lbl_agencies.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_agencies.Location = new System.Drawing.Point(3, 4);
this.lbl_agencies.Name = "lbl_agencies";
this.lbl_agencies.Size = new System.Drawing.Size(134, 19);
this.lbl_agencies.TabIndex = 10;
this.lbl_agencies.Text = "Agencies";
this.lbl_agencies.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lb_agencies
//
this.lb_agencies.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lb_agencies.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lb_agencies.FormattingEnabled = true;
this.lb_agencies.ItemHeight = 15;
this.lb_agencies.Location = new System.Drawing.Point(3, 31);
this.lb_agencies.Name = "lb_agencies";
this.lb_agencies.SelectionMode = System.Windows.Forms.SelectionMode.None;
this.lb_agencies.Size = new System.Drawing.Size(134, 154);
this.lb_agencies.TabIndex = 9;
//
// tbl_add_dealer
//
this.tbl_add_dealer.ColumnCount = 1;
this.tbl_add_dealer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_add_dealer.Controls.Add(this.lbl_dealer_name, 0, 0);
this.tbl_add_dealer.Controls.Add(this.txt_dealer_name, 0, 1);
this.tbl_add_dealer.Controls.Add(this.btn_dealer_research_all, 0, 3);
this.tbl_add_dealer.Controls.Add(this.btn_dealer_research, 0, 2);
this.tbl_add_dealer.Location = new System.Drawing.Point(484, 65);
this.tbl_add_dealer.Name = "tbl_add_dealer";
this.tbl_add_dealer.RowCount = 4;
this.tbl_add_dealer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_dealer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_dealer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_dealer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_dealer.Size = new System.Drawing.Size(168, 138);
this.tbl_add_dealer.TabIndex = 7;
//
// lbl_dealer_name
//
this.lbl_dealer_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_dealer_name.AutoSize = true;
this.lbl_dealer_name.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_dealer_name.Location = new System.Drawing.Point(3, 7);
this.lbl_dealer_name.Name = "lbl_dealer_name";
this.lbl_dealer_name.Size = new System.Drawing.Size(162, 19);
this.lbl_dealer_name.TabIndex = 9;
this.lbl_dealer_name.Text = "Enter dealership name:";
this.lbl_dealer_name.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// txt_dealer_name
//
this.txt_dealer_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_dealer_name.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_dealer_name.Location = new System.Drawing.Point(3, 39);
this.txt_dealer_name.Name = "txt_dealer_name";
this.txt_dealer_name.Size = new System.Drawing.Size(162, 23);
this.txt_dealer_name.TabIndex = 9;
//
// btn_dealer_research_all
//
this.btn_dealer_research_all.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_dealer_research_all.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_dealer_research_all.Location = new System.Drawing.Point(3, 108);
this.btn_dealer_research_all.Name = "btn_dealer_research_all";
this.btn_dealer_research_all.Size = new System.Drawing.Size(162, 23);
this.btn_dealer_research_all.TabIndex = 10;
this.btn_dealer_research_all.Text = "Research All";
this.btn_dealer_research_all.UseVisualStyleBackColor = true;
this.btn_dealer_research_all.Click += new System.EventHandler(this.dealer_agency_research_all_Click);
//
// btn_dealer_research
//
this.btn_dealer_research.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_dealer_research.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_dealer_research.Location = new System.Drawing.Point(3, 73);
this.btn_dealer_research.Name = "btn_dealer_research";
this.btn_dealer_research.Size = new System.Drawing.Size(162, 23);
this.btn_dealer_research.TabIndex = 9;
this.btn_dealer_research.Text = "Research";
this.btn_dealer_research.UseVisualStyleBackColor = true;
this.btn_dealer_research.Click += new System.EventHandler(this.dealer_agency_research_Click);
//
// tbl_add_agency
//
this.tbl_add_agency.ColumnCount = 1;
this.tbl_add_agency.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tbl_add_agency.Controls.Add(this.btn_agency_research_all, 0, 3);
this.tbl_add_agency.Controls.Add(this.txt_agency_name, 0, 1);
this.tbl_add_agency.Controls.Add(this.btn_agency_research, 0, 2);
this.tbl_add_agency.Controls.Add(this.lbl_agency_name, 0, 0);
this.tbl_add_agency.Location = new System.Drawing.Point(484, 309);
this.tbl_add_agency.Name = "tbl_add_agency";
this.tbl_add_agency.RowCount = 4;
this.tbl_add_agency.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_agency.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_agency.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_agency.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tbl_add_agency.Size = new System.Drawing.Size(168, 131);
this.tbl_add_agency.TabIndex = 8;
//
// btn_agency_research_all
//
this.btn_agency_research_all.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_agency_research_all.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_agency_research_all.Location = new System.Drawing.Point(3, 102);
this.btn_agency_research_all.Name = "btn_agency_research_all";
this.btn_agency_research_all.Size = new System.Drawing.Size(162, 23);
this.btn_agency_research_all.TabIndex = 12;
this.btn_agency_research_all.Text = "Research All";
this.btn_agency_research_all.UseVisualStyleBackColor = true;
this.btn_agency_research_all.Click += new System.EventHandler(this.dealer_agency_research_all_Click);
//
// txt_agency_name
//
this.txt_agency_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txt_agency_name.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txt_agency_name.Location = new System.Drawing.Point(3, 36);
this.txt_agency_name.Name = "txt_agency_name";
this.txt_agency_name.Size = new System.Drawing.Size(162, 23);
this.txt_agency_name.TabIndex = 10;
//
// btn_agency_research
//
this.btn_agency_research.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.btn_agency_research.Font = new System.Drawing.Font("Calibri", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btn_agency_research.Location = new System.Drawing.Point(3, 68);
this.btn_agency_research.Name = "btn_agency_research";
this.btn_agency_research.Size = new System.Drawing.Size(162, 23);
this.btn_agency_research.TabIndex = 11;
this.btn_agency_research.Text = "Research";
this.btn_agency_research.UseVisualStyleBackColor = true;
this.btn_agency_research.Click += new System.EventHandler(this.dealer_agency_research_Click);
//
// lbl_agency_name
//
this.lbl_agency_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_agency_name.AutoSize = true;
this.lbl_agency_name.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_agency_name.Location = new System.Drawing.Point(3, 6);
this.lbl_agency_name.Name = "lbl_agency_name";
this.lbl_agency_name.Size = new System.Drawing.Size(162, 19);
this.lbl_agency_name.TabIndex = 10;
this.lbl_agency_name.Text = "Enter agency name:";
this.lbl_agency_name.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// SecondForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(659, 481);
this.Controls.Add(this.tbl_add_agency);
this.Controls.Add(this.tbl_add_dealer);
this.Controls.Add(this.tbl_agencies);
this.Controls.Add(this.tbl_dealerships);
this.Controls.Add(this.tbl_add_city);
this.Controls.Add(this.tbl_visited_cities);
this.Controls.Add(this.tbl_headquarter);
this.Controls.Add(this.tbl_add_garage);
this.Controls.Add(this.tbl_owned_garages);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "SecondForm";
this.Text = "Unlock garages, cities and etc...";
this.Load += new System.EventHandler(this.SecondForm_Load);
this.tbl_owned_garages.ResumeLayout(false);
this.tbl_owned_garages.PerformLayout();
this.tbl_add_garage.ResumeLayout(false);
this.tbl_add_garage.PerformLayout();
this.tbl_headquarter.ResumeLayout(false);
this.tbl_headquarter.PerformLayout();
this.tbl_visited_cities.ResumeLayout(false);
this.tbl_visited_cities.PerformLayout();
this.tbl_add_city.ResumeLayout(false);
this.tbl_add_city.PerformLayout();
this.tbl_dealerships.ResumeLayout(false);
this.tbl_dealerships.PerformLayout();
this.tbl_agencies.ResumeLayout(false);
this.tbl_agencies.PerformLayout();
this.tbl_add_dealer.ResumeLayout(false);
this.tbl_add_dealer.PerformLayout();
this.tbl_add_agency.ResumeLayout(false);
this.tbl_add_agency.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tbl_owned_garages;
private System.Windows.Forms.ListBox lb_owned_garages;
private System.Windows.Forms.Label lbl_owned_garages;
private System.Windows.Forms.Button btn_owned_garages_analyze;
private System.Windows.Forms.TableLayoutPanel tbl_add_garage;
private System.Windows.Forms.Label lbl_garage_name;
private System.Windows.Forms.TextBox txt_garage_name;
private System.Windows.Forms.ComboBox cb_garage_size;
private System.Windows.Forms.Button btn_garage_unlock;
private System.Windows.Forms.Button btn_garage_unlock_all;
private System.Windows.Forms.TableLayoutPanel tbl_headquarter;
private System.Windows.Forms.Label lbl_headquarter;
private System.Windows.Forms.TextBox txt_headquarter;
private System.Windows.Forms.Button btn_headquarter_change;
private System.Windows.Forms.TableLayoutPanel tbl_visited_cities;
private System.Windows.Forms.Label lbl_visited_cities;
private System.Windows.Forms.ListBox lb_visited_cities;
private System.Windows.Forms.TableLayoutPanel tbl_add_city;
private System.Windows.Forms.Label lbl_city_name;
private System.Windows.Forms.TextBox txt_city_name;
private System.Windows.Forms.Button btn_visit_city;
private System.Windows.Forms.Button btn_visit_all;
private System.Windows.Forms.TableLayoutPanel tbl_dealerships;
private System.Windows.Forms.ListBox lb_dealerships;
private System.Windows.Forms.Label lbl_dealership;
private System.Windows.Forms.TableLayoutPanel tbl_agencies;
private System.Windows.Forms.Label lbl_agencies;
private System.Windows.Forms.ListBox lb_agencies;
private System.Windows.Forms.TableLayoutPanel tbl_add_dealer;
private System.Windows.Forms.Label lbl_dealer_name;
private System.Windows.Forms.TextBox txt_dealer_name;
private System.Windows.Forms.Button btn_dealer_research_all;
private System.Windows.Forms.Button btn_dealer_research;
private System.Windows.Forms.TableLayoutPanel tbl_add_agency;
private System.Windows.Forms.Button btn_agency_research_all;
private System.Windows.Forms.TextBox txt_agency_name;
private System.Windows.Forms.Button btn_agency_research;
private System.Windows.Forms.Label lbl_agency_name;
}
}

344
SaveWizard/SecondForm.cs Normal file
View File

@@ -0,0 +1,344 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace SaveWizard
{
public partial class SecondForm: Form
{
private readonly Dictionary<string, List<int>> garages_stat = new Dictionary<string, List<int>>
{
{ "Small", new List<int>{ 1, 1 } },
{ "Medium", new List<int>{ 2, 3 } },
{ "Big", new List<int>{ 3, 5 } },
};
private readonly string selected_game;
private readonly Dictionary<string, bool> owns = null;
private List<string> dealers = null;
private List<string> agencies = null;
private List<string> AllCities()
{
List<string> cities = new List<string>();
string city;
foreach (string line in RegexHandler.GetArrayItems("companies:"))
{
city = Regex.Match(line, "company.volatile.[a-z0-9_]+[.]([a-z_]+)").Groups[1].ToString();
if (!cities.Contains(city))
cities.Add(city);
}
return cities;
}
private void AddVehiclesAndDrivers(int start_line, int garage_size)
{
int vehicles_array = RegexHandler.SearchLine("vehicles:", start: start_line);
int drivers_array = RegexHandler.SearchLine("drivers:", start: start_line);
for (int i = 1; i <= garage_size; i++)
{
RegexHandler.AddArrayValue(vehicles_array, "null");
RegexHandler.AddArrayValue(drivers_array + i, "null");
}
}
private List<string> PurchasedGarages()
{
List<string> garages = new List<string>();
string city;
foreach (int index in RegexHandler.SearchAllLines("garage : garage."))
{
city = Regex.Match(RegexHandler.GetLine(index), "garage : garage.(.+) {$").Groups[1].ToString();
if (RegexHandler.GetValue(RegexHandler.SearchLine("status:", start: index)) != "0")
garages.Add(city);
}
return garages;
}
private void CheckGarages()
{
lb_owned_garages.Items.Clear();
List<string> owned_garages = PurchasedGarages();
foreach (string garage in owned_garages)
lb_owned_garages.Items.Add(garage);
}
private void CheckCities()
{
txt_headquarter.Text = RegexHandler.GetValue(RegexHandler.SearchLine("hq_city:"));
lb_visited_cities.Items.Clear();
List<string> visited_cities = RegexHandler.GetArrayItems("visited_cities:");
if (visited_cities == null)
{
lb_visited_cities.Items.Add("No cities visited yet.");
return;
}
foreach (string city in visited_cities)
lb_visited_cities.Items.Add(city);
}
private void CheckDealers()
{
lb_dealerships.Items.Clear();
List<string> visited_dealers = RegexHandler.GetArrayItems("unlocked_dealers:");
if (visited_dealers == null)
{
lb_dealerships.Items.Add("No dealerships unlocked yet.");
return;
}
foreach (string city in visited_dealers)
lb_dealerships.Items.Add(city);
}
private void CheckAgencies()
{
lb_agencies.Items.Clear();
List<string> visited_agencies = RegexHandler.GetArrayItems("unlocked_recruitments:");
if (visited_agencies == null)
{
lb_agencies.Items.Add("No recruitment agencies unlocked yet.");
return;
}
foreach (string city in visited_agencies)
lb_agencies.Items.Add(city);
}
public SecondForm(string _selected_game, Dictionary<string, bool> _owns)
{
InitializeComponent();
selected_game = _selected_game;
//owns = new Dictionary<string, bool>(_owns);
owns = _owns;
KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string, string>[] {
new KeyValuePair<string, string>("Small", "Small"),
new KeyValuePair<string, string>("Medium", "Medium"),
new KeyValuePair<string, string>("Big", "Big"),
};
cb_garage_size.DataSource = kvpArr;
cb_garage_size.DisplayMember = "value";
cb_garage_size.ValueMember = "key";
}
private void SecondForm_Load(object sender, EventArgs e)
{
if (selected_game != null && owns != null)
{
string config_path = $"configs/{selected_game}";
if (File.Exists($"{config_path}/dealers.json"))
{
dealers = new List<string>();
Dictionary<string, string[]> dealers_file = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(File.ReadAllText($"{config_path}/dealers.json"));
foreach (KeyValuePair<string, bool> dlc in owns)
if (dlc.Value)
if (dealers_file.Keys.Contains(dlc.Key))
dealers.AddRange(dealers_file[dlc.Key]);
}
else
{
txt_dealer_name.Enabled = false;
btn_dealer_research.Enabled = false;
btn_dealer_research_all.Enabled = false;
}
if (File.Exists($"{config_path}/agencies.json"))
{
agencies = new List<string>();
Dictionary<string, string[]> agencies_file = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(File.ReadAllText($"{config_path}/agencies.json"));
foreach (KeyValuePair<string, bool> dlc in owns)
if (dlc.Value)
if (agencies_file.Keys.Contains(dlc.Key))
agencies.AddRange(agencies_file[dlc.Key]);
}
else
{
txt_agency_name.Enabled = false;
btn_agency_research.Enabled = false;
btn_agency_research_all.Enabled = false;
}
CheckGarages();
CheckCities();
CheckDealers();
CheckAgencies();
}
}
private void btn_garage_unlock_Click(object sender, EventArgs e)
{
string garage = txt_garage_name.Text.ToLower();
if (string.IsNullOrWhiteSpace(garage))
{
Utils.ShowError("Enter city name!");
return;
}
int garage_line = RegexHandler.SearchLine($"garage : garage.{garage} {{");
if (garage_line == 0)
{
Utils.ShowError($"Garage in \"{garage}\" not found.");
return;
}
int garage_status = RegexHandler.SearchLineInUnit("status:", $"garage.{garage}");
if (RegexHandler.GetValue(garage_status) != "0")
{
Utils.ShowError($"Garage in \"{garage}\" already unlocked.");
return;
}
List<int> garage_stat = garages_stat[cb_garage_size.SelectedValue.ToString()];
RegexHandler.SetValue(garage_status, garage_stat[0].ToString());
AddVehiclesAndDrivers(garage_status, garage_stat[1]);
Utils.ShowInfo($"Garage in \"{garage}\" successfully unlocked.");
CheckGarages();
}
private void btn_garage_unlock_all_Click(object sender, EventArgs e)
{
List<int> garage_stat = garages_stat[cb_garage_size.SelectedValue.ToString()];
string garage_match;
int current_garage, current_status;
foreach (string item in RegexHandler.GetArrayItems("garages:"))
{
garage_match = Regex.Match(item, "garage.(.+)$").Groups[1].ToString();
current_garage = RegexHandler.SearchLine($"garage : garage.{garage_match} {{");
current_status = RegexHandler.SearchLine("status:", start: current_garage);
if (RegexHandler.GetValue(current_status) == "0")
{
RegexHandler.SetValue(current_status, garage_stat[0].ToString());
AddVehiclesAndDrivers(current_garage, garage_stat[1]);
}
}
Utils.ShowInfo("All garages successfully unlocked.");
CheckGarages();
}
private void btn_headquarter_change_Click(object sender, EventArgs e)
{
string hq = txt_headquarter.Text.ToLower();
if (string.IsNullOrWhiteSpace(hq))
{
Utils.ShowError("Enter city name!");
return;
}
if (RegexHandler.GetValue(RegexHandler.SearchLine("hq_city:")) == hq)
Utils.ShowInfo("Your headquarter is already in this city.");
else if (!PurchasedGarages().Contains(hq))
Utils.ShowError($"You need a garage in \"{hq}\" to set headquarter.");
else
{
RegexHandler.SetValue(RegexHandler.SearchLine("hq_city:"), hq);
Utils.ShowInfo($"Headquarter successfully set to \"{hq}\".");
}
}
private void btn_visit_city_Click(object sender, EventArgs e)
{
string city = txt_city_name.Text.ToLower();
if (string.IsNullOrWhiteSpace(city))
{
Utils.ShowError("Enter city name!");
return;
}
txt_city_name.Text = "";
if (RegexHandler.GetArrayItems("visited_cities:").Contains(city))
{
Utils.ShowError($"You've already visited \"{city}\".");
return;
}
RegexHandler.AddArrayValue(RegexHandler.SearchLine("visited_cities:"), city);
RegexHandler.AddArrayValue(RegexHandler.SearchLine("visited_cities_count:"), "1");
Utils.ShowInfo($"City \"{city}\" successfully visited.");
}
private void btn_visit_all_Click(object sender, EventArgs e)
{
List<string> all_cities = AllCities();
List<string> visited_cities = RegexHandler.GetArrayItems("visited_cities:");
foreach (string city in all_cities)
{
if (!visited_cities.Contains(city))
{
RegexHandler.AddArrayValue(RegexHandler.SearchLine("visited_cities:"), city);
RegexHandler.AddArrayValue(RegexHandler.SearchLine("visited_cities_count:"), "1");
}
}
Utils.ShowInfo("All cities successfully visited.");
CheckCities();
}
private void dealer_agency_research_Click(object sender, EventArgs e)
{
TextBox new_city;
List<string> cities_list;
Action check_func;
string search_line, message;
if ((sender as Button) == btn_dealer_research)
{
new_city = txt_dealer_name;
cities_list = dealers;
search_line = "unlocked_dealers:";
check_func = CheckDealers;
message = "Dealership";
}
else
{
new_city = txt_agency_name;
cities_list = agencies;
search_line = "unlocked_recruitments:";
check_func = CheckAgencies;
message = "Recruitment agency";
}
string element = new_city.Text.ToLower();
if (string.IsNullOrWhiteSpace(element))
{
Utils.ShowError("Enter city name!");
return;
}
new_city.Text = "";
if (!cities_list.Contains(element))
{
Utils.ShowError($"There is no {message.ToLower()} in that city.");
return;
}
List<string> already_visited = RegexHandler.GetArrayItems(search_line);
if (already_visited != null && already_visited.Contains(element))
{
Utils.ShowInfo($"{message} in \"{element}\" is already unlocked.");
return;
}
RegexHandler.AddArrayValue(RegexHandler.SearchLine(search_line), element);
Utils.ShowInfo($"{message} in \"{element}\" successfully unlocked.");
check_func();
}
private void dealer_agency_research_all_Click(object sender, EventArgs e)
{
List<string> cities_list;
string search_line, message;
Action check_func;
if ((sender as Button) == btn_dealer_research_all)
{
cities_list = dealers;
search_line = "unlocked_dealers:";
check_func = CheckDealers;
message = "All dealerships unlocked.";
}
else
{
cities_list = agencies;
search_line = "unlocked_recruitments:";
check_func = CheckAgencies;
message = "All recruitment agencies unlocked.";
}
List<string> all_cities = AllCities();
int file_line = RegexHandler.SearchLine(search_line);
List<string> unlocked_cities = RegexHandler.GetArrayItems(file_line);
foreach (string element in cities_list)
if (all_cities.Contains(element) && (unlocked_cities == null || !unlocked_cities.Contains(element)))
RegexHandler.AddArrayValue(file_line, element);
Utils.ShowInfo(message);
check_func();
}
}
}

120
SaveWizard/SecondForm.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

98
SaveWizard/UpdateForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,98 @@
namespace SaveWizard
{
partial class UpdateForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.lbl_downloading = new System.Windows.Forms.Label();
this.lbl_progress = new System.Windows.Forms.Label();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.SuspendLayout();
//
// lbl_downloading
//
this.lbl_downloading.AutoSize = true;
this.lbl_downloading.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_downloading.Location = new System.Drawing.Point(12, 9);
this.lbl_downloading.Name = "lbl_downloading";
this.lbl_downloading.Size = new System.Drawing.Size(148, 18);
this.lbl_downloading.TabIndex = 0;
this.lbl_downloading.Text = "Downloading configs...";
//
// lbl_progress
//
this.lbl_progress.AutoSize = true;
this.lbl_progress.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbl_progress.Location = new System.Drawing.Point(166, 9);
this.lbl_progress.Name = "lbl_progress";
this.lbl_progress.Size = new System.Drawing.Size(28, 18);
this.lbl_progress.TabIndex = 1;
this.lbl_progress.Text = "0/6";
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(12, 34);
this.progressBar1.Maximum = 6;
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(182, 23);
this.progressBar1.TabIndex = 2;
//
// backgroundWorker1
//
this.backgroundWorker1.WorkerReportsProgress = true;
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
this.backgroundWorker1.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged);
this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
//
// ProgressWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(204, 66);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.lbl_progress);
this.Controls.Add(this.lbl_downloading);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ProgressWindow";
this.Text = "Updating...";
this.Load += new System.EventHandler(this.ProgressWindow_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label lbl_downloading;
private System.Windows.Forms.Label lbl_progress;
private System.Windows.Forms.ProgressBar progressBar1;
private System.ComponentModel.BackgroundWorker backgroundWorker1;
}
}

80
SaveWizard/UpdateForm.cs Normal file
View File

@@ -0,0 +1,80 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace SaveWizard
{
public partial class UpdateForm: Form
{
private static readonly string githubLink = "https://raw.githubusercontent.com/JDM170/SaveWizard/configs/";
public UpdateForm()
{
InitializeComponent();
}
private static void CheckPath(string path)
{
string currentDirectory = Environment.CurrentDirectory;
foreach (string unit in Regex.Split(path, "/"))
{
currentDirectory = Path.Combine(currentDirectory, unit);
if (!unit.Contains(".json"))
{
if (!Directory.Exists(currentDirectory))
Directory.CreateDirectory(currentDirectory);
}
else
{
if (!File.Exists(currentDirectory))
File.WriteAllText(currentDirectory, "");
}
}
}
private void ProgressWindow_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
using (WebClient wb = new WebClient())
{
wb.Encoding = Encoding.UTF8;
string responseInString = wb.DownloadString($"{githubLink}configs/version.cfg");
Dictionary<string, string> result = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseInString);
string[] splitted;
string path;
foreach (KeyValuePair<string, string> unit in result)
{
splitted = Regex.Split(unit.Key, "_");
path = $"configs/{splitted.GetValue(0)}/{splitted.GetValue(1)}.json";
CheckPath(path);
if (Utils.GenerateMD5(path) != unit.Value)
{
string newConfigText = wb.DownloadString($"{githubLink}{path}");
File.WriteAllText(Path.Combine(Environment.CurrentDirectory, path), newConfigText);
}
backgroundWorker1.ReportProgress(progressBar1.Value + 1);
}
}
}
private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
lbl_progress.Text = $"{e.ProgressPercentage}/6";
}
private void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
Close();
}
}
}

123
SaveWizard/UpdateForm.resx Normal file
View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

38
SaveWizard/Utils.cs Normal file
View File

@@ -0,0 +1,38 @@
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
namespace SaveWizard
{
static class Utils
{
public static string GenerateMD5(string filename)
{
if (!File.Exists(filename))
return null;
using (var md5 = MD5.Create())
{
using (FileStream stream = File.OpenRead(filename))
md5.ComputeHash(stream);
StringBuilder sb = new StringBuilder();
byte[] hash = md5.Hash;
for (int i = 0; i < hash.Length; i++)
sb.Append(hash[i].ToString("x2"));
return sb.ToString();
}
}
public static void ShowError(string message)
{
MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
public static void ShowInfo(string message)
{
MessageBox.Show(message, "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ILRepack.Lib.MSBuild.Task" version="2.0.37" targetFramework="net48" developmentDependency="true" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
</packages>