From fcc37e5796101ce263e5cd782b52360c469d023d Mon Sep 17 00:00:00 2001 From: Semka Date: Tue, 29 Nov 2022 03:19:29 +0400 Subject: [PATCH] commit 06 full --- .../GasolineTanker/DrawningGasolineTanker.cs | 18 +- .../GasolineTanker/DrawningObjectTanker.cs | 2 + .../GasolineTanker/ExtensionTanker.cs | 40 ++ .../FormMapWithSetTankers.Designer.cs | 404 ++++++++++-------- .../GasolineTanker/FormMapWithSetTankers.cs | 39 ++ .../GasolineTanker/FormMapWithSetTankers.resx | 12 + .../FormTankerConfig.Designer.cs | 329 +++++++------- .../GasolineTanker/FormTankerConfig.cs | 120 ++++-- .../GasolineTanker/IDrawningObject.cs | 1 + .../MapWithSetTankersGeneric.cs | 17 +- .../GasolineTanker/MapsCollection.cs | 88 +++- 11 files changed, 678 insertions(+), 392 deletions(-) create mode 100644 GasolineTanker/GasolineTanker/ExtensionTanker.cs diff --git a/GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs b/GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs index e20cf53..cc9c5c3 100644 --- a/GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs +++ b/GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - + namespace GasolineTanker { internal class DrawningGasolineTanker : DrawningTanker @@ -15,11 +10,11 @@ namespace GasolineTanker /// Вес автомобиля /// Цвет кузова /// Дополнительный цвет - /// Признак наличия обвеса - /// Признак наличия антикрыла - /// Признак наличия гоночной полосы + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия гоночной полосы public DrawningGasolineTanker(int speed, float weight, Color bodyColor, Color dopColor, bool Cabin, bool Signal, bool BenzoBack) : - base(speed, weight, bodyColor, 160, 125) + base(speed, weight, bodyColor, 110, 60) { Tanker = new EntityGasolineTanker(speed, weight, bodyColor, dopColor, Cabin, Signal, BenzoBack); } @@ -50,7 +45,7 @@ namespace GasolineTanker //Бензобак if (GasolineTanker.BenzoBack) { - g.FillEllipse(dopBrush, _startPosX+10, _startPosY+5, 100, 50); + g.FillEllipse(dopBrush, _startPosX + 10, _startPosY + 5, 100, 50); } //Сигналка if (GasolineTanker.Signal) @@ -61,3 +56,4 @@ namespace GasolineTanker } } } + diff --git a/GasolineTanker/GasolineTanker/DrawningObjectTanker.cs b/GasolineTanker/GasolineTanker/DrawningObjectTanker.cs index 365ae33..54c33fe 100644 --- a/GasolineTanker/GasolineTanker/DrawningObjectTanker.cs +++ b/GasolineTanker/GasolineTanker/DrawningObjectTanker.cs @@ -36,5 +36,7 @@ namespace GasolineTanker { _Tanker.DrawTransport(g); } + public string GetInfo() => _Tanker?.GetDataForSave(); + public static IDrawningObject Create(string data) => new DrawningObjectTanker(data.CreateDrawningTanker()); } } diff --git a/GasolineTanker/GasolineTanker/ExtensionTanker.cs b/GasolineTanker/GasolineTanker/ExtensionTanker.cs new file mode 100644 index 0000000..f853d51 --- /dev/null +++ b/GasolineTanker/GasolineTanker/ExtensionTanker.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GasolineTanker +{ + internal static class ExtensionTanker + { + private static readonly char _separatorForObject = ':'; + public static DrawningTanker CreateDrawningTanker(this string info) + { + string[] strs = info.Split(_separatorForObject); + if (strs.Length == 3) + { + return new DrawningTanker(Convert.ToInt32(strs[0]), + Convert.ToInt32(strs[1]), Color.FromName(strs[2])); + } + if (strs.Length == 7) + { + return new DrawningGasolineTanker(Convert.ToInt32(strs[0]), + Convert.ToInt32(strs[1]), Color.FromName(strs[2]), + Color.FromName(strs[3]), Convert.ToBoolean(strs[4]), + Convert.ToBoolean(strs[5]), Convert.ToBoolean(strs[6])); + } + return null; + } + public static string GetDataForSave(this DrawningTanker drawningTanker) + { + var tanker = drawningTanker.Tanker; + var str = $"{tanker.Speed}{_separatorForObject}{tanker.Weight}{_separatorForObject}{tanker.BodyColor.Name}"; + if (tanker is not EntityGasolineTanker gasolineTanker) + { + return str; + } + return $"{str}{_separatorForObject}{gasolineTanker.DopColor.Name}{_separatorForObject}{gasolineTanker.Cabin}{_separatorForObject}{gasolineTanker.Signal}{_separatorForObject}{gasolineTanker.BenzoBack}"; + } + } +} diff --git a/GasolineTanker/GasolineTanker/FormMapWithSetTankers.Designer.cs b/GasolineTanker/GasolineTanker/FormMapWithSetTankers.Designer.cs index 22ccdf8..3bd4b66 100644 --- a/GasolineTanker/GasolineTanker/FormMapWithSetTankers.Designer.cs +++ b/GasolineTanker/GasolineTanker/FormMapWithSetTankers.Designer.cs @@ -21,198 +21,112 @@ } #region Windows Form Designer generated code + /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.groupBoxTool = new System.Windows.Forms.GroupBox(); + this.groupBoxTools = new System.Windows.Forms.GroupBox(); this.groupBoxMaps = new System.Windows.Forms.GroupBox(); - this.listBoxMaps = new System.Windows.Forms.ListBox(); this.buttonAddMap = new System.Windows.Forms.Button(); this.buttonDeleteMap = new System.Windows.Forms.Button(); + this.listBoxMaps = new System.Windows.Forms.ListBox(); this.textBoxNewMapName = new System.Windows.Forms.TextBox(); - this.buttonShowOnMap = new System.Windows.Forms.Button(); - this.buttonLeft = new System.Windows.Forms.Button(); - this.buttonRight = new System.Windows.Forms.Button(); - this.buttonDown = new System.Windows.Forms.Button(); - this.buttonUp = new System.Windows.Forms.Button(); - this.buttonShowStorage = new System.Windows.Forms.Button(); - this.buttonRemoveTanker = new System.Windows.Forms.Button(); - this.maskedTextBoxPosition = new System.Windows.Forms.MaskedTextBox(); - this.buttonAddTanker = new System.Windows.Forms.Button(); this.comboBoxSelectorMap = new System.Windows.Forms.ComboBox(); + this.maskedTextBoxPosition = new System.Windows.Forms.MaskedTextBox(); + this.buttonRemoveTanker = new System.Windows.Forms.Button(); + this.buttonShowStorage = new System.Windows.Forms.Button(); + this.buttonDown = new System.Windows.Forms.Button(); + this.buttonRight = new System.Windows.Forms.Button(); + this.buttonLeft = new System.Windows.Forms.Button(); + this.buttonUp = new System.Windows.Forms.Button(); + this.buttonShowOnMap = new System.Windows.Forms.Button(); + this.buttonAddTanker = new System.Windows.Forms.Button(); this.pictureBox = new System.Windows.Forms.PictureBox(); - this.groupBoxTool.SuspendLayout(); - + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.FileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SaveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.LoadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.saveFileDialog = new System.Windows.Forms.SaveFileDialog(); + this.groupBoxTools.SuspendLayout(); + this.groupBoxMaps.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); + this.menuStrip.SuspendLayout(); this.SuspendLayout(); // - // groupBoxTool + // groupBoxTools // - this.groupBoxTool.Controls.Add(this.groupBoxMaps); - this.groupBoxTool.Controls.Add(this.buttonShowOnMap); - this.groupBoxTool.Controls.Add(this.buttonLeft); - this.groupBoxTool.Controls.Add(this.buttonRight); - this.groupBoxTool.Controls.Add(this.buttonDown); - this.groupBoxTool.Controls.Add(this.buttonUp); - this.groupBoxTool.Controls.Add(this.buttonShowStorage); - this.groupBoxTool.Controls.Add(this.buttonRemoveTanker); - this.groupBoxTool.Controls.Add(this.maskedTextBoxPosition); - this.groupBoxTool.Controls.Add(this.buttonAddTanker); - this.groupBoxTool.Dock = System.Windows.Forms.DockStyle.Right; - this.groupBoxTool.Location = new System.Drawing.Point(962, 0); - this.groupBoxTool.Name = "groupBoxTool"; - this.groupBoxTool.Size = new System.Drawing.Size(220, 753); - this.groupBoxTool.TabIndex = 0; - this.groupBoxTool.TabStop = false; - this.groupBoxTool.Text = "Инструменты"; + this.groupBoxTools.Controls.Add(this.groupBoxMaps); + this.groupBoxTools.Controls.Add(this.maskedTextBoxPosition); + this.groupBoxTools.Controls.Add(this.buttonRemoveTanker); + this.groupBoxTools.Controls.Add(this.buttonShowStorage); + this.groupBoxTools.Controls.Add(this.buttonDown); + this.groupBoxTools.Controls.Add(this.buttonRight); + this.groupBoxTools.Controls.Add(this.buttonLeft); + this.groupBoxTools.Controls.Add(this.buttonUp); + this.groupBoxTools.Controls.Add(this.buttonShowOnMap); + this.groupBoxTools.Controls.Add(this.buttonAddTanker); + this.groupBoxTools.Dock = System.Windows.Forms.DockStyle.Right; + this.groupBoxTools.Location = new System.Drawing.Point(811, 24); + this.groupBoxTools.Name = "groupBoxTools"; + this.groupBoxTools.Size = new System.Drawing.Size(204, 608); + this.groupBoxTools.TabIndex = 0; + this.groupBoxTools.TabStop = false; + this.groupBoxTools.Text = "Инструменты"; // // groupBoxMaps // - this.groupBoxMaps.Controls.Add(this.listBoxMaps); this.groupBoxMaps.Controls.Add(this.buttonAddMap); this.groupBoxMaps.Controls.Add(this.buttonDeleteMap); + this.groupBoxMaps.Controls.Add(this.listBoxMaps); this.groupBoxMaps.Controls.Add(this.textBoxNewMapName); this.groupBoxMaps.Controls.Add(this.comboBoxSelectorMap); - this.groupBoxMaps.Location = new System.Drawing.Point(6, 26); + this.groupBoxMaps.Location = new System.Drawing.Point(6, 22); this.groupBoxMaps.Name = "groupBoxMaps"; - this.groupBoxMaps.Size = new System.Drawing.Size(207, 289); - this.groupBoxMaps.TabIndex = 10; + this.groupBoxMaps.Size = new System.Drawing.Size(192, 248); + this.groupBoxMaps.TabIndex = 0; this.groupBoxMaps.TabStop = false; this.groupBoxMaps.Text = "Карты"; // - // listBoxMaps - // - this.listBoxMaps.FormattingEnabled = true; - this.listBoxMaps.ItemHeight = 20; - this.listBoxMaps.Location = new System.Drawing.Point(4, 142); - this.listBoxMaps.Name = "listBoxMaps"; - this.listBoxMaps.Size = new System.Drawing.Size(200, 104); - this.listBoxMaps.TabIndex = 13; - this.listBoxMaps.SelectedIndexChanged += new System.EventHandler(this.listBoxMaps_SelectedIndexChanged); - // // buttonAddMap // - this.buttonAddMap.Location = new System.Drawing.Point(4, 106); + this.buttonAddMap.Location = new System.Drawing.Point(11, 80); this.buttonAddMap.Name = "buttonAddMap"; - this.buttonAddMap.Size = new System.Drawing.Size(200, 30); - this.buttonAddMap.TabIndex = 11; + this.buttonAddMap.Size = new System.Drawing.Size(175, 35); + this.buttonAddMap.TabIndex = 2; this.buttonAddMap.Text = "Добавить карту"; this.buttonAddMap.UseVisualStyleBackColor = true; this.buttonAddMap.Click += new System.EventHandler(this.ButtonAddMap_Click); // // buttonDeleteMap // - this.buttonDeleteMap.Location = new System.Drawing.Point(4, 252); + this.buttonDeleteMap.Location = new System.Drawing.Point(11, 206); this.buttonDeleteMap.Name = "buttonDeleteMap"; - this.buttonDeleteMap.Size = new System.Drawing.Size(200, 30); - this.buttonDeleteMap.TabIndex = 12; + this.buttonDeleteMap.Size = new System.Drawing.Size(175, 35); + this.buttonDeleteMap.TabIndex = 4; this.buttonDeleteMap.Text = "Удалить карту"; this.buttonDeleteMap.UseVisualStyleBackColor = true; this.buttonDeleteMap.Click += new System.EventHandler(this.ButtonDeleteMap_Click); // + // listBoxMaps + // + this.listBoxMaps.FormattingEnabled = true; + this.listBoxMaps.ItemHeight = 15; + this.listBoxMaps.Location = new System.Drawing.Point(11, 121); + this.listBoxMaps.Name = "listBoxMaps"; + this.listBoxMaps.Size = new System.Drawing.Size(175, 79); + this.listBoxMaps.TabIndex = 3; + this.listBoxMaps.SelectedIndexChanged += new System.EventHandler(this.listBoxMaps_SelectedIndexChanged); + // // textBoxNewMapName // - this.textBoxNewMapName.Location = new System.Drawing.Point(4, 26); + this.textBoxNewMapName.Location = new System.Drawing.Point(11, 22); this.textBoxNewMapName.Name = "textBoxNewMapName"; - this.textBoxNewMapName.Size = new System.Drawing.Size(200, 27); - this.textBoxNewMapName.TabIndex = 11; - // - // buttonShowOnMap - // - this.buttonShowOnMap.Location = new System.Drawing.Point(10, 572); - this.buttonShowOnMap.Name = "buttonShowOnMap"; - this.buttonShowOnMap.Size = new System.Drawing.Size(200, 30); - this.buttonShowOnMap.TabIndex = 9; - this.buttonShowOnMap.Text = "Посмотреть карту"; - this.buttonShowOnMap.UseVisualStyleBackColor = true; - this.buttonShowOnMap.Click += new System.EventHandler(this.ButtonShowOnMap_Click); - // - // buttonLeft - // - this.buttonLeft.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowLeft; - this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonLeft.Location = new System.Drawing.Point(50, 700); - this.buttonLeft.Name = "buttonLeft"; - this.buttonLeft.Size = new System.Drawing.Size(40, 40); - this.buttonLeft.TabIndex = 8; - this.buttonLeft.UseVisualStyleBackColor = true; - this.buttonLeft.Click += new System.EventHandler(this.ButtonMove_Click); - // - // buttonRight - // - this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonRight.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowRight; - this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonRight.Location = new System.Drawing.Point(140, 700); - this.buttonRight.Name = "buttonRight"; - this.buttonRight.Size = new System.Drawing.Size(40, 40); - this.buttonRight.TabIndex = 7; - this.buttonRight.UseVisualStyleBackColor = true; - this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click); - // - // buttonDown - // - this.buttonDown.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowDown; - this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonDown.Location = new System.Drawing.Point(95, 700); - this.buttonDown.Name = "buttonDown"; - this.buttonDown.Size = new System.Drawing.Size(40, 40); - this.buttonDown.TabIndex = 6; - this.buttonDown.UseVisualStyleBackColor = true; - this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click); - // - // buttonUp - // - this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonUp.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowUp; - this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonUp.Location = new System.Drawing.Point(95, 655); - this.buttonUp.Name = "buttonUp"; - this.buttonUp.Size = new System.Drawing.Size(40, 40); - this.buttonUp.TabIndex = 5; - this.buttonUp.UseVisualStyleBackColor = true; - this.buttonUp.Click += new System.EventHandler(this.ButtonMove_Click); - // - // buttonShowStorage - // - this.buttonShowStorage.Location = new System.Drawing.Point(10, 484); - this.buttonShowStorage.Name = "buttonShowStorage"; - this.buttonShowStorage.Size = new System.Drawing.Size(200, 30); - this.buttonShowStorage.TabIndex = 4; - this.buttonShowStorage.Text = "Посмотреть хранилище"; - this.buttonShowStorage.UseVisualStyleBackColor = true; - this.buttonShowStorage.Click += new System.EventHandler(this.ButtonShowStorage_Click); - // - // buttonRemoveTanker - // - this.buttonRemoveTanker.Location = new System.Drawing.Point(10, 436); - this.buttonRemoveTanker.Name = "buttonRemoveTanker"; - this.buttonRemoveTanker.Size = new System.Drawing.Size(200, 30); - this.buttonRemoveTanker.TabIndex = 3; - this.buttonRemoveTanker.Text = "Удалить грузовик"; - this.buttonRemoveTanker.UseVisualStyleBackColor = true; - this.buttonRemoveTanker.Click += new System.EventHandler(this.ButtonRemoveTanker_Click); - // - // maskedTextBoxPosition - // - this.maskedTextBoxPosition.Location = new System.Drawing.Point(10, 403); - this.maskedTextBoxPosition.Name = "maskedTextBoxPosition"; - this.maskedTextBoxPosition.Size = new System.Drawing.Size(200, 27); - this.maskedTextBoxPosition.TabIndex = 2; - this.maskedTextBoxPosition.Text = "_"; - // - // buttonAddTanker - // - this.buttonAddTanker.Location = new System.Drawing.Point(10, 367); - this.buttonAddTanker.Name = "buttonAddTanker"; - this.buttonAddTanker.Size = new System.Drawing.Size(200, 30); - this.buttonAddTanker.TabIndex = 1; - this.buttonAddTanker.Text = "Добавить грузовик"; - this.buttonAddTanker.UseVisualStyleBackColor = true; - this.buttonAddTanker.Click += new System.EventHandler(this.ButtonAddTanker_Click); + this.textBoxNewMapName.Size = new System.Drawing.Size(175, 23); + this.textBoxNewMapName.TabIndex = 0; // // comboBoxSelectorMap // @@ -222,56 +136,204 @@ "Простая карта", "Минное поле", "Лужайка"}); - this.comboBoxSelectorMap.Location = new System.Drawing.Point(4, 60); + this.comboBoxSelectorMap.Location = new System.Drawing.Point(11, 51); this.comboBoxSelectorMap.Name = "comboBoxSelectorMap"; - this.comboBoxSelectorMap.Size = new System.Drawing.Size(200, 28); - this.comboBoxSelectorMap.TabIndex = 0; + this.comboBoxSelectorMap.Size = new System.Drawing.Size(175, 23); + this.comboBoxSelectorMap.TabIndex = 1; + // + // maskedTextBoxPosition + // + this.maskedTextBoxPosition.Location = new System.Drawing.Point(17, 355); + this.maskedTextBoxPosition.Mask = "00"; + this.maskedTextBoxPosition.Name = "maskedTextBoxPosition"; + this.maskedTextBoxPosition.Size = new System.Drawing.Size(175, 23); + this.maskedTextBoxPosition.TabIndex = 2; + this.maskedTextBoxPosition.ValidatingType = typeof(int); + // + // buttonRemoveTanker + // + this.buttonRemoveTanker.Location = new System.Drawing.Point(17, 384); + this.buttonRemoveTanker.Name = "buttonRemoveTanker"; + this.buttonRemoveTanker.Size = new System.Drawing.Size(175, 35); + this.buttonRemoveTanker.TabIndex = 3; + this.buttonRemoveTanker.Text = "Удалить грузовик"; + this.buttonRemoveTanker.UseVisualStyleBackColor = true; + this.buttonRemoveTanker.Click += new System.EventHandler(this.ButtonRemoveTanker_Click); + // + // buttonShowStorage + // + this.buttonShowStorage.Location = new System.Drawing.Point(17, 437); + this.buttonShowStorage.Name = "buttonShowStorage"; + this.buttonShowStorage.Size = new System.Drawing.Size(175, 35); + this.buttonShowStorage.TabIndex = 4; + this.buttonShowStorage.Text = "Посмотреть хранилище"; + this.buttonShowStorage.UseVisualStyleBackColor = true; + this.buttonShowStorage.Click += new System.EventHandler(this.ButtonShowStorage_Click); + // + // buttonDown + // + this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonDown.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowDown; + this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonDown.Location = new System.Drawing.Point(91, 558); + this.buttonDown.Name = "buttonDown"; + this.buttonDown.Size = new System.Drawing.Size(30, 30); + this.buttonDown.TabIndex = 10; + this.buttonDown.UseVisualStyleBackColor = true; + this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonRight + // + this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonRight.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowRight; + this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonRight.Location = new System.Drawing.Point(127, 558); + this.buttonRight.Name = "buttonRight"; + this.buttonRight.Size = new System.Drawing.Size(30, 30); + this.buttonRight.TabIndex = 9; + this.buttonRight.UseVisualStyleBackColor = true; + this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonLeft + // + this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonLeft.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowLeft; + this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonLeft.Location = new System.Drawing.Point(55, 558); + this.buttonLeft.Name = "buttonLeft"; + this.buttonLeft.Size = new System.Drawing.Size(30, 30); + this.buttonLeft.TabIndex = 8; + this.buttonLeft.UseVisualStyleBackColor = true; + this.buttonLeft.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonUp + // + this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUp.BackgroundImage = global::GasolineTanker.Properties.Resources.arrowUp; + this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonUp.Location = new System.Drawing.Point(91, 522); + this.buttonUp.Name = "buttonUp"; + this.buttonUp.Size = new System.Drawing.Size(30, 30); + this.buttonUp.TabIndex = 7; + this.buttonUp.UseVisualStyleBackColor = true; + this.buttonUp.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonShowOnMap + // + this.buttonShowOnMap.Location = new System.Drawing.Point(17, 487); + this.buttonShowOnMap.Name = "buttonShowOnMap"; + this.buttonShowOnMap.Size = new System.Drawing.Size(175, 35); + this.buttonShowOnMap.TabIndex = 5; + this.buttonShowOnMap.Text = "Посмотреть карту"; + this.buttonShowOnMap.UseVisualStyleBackColor = true; + this.buttonShowOnMap.Click += new System.EventHandler(this.ButtonShowOnMap_Click); + // + // buttonAddTanker + // + this.buttonAddTanker.Location = new System.Drawing.Point(17, 314); + this.buttonAddTanker.Name = "buttonAddTanker"; + this.buttonAddTanker.Size = new System.Drawing.Size(175, 35); + this.buttonAddTanker.TabIndex = 1; + this.buttonAddTanker.Text = "Добавить грузовик"; + this.buttonAddTanker.UseVisualStyleBackColor = true; + this.buttonAddTanker.Click += new System.EventHandler(this.ButtonAddTanker_Click); // // pictureBox // this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBox.Location = new System.Drawing.Point(0, 0); + this.pictureBox.Location = new System.Drawing.Point(0, 24); this.pictureBox.Name = "pictureBox"; - this.pictureBox.Size = new System.Drawing.Size(962, 753); - this.pictureBox.TabIndex = 9; + this.pictureBox.Size = new System.Drawing.Size(811, 608); + this.pictureBox.TabIndex = 1; this.pictureBox.TabStop = false; // - // FormMapWithSetTankers + // menuStrip // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.FileToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(1015, 24); + this.menuStrip.TabIndex = 2; + // + // FileToolStripMenuItem + // + this.FileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.SaveToolStripMenuItem, + this.LoadToolStripMenuItem}); + this.FileToolStripMenuItem.Name = "файлToolStripMenuItem"; + this.FileToolStripMenuItem.Size = new System.Drawing.Size(48, 20); + this.FileToolStripMenuItem.Text = "Файл"; + // + // SaveToolStripMenuItem + // + this.SaveToolStripMenuItem.Name = "SaveToolStripMenuItem"; + this.SaveToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.SaveToolStripMenuItem.Text = "Сохранение"; + this.SaveToolStripMenuItem.Click += new System.EventHandler(this.SaveToolStripMenuItem_Click); + // + // LoadToolStripMenuItem + // + this.LoadToolStripMenuItem.Name = "LoadToolStripMenuItem"; + this.LoadToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.LoadToolStripMenuItem.Text = "Загрузка"; + this.LoadToolStripMenuItem.Click += new System.EventHandler(this.LoadToolStripMenuItem_Click); + // + // openFileDialog + // + this.openFileDialog.Filter = "txt file | *.txt"; + // + // saveFileDialog + // + this.saveFileDialog.Filter = "txt file | *.txt"; + // + // FormMapWithSetCars + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1182, 753); + this.ClientSize = new System.Drawing.Size(1015, 632); this.Controls.Add(this.pictureBox); - this.Controls.Add(this.groupBoxTool); - this.Name = "FormMapWithSetTankers"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Controls.Add(this.groupBoxTools); + this.Controls.Add(this.menuStrip); + this.MainMenuStrip = this.menuStrip; + this.Name = "FormMapWithSetCars"; this.Text = "Карта с набором объектов"; - this.groupBoxTool.ResumeLayout(false); - this.groupBoxTool.PerformLayout(); + this.groupBoxTools.ResumeLayout(false); + this.groupBoxTools.PerformLayout(); this.groupBoxMaps.ResumeLayout(false); this.groupBoxMaps.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } #endregion - private GroupBox groupBoxTool; - private Button buttonLeft; - private Button buttonRight; + + private GroupBox groupBoxTools; + private PictureBox pictureBox; + private ComboBox comboBoxSelectorMap; + private Button buttonShowOnMap; + private Button buttonAddTanker; private Button buttonDown; + private Button buttonRight; + private Button buttonLeft; private Button buttonUp; private Button buttonShowStorage; private Button buttonRemoveTanker; private MaskedTextBox maskedTextBoxPosition; - private Button buttonAddTanker; - private ComboBox comboBoxSelectorMap; - private PictureBox pictureBox; - private Button buttonShowOnMap; private GroupBox groupBoxMaps; - private ListBox listBoxMaps; - private Button buttonAddMap; private Button buttonDeleteMap; + private ListBox listBoxMaps; private TextBox textBoxNewMapName; + private Button buttonAddMap; + private MenuStrip menuStrip; + private ToolStripMenuItem FileToolStripMenuItem; + private ToolStripMenuItem SaveToolStripMenuItem; + private ToolStripMenuItem LoadToolStripMenuItem; + private OpenFileDialog openFileDialog; + private SaveFileDialog saveFileDialog; } } \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/FormMapWithSetTankers.cs b/GasolineTanker/GasolineTanker/FormMapWithSetTankers.cs index 2a0c424..b49c652 100644 --- a/GasolineTanker/GasolineTanker/FormMapWithSetTankers.cs +++ b/GasolineTanker/GasolineTanker/FormMapWithSetTankers.cs @@ -180,5 +180,44 @@ namespace GasolineTanker } pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].MoveObject(dir); } + private void SaveToolStripMenuItem_Click(object sender, EventArgs e) + { + if (saveFileDialog.ShowDialog() == DialogResult.OK) + { + if (_mapsCollection.SaveData(saveFileDialog.FileName)) + { + MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + /// + /// Обработка нажатия "Загрузка" + /// + /// + /// + private void LoadToolStripMenuItem_Click(object sender, EventArgs e) + { + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + if (_mapsCollection.LoadData(openFileDialog.FileName)) + { + ReloadMaps(); + MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("Не загрузилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + private void menuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + + } } } diff --git a/GasolineTanker/GasolineTanker/FormMapWithSetTankers.resx b/GasolineTanker/GasolineTanker/FormMapWithSetTankers.resx index f298a7b..dd050e0 100644 --- a/GasolineTanker/GasolineTanker/FormMapWithSetTankers.resx +++ b/GasolineTanker/GasolineTanker/FormMapWithSetTankers.resx @@ -57,4 +57,16 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 15, 23 + + + 125, 17 + + + 258, 17 + + + 387, 17 + \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/FormTankerConfig.Designer.cs b/GasolineTanker/GasolineTanker/FormTankerConfig.Designer.cs index f136294..9bdca67 100644 --- a/GasolineTanker/GasolineTanker/FormTankerConfig.Designer.cs +++ b/GasolineTanker/GasolineTanker/FormTankerConfig.Designer.cs @@ -29,189 +29,193 @@ private void InitializeComponent() { this.groupBoxConfig = new System.Windows.Forms.GroupBox(); - this.labelSimpleObject = new System.Windows.Forms.Label(); this.labelModifiedObject = new System.Windows.Forms.Label(); + this.labelSimpleObject = new System.Windows.Forms.Label(); this.groupBoxColors = new System.Windows.Forms.GroupBox(); this.panelPurple = new System.Windows.Forms.Panel(); - this.panelGray = new System.Windows.Forms.Panel(); - this.panelBlack = new System.Windows.Forms.Panel(); - this.panelWhite = new System.Windows.Forms.Panel(); - this.panelBlue = new System.Windows.Forms.Panel(); - this.panelGreen = new System.Windows.Forms.Panel(); this.panelYellow = new System.Windows.Forms.Panel(); + this.panelBlack = new System.Windows.Forms.Panel(); + this.panelBlue = new System.Windows.Forms.Panel(); + this.panelGray = new System.Windows.Forms.Panel(); + this.panelGreen = new System.Windows.Forms.Panel(); + this.panelWhite = new System.Windows.Forms.Panel(); this.panelRed = new System.Windows.Forms.Panel(); + this.checkBoxCabin = new System.Windows.Forms.CheckBox(); this.checkBoxSignal = new System.Windows.Forms.CheckBox(); this.checkBoxBenzoBack = new System.Windows.Forms.CheckBox(); this.numericUpDownWeight = new System.Windows.Forms.NumericUpDown(); + this.labelWeight = new System.Windows.Forms.Label(); this.numericUpDownSpeed = new System.Windows.Forms.NumericUpDown(); this.labelSpeed = new System.Windows.Forms.Label(); - this.labelWeight = new System.Windows.Forms.Label(); - this.pictureBoxObject = new System.Windows.Forms.PictureBox(); this.panelObject = new System.Windows.Forms.Panel(); this.labelDopColor = new System.Windows.Forms.Label(); this.labelBaseColor = new System.Windows.Forms.Label(); - this.buttonOK = new System.Windows.Forms.Button(); + this.pictureBoxObject = new System.Windows.Forms.PictureBox(); this.buttonCancel = new System.Windows.Forms.Button(); + this.buttonOk = new System.Windows.Forms.Button(); this.groupBoxConfig.SuspendLayout(); this.groupBoxColors.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWeight)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSpeed)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).BeginInit(); this.panelObject.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).BeginInit(); this.SuspendLayout(); // // groupBoxConfig // - this.groupBoxConfig.Controls.Add(this.labelSimpleObject); this.groupBoxConfig.Controls.Add(this.labelModifiedObject); + this.groupBoxConfig.Controls.Add(this.labelSimpleObject); this.groupBoxConfig.Controls.Add(this.groupBoxColors); + this.groupBoxConfig.Controls.Add(this.checkBoxCabin); this.groupBoxConfig.Controls.Add(this.checkBoxSignal); this.groupBoxConfig.Controls.Add(this.checkBoxBenzoBack); this.groupBoxConfig.Controls.Add(this.numericUpDownWeight); + this.groupBoxConfig.Controls.Add(this.labelWeight); this.groupBoxConfig.Controls.Add(this.numericUpDownSpeed); this.groupBoxConfig.Controls.Add(this.labelSpeed); - this.groupBoxConfig.Controls.Add(this.labelWeight); this.groupBoxConfig.Location = new System.Drawing.Point(12, 12); this.groupBoxConfig.Name = "groupBoxConfig"; - this.groupBoxConfig.Size = new System.Drawing.Size(568, 268); + this.groupBoxConfig.Size = new System.Drawing.Size(520, 220); this.groupBoxConfig.TabIndex = 0; this.groupBoxConfig.TabStop = false; this.groupBoxConfig.Text = "Параметры"; // - // labelSimpleObject - // - this.labelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelSimpleObject.Location = new System.Drawing.Point(293, 206); - this.labelSimpleObject.Name = "labelSimpleObject"; - this.labelSimpleObject.Size = new System.Drawing.Size(110, 50); - this.labelSimpleObject.TabIndex = 0; - this.labelSimpleObject.Text = "Простой"; - this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelSimpleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown); - // // labelModifiedObject // this.labelModifiedObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelModifiedObject.Location = new System.Drawing.Point(423, 206); + this.labelModifiedObject.Location = new System.Drawing.Point(394, 162); this.labelModifiedObject.Name = "labelModifiedObject"; - this.labelModifiedObject.Size = new System.Drawing.Size(110, 50); - this.labelModifiedObject.TabIndex = 1; + this.labelModifiedObject.Size = new System.Drawing.Size(97, 38); + this.labelModifiedObject.TabIndex = 16; this.labelModifiedObject.Text = "Продвинутый"; this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.labelModifiedObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown); // + // labelSimpleObject + // + this.labelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelSimpleObject.Location = new System.Drawing.Point(282, 162); + this.labelSimpleObject.Name = "labelSimpleObject"; + this.labelSimpleObject.Size = new System.Drawing.Size(97, 38); + this.labelSimpleObject.TabIndex = 15; + this.labelSimpleObject.Text = "Простой"; + this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelSimpleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown); + // // groupBoxColors // this.groupBoxColors.Controls.Add(this.panelPurple); - this.groupBoxColors.Controls.Add(this.panelGray); - this.groupBoxColors.Controls.Add(this.panelBlack); - this.groupBoxColors.Controls.Add(this.panelWhite); - this.groupBoxColors.Controls.Add(this.panelBlue); - this.groupBoxColors.Controls.Add(this.panelGreen); this.groupBoxColors.Controls.Add(this.panelYellow); + this.groupBoxColors.Controls.Add(this.panelBlack); + this.groupBoxColors.Controls.Add(this.panelBlue); + this.groupBoxColors.Controls.Add(this.panelGray); + this.groupBoxColors.Controls.Add(this.panelGreen); + this.groupBoxColors.Controls.Add(this.panelWhite); this.groupBoxColors.Controls.Add(this.panelRed); - this.groupBoxColors.Location = new System.Drawing.Point(278, 26); + this.groupBoxColors.Location = new System.Drawing.Point(267, 22); this.groupBoxColors.Name = "groupBoxColors"; - this.groupBoxColors.Size = new System.Drawing.Size(271, 164); - this.groupBoxColors.TabIndex = 6; + this.groupBoxColors.Size = new System.Drawing.Size(241, 127); + this.groupBoxColors.TabIndex = 14; this.groupBoxColors.TabStop = false; this.groupBoxColors.Text = "Цвета"; // // panelPurple // this.panelPurple.BackColor = System.Drawing.Color.Purple; - this.panelPurple.Location = new System.Drawing.Point(210, 97); - this.panelPurple.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.panelPurple.Location = new System.Drawing.Point(184, 73); this.panelPurple.Name = "panelPurple"; - this.panelPurple.Size = new System.Drawing.Size(45, 55); - this.panelPurple.TabIndex = 0; - // - // panelGray - // - this.panelGray.BackColor = System.Drawing.Color.Gray; - this.panelGray.Location = new System.Drawing.Point(80, 97); - this.panelGray.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.panelGray.Name = "panelGray"; - this.panelGray.Size = new System.Drawing.Size(45, 55); - this.panelGray.TabIndex = 0; - // - // panelBlack - // - this.panelBlack.BackColor = System.Drawing.Color.Black; - this.panelBlack.Location = new System.Drawing.Point(145, 97); - this.panelBlack.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.panelBlack.Name = "panelBlack"; - this.panelBlack.Size = new System.Drawing.Size(45, 55); - this.panelBlack.TabIndex = 0; - // - // panelWhite - // - this.panelWhite.BackColor = System.Drawing.Color.White; - this.panelWhite.Location = new System.Drawing.Point(15, 97); - this.panelWhite.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.panelWhite.Name = "panelWhite"; - this.panelWhite.Size = new System.Drawing.Size(45, 55); - this.panelWhite.TabIndex = 0; - // - // panelBlue - // - this.panelBlue.BackColor = System.Drawing.Color.Blue; - this.panelBlue.Location = new System.Drawing.Point(145, 27); - this.panelBlue.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.panelBlue.Name = "panelBlue"; - this.panelBlue.Size = new System.Drawing.Size(45, 55); - this.panelBlue.TabIndex = 0; - // - // panelGreen - // - this.panelGreen.BackColor = System.Drawing.Color.Green; - this.panelGreen.Location = new System.Drawing.Point(80, 27); - this.panelGreen.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.panelGreen.Name = "panelGreen"; - this.panelGreen.Size = new System.Drawing.Size(45, 55); - this.panelGreen.TabIndex = 2; + this.panelPurple.Size = new System.Drawing.Size(40, 40); + this.panelPurple.TabIndex = 3; // // panelYellow // this.panelYellow.BackColor = System.Drawing.Color.Yellow; - this.panelYellow.Location = new System.Drawing.Point(210, 27); - this.panelYellow.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.panelYellow.Location = new System.Drawing.Point(184, 22); this.panelYellow.Name = "panelYellow"; - this.panelYellow.Size = new System.Drawing.Size(45, 55); - this.panelYellow.TabIndex = 0; + this.panelYellow.Size = new System.Drawing.Size(40, 40); + this.panelYellow.TabIndex = 1; + // + // panelBlack + // + this.panelBlack.BackColor = System.Drawing.Color.Black; + this.panelBlack.Location = new System.Drawing.Point(127, 73); + this.panelBlack.Name = "panelBlack"; + this.panelBlack.Size = new System.Drawing.Size(40, 40); + this.panelBlack.TabIndex = 4; + // + // panelBlue + // + this.panelBlue.BackColor = System.Drawing.Color.Blue; + this.panelBlue.Location = new System.Drawing.Point(127, 22); + this.panelBlue.Name = "panelBlue"; + this.panelBlue.Size = new System.Drawing.Size(40, 40); + this.panelBlue.TabIndex = 1; + // + // panelGray + // + this.panelGray.BackColor = System.Drawing.Color.Gray; + this.panelGray.Location = new System.Drawing.Point(72, 73); + this.panelGray.Name = "panelGray"; + this.panelGray.Size = new System.Drawing.Size(40, 40); + this.panelGray.TabIndex = 5; + // + // panelGreen + // + this.panelGreen.BackColor = System.Drawing.Color.Green; + this.panelGreen.Location = new System.Drawing.Point(72, 22); + this.panelGreen.Name = "panelGreen"; + this.panelGreen.Size = new System.Drawing.Size(40, 40); + this.panelGreen.TabIndex = 1; + // + // panelWhite + // + this.panelWhite.BackColor = System.Drawing.Color.White; + this.panelWhite.Location = new System.Drawing.Point(15, 73); + this.panelWhite.Name = "panelWhite"; + this.panelWhite.Size = new System.Drawing.Size(40, 40); + this.panelWhite.TabIndex = 2; // // panelRed // this.panelRed.BackColor = System.Drawing.Color.Red; - this.panelRed.Location = new System.Drawing.Point(15, 27); - this.panelRed.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.panelRed.Location = new System.Drawing.Point(15, 22); this.panelRed.Name = "panelRed"; - this.panelRed.Size = new System.Drawing.Size(45, 55); - this.panelRed.TabIndex = 1; + this.panelRed.Size = new System.Drawing.Size(40, 40); + this.panelRed.TabIndex = 0; + // + // checkBoxCabin + // + this.checkBoxCabin.AutoSize = true; + this.checkBoxCabin.Location = new System.Drawing.Point(22, 185); + this.checkBoxCabin.Name = "checkBoxCabin"; + this.checkBoxCabin.Size = new System.Drawing.Size(66, 19); + this.checkBoxCabin.TabIndex = 13; + this.checkBoxCabin.Text = "Кабина"; + this.checkBoxCabin.UseVisualStyleBackColor = true; // // checkBoxSignal // this.checkBoxSignal.AutoSize = true; - this.checkBoxSignal.Location = new System.Drawing.Point(22, 166); + this.checkBoxSignal.Location = new System.Drawing.Point(22, 149); this.checkBoxSignal.Name = "checkBoxSignal"; - this.checkBoxSignal.Size = new System.Drawing.Size(230, 24); - this.checkBoxSignal.TabIndex = 5; - this.checkBoxSignal.Text = "Наличие сигнального маяка"; + this.checkBoxSignal.Size = new System.Drawing.Size(55, 19); + this.checkBoxSignal.TabIndex = 12; + this.checkBoxSignal.Text = "Маяк"; this.checkBoxSignal.UseVisualStyleBackColor = true; // // checkBoxBenzoBack // this.checkBoxBenzoBack.AutoSize = true; - this.checkBoxBenzoBack.Location = new System.Drawing.Point(22, 136); + this.checkBoxBenzoBack.Location = new System.Drawing.Point(22, 115); this.checkBoxBenzoBack.Name = "checkBoxBenzoBack"; - this.checkBoxBenzoBack.Size = new System.Drawing.Size(220, 24); - this.checkBoxBenzoBack.TabIndex = 4; - this.checkBoxBenzoBack.Text = "Наличие бака под топливо"; + this.checkBoxBenzoBack.Size = new System.Drawing.Size(77, 19); + this.checkBoxBenzoBack.TabIndex = 11; + this.checkBoxBenzoBack.Text = "Бензобак"; this.checkBoxBenzoBack.UseVisualStyleBackColor = true; // // numericUpDownWeight // - this.numericUpDownWeight.Location = new System.Drawing.Point(104, 81); + this.numericUpDownWeight.Location = new System.Drawing.Point(90, 72); this.numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, @@ -223,17 +227,26 @@ 0, 0}); this.numericUpDownWeight.Name = "numericUpDownWeight"; - this.numericUpDownWeight.Size = new System.Drawing.Size(90, 27); - this.numericUpDownWeight.TabIndex = 3; + this.numericUpDownWeight.Size = new System.Drawing.Size(79, 23); + this.numericUpDownWeight.TabIndex = 10; this.numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0}); // + // labelWeight + // + this.labelWeight.AutoSize = true; + this.labelWeight.Location = new System.Drawing.Point(22, 74); + this.labelWeight.Name = "labelWeight"; + this.labelWeight.Size = new System.Drawing.Size(29, 15); + this.labelWeight.TabIndex = 9; + this.labelWeight.Text = "Вес:"; + // // numericUpDownSpeed // - this.numericUpDownSpeed.Location = new System.Drawing.Point(104, 43); + this.numericUpDownSpeed.Location = new System.Drawing.Point(90, 30); this.numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, @@ -245,8 +258,8 @@ 0, 0}); this.numericUpDownSpeed.Name = "numericUpDownSpeed"; - this.numericUpDownSpeed.Size = new System.Drawing.Size(90, 27); - this.numericUpDownSpeed.TabIndex = 2; + this.numericUpDownSpeed.Size = new System.Drawing.Size(79, 23); + this.numericUpDownSpeed.TabIndex = 8; this.numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, @@ -256,39 +269,22 @@ // labelSpeed // this.labelSpeed.AutoSize = true; - this.labelSpeed.Location = new System.Drawing.Point(22, 45); + this.labelSpeed.Location = new System.Drawing.Point(22, 32); this.labelSpeed.Name = "labelSpeed"; - this.labelSpeed.Size = new System.Drawing.Size(76, 20); - this.labelSpeed.TabIndex = 1; + this.labelSpeed.Size = new System.Drawing.Size(62, 15); + this.labelSpeed.TabIndex = 7; this.labelSpeed.Text = "Скорость:"; // - // labelWeight - // - this.labelWeight.AutoSize = true; - this.labelWeight.Location = new System.Drawing.Point(62, 83); - this.labelWeight.Name = "labelWeight"; - this.labelWeight.Size = new System.Drawing.Size(36, 20); - this.labelWeight.TabIndex = 0; - this.labelWeight.Text = "Вес:"; - // - // pictureBoxObject - // - this.pictureBoxObject.Location = new System.Drawing.Point(17, 70); - this.pictureBoxObject.Name = "pictureBoxObject"; - this.pictureBoxObject.Size = new System.Drawing.Size(250, 150); - this.pictureBoxObject.TabIndex = 1; - this.pictureBoxObject.TabStop = false; - // // panelObject // this.panelObject.AllowDrop = true; this.panelObject.Controls.Add(this.labelDopColor); this.panelObject.Controls.Add(this.labelBaseColor); this.panelObject.Controls.Add(this.pictureBoxObject); - this.panelObject.Location = new System.Drawing.Point(598, 23); + this.panelObject.Location = new System.Drawing.Point(538, 12); this.panelObject.Name = "panelObject"; - this.panelObject.Size = new System.Drawing.Size(284, 234); - this.panelObject.TabIndex = 7; + this.panelObject.Size = new System.Drawing.Size(262, 184); + this.panelObject.TabIndex = 2; this.panelObject.DragDrop += new System.Windows.Forms.DragEventHandler(this.PanelObject_DragDrop); this.panelObject.DragEnter += new System.Windows.Forms.DragEventHandler(this.PanelObject_DragEnter); // @@ -296,10 +292,10 @@ // this.labelDopColor.AllowDrop = true; this.labelDopColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelDopColor.Location = new System.Drawing.Point(152, 15); + this.labelDopColor.Location = new System.Drawing.Point(141, 9); this.labelDopColor.Name = "labelDopColor"; - this.labelDopColor.Size = new System.Drawing.Size(115, 40); - this.labelDopColor.TabIndex = 3; + this.labelDopColor.Size = new System.Drawing.Size(104, 32); + this.labelDopColor.TabIndex = 2; this.labelDopColor.Text = "Доп. цвет"; this.labelDopColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.labelDopColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.LabelDopColor_DragDrop); @@ -309,83 +305,90 @@ // this.labelBaseColor.AllowDrop = true; this.labelBaseColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelBaseColor.Location = new System.Drawing.Point(17, 15); + this.labelBaseColor.Location = new System.Drawing.Point(20, 9); this.labelBaseColor.Name = "labelBaseColor"; - this.labelBaseColor.Size = new System.Drawing.Size(115, 40); - this.labelBaseColor.TabIndex = 2; + this.labelBaseColor.Size = new System.Drawing.Size(104, 32); + this.labelBaseColor.TabIndex = 1; this.labelBaseColor.Text = "Цвет"; this.labelBaseColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.labelBaseColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.LabelBaseColor_DragDrop); this.labelBaseColor.DragEnter += new System.Windows.Forms.DragEventHandler(this.LabelBaseColor_DragEnter); // - // buttonOK + // pictureBoxObject // - this.buttonOK.Location = new System.Drawing.Point(615, 264); - this.buttonOK.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(115, 30); - this.buttonOK.TabIndex = 8; - this.buttonOK.Text = "Добавить"; - this.buttonOK.UseVisualStyleBackColor = true; - this.buttonOK.Click += new System.EventHandler(this.ButtonOk_Click); + this.pictureBoxObject.Location = new System.Drawing.Point(20, 44); + this.pictureBoxObject.Name = "pictureBoxObject"; + this.pictureBoxObject.Size = new System.Drawing.Size(225, 125); + this.pictureBoxObject.TabIndex = 0; + this.pictureBoxObject.TabStop = false; // // buttonCancel // - this.buttonCancel.Location = new System.Drawing.Point(750, 264); - this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.buttonCancel.Location = new System.Drawing.Point(679, 202); this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(115, 30); - this.buttonCancel.TabIndex = 9; + this.buttonCancel.Size = new System.Drawing.Size(104, 30); + this.buttonCancel.TabIndex = 5; this.buttonCancel.Text = "Отмена"; this.buttonCancel.UseVisualStyleBackColor = true; // + // buttonOk + // + this.buttonOk.Location = new System.Drawing.Point(558, 202); + this.buttonOk.Name = "buttonOk"; + this.buttonOk.Size = new System.Drawing.Size(104, 30); + this.buttonOk.TabIndex = 4; + this.buttonOk.Text = "Добавить"; + this.buttonOk.UseVisualStyleBackColor = true; + this.buttonOk.Click += new System.EventHandler(this.ButtonOk_Click); + // // FormTankerConfig // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(902, 303); + this.ClientSize = new System.Drawing.Size(810, 242); this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonOK); + this.Controls.Add(this.buttonOk); this.Controls.Add(this.panelObject); this.Controls.Add(this.groupBoxConfig); this.Name = "FormTankerConfig"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Создание объекта"; this.groupBoxConfig.ResumeLayout(false); this.groupBoxConfig.PerformLayout(); this.groupBoxColors.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWeight)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSpeed)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).EndInit(); this.panelObject.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).EndInit(); this.ResumeLayout(false); } #endregion + private GroupBox groupBoxConfig; + private CheckBox checkBoxCabin; private CheckBox checkBoxSignal; private CheckBox checkBoxBenzoBack; private NumericUpDown numericUpDownWeight; + private Label labelWeight; private NumericUpDown numericUpDownSpeed; private Label labelSpeed; - private Label labelWeight; - private GroupBox groupBoxColors; - private Label labelSimpleObject; private Label labelModifiedObject; + private Label labelSimpleObject; + private GroupBox groupBoxColors; private Panel panelPurple; - private Panel panelGray; - private Panel panelBlack; - private Panel panelWhite; - private Panel panelBlue; - private Panel panelGreen; private Panel panelYellow; + private Panel panelBlack; + private Panel panelBlue; + private Panel panelGray; + private Panel panelGreen; + private Panel panelWhite; private Panel panelRed; - private PictureBox pictureBoxObject; private Panel panelObject; private Label labelDopColor; private Label labelBaseColor; - private Button buttonOK; + private PictureBox pictureBoxObject; private Button buttonCancel; + private Button buttonOk; } } \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/FormTankerConfig.cs b/GasolineTanker/GasolineTanker/FormTankerConfig.cs index 6cf5ec3..845caf2 100644 --- a/GasolineTanker/GasolineTanker/FormTankerConfig.cs +++ b/GasolineTanker/GasolineTanker/FormTankerConfig.cs @@ -1,25 +1,24 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using static System.Windows.Forms.VisualStyles.VisualStyleElement.TrackBar; - -namespace GasolineTanker +namespace GasolineTanker { + /// + /// Форма создания объекта + /// public partial class FormTankerConfig : Form { + /// + /// Переменная-выбранная машина + /// DrawningTanker _tanker = null; - private event Action EventAddTanker; - + /// + /// Событие + /// + private event TankerDelegate EventAddTanker; + /// + /// Конструктор + /// public FormTankerConfig() { InitializeComponent(); - panelBlack.MouseDown += PanelColor_MouseDown; panelPurple.MouseDown += PanelColor_MouseDown; panelGray.MouseDown += PanelColor_MouseDown; @@ -31,7 +30,9 @@ namespace GasolineTanker buttonCancel.Click += (s, e) => Close(); } - + /// + /// Отрисовать машину + /// private void DrawTanker() { Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height); @@ -40,39 +41,35 @@ namespace GasolineTanker _tanker?.DrawTransport(gr); pictureBoxObject.Image = bmp; } - - public void AddEvent(Action ev) + /// + /// Добавление события + /// + /// + public void AddEvent(TankerDelegate ev) { if (EventAddTanker == null) { - EventAddTanker = new Action(ev); + EventAddTanker = new TankerDelegate(ev); } else { EventAddTanker += ev; } } - + /// + /// Передаем информацию при нажатии на Label + /// + /// + /// private void LabelObject_MouseDown(object sender, MouseEventArgs e) { (sender as Label).DoDragDrop((sender as Label).Name, DragDropEffects.Move | DragDropEffects.Copy); } - - private void PanelObject_DragDrop(object sender, DragEventArgs e) - { - switch (e.Data.GetData(DataFormats.Text).ToString()) - { - case "labelSimpleObject": - _tanker = new DrawningTanker((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White); - break; - case "labelModifiedObject": - _tanker = new DrawningGasolineTanker((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White, Color.Black, - checkBoxBenzoBack.Checked, checkBoxSignal.Checked, checkBoxBenzoBack.Checked); - break; - } - DrawTanker(); - } - + /// + /// Проверка получаемой информации (ее типа на соответствие требуемому) + /// + /// + /// private void PanelObject_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.Text)) @@ -84,12 +81,39 @@ namespace GasolineTanker e.Effect = DragDropEffects.None; } } - + /// + /// Действия при приеме перетаскиваемой информации + /// + /// + /// + private void PanelObject_DragDrop(object sender, DragEventArgs e) + { + switch (e.Data.GetData(DataFormats.Text).ToString()) + { + case "labelSimpleObject": + _tanker = new DrawningTanker((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White); + break; + case "labelModifiedObject": + _tanker = new DrawningGasolineTanker((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.Black, Color.Black, + checkBoxCabin.Checked, checkBoxSignal.Checked, checkBoxBenzoBack.Checked); + break; + } + DrawTanker(); + } + /// + /// Отправляем цвет с панели + /// + /// + /// private void PanelColor_MouseDown(object sender, MouseEventArgs e) { (sender as Control).DoDragDrop((sender as Control).BackColor, DragDropEffects.Move | DragDropEffects.Copy); } - + /// + /// Проверка получаемой информации (ее типа на соответствие требуемому) + /// + /// + /// private void LabelBaseColor_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(Color))) @@ -101,13 +125,21 @@ namespace GasolineTanker e.Effect = DragDropEffects.None; } } - + /// + /// Принимаем основной цвет + /// + /// + /// private void LabelBaseColor_DragDrop(object sender, DragEventArgs e) { _tanker?.Tanker.ChangeBaseColor((Color)e.Data.GetData(typeof(Color))); DrawTanker(); } - + /// + /// Принимаем дополнительный цвет + /// + /// + /// private void LabelDopColor_DragDrop(object sender, DragEventArgs e) { if (_tanker?.Tanker is EntityGasolineTanker gasolineTanker) @@ -116,11 +148,15 @@ namespace GasolineTanker DrawTanker(); } } - + /// + /// Добавление машины + /// + /// + /// private void ButtonOk_Click(object sender, EventArgs e) { EventAddTanker?.Invoke(_tanker); Close(); } } -} +} \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/IDrawningObject.cs b/GasolineTanker/GasolineTanker/IDrawningObject.cs index e15cf61..569abab 100644 --- a/GasolineTanker/GasolineTanker/IDrawningObject.cs +++ b/GasolineTanker/GasolineTanker/IDrawningObject.cs @@ -36,5 +36,6 @@ namespace GasolineTanker /// /// (float Left, float Right, float Top, float Bottom) GetCurrentPosition(); + string GetInfo(); } } diff --git a/GasolineTanker/GasolineTanker/MapWithSetTankersGeneric.cs b/GasolineTanker/GasolineTanker/MapWithSetTankersGeneric.cs index adf904e..aa02826 100644 --- a/GasolineTanker/GasolineTanker/MapWithSetTankersGeneric.cs +++ b/GasolineTanker/GasolineTanker/MapWithSetTankersGeneric.cs @@ -56,7 +56,22 @@ } return new(_pictureWidth, _pictureHeight); } - + public string GetData(char separatorType, char separatorData) + { + string data = $"{_map.GetType().Name}{separatorType}"; + foreach (var tanker in _setTankers.GetTankers()) + { + data += $"{tanker.GetInfo()}{separatorData}"; + } + return data; + } + public void LoadData(string[] records) + { + foreach (var rec in records) + { + _setTankers.Insert(DrawningObjectTanker.Create(rec) as T); + } + } private void Shaking() { int j = _setTankers.Count - 1; diff --git a/GasolineTanker/GasolineTanker/MapsCollection.cs b/GasolineTanker/GasolineTanker/MapsCollection.cs index 86230d8..883257b 100644 --- a/GasolineTanker/GasolineTanker/MapsCollection.cs +++ b/GasolineTanker/GasolineTanker/MapsCollection.cs @@ -1,19 +1,22 @@ using System.Linq; using System.Xml.Linq; +using System.Text; namespace GasolineTanker { internal class MapsCollection { - readonly Dictionary> _mapStorages; + readonly Dictionary> _mapStorages; public List Keys => _mapStorages.Keys.ToList(); private readonly int _pictureWidth; private readonly int _pictureHeight; + private readonly char separatorDict = '|'; + private readonly char separatorData = ';'; public MapsCollection(int pictureWidth, int pictureHeight) { - _mapStorages = new Dictionary>(); + _mapStorages = new Dictionary>(); _pictureWidth = pictureWidth; _pictureHeight = pictureHeight; } @@ -22,7 +25,7 @@ namespace GasolineTanker { if (!_mapStorages.ContainsKey(name)) { - _mapStorages.Add(name, new MapWithSetTankersGeneric + _mapStorages.Add(name, new MapWithSetTankersGeneric (_pictureWidth, _pictureHeight, map)); } } @@ -31,7 +34,7 @@ namespace GasolineTanker if (_mapStorages.ContainsKey(name)) _mapStorages.Remove(name); } - public MapWithSetTankersGeneric this[string ind] + public MapWithSetTankersGeneric this[string ind] { get { @@ -41,5 +44,82 @@ namespace GasolineTanker return null; } } + private static void WriteToFile(string text, FileStream stream) + { + byte[] info = new UTF8Encoding(true).GetBytes(text); + stream.Write(info, 0, info.Length); + } + /// + /// Сохранение информации по автомобилям в хранилище в файл + /// + /// Путь и имя файла + /// + public bool SaveData(string filename) + { + if (File.Exists(filename)) + { + File.Delete(filename); + } + using (FileStream fs = new(filename, FileMode.Create)) + { + WriteToFile($"MapsCollection{Environment.NewLine}", fs); + foreach (var storage in _mapStorages) + { + WriteToFile($"{storage.Key}{separatorDict}{storage.Value.GetData(separatorDict, separatorData)}{Environment.NewLine}", fs); + } + } + return true; + } + + /// + /// Загрузка нформации по автомобилям на парковках из файла + /// + /// + /// + public bool LoadData(string filename) + { + if (!File.Exists(filename)) + { + return false; + } + string bufferTextFromFile = ""; + using (FileStream fs = new(filename, FileMode.Open)) + { + byte[] b = new byte[fs.Length]; + UTF8Encoding temp = new(true); + while (fs.Read(b, 0, b.Length) > 0) + { + bufferTextFromFile += temp.GetString(b); + } + } + var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + if (!strs[0].Contains("MapsCollection")) + { + //если нет такой записи, то это не те данные + return false; + } + //очищаем записи + _mapStorages.Clear(); + for (int i = 1; i < strs.Length; ++i) + { + var elem = strs[i].Split(separatorDict); + AbstractMap map = null; + switch (elem[1]) + { + case "SimpleMap": + map = new SimpleMap(); + break; + case "MineField": + map = new MineField(); + break; + case "FormLawn": + map = new FormLawn(); + break; + } + _mapStorages.Add(elem[0], new MapWithSetTankersGeneric(_pictureWidth, _pictureHeight, map)); + _mapStorages[elem[0]].LoadData(elem[2].Split(separatorData, StringSplitOptions.RemoveEmptyEntries)); + } + return true; + } } }