diff --git a/HoistingCrane/HoistingCrane/AbstractMap.cs b/HoistingCrane/HoistingCrane/AbstractMap.cs
index bf5f15c..43db729 100644
--- a/HoistingCrane/HoistingCrane/AbstractMap.cs
+++ b/HoistingCrane/HoistingCrane/AbstractMap.cs
@@ -103,7 +103,6 @@ namespace HoistingCrane
else _drawingObject.MoveObject(SetOppositDirection(direction));
return DrawMapWithObject();
}
-
private Direction SetOppositDirection(Direction dir)
{
switch (dir)
diff --git a/HoistingCrane/HoistingCrane/DrawingHoistingCrane.cs b/HoistingCrane/HoistingCrane/DrawingHoistingCrane.cs
index abe97e9..0f0bea2 100644
--- a/HoistingCrane/HoistingCrane/DrawingHoistingCrane.cs
+++ b/HoistingCrane/HoistingCrane/DrawingHoistingCrane.cs
@@ -9,14 +9,12 @@ namespace HoistingCrane
public class DrawingHoistingCrane
{
public EntityHoistingCrane HoistingCrane { get; protected set; }
-
protected float _startPosX;
protected float _startPosY;
private int? _pictureWidth = null;
private int? _pictureHeight = null;
private readonly int _hoistingCraneWidth = 80;
private readonly int _hoistingCraneHeight = 50;
-
protected DrawingHoistingCrane(int speed, float weight, Color bodyColor, int hoistingCraneWidth, int hoistingCraneHeigth) :
this(speed, weight, bodyColor)
{
@@ -27,7 +25,6 @@ namespace HoistingCrane
{
HoistingCrane = new EntityHoistingCrane(speed, weight, bodyColor);
}
-
public void SetPosition(int x, int y, int width, int height)
{
// TODO checks
@@ -36,7 +33,6 @@ namespace HoistingCrane
_pictureWidth = width;
_pictureHeight = height;
}
-
public void MoveTransport(Direction direction)
{
if (!_pictureWidth.HasValue || !_pictureHeight.HasValue)
diff --git a/HoistingCrane/HoistingCrane/DrawingObjectHoistingCrane.cs b/HoistingCrane/HoistingCrane/DrawingObjectHoistingCrane.cs
index 22138d0..cca8e8f 100644
--- a/HoistingCrane/HoistingCrane/DrawingObjectHoistingCrane.cs
+++ b/HoistingCrane/HoistingCrane/DrawingObjectHoistingCrane.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
+
namespace HoistingCrane
{
internal class DrawingObjectHoistingCrane : IDrawingObject
@@ -24,11 +19,14 @@ namespace HoistingCrane
}
public void SetObject(int x, int y, int width, int height)
{
- _hoistingCrane.SetPosition(x, y, width, height);
+ _hoistingCrane?.SetPosition(x, y, width, height);
}
public void DrawingObject(Graphics g)
{
_hoistingCrane?.DrawTransport(g);
}
+ public string GetInfo() => _hoistingCrane?.GetDataForSave();
+ public static IDrawingObject Create(string data) => new DrawingObjectHoistingCrane(data.CreateDrawingHoistingCrane());
+
}
}
diff --git a/HoistingCrane/HoistingCrane/EntityAdvancedHoistingCrane.cs b/HoistingCrane/HoistingCrane/EntityAdvancedHoistingCrane.cs
index 5d5baa9..8cbfa2b 100644
--- a/HoistingCrane/HoistingCrane/EntityAdvancedHoistingCrane.cs
+++ b/HoistingCrane/HoistingCrane/EntityAdvancedHoistingCrane.cs
@@ -14,11 +14,11 @@ namespace HoistingCrane
public bool Сounterweight { get; private set; }
public Color DopColor { get; set; }
- public EntityAdvancedHoistingCrane(int speed, float weight, Color bodyColor, Color dopColor, bool crane, bool counterweight) :
+ public EntityAdvancedHoistingCrane(int speed, float weight, Color bodyColor, Color dopColor, bool crane, bool counterWeight) :
base(speed, weight, bodyColor)
{
Crane = crane;
- Сounterweight = counterweight;
+ Сounterweight = counterWeight;
DopColor = dopColor;
}
}
diff --git a/HoistingCrane/HoistingCrane/EntityHoistingCrane.cs b/HoistingCrane/HoistingCrane/EntityHoistingCrane.cs
index a02c614..cb0bd99 100644
--- a/HoistingCrane/HoistingCrane/EntityHoistingCrane.cs
+++ b/HoistingCrane/HoistingCrane/EntityHoistingCrane.cs
@@ -9,13 +9,9 @@ namespace HoistingCrane
public class EntityHoistingCrane
{
public int Speed { get; private set; }
-
public float Weight { get; private set; }
-
public Color BodyColor { get; set; }
-
public float Step => Speed * 100 / Weight;
-
public EntityHoistingCrane(int speed, float weight, Color bodyColor)
{
Random rnd = new();
diff --git a/HoistingCrane/HoistingCrane/ExtentionHoistingCrane.cs b/HoistingCrane/HoistingCrane/ExtentionHoistingCrane.cs
new file mode 100644
index 0000000..89f1b80
--- /dev/null
+++ b/HoistingCrane/HoistingCrane/ExtentionHoistingCrane.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HoistingCrane
+{
+ internal static class ExtentionHoistingCrane
+ {
+ ///
+ /// Разделитель для записи информации по объекту в файл
+ ///
+ private static readonly char _separatorForObject = ':';
+ ///
+ /// Создание объекта из строки
+ ///
+ ///
+ ///
+ public static DrawingHoistingCrane CreateDrawingHoistingCrane(this string info)
+ {
+ string[] strs = info.Split(_separatorForObject);
+ if (strs.Length == 3)
+ {
+ return new DrawingHoistingCrane(Convert.ToInt32(strs[0]),
+ Convert.ToInt32(strs[1]), Color.FromName(strs[2]));
+ }
+ if (strs.Length == 6)
+ {
+ return new DrawingAdvancedHoistingCrane(Convert.ToInt32(strs[0]),
+ Convert.ToInt32(strs[1]), Color.FromName(strs[2]),
+ Color.FromName(strs[3]), Convert.ToBoolean(strs[4]),
+ Convert.ToBoolean(strs[5]));
+ }
+ return null;
+ }
+ ///
+ /// Получение данных для сохранения в файл
+ ///
+ ///
+ ///
+ public static string GetDataForSave(this DrawingHoistingCrane DrawingHoistingCrane)
+ {
+ var hoistingCrane = DrawingHoistingCrane.HoistingCrane;
+ var str = $"{hoistingCrane.Speed}{_separatorForObject}{hoistingCrane.Weight}{_separatorForObject}{hoistingCrane.BodyColor.Name}";
+ if (!(hoistingCrane is EntityAdvancedHoistingCrane HoistingCrane))
+ {
+ return str;
+ }
+ return $"{str}{_separatorForObject}{HoistingCrane.DopColor.Name}{_separatorForObject}{HoistingCrane.Crane}{_separatorForObject}{HoistingCrane.Сounterweight}";
+ }
+ }
+}
diff --git a/HoistingCrane/HoistingCrane/FormHoistingCrane.Designer.cs b/HoistingCrane/HoistingCrane/FormHoistingCrane.Designer.cs
index 3a48eba..1286494 100644
--- a/HoistingCrane/HoistingCrane/FormHoistingCrane.Designer.cs
+++ b/HoistingCrane/HoistingCrane/FormHoistingCrane.Designer.cs
@@ -150,7 +150,6 @@
this.pictureBoxHoistingCrane.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.pictureBoxHoistingCrane.TabIndex = 6;
this.pictureBoxHoistingCrane.TabStop = false;
- this.pictureBoxHoistingCrane.Click += new System.EventHandler(this.pictureBoxHoistingCrane_Click);
this.pictureBoxHoistingCrane.Resize += new System.EventHandler(this.PictureBoxHoistingCrane_Resize);
//
// buttonCreateModify
@@ -163,7 +162,6 @@
this.buttonCreateModify.TabIndex = 7;
this.buttonCreateModify.Text = "Модификация";
this.buttonCreateModify.UseVisualStyleBackColor = true;
- this.buttonCreateModify.Click += new System.EventHandler(this.ButtonCreateModify_Click);
//
// buttonSelect
//
diff --git a/HoistingCrane/HoistingCrane/FormHoistingCrane.cs b/HoistingCrane/HoistingCrane/FormHoistingCrane.cs
index a31b615..87d05c4 100644
--- a/HoistingCrane/HoistingCrane/FormHoistingCrane.cs
+++ b/HoistingCrane/HoistingCrane/FormHoistingCrane.cs
@@ -8,7 +8,6 @@
{
InitializeComponent();
}
-
private void Draw()
{
Bitmap bmp = new(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height);
@@ -16,7 +15,6 @@
_HoistingCrane?.DrawTransport(gr);
pictureBoxHoistingCrane.Image = bmp;
}
-
private void SetData()
{
Random rnd = new();
@@ -25,7 +23,6 @@
toolStripStatusLabelWeight.Text = $"Вес: {_HoistingCrane.HoistingCrane.Weight}";
toolStripStatusLabelBodyColor.Text = $"Цвет:{_HoistingCrane.HoistingCrane.BodyColor.Name}";
}
-
private void ButtonCreate_Click(object sender, EventArgs e)
{
Random rnd = new();
@@ -40,7 +37,6 @@
SetData();
Draw();
}
-
private void ButtonMove_Click(object sender, EventArgs e)
{
string name = ((Button)sender)?.Name ?? string.Empty;
@@ -61,40 +57,21 @@
}
Draw();
}
-
private void PictureBoxHoistingCrane_Resize(object sender, EventArgs e)
{
_HoistingCrane?.ChangeBorders(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height);
Draw();
}
-
- private void ButtonCreateModify_Click(object sender, EventArgs e)
+ ///
+ /// Èçìåíåíèå ðàçìåðîâ ôîðìû
+ ///
+ ///
+ ///
+ private void pictureBoxHoistingCrane_Resize(object sender, EventArgs e)
{
- Random rnd = new();
- Color selectedColor = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256),
- rnd.Next(0, 256));
- ColorDialog dialog = new();
- if (dialog.ShowDialog() == DialogResult.OK)
- {
- selectedColor = dialog.Color;
- }
- Color advancedSelectedColor = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256),
- rnd.Next(0, 256));
- ColorDialog dialogDop = new();
- if (dialogDop.ShowDialog() == DialogResult.OK)
- {
- advancedSelectedColor = dialogDop.Color;
- }
- _HoistingCrane = new DrawingAdvancedHoistingCrane(rnd.Next(30, 100), rnd.Next(300, 500),
- selectedColor, advancedSelectedColor, Convert.ToBoolean(rnd.Next(0, 2)), Convert.ToBoolean(rnd.Next(0, 2)));
- SetData();
+ _HoistingCrane?.ChangeBorders(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height);
Draw();
}
-
- private void pictureBoxHoistingCrane_Click(object sender, EventArgs e)
- {
-
- }
private void ButtonSelect_Click(object sender, EventArgs e)
{
SelectedHoistingCrane = _HoistingCrane;
diff --git a/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.Designer.cs b/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.Designer.cs
index 384f26b..01eea5d 100644
--- a/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.Designer.cs
+++ b/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.Designer.cs
@@ -369,7 +369,6 @@
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "FormHoistingCraneConfig";
this.Text = "Создание объекта";
- this.Load += new System.EventHandler(this.FormHoistingCraneConfig_Load);
this.groupBoxConfig.ResumeLayout(false);
this.groupBoxConfig.PerformLayout();
this.groupBoxColors.ResumeLayout(false);
diff --git a/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.cs b/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.cs
index f66c00b..6566f0e 100644
--- a/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.cs
+++ b/HoistingCrane/HoistingCrane/FormHoistingCraneConfig.cs
@@ -15,10 +15,8 @@ namespace HoistingCrane
//переменная-выбранный кран
DrawingHoistingCrane _hoistingCrane = null;
public DrawingHoistingCrane SelectedHoistingCrane { get; private set; }
-
//событие
- private event HoistingCraneDelegate EventAddHoistingCrane;
-
+ private event Action EventAddHoistingCrane;
//конструктор
public FormHoistingCraneConfig()
{
@@ -33,7 +31,6 @@ namespace HoistingCrane
panelBlue.MouseDown += PanelColor_MouseDown;
buttonCancel.Click += (object sender, EventArgs e) => Close();
}
-
//отрисовка кран
private void DrawHoistingCrane()
{
@@ -43,20 +40,18 @@ namespace HoistingCrane
_hoistingCrane?.DrawTransport(gr);
pictureBoxObject.Image = bmp;
}
-
//добавление события
- public void AddEvent(HoistingCraneDelegate ev)
+ public void AddEvent(Action ev)
{
if (EventAddHoistingCrane == null)
{
- EventAddHoistingCrane = new HoistingCraneDelegate(ev);
+ EventAddHoistingCrane = new Action(ev);
}
else
{
EventAddHoistingCrane += ev;
}
}
-
private void LabelObject_MouseDown(object sender, MouseEventArgs e)
{
(sender as Label).DoDragDrop((sender as Label).Name, DragDropEffects.Move | DragDropEffects.Copy);
@@ -74,7 +69,6 @@ namespace HoistingCrane
e.Effect = DragDropEffects.None;
}
}
-
//действия при приеме перетаскиваемой информации
private void PanelObject_DragDrop(object sender, DragEventArgs e)
{
@@ -91,13 +85,11 @@ namespace HoistingCrane
DrawHoistingCrane();
}
-
//отправляем цвет с панели
private void PanelColor_MouseDown(object sender, MouseEventArgs e)
{
(sender as Control).DoDragDrop((sender as Control).BackColor, DragDropEffects.Move | DragDropEffects.Copy);
}
-
//проверка получаемой информации (её типа на соответсвие требуемому)
private void LabelColor_DragEnter(object sender, DragEventArgs e)
{
@@ -110,7 +102,6 @@ namespace HoistingCrane
e.Effect = DragDropEffects.None;
}
}
-
//принимаем основной цвет
private void LabelBaseColor_DragDrop(object sender, DragEventArgs e)
{
@@ -122,7 +113,6 @@ namespace HoistingCrane
DrawHoistingCrane();
}
}
-
//принимаем дополнительный цвет
private void LabelDopColor_DragDrop(object sender, DragEventArgs e)
{
@@ -133,18 +123,12 @@ namespace HoistingCrane
DrawHoistingCrane();
}
}
-
//добавление крана
private void ButtonAddObject_Click(object sender, EventArgs e)
{
EventAddHoistingCrane?.Invoke(_hoistingCrane);
Close();
}
-
- private void FormHoistingCraneConfig_Load(object sender, EventArgs e)
- {
-
- }
}
}
diff --git a/HoistingCrane/HoistingCrane/FormMap.Designer.cs b/HoistingCrane/HoistingCrane/FormMap.Designer.cs
deleted file mode 100644
index ba07c1c..0000000
--- a/HoistingCrane/HoistingCrane/FormMap.Designer.cs
+++ /dev/null
@@ -1,208 +0,0 @@
-namespace HoistingCrane
-{
- partial class FormMap
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.buttonUp = 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.buttonCreate = new System.Windows.Forms.Button();
- this.statusStrip = new System.Windows.Forms.StatusStrip();
- this.toolStripStatusLabelSpeed = new System.Windows.Forms.ToolStripStatusLabel();
- this.toolStripStatusLabelWeight = new System.Windows.Forms.ToolStripStatusLabel();
- this.toolStripStatusLabelBodyColor = new System.Windows.Forms.ToolStripStatusLabel();
- this.pictureBoxHoistingCrane = new System.Windows.Forms.PictureBox();
- this.buttonCreateModify = new System.Windows.Forms.Button();
- this.comboBoxSelectorMap = new System.Windows.Forms.ComboBox();
- this.statusStrip.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBoxHoistingCrane)).BeginInit();
- this.SuspendLayout();
- //
- // buttonUp
- //
- this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.buttonUp.BackgroundImage = global::HoistingCrane.Properties.Resources.up;
- this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.buttonUp.Location = new System.Drawing.Point(722, 353);
- this.buttonUp.Name = "buttonUp";
- this.buttonUp.Size = new System.Drawing.Size(30, 30);
- this.buttonUp.TabIndex = 0;
- this.buttonUp.UseVisualStyleBackColor = true;
- this.buttonUp.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::HoistingCrane.Properties.Resources.left;
- this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.buttonLeft.Location = new System.Drawing.Point(686, 389);
- this.buttonLeft.Name = "buttonLeft";
- this.buttonLeft.Size = new System.Drawing.Size(30, 30);
- this.buttonLeft.TabIndex = 1;
- 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::HoistingCrane.Properties.Resources.right;
- this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.buttonRight.Location = new System.Drawing.Point(758, 389);
- this.buttonRight.Name = "buttonRight";
- this.buttonRight.Size = new System.Drawing.Size(30, 30);
- this.buttonRight.TabIndex = 2;
- this.buttonRight.UseVisualStyleBackColor = true;
- this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click);
- //
- // buttonDown
- //
- this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.buttonDown.BackgroundImage = global::HoistingCrane.Properties.Resources.down;
- this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.buttonDown.Location = new System.Drawing.Point(722, 389);
- this.buttonDown.Name = "buttonDown";
- this.buttonDown.Size = new System.Drawing.Size(30, 30);
- this.buttonDown.TabIndex = 3;
- this.buttonDown.UseVisualStyleBackColor = true;
- this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click);
- //
- // buttonCreate
- //
- this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.buttonCreate.Location = new System.Drawing.Point(12, 393);
- this.buttonCreate.Name = "buttonCreate";
- this.buttonCreate.Size = new System.Drawing.Size(75, 23);
- this.buttonCreate.TabIndex = 4;
- this.buttonCreate.Text = "Создать";
- this.buttonCreate.UseVisualStyleBackColor = true;
- this.buttonCreate.Click += new System.EventHandler(this.ButtonCreate_Click);
- //
- // statusStrip
- //
- this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.toolStripStatusLabelSpeed,
- this.toolStripStatusLabelWeight,
- this.toolStripStatusLabelBodyColor});
- this.statusStrip.Location = new System.Drawing.Point(0, 428);
- this.statusStrip.Name = "statusStrip";
- this.statusStrip.Size = new System.Drawing.Size(800, 22);
- this.statusStrip.TabIndex = 5;
- this.statusStrip.Text = "statusStrip";
- //
- // toolStripStatusLabelSpeed
- //
- this.toolStripStatusLabelSpeed.Name = "toolStripStatusLabelSpeed";
- this.toolStripStatusLabelSpeed.Size = new System.Drawing.Size(62, 17);
- this.toolStripStatusLabelSpeed.Text = "Скорость:";
- //
- // toolStripStatusLabelWeight
- //
- this.toolStripStatusLabelWeight.Name = "toolStripStatusLabelWeight";
- this.toolStripStatusLabelWeight.Size = new System.Drawing.Size(29, 17);
- this.toolStripStatusLabelWeight.Text = "Вес:";
- //
- // toolStripStatusLabelBodyColor
- //
- this.toolStripStatusLabelBodyColor.Name = "toolStripStatusLabelBodyColor";
- this.toolStripStatusLabelBodyColor.Size = new System.Drawing.Size(36, 17);
- this.toolStripStatusLabelBodyColor.Text = "Цвет:";
- //
- // pictureBoxBulldozer
- //
- this.pictureBoxHoistingCrane.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pictureBoxHoistingCrane.Location = new System.Drawing.Point(0, 0);
- this.pictureBoxHoistingCrane.Name = "pictureBoxHoistingCrane";
- this.pictureBoxHoistingCrane.Size = new System.Drawing.Size(800, 428);
- this.pictureBoxHoistingCrane.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
- this.pictureBoxHoistingCrane.TabIndex = 6;
- this.pictureBoxHoistingCrane.TabStop = false;
- this.pictureBoxHoistingCrane.Click += new System.EventHandler(this.pictureBoxHoistingCrane_Click);
- //
- // buttonCreateModify
- //
- this.buttonCreateModify.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.buttonCreateModify.Location = new System.Drawing.Point(93, 393);
- this.buttonCreateModify.Name = "buttonCreateModify";
- this.buttonCreateModify.Size = new System.Drawing.Size(100, 23);
- this.buttonCreateModify.TabIndex = 7;
- this.buttonCreateModify.Text = "Модификация";
- this.buttonCreateModify.UseVisualStyleBackColor = true;
- this.buttonCreateModify.Click += new System.EventHandler(this.ButtonCreateModify_Click);
- //
- // comboBoxSelectorMap
- //
- this.comboBoxSelectorMap.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.comboBoxSelectorMap.FormattingEnabled = true;
- this.comboBoxSelectorMap.Items.AddRange(new object[] {
- "Простая карта",
- "Вторая карта"});
- this.comboBoxSelectorMap.Location = new System.Drawing.Point(12, 12);
- this.comboBoxSelectorMap.Name = "comboBoxSelectorMap";
- this.comboBoxSelectorMap.Size = new System.Drawing.Size(121, 23);
- this.comboBoxSelectorMap.TabIndex = 8;
- this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectorMap_SelectedIndexChanged);
- //
- // FormMap
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(800, 450);
- this.Controls.Add(this.comboBoxSelectorMap);
- this.Controls.Add(this.buttonCreateModify);
- this.Controls.Add(this.buttonCreate);
- this.Controls.Add(this.buttonDown);
- this.Controls.Add(this.buttonRight);
- this.Controls.Add(this.buttonLeft);
- this.Controls.Add(this.buttonUp);
- this.Controls.Add(this.pictureBoxHoistingCrane);
- this.Controls.Add(this.statusStrip);
- this.Name = "FormMap";
- this.Text = "FormMap";
- this.statusStrip.ResumeLayout(false);
- this.statusStrip.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBoxHoistingCrane)).EndInit();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
- private Button buttonUp;
- private Button buttonLeft;
- private Button buttonRight;
- private Button buttonDown;
- private Button buttonCreate;
- private StatusStrip statusStrip;
- private ToolStripStatusLabel toolStripStatusLabelSpeed;
- private ToolStripStatusLabel toolStripStatusLabelWeight;
- private ToolStripStatusLabel toolStripStatusLabelBodyColor;
- private PictureBox pictureBoxHoistingCrane;
- private Button buttonCreateModify;
- private ComboBox comboBoxSelectorMap;
- }
-}
\ No newline at end of file
diff --git a/HoistingCrane/HoistingCrane/FormMap.cs b/HoistingCrane/HoistingCrane/FormMap.cs
deleted file mode 100644
index 35f3052..0000000
--- a/HoistingCrane/HoistingCrane/FormMap.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-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;
-
-namespace HoistingCrane
-{
- public partial class FormMap : Form
- {
- private AbstractMap _abstractMap;
- public FormMap()
- {
- InitializeComponent();
- _abstractMap = new SimpleMap();
- _abstractMap = new SecondMap();
- }
-
- private void SetData(DrawingHoistingCrane hoistingCrane)
- {
- toolStripStatusLabelSpeed.Text = $"Скорость: {hoistingCrane.HoistingCrane.Speed}";
- toolStripStatusLabelWeight.Text = $"Вес: {hoistingCrane.HoistingCrane.Weight}";
- toolStripStatusLabelBodyColor.Text = $"Цвет:{hoistingCrane.HoistingCrane.BodyColor.Name}";
- pictureBoxHoistingCrane.Image = _abstractMap.CreateMap(pictureBoxHoistingCrane.Width,
- pictureBoxHoistingCrane.Height, new DrawingObjectHoistingCrane(hoistingCrane));
- }
-
- private void ButtonCreate_Click(object sender, EventArgs e)
- {
- Random rnd = new();
- var bulldozer = new DrawingHoistingCrane(rnd.Next(30, 100), rnd.Next(300, 500),
- Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)));
- SetData(bulldozer);
- }
-
- private void ButtonMove_Click(object sender, EventArgs e)
- {
- string name = ((Button)sender)?.Name ?? string.Empty;
- Direction dir = Direction.None;
- switch (name)
- {
- case "buttonUp":
- dir = Direction.Up;
- break;
- case "buttonDown":
- dir = Direction.Down;
- break;
- case "buttonLeft":
- dir = Direction.Left;
- break;
- case "buttonRight":
- dir = Direction.Right;
- break;
- }
- pictureBoxHoistingCrane.Image = _abstractMap.MoveObject(dir);
- }
- private void ButtonCreateModify_Click(object sender, EventArgs e)
- {
- Random rnd = new();
- var hoistingCrane = new DrawingAdvancedHoistingCrane(rnd.Next(30, 100), rnd.Next(300, 500),
- Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)), Color.FromArgb(rnd.Next(0, 256),
- rnd.Next(0, 256), rnd.Next(0, 256)), Convert.ToBoolean(rnd.Next(0, 2)), Convert.ToBoolean(rnd.Next(0, 2)));
- SetData(hoistingCrane);
- }
-
- private void ComboBoxSelectorMap_SelectedIndexChanged(object sender, EventArgs e)
- {
- switch (comboBoxSelectorMap.Text)
- {
- case "Простая карта":
- _abstractMap = new SimpleMap();
- break;
- case "Вторая карта":
- _abstractMap = new SecondMap();
- break;
- }
- }
-
- private void pictureBoxHoistingCrane_Click(object sender, EventArgs e)
- {
-
- }
- }
-}
diff --git a/HoistingCrane/HoistingCrane/FormMap.resx b/HoistingCrane/HoistingCrane/FormMap.resx
deleted file mode 100644
index f298a7b..0000000
--- a/HoistingCrane/HoistingCrane/FormMap.resx
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.Designer.cs b/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.Designer.cs
index 11ed709..7523fe8 100644
--- a/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.Designer.cs
+++ b/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.Designer.cs
@@ -48,9 +48,16 @@
this.buttonShowOnMap = new System.Windows.Forms.Button();
this.buttonAddHoistingCrane = new System.Windows.Forms.Button();
this.pictureBox = new System.Windows.Forms.PictureBox();
+ 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.groupBoxMaps.SuspendLayout();
this.groupBoxTools.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
+ this.menuStrip.SuspendLayout();
this.SuspendLayout();
//
// groupBoxMaps
@@ -115,7 +122,6 @@
this.comboBoxSelectorMap.Size = new System.Drawing.Size(200, 28);
this.comboBoxSelectorMap.TabIndex = 0;
this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectorMap_SelectedIndexChanged);
-
//
// textBoxNewMapName
//
@@ -138,11 +144,11 @@
this.groupBoxTools.Controls.Add(this.buttonShowOnMap);
this.groupBoxTools.Controls.Add(this.buttonAddHoistingCrane);
this.groupBoxTools.Dock = System.Windows.Forms.DockStyle.Right;
- this.groupBoxTools.Location = new System.Drawing.Point(927, 0);
+ this.groupBoxTools.Location = new System.Drawing.Point(927, 28);
this.groupBoxTools.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.groupBoxTools.Name = "groupBoxTools";
this.groupBoxTools.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.groupBoxTools.Size = new System.Drawing.Size(233, 782);
+ this.groupBoxTools.Size = new System.Drawing.Size(233, 754);
this.groupBoxTools.TabIndex = 0;
this.groupBoxTools.TabStop = false;
this.groupBoxTools.Text = "Инструменты";
@@ -184,7 +190,7 @@
this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonDown.BackgroundImage = global::HoistingCrane.Properties.Resources.down;
this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonDown.Location = new System.Drawing.Point(104, 715);
+ this.buttonDown.Location = new System.Drawing.Point(104, 687);
this.buttonDown.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonDown.Name = "buttonDown";
this.buttonDown.Size = new System.Drawing.Size(34, 40);
@@ -197,7 +203,7 @@
this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonRight.BackgroundImage = global::HoistingCrane.Properties.Resources.right;
this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonRight.Location = new System.Drawing.Point(145, 715);
+ this.buttonRight.Location = new System.Drawing.Point(145, 687);
this.buttonRight.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonRight.Name = "buttonRight";
this.buttonRight.Size = new System.Drawing.Size(34, 40);
@@ -210,7 +216,7 @@
this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonLeft.BackgroundImage = global::HoistingCrane.Properties.Resources.left;
this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonLeft.Location = new System.Drawing.Point(63, 715);
+ this.buttonLeft.Location = new System.Drawing.Point(63, 687);
this.buttonLeft.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonLeft.Name = "buttonLeft";
this.buttonLeft.Size = new System.Drawing.Size(34, 40);
@@ -223,7 +229,7 @@
this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonUp.BackgroundImage = global::HoistingCrane.Properties.Resources.up;
this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonUp.Location = new System.Drawing.Point(104, 667);
+ this.buttonUp.Location = new System.Drawing.Point(104, 639);
this.buttonUp.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonUp.Name = "buttonUp";
this.buttonUp.Size = new System.Drawing.Size(34, 40);
@@ -256,13 +262,50 @@
// 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, 28);
this.pictureBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pictureBox.Name = "pictureBox";
- this.pictureBox.Size = new System.Drawing.Size(927, 782);
+ this.pictureBox.Size = new System.Drawing.Size(927, 754);
this.pictureBox.TabIndex = 1;
this.pictureBox.TabStop = false;
- this.pictureBox.Click += new System.EventHandler(this.pictureBox_Click);
+ //
+ // menuStrip
+ //
+ this.menuStrip.ImageScalingSize = new System.Drawing.Size(24, 24);
+ 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(1160, 28);
+ this.menuStrip.TabIndex = 2;
+ this.menuStrip.Text = "menuStrip";
+ //
+ // fileToolStripMenuItem
+ //
+ this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.saveToolStripMenuItem,
+ this.loadToolStripMenuItem});
+ this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+ this.fileToolStripMenuItem.Size = new System.Drawing.Size(54, 29);
+ this.fileToolStripMenuItem.Text = "File";
+ //
+ // saveToolStripMenuItem
+ //
+ this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
+ this.saveToolStripMenuItem.Size = new System.Drawing.Size(125, 26);
+ this.saveToolStripMenuItem.Text = "Save";
+ this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
+ //
+ // loadToolStripMenuItem
+ //
+ this.loadToolStripMenuItem.Name = "loadToolStripMenuItem";
+ this.loadToolStripMenuItem.Size = new System.Drawing.Size(125, 26);
+ this.loadToolStripMenuItem.Text = "Load";
+ this.loadToolStripMenuItem.Click += new System.EventHandler(this.loadToolStripMenuItem_Click);
+ //
+ // openFileDialog
+ //
+ this.openFileDialog.Filter = "txt file | *.txt";
//
// FormMapWithSetHoistingCrane
//
@@ -271,6 +314,8 @@
this.ClientSize = new System.Drawing.Size(1160, 782);
this.Controls.Add(this.pictureBox);
this.Controls.Add(this.groupBoxTools);
+ this.Controls.Add(this.menuStrip);
+ this.MainMenuStrip = this.menuStrip;
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "FormMapWithSetHoistingCrane";
this.Text = "Карта с набором объектов";
@@ -279,7 +324,10 @@
this.groupBoxTools.ResumeLayout(false);
this.groupBoxTools.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
this.ResumeLayout(false);
+ this.PerformLayout();
}
@@ -302,5 +350,11 @@
private Button buttonDeleteMap;
private ListBox listBoxMaps;
private Button buttonAddMap;
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem loadToolStripMenuItem;
+ private System.Windows.Forms.OpenFileDialog openFileDialog;
+ private System.Windows.Forms.SaveFileDialog saveFileDialog;
}
}
\ No newline at end of file
diff --git a/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.cs b/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.cs
index 82acb96..b262736 100644
--- a/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.cs
+++ b/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.cs
@@ -24,10 +24,8 @@ namespace HoistingCrane
///
private readonly MapsCollection _mapsCollection;
///
-
- private MapWithSetHoistingCraneGeneric _mapHoistingCraneCollectionGeneric;
-
- public FormMapWithSetHoistingCrane()
+ public FormMapWithSetHoistingCrane(ILogger logger)
+ {
{
InitializeComponent();
_mapsCollection = new MapsCollection(pictureBox.Width, pictureBox.Height);
@@ -102,7 +100,6 @@ namespace HoistingCrane
_mapsCollection.AddMap(textBoxNewMapName.Text, _mapsDict[comboBoxSelectorMap.Text]);
ReloadMaps();
}
-
private void ListBoxMaps_SelectedIndexChanged(object sender, EventArgs e)
{
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
@@ -118,14 +115,12 @@ namespace HoistingCrane
{
return;
}
-
if (MessageBox.Show($"Удалить карту {listBoxMaps.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
_mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty);
ReloadMaps();
}
}
-
private void ButtonAddHoistingCrane_Click(object sender, EventArgs e)
{
if (listBoxMaps.SelectedIndex == -1)
@@ -135,7 +130,6 @@ namespace HoistingCrane
var formHoistingCraneConfig = new FormHoistingCraneConfig();
formHoistingCraneConfig.AddEvent(AddHoistingCrane);
formHoistingCraneConfig.Show();
-
}
private void AddHoistingCrane(DrawingHoistingCrane drawingHoistingCrane)
{
@@ -171,7 +165,6 @@ namespace HoistingCrane
MessageBox.Show("Не удалось удалить объект");
}
}
-
private void ButtonShowStorage_Click(object sender, EventArgs e)
{
if (listBoxMaps.SelectedIndex == -1)
@@ -180,7 +173,6 @@ namespace HoistingCrane
}
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
}
-
private void ButtonShowOnMap_Click(object sender, EventArgs e)
{
if (listBoxMaps.SelectedIndex == -1)
@@ -189,7 +181,6 @@ namespace HoistingCrane
}
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowOnMap();
}
-
private void ButtonMove_Click(object sender, EventArgs e)
{
if (listBoxMaps.SelectedIndex == -1)
@@ -215,10 +206,39 @@ namespace HoistingCrane
}
pictureBox.Image = _mapHoistingCraneCollectionGeneric.MoveObject(enums);
}
-
- private void pictureBox_Click(object sender, EventArgs e)
+ 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))
+ {
+ MessageBox.Show("Открытие прошло успешно", "Результат",
+ MessageBoxButtons.OK, MessageBoxIcon.Information);
+ ReloadMaps();
+ }
+ else
+ {
+ MessageBox.Show("Не удалось открыть", "Результат",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
}
}
}
diff --git a/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.resx b/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.resx
index f298a7b..5e83204 100644
--- a/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.resx
+++ b/HoistingCrane/HoistingCrane/FormMapWithSetHoistingCrane.resx
@@ -57,4 +57,13 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
+
+ 144, 17
+
+
+ 303, 17
+
\ No newline at end of file
diff --git a/HoistingCrane/HoistingCrane/HoistingCraneDelegate.cs b/HoistingCrane/HoistingCrane/HoistingCraneDelegate.cs
deleted file mode 100644
index 02eb7e6..0000000
--- a/HoistingCrane/HoistingCrane/HoistingCraneDelegate.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-
-namespace HoistingCrane
-{
- ///
- /// Делегат для передачи объекта-корабля
- ///
- ///
- public delegate void HoistingCraneDelegate(DrawingHoistingCrane hoistingCrane);
-}
diff --git a/HoistingCrane/HoistingCrane/IDrawingObject.cs b/HoistingCrane/HoistingCrane/IDrawingObject.cs
index cbdd2ac..9c0c409 100644
--- a/HoistingCrane/HoistingCrane/IDrawingObject.cs
+++ b/HoistingCrane/HoistingCrane/IDrawingObject.cs
@@ -13,5 +13,6 @@ namespace HoistingCrane
void MoveObject(Direction direction);
void DrawingObject(Graphics g);
(float Left, float Right, float Top, float Bottom) GetCurrentPosition();
+ string GetInfo();
}
}
diff --git a/HoistingCrane/HoistingCrane/MapWithSetHoistingCraneGeneric.cs b/HoistingCrane/HoistingCrane/MapWithSetHoistingCraneGeneric.cs
index 4b1fb1d..d288a7c 100644
--- a/HoistingCrane/HoistingCrane/MapWithSetHoistingCraneGeneric.cs
+++ b/HoistingCrane/HoistingCrane/MapWithSetHoistingCraneGeneric.cs
@@ -14,48 +14,42 @@ namespace HoistingCrane
private readonly int _pictureHeight;
private readonly int _placeSizeWidth = 200;
private readonly int _placeSizeHeight = 120;
- private readonly SetHoistingCraneGeneric _setHoistingCrane;
+ private readonly SetHoistingCraneGeneric _setHoistingCranes;
private readonly U _map;
-
public MapWithSetHoistingCraneGeneric(int picWidth, int picHeight, U map)
{
int width = picWidth / _placeSizeWidth;
int height = picHeight / _placeSizeHeight;
- _setHoistingCrane = new SetHoistingCraneGeneric(width * height);
+ _setHoistingCranes = new SetHoistingCraneGeneric(width * height);
_pictureWidth = picWidth;
_pictureHeight = picHeight;
_map = map;
}
-
- public static int operator +(MapWithSetHoistingCraneGeneric map, T bulldozer)
+ public static int operator +(MapWithSetHoistingCraneGeneric map, T hoistingcrane)
{
- return map._setHoistingCrane.Insert(bulldozer);
+ return map._setHoistingCranes.Insert(hoistingcrane);
}
-
public static T operator -(MapWithSetHoistingCraneGeneric map, int position)
{
- return map._setHoistingCrane.Remove(position);
+ return map._setHoistingCranes.Remove(position);
}
-
public Bitmap ShowSet()
{
Bitmap bmp = new(_pictureWidth, _pictureWidth);
Graphics gr = Graphics.FromImage(bmp);
DrawBackground(gr);
- DrawBulldozers(gr);
+ DrawHoistingCranes(gr);
return bmp;
}
-
public Bitmap ShowOnMap()
{
Shaking();
- foreach (var hoistingCrane in _setHoistingCrane.GetHoistingCrane())
+ foreach (var hoistingCrane in _setHoistingCranes.GetHoistingCranes())
{
return _map.CreateMap(_pictureWidth, _pictureHeight, hoistingCrane);
}
return new(_pictureWidth, _pictureHeight);
}
-
public Bitmap MoveObject(Direction direction)
{
if (_map != null)
@@ -64,21 +58,20 @@ namespace HoistingCrane
}
return new(_pictureWidth, _pictureHeight);
}
-
public void Shaking()
{
- int j = _setHoistingCrane.Count - 1;
- for (int i = 0; i < _setHoistingCrane.Count; i++)
+ int j = _setHoistingCranes.Count - 1;
+ for (int i = 0; i < _setHoistingCranes.Count; i++)
{
- if (_setHoistingCrane[i] == null)
+ if (_setHoistingCranes[i] == null)
{
for (; j > i; j--)
{
- var warship = _setHoistingCrane[j];
+ var warship = _setHoistingCranes[j];
if (warship != null)
{
- _setHoistingCrane.Insert(warship, i);
- _setHoistingCrane.Remove(j);
+ _setHoistingCranes.Insert(warship, i);
+ _setHoistingCranes.Remove(j);
break;
}
}
@@ -89,7 +82,6 @@ namespace HoistingCrane
}
}
}
-
private void DrawBackground(Graphics gr)
{
Pen pen = new(Color.Black, 3);
@@ -102,23 +94,22 @@ namespace HoistingCrane
gr.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
}
}
-
- private void DrawBulldozers(Graphics gr)
+ private void DrawHoistingCranes(Graphics gr)
{
int heightEl = _pictureHeight / _placeSizeHeight;
int widthEl = _pictureWidth / _placeSizeWidth;
int curWidth = 3;
int curHeight = 3;
- for (int i = 0; i < _setHoistingCrane.Count; i++)
+ for (int i = 0; i < _setHoistingCranes.Count; i++)
{
if (curHeight < 0)
{
return;
}
- _setHoistingCrane[i]?.SetObject(curWidth * _placeSizeWidth + 10,
+ _setHoistingCranes[i]?.SetObject(curWidth * _placeSizeWidth + 10,
curHeight * _placeSizeHeight + 10, _pictureWidth, _pictureHeight);
- _setHoistingCrane[i]?.DrawingObject(gr);
+ _setHoistingCranes[i]?.DrawingObject(gr);
if (curWidth == 0)
{
@@ -129,5 +120,25 @@ namespace HoistingCrane
curWidth--;
}
}
+ public string GetData(char separatorType, char separatorData)
+ {
+ string data = $"{_map.GetType().Name}{separatorType}";
+ foreach (var Boat in _setHoistingCranes.GetHoistingCranes())
+ {
+ data += $"{Boat.GetInfo()}{separatorData}";
+ }
+ return data;
+ }
+ ///
+ /// Загрузка списка из массива строк
+ ///
+ ///
+ public void LoadData(string[] records)
+ {
+ foreach (var rec in records)
+ {
+ _setHoistingCranes.Insert(DrawingObjectHoistingCrane.Create(rec) as T);
+ }
+ }
}
}
diff --git a/HoistingCrane/HoistingCrane/MapsCollection.cs b/HoistingCrane/HoistingCrane/MapsCollection.cs
index 3e42343..1604f42 100644
--- a/HoistingCrane/HoistingCrane/MapsCollection.cs
+++ b/HoistingCrane/HoistingCrane/MapsCollection.cs
@@ -10,8 +10,10 @@ namespace HoistingCrane
{
///
/// Словарь (хранилище) с картами
- ///
+
readonly Dictionary> _mapStorages;
+ ///
+ readonly Dictionary> _mapStorages;
///
/// Возвращение списка названий карт
///
@@ -29,9 +31,12 @@ namespace HoistingCrane
///
///
///
+ /// private readonly char separatorDict = '|';
+ private readonly char separatorData = ';';
+ private readonly char separatorDict = '|';
public MapsCollection(int pictureWidth, int pictureHeight)
{
- _mapStorages = new Dictionary>();
+ _mapStorages = new Dictionary>();
_pictureWidth = pictureWidth;
_pictureHeight = pictureHeight;
}
@@ -61,13 +66,13 @@ namespace HoistingCrane
///
///
///
- public MapWithSetHoistingCraneGeneric this[string ind]
+ public MapWithSetHoistingCraneGeneric this[string ind]
{
get
{
if (ind != String.Empty)
{
- MapWithSetHoistingCraneGeneric value;
+ MapWithSetHoistingCraneGeneric value;
if (_mapStorages.TryGetValue(ind, out value))
{
return value;
@@ -76,5 +81,69 @@ namespace HoistingCrane
return null;
}
}
+ ///
+ /// Сохранение информации про лодки м в хранилище в файл
+ ///
+ /// Путь и имя файла
+ public bool SaveData(string filename)
+ {
+ if (File.Exists(filename))
+ {
+ File.Delete(filename);
+ }
+ using (FileStream fs = new(filename, FileMode.Create))
+ using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
+ {
+ sw.WriteLine("MapsCollection");
+ foreach (var storage in _mapStorages)
+ {
+
+ sw.WriteLine(
+ $"{storage.Key}{separatorDict}{storage.Value.GetData(separatorDict, separatorData)}"
+ );
+ }
+ }
+ return true;
+ }
+
+ /// Загрузка информации по локомотивам в депо из файла
+ public bool LoadData(string filename)
+ {
+ if (!File.Exists(filename))
+ {
+ return false;
+ }
+ using (FileStream fs = new(filename, FileMode.Open))
+ using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
+ {
+ string curLine = sr.ReadLine();
+
+ if (!curLine.Contains("MapsCollection"))
+ {
+ return false;
+ }
+ _mapStorages.Clear();
+ while ((curLine = sr.ReadLine()) != null)
+ {
+ var elems = curLine.Split(separatorDict);
+ AbstractMap map = null;
+
+ switch (elems[1])
+ {
+ case "SimpleMap":
+ map = new SimpleMap();
+ break;
+ case "SecondMap":
+ map = new SecondMap();
+ break;
+
+ }
+
+ _mapStorages.Add(elems[0], new MapWithSetHoistingCraneGeneric(_pictureWidth, _pictureHeight, map));
+ _mapStorages[elems[0]].LoadData(elems[2].Split(separatorData, StringSplitOptions.RemoveEmptyEntries));
+ }
+ return true;
+ }
+ }
}
}
diff --git a/HoistingCrane/HoistingCrane/SetHoistingCraneGeneric.cs b/HoistingCrane/HoistingCrane/SetHoistingCraneGeneric.cs
index d44591d..73c0856 100644
--- a/HoistingCrane/HoistingCrane/SetHoistingCraneGeneric.cs
+++ b/HoistingCrane/HoistingCrane/SetHoistingCraneGeneric.cs
@@ -10,22 +10,17 @@ namespace HoistingCrane
where T : class
{
private readonly List _places;
-
public int Count => _places.Count;
-
private readonly int _maxCount;
-
public SetHoistingCraneGeneric(int count)
{
_maxCount = count;
_places = new List();
}
-
public int Insert(T hoistingCrane)
{
return Insert(hoistingCrane, 0);
}
-
public int Insert(T hoistingCrane, int position)
{
if (position < 0 || position > Count || _maxCount == Count)
@@ -35,7 +30,6 @@ namespace HoistingCrane
_places.Insert(position, hoistingCrane);
return position;
}
-
public T Remove(int position)
{
if (position < Count && position >= 0 && _places[position] != null)
@@ -47,7 +41,6 @@ namespace HoistingCrane
return null;
}
-
public T this[int position]
{
get
@@ -63,7 +56,7 @@ namespace HoistingCrane
Insert(value, position);
}
}
- public IEnumerable GetHoistingCrane()
+ public IEnumerable GetHoistingCranes()
{
foreach (var hoistingcrane in _places)
{