Romanov E.V. LabWork6 #18

Closed
RomanovEgor wants to merge 13 commits from 6LAB into 5LAB
21 changed files with 288 additions and 496 deletions

View File

@ -103,7 +103,6 @@ namespace HoistingCrane
else _drawingObject.MoveObject(SetOppositDirection(direction)); else _drawingObject.MoveObject(SetOppositDirection(direction));
return DrawMapWithObject(); return DrawMapWithObject();
} }
private Direction SetOppositDirection(Direction dir) private Direction SetOppositDirection(Direction dir)
{ {
switch (dir) switch (dir)

View File

@ -9,14 +9,12 @@ namespace HoistingCrane
public class DrawingHoistingCrane public class DrawingHoistingCrane
{ {
public EntityHoistingCrane HoistingCrane { get; protected set; } public EntityHoistingCrane HoistingCrane { get; protected set; }
protected float _startPosX; protected float _startPosX;
protected float _startPosY; protected float _startPosY;
private int? _pictureWidth = null; private int? _pictureWidth = null;
private int? _pictureHeight = null; private int? _pictureHeight = null;
private readonly int _hoistingCraneWidth = 80; private readonly int _hoistingCraneWidth = 80;
private readonly int _hoistingCraneHeight = 50; private readonly int _hoistingCraneHeight = 50;
protected DrawingHoistingCrane(int speed, float weight, Color bodyColor, int hoistingCraneWidth, int hoistingCraneHeigth) : protected DrawingHoistingCrane(int speed, float weight, Color bodyColor, int hoistingCraneWidth, int hoistingCraneHeigth) :
this(speed, weight, bodyColor) this(speed, weight, bodyColor)
{ {
@ -27,7 +25,6 @@ namespace HoistingCrane
{ {
HoistingCrane = new EntityHoistingCrane(speed, weight, bodyColor); HoistingCrane = new EntityHoistingCrane(speed, weight, bodyColor);
} }
public void SetPosition(int x, int y, int width, int height) public void SetPosition(int x, int y, int width, int height)
{ {
// TODO checks // TODO checks
@ -36,7 +33,6 @@ namespace HoistingCrane
_pictureWidth = width; _pictureWidth = width;
_pictureHeight = height; _pictureHeight = height;
} }
public void MoveTransport(Direction direction) public void MoveTransport(Direction direction)
{ {
if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) if (!_pictureWidth.HasValue || !_pictureHeight.HasValue)

View File

@ -1,9 +1,4 @@
using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HoistingCrane namespace HoistingCrane
{ {
internal class DrawingObjectHoistingCrane : IDrawingObject internal class DrawingObjectHoistingCrane : IDrawingObject
@ -24,11 +19,14 @@ namespace HoistingCrane
} }
public void SetObject(int x, int y, int width, int height) 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) public void DrawingObject(Graphics g)
{ {
_hoistingCrane?.DrawTransport(g); _hoistingCrane?.DrawTransport(g);
} }
public string GetInfo() => _hoistingCrane?.GetDataForSave();
public static IDrawingObject Create(string data) => new DrawingObjectHoistingCrane(data.CreateDrawingHoistingCrane());
} }
} }

View File

@ -14,11 +14,11 @@ namespace HoistingCrane
public bool Сounterweight { get; private set; } public bool Сounterweight { get; private set; }
public Color DopColor { get; 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) base(speed, weight, bodyColor)
{ {
Crane = crane; Crane = crane;
Сounterweight = counterweight; Сounterweight = counterWeight;
DopColor = dopColor; DopColor = dopColor;
} }
} }

View File

@ -9,13 +9,9 @@ namespace HoistingCrane
public class EntityHoistingCrane public class EntityHoistingCrane
{ {
public int Speed { get; private set; } public int Speed { get; private set; }
public float Weight { get; private set; } public float Weight { get; private set; }
public Color BodyColor { get; set; } public Color BodyColor { get; set; }
public float Step => Speed * 100 / Weight; public float Step => Speed * 100 / Weight;
public EntityHoistingCrane(int speed, float weight, Color bodyColor) public EntityHoistingCrane(int speed, float weight, Color bodyColor)
{ {
Random rnd = new(); Random rnd = new();

View File

@ -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
{
/// <summary>
/// Разделитель для записи информации по объекту в файл
/// </summary>
private static readonly char _separatorForObject = ':';
/// <summary>
/// Создание объекта из строки
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
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;
}
/// <summary>
/// Получение данных для сохранения в файл
/// </summary>
/// <param name="DrawingHoistingCrane"></param>
/// <returns></returns>
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}";
}
}
}

View File

@ -150,7 +150,6 @@
this.pictureBoxHoistingCrane.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.pictureBoxHoistingCrane.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.pictureBoxHoistingCrane.TabIndex = 6; this.pictureBoxHoistingCrane.TabIndex = 6;
this.pictureBoxHoistingCrane.TabStop = false; this.pictureBoxHoistingCrane.TabStop = false;
this.pictureBoxHoistingCrane.Click += new System.EventHandler(this.pictureBoxHoistingCrane_Click);
this.pictureBoxHoistingCrane.Resize += new System.EventHandler(this.PictureBoxHoistingCrane_Resize); this.pictureBoxHoistingCrane.Resize += new System.EventHandler(this.PictureBoxHoistingCrane_Resize);
// //
// buttonCreateModify // buttonCreateModify
@ -163,7 +162,6 @@
this.buttonCreateModify.TabIndex = 7; this.buttonCreateModify.TabIndex = 7;
this.buttonCreateModify.Text = "Модификация"; this.buttonCreateModify.Text = "Модификация";
this.buttonCreateModify.UseVisualStyleBackColor = true; this.buttonCreateModify.UseVisualStyleBackColor = true;
this.buttonCreateModify.Click += new System.EventHandler(this.ButtonCreateModify_Click);
// //
// buttonSelect // buttonSelect
// //

View File

@ -8,7 +8,6 @@
{ {
InitializeComponent(); InitializeComponent();
} }
private void Draw() private void Draw()
{ {
Bitmap bmp = new(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height); Bitmap bmp = new(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height);
@ -16,7 +15,6 @@
_HoistingCrane?.DrawTransport(gr); _HoistingCrane?.DrawTransport(gr);
pictureBoxHoistingCrane.Image = bmp; pictureBoxHoistingCrane.Image = bmp;
} }
private void SetData() private void SetData()
{ {
Random rnd = new(); Random rnd = new();
@ -25,7 +23,6 @@
toolStripStatusLabelWeight.Text = $"Вес: {_HoistingCrane.HoistingCrane.Weight}"; toolStripStatusLabelWeight.Text = $"Вес: {_HoistingCrane.HoistingCrane.Weight}";
toolStripStatusLabelBodyColor.Text = $"Цвет:{_HoistingCrane.HoistingCrane.BodyColor.Name}"; toolStripStatusLabelBodyColor.Text = $"Цвет:{_HoistingCrane.HoistingCrane.BodyColor.Name}";
} }
private void ButtonCreate_Click(object sender, EventArgs e) private void ButtonCreate_Click(object sender, EventArgs e)
{ {
Random rnd = new(); Random rnd = new();
@ -40,7 +37,6 @@
SetData(); SetData();
Draw(); Draw();
} }
private void ButtonMove_Click(object sender, EventArgs e) private void ButtonMove_Click(object sender, EventArgs e)
{ {
string name = ((Button)sender)?.Name ?? string.Empty; string name = ((Button)sender)?.Name ?? string.Empty;
@ -61,40 +57,21 @@
} }
Draw(); Draw();
} }
private void PictureBoxHoistingCrane_Resize(object sender, EventArgs e) private void PictureBoxHoistingCrane_Resize(object sender, EventArgs e)
{ {
_HoistingCrane?.ChangeBorders(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height); _HoistingCrane?.ChangeBorders(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height);
Draw(); Draw();
} }
/// <summary>
private void ButtonCreateModify_Click(object sender, EventArgs e) /// Èçìåíåíèå ðàçìåðîâ ôîðìû
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pictureBoxHoistingCrane_Resize(object sender, EventArgs e)
{ {
Random rnd = new(); _HoistingCrane?.ChangeBorders(pictureBoxHoistingCrane.Width, pictureBoxHoistingCrane.Height);
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();
Draw(); Draw();
} }
private void pictureBoxHoistingCrane_Click(object sender, EventArgs e)
{
}
private void ButtonSelect_Click(object sender, EventArgs e) private void ButtonSelect_Click(object sender, EventArgs e)
{ {
SelectedHoistingCrane = _HoistingCrane; SelectedHoistingCrane = _HoistingCrane;

View File

@ -369,7 +369,6 @@
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "FormHoistingCraneConfig"; this.Name = "FormHoistingCraneConfig";
this.Text = "Создание объекта"; this.Text = "Создание объекта";
this.Load += new System.EventHandler(this.FormHoistingCraneConfig_Load);
this.groupBoxConfig.ResumeLayout(false); this.groupBoxConfig.ResumeLayout(false);
this.groupBoxConfig.PerformLayout(); this.groupBoxConfig.PerformLayout();
this.groupBoxColors.ResumeLayout(false); this.groupBoxColors.ResumeLayout(false);

View File

@ -15,10 +15,8 @@ namespace HoistingCrane
//переменная-выбранный кран //переменная-выбранный кран
DrawingHoistingCrane _hoistingCrane = null; DrawingHoistingCrane _hoistingCrane = null;
public DrawingHoistingCrane SelectedHoistingCrane { get; private set; } public DrawingHoistingCrane SelectedHoistingCrane { get; private set; }
//событие //событие
private event HoistingCraneDelegate EventAddHoistingCrane; private event Action<DrawingHoistingCrane> EventAddHoistingCrane;
//конструктор //конструктор
public FormHoistingCraneConfig() public FormHoistingCraneConfig()
{ {
@ -33,7 +31,6 @@ namespace HoistingCrane
panelBlue.MouseDown += PanelColor_MouseDown; panelBlue.MouseDown += PanelColor_MouseDown;
buttonCancel.Click += (object sender, EventArgs e) => Close(); buttonCancel.Click += (object sender, EventArgs e) => Close();
} }
//отрисовка кран //отрисовка кран
private void DrawHoistingCrane() private void DrawHoistingCrane()
{ {
@ -43,20 +40,18 @@ namespace HoistingCrane
_hoistingCrane?.DrawTransport(gr); _hoistingCrane?.DrawTransport(gr);
pictureBoxObject.Image = bmp; pictureBoxObject.Image = bmp;
} }
//добавление события //добавление события
public void AddEvent(HoistingCraneDelegate ev) public void AddEvent(Action<DrawingHoistingCrane> ev)
{ {
if (EventAddHoistingCrane == null) if (EventAddHoistingCrane == null)
{ {
EventAddHoistingCrane = new HoistingCraneDelegate(ev); EventAddHoistingCrane = new Action<DrawingHoistingCrane>(ev);
} }
else else
{ {
EventAddHoistingCrane += ev; EventAddHoistingCrane += ev;
} }
} }
private void LabelObject_MouseDown(object sender, MouseEventArgs e) private void LabelObject_MouseDown(object sender, MouseEventArgs e)
{ {
(sender as Label).DoDragDrop((sender as Label).Name, DragDropEffects.Move | DragDropEffects.Copy); (sender as Label).DoDragDrop((sender as Label).Name, DragDropEffects.Move | DragDropEffects.Copy);
@ -74,7 +69,6 @@ namespace HoistingCrane
e.Effect = DragDropEffects.None; e.Effect = DragDropEffects.None;
} }
} }
//действия при приеме перетаскиваемой информации //действия при приеме перетаскиваемой информации
private void PanelObject_DragDrop(object sender, DragEventArgs e) private void PanelObject_DragDrop(object sender, DragEventArgs e)
{ {
@ -91,13 +85,11 @@ namespace HoistingCrane
DrawHoistingCrane(); DrawHoistingCrane();
} }
//отправляем цвет с панели //отправляем цвет с панели
private void PanelColor_MouseDown(object sender, MouseEventArgs e) private void PanelColor_MouseDown(object sender, MouseEventArgs e)
{ {
(sender as Control).DoDragDrop((sender as Control).BackColor, DragDropEffects.Move | DragDropEffects.Copy); (sender as Control).DoDragDrop((sender as Control).BackColor, DragDropEffects.Move | DragDropEffects.Copy);
} }
//проверка получаемой информации (её типа на соответсвие требуемому) //проверка получаемой информации (её типа на соответсвие требуемому)
private void LabelColor_DragEnter(object sender, DragEventArgs e) private void LabelColor_DragEnter(object sender, DragEventArgs e)
{ {
@ -110,7 +102,6 @@ namespace HoistingCrane
e.Effect = DragDropEffects.None; e.Effect = DragDropEffects.None;
} }
} }
//принимаем основной цвет //принимаем основной цвет
private void LabelBaseColor_DragDrop(object sender, DragEventArgs e) private void LabelBaseColor_DragDrop(object sender, DragEventArgs e)
{ {
@ -122,7 +113,6 @@ namespace HoistingCrane
DrawHoistingCrane(); DrawHoistingCrane();
} }
} }
//принимаем дополнительный цвет //принимаем дополнительный цвет
private void LabelDopColor_DragDrop(object sender, DragEventArgs e) private void LabelDopColor_DragDrop(object sender, DragEventArgs e)
{ {
@ -133,18 +123,12 @@ namespace HoistingCrane
DrawHoistingCrane(); DrawHoistingCrane();
} }
} }
//добавление крана //добавление крана
private void ButtonAddObject_Click(object sender, EventArgs e) private void ButtonAddObject_Click(object sender, EventArgs e)
{ {
EventAddHoistingCrane?.Invoke(_hoistingCrane); EventAddHoistingCrane?.Invoke(_hoistingCrane);
Close(); Close();
} }
private void FormHoistingCraneConfig_Load(object sender, EventArgs e)
{
}
} }
} }

View File

@ -1,208 +0,0 @@
namespace HoistingCrane
{
partial class FormMap
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.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;
}
}

View File

@ -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)
{
}
}
}

View File

@ -1,60 +0,0 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -48,9 +48,16 @@
this.buttonShowOnMap = new System.Windows.Forms.Button(); this.buttonShowOnMap = new System.Windows.Forms.Button();
this.buttonAddHoistingCrane = new System.Windows.Forms.Button(); this.buttonAddHoistingCrane = new System.Windows.Forms.Button();
this.pictureBox = new System.Windows.Forms.PictureBox(); 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.groupBoxMaps.SuspendLayout();
this.groupBoxTools.SuspendLayout(); this.groupBoxTools.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
this.menuStrip.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// groupBoxMaps // groupBoxMaps
@ -115,7 +122,6 @@
this.comboBoxSelectorMap.Size = new System.Drawing.Size(200, 28); this.comboBoxSelectorMap.Size = new System.Drawing.Size(200, 28);
this.comboBoxSelectorMap.TabIndex = 0; this.comboBoxSelectorMap.TabIndex = 0;
this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectorMap_SelectedIndexChanged); this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectorMap_SelectedIndexChanged);
// //
// textBoxNewMapName // textBoxNewMapName
// //
@ -138,11 +144,11 @@
this.groupBoxTools.Controls.Add(this.buttonShowOnMap); this.groupBoxTools.Controls.Add(this.buttonShowOnMap);
this.groupBoxTools.Controls.Add(this.buttonAddHoistingCrane); this.groupBoxTools.Controls.Add(this.buttonAddHoistingCrane);
this.groupBoxTools.Dock = System.Windows.Forms.DockStyle.Right; 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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.groupBoxTools.Name = "groupBoxTools"; this.groupBoxTools.Name = "groupBoxTools";
this.groupBoxTools.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4); 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.TabIndex = 0;
this.groupBoxTools.TabStop = false; this.groupBoxTools.TabStop = false;
this.groupBoxTools.Text = "Инструменты"; 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.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.BackgroundImage = global::HoistingCrane.Properties.Resources.down;
this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonDown.Name = "buttonDown"; this.buttonDown.Name = "buttonDown";
this.buttonDown.Size = new System.Drawing.Size(34, 40); 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.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.BackgroundImage = global::HoistingCrane.Properties.Resources.right;
this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonRight.Name = "buttonRight"; this.buttonRight.Name = "buttonRight";
this.buttonRight.Size = new System.Drawing.Size(34, 40); 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.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.BackgroundImage = global::HoistingCrane.Properties.Resources.left;
this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonLeft.Name = "buttonLeft"; this.buttonLeft.Name = "buttonLeft";
this.buttonLeft.Size = new System.Drawing.Size(34, 40); 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.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.BackgroundImage = global::HoistingCrane.Properties.Resources.up;
this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.buttonUp.Name = "buttonUp"; this.buttonUp.Name = "buttonUp";
this.buttonUp.Size = new System.Drawing.Size(34, 40); this.buttonUp.Size = new System.Drawing.Size(34, 40);
@ -256,13 +262,50 @@
// pictureBox // pictureBox
// //
this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill; 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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pictureBox.Name = "pictureBox"; 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.TabIndex = 1;
this.pictureBox.TabStop = false; 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 // FormMapWithSetHoistingCrane
// //
@ -271,6 +314,8 @@
this.ClientSize = new System.Drawing.Size(1160, 782); this.ClientSize = new System.Drawing.Size(1160, 782);
this.Controls.Add(this.pictureBox); this.Controls.Add(this.pictureBox);
this.Controls.Add(this.groupBoxTools); 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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "FormMapWithSetHoistingCrane"; this.Name = "FormMapWithSetHoistingCrane";
this.Text = "Карта с набором объектов"; this.Text = "Карта с набором объектов";
@ -279,7 +324,10 @@
this.groupBoxTools.ResumeLayout(false); this.groupBoxTools.ResumeLayout(false);
this.groupBoxTools.PerformLayout(); this.groupBoxTools.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
this.menuStrip.ResumeLayout(false);
this.menuStrip.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout();
} }
@ -302,5 +350,11 @@
private Button buttonDeleteMap; private Button buttonDeleteMap;
private ListBox listBoxMaps; private ListBox listBoxMaps;
private Button buttonAddMap; 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;
} }
} }

View File

@ -24,10 +24,8 @@ namespace HoistingCrane
/// </summary> /// </summary>
private readonly MapsCollection _mapsCollection; private readonly MapsCollection _mapsCollection;
/// <summary> /// <summary>
public FormMapWithSetHoistingCrane(ILogger<FormMapWithSetHoistingCrane> logger)
private MapWithSetHoistingCraneGeneric<DrawingObjectHoistingCrane, AbstractMap> _mapHoistingCraneCollectionGeneric; {
public FormMapWithSetHoistingCrane()
{ {
InitializeComponent(); InitializeComponent();
_mapsCollection = new MapsCollection(pictureBox.Width, pictureBox.Height); _mapsCollection = new MapsCollection(pictureBox.Width, pictureBox.Height);
@ -102,7 +100,6 @@ namespace HoistingCrane
_mapsCollection.AddMap(textBoxNewMapName.Text, _mapsDict[comboBoxSelectorMap.Text]); _mapsCollection.AddMap(textBoxNewMapName.Text, _mapsDict[comboBoxSelectorMap.Text]);
ReloadMaps(); ReloadMaps();
} }
private void ListBoxMaps_SelectedIndexChanged(object sender, EventArgs e) private void ListBoxMaps_SelectedIndexChanged(object sender, EventArgs e)
{ {
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
@ -118,14 +115,12 @@ namespace HoistingCrane
{ {
return; return;
} }
if (MessageBox.Show($"Удалить карту {listBoxMaps.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) if (MessageBox.Show($"Удалить карту {listBoxMaps.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{ {
_mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty); _mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty);
ReloadMaps(); ReloadMaps();
} }
} }
private void ButtonAddHoistingCrane_Click(object sender, EventArgs e) private void ButtonAddHoistingCrane_Click(object sender, EventArgs e)
{ {
if (listBoxMaps.SelectedIndex == -1) if (listBoxMaps.SelectedIndex == -1)
@ -135,7 +130,6 @@ namespace HoistingCrane
var formHoistingCraneConfig = new FormHoistingCraneConfig(); var formHoistingCraneConfig = new FormHoistingCraneConfig();
formHoistingCraneConfig.AddEvent(AddHoistingCrane); formHoistingCraneConfig.AddEvent(AddHoistingCrane);
formHoistingCraneConfig.Show(); formHoistingCraneConfig.Show();
} }
private void AddHoistingCrane(DrawingHoistingCrane drawingHoistingCrane) private void AddHoistingCrane(DrawingHoistingCrane drawingHoistingCrane)
{ {
@ -171,7 +165,6 @@ namespace HoistingCrane
MessageBox.Show("Не удалось удалить объект"); MessageBox.Show("Не удалось удалить объект");
} }
} }
private void ButtonShowStorage_Click(object sender, EventArgs e) private void ButtonShowStorage_Click(object sender, EventArgs e)
{ {
if (listBoxMaps.SelectedIndex == -1) if (listBoxMaps.SelectedIndex == -1)
@ -180,7 +173,6 @@ namespace HoistingCrane
} }
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
} }
private void ButtonShowOnMap_Click(object sender, EventArgs e) private void ButtonShowOnMap_Click(object sender, EventArgs e)
{ {
if (listBoxMaps.SelectedIndex == -1) if (listBoxMaps.SelectedIndex == -1)
@ -189,7 +181,6 @@ namespace HoistingCrane
} }
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowOnMap(); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowOnMap();
} }
private void ButtonMove_Click(object sender, EventArgs e) private void ButtonMove_Click(object sender, EventArgs e)
{ {
if (listBoxMaps.SelectedIndex == -1) if (listBoxMaps.SelectedIndex == -1)
@ -215,10 +206,39 @@ namespace HoistingCrane
} }
pictureBox.Image = _mapHoistingCraneCollectionGeneric.MoveObject(enums); pictureBox.Image = _mapHoistingCraneCollectionGeneric.MoveObject(enums);
} }
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
private void pictureBox_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);
}
}
}
}
} }

View File

@ -57,4 +57,13 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>144, 17</value>
</metadata>
<metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>303, 17</value>
</metadata>
</root> </root>

View File

@ -1,9 +0,0 @@

namespace HoistingCrane
{
/// <summary>
/// Делегат для передачи объекта-корабля
/// </summary>
/// <param name="hoistingCrane"></param>
public delegate void HoistingCraneDelegate(DrawingHoistingCrane hoistingCrane);
}

View File

@ -13,5 +13,6 @@ namespace HoistingCrane
void MoveObject(Direction direction); void MoveObject(Direction direction);
void DrawingObject(Graphics g); void DrawingObject(Graphics g);
(float Left, float Right, float Top, float Bottom) GetCurrentPosition(); (float Left, float Right, float Top, float Bottom) GetCurrentPosition();
string GetInfo();
} }
} }

View File

@ -14,48 +14,42 @@ namespace HoistingCrane
private readonly int _pictureHeight; private readonly int _pictureHeight;
private readonly int _placeSizeWidth = 200; private readonly int _placeSizeWidth = 200;
private readonly int _placeSizeHeight = 120; private readonly int _placeSizeHeight = 120;
private readonly SetHoistingCraneGeneric<T> _setHoistingCrane; private readonly SetHoistingCraneGeneric<T> _setHoistingCranes;
private readonly U _map; private readonly U _map;
public MapWithSetHoistingCraneGeneric(int picWidth, int picHeight, U map) public MapWithSetHoistingCraneGeneric(int picWidth, int picHeight, U map)
{ {
int width = picWidth / _placeSizeWidth; int width = picWidth / _placeSizeWidth;
int height = picHeight / _placeSizeHeight; int height = picHeight / _placeSizeHeight;
_setHoistingCrane = new SetHoistingCraneGeneric<T>(width * height); _setHoistingCranes = new SetHoistingCraneGeneric<T>(width * height);
_pictureWidth = picWidth; _pictureWidth = picWidth;
_pictureHeight = picHeight; _pictureHeight = picHeight;
_map = map; _map = map;
} }
public static int operator +(MapWithSetHoistingCraneGeneric<T, U> map, T hoistingcrane)
public static int operator +(MapWithSetHoistingCraneGeneric<T, U> map, T bulldozer)
{ {
return map._setHoistingCrane.Insert(bulldozer); return map._setHoistingCranes.Insert(hoistingcrane);
} }
public static T operator -(MapWithSetHoistingCraneGeneric<T, U> map, int position) public static T operator -(MapWithSetHoistingCraneGeneric<T, U> map, int position)
{ {
return map._setHoistingCrane.Remove(position); return map._setHoistingCranes.Remove(position);
} }
public Bitmap ShowSet() public Bitmap ShowSet()
{ {
Bitmap bmp = new(_pictureWidth, _pictureWidth); Bitmap bmp = new(_pictureWidth, _pictureWidth);
Graphics gr = Graphics.FromImage(bmp); Graphics gr = Graphics.FromImage(bmp);
DrawBackground(gr); DrawBackground(gr);
DrawBulldozers(gr); DrawHoistingCranes(gr);
return bmp; return bmp;
} }
public Bitmap ShowOnMap() public Bitmap ShowOnMap()
{ {
Shaking(); Shaking();
foreach (var hoistingCrane in _setHoistingCrane.GetHoistingCrane()) foreach (var hoistingCrane in _setHoistingCranes.GetHoistingCranes())
{ {
return _map.CreateMap(_pictureWidth, _pictureHeight, hoistingCrane); return _map.CreateMap(_pictureWidth, _pictureHeight, hoistingCrane);
} }
return new(_pictureWidth, _pictureHeight); return new(_pictureWidth, _pictureHeight);
} }
public Bitmap MoveObject(Direction direction) public Bitmap MoveObject(Direction direction)
{ {
if (_map != null) if (_map != null)
@ -64,21 +58,20 @@ namespace HoistingCrane
} }
return new(_pictureWidth, _pictureHeight); return new(_pictureWidth, _pictureHeight);
} }
public void Shaking() public void Shaking()
{ {
int j = _setHoistingCrane.Count - 1; int j = _setHoistingCranes.Count - 1;
for (int i = 0; i < _setHoistingCrane.Count; i++) for (int i = 0; i < _setHoistingCranes.Count; i++)
{ {
if (_setHoistingCrane[i] == null) if (_setHoistingCranes[i] == null)
{ {
for (; j > i; j--) for (; j > i; j--)
{ {
var warship = _setHoistingCrane[j]; var warship = _setHoistingCranes[j];
if (warship != null) if (warship != null)
{ {
_setHoistingCrane.Insert(warship, i); _setHoistingCranes.Insert(warship, i);
_setHoistingCrane.Remove(j); _setHoistingCranes.Remove(j);
break; break;
} }
} }
@ -89,7 +82,6 @@ namespace HoistingCrane
} }
} }
} }
private void DrawBackground(Graphics gr) private void DrawBackground(Graphics gr)
{ {
Pen pen = new(Color.Black, 3); Pen pen = new(Color.Black, 3);
@ -102,23 +94,22 @@ namespace HoistingCrane
gr.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight); gr.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
} }
} }
private void DrawHoistingCranes(Graphics gr)
private void DrawBulldozers(Graphics gr)
{ {
int heightEl = _pictureHeight / _placeSizeHeight; int heightEl = _pictureHeight / _placeSizeHeight;
int widthEl = _pictureWidth / _placeSizeWidth; int widthEl = _pictureWidth / _placeSizeWidth;
int curWidth = 3; int curWidth = 3;
int curHeight = 3; int curHeight = 3;
for (int i = 0; i < _setHoistingCrane.Count; i++) for (int i = 0; i < _setHoistingCranes.Count; i++)
{ {
if (curHeight < 0) if (curHeight < 0)
{ {
return; return;
} }
_setHoistingCrane[i]?.SetObject(curWidth * _placeSizeWidth + 10, _setHoistingCranes[i]?.SetObject(curWidth * _placeSizeWidth + 10,
curHeight * _placeSizeHeight + 10, _pictureWidth, _pictureHeight); curHeight * _placeSizeHeight + 10, _pictureWidth, _pictureHeight);
_setHoistingCrane[i]?.DrawingObject(gr); _setHoistingCranes[i]?.DrawingObject(gr);
if (curWidth == 0) if (curWidth == 0)
{ {
@ -129,5 +120,25 @@ namespace HoistingCrane
curWidth--; 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;
}
/// <summary>
/// Загрузка списка из массива строк
/// </summary>
/// <param name="records"></param>
public void LoadData(string[] records)
{
foreach (var rec in records)
{
_setHoistingCranes.Insert(DrawingObjectHoistingCrane.Create(rec) as T);
}
}
} }
} }

View File

@ -10,8 +10,10 @@ namespace HoistingCrane
{ {
/// <summary> /// <summary>
/// Словарь (хранилище) с картами /// Словарь (хранилище) с картами
/// </summary>
readonly Dictionary<string, MapWithSetHoistingCraneGeneric<DrawingObjectHoistingCrane, AbstractMap>> _mapStorages; readonly Dictionary<string, MapWithSetHoistingCraneGeneric<DrawingObjectHoistingCrane, AbstractMap>> _mapStorages;
/// </summary>
readonly Dictionary<string, MapWithSetHoistingCraneGeneric<IDrawingObject, AbstractMap>> _mapStorages;
/// <summary> /// <summary>
/// Возвращение списка названий карт /// Возвращение списка названий карт
/// </summary> /// </summary>
@ -29,9 +31,12 @@ namespace HoistingCrane
/// </summary> /// </summary>
/// <param name="pictureWidth"></param> /// <param name="pictureWidth"></param>
/// <param name="pictureHeight"></param> /// <param name="pictureHeight"></param>
/// private readonly char separatorDict = '|';
private readonly char separatorData = ';';
private readonly char separatorDict = '|';
public MapsCollection(int pictureWidth, int pictureHeight) public MapsCollection(int pictureWidth, int pictureHeight)
{ {
_mapStorages = new Dictionary<string, MapWithSetHoistingCraneGeneric<DrawingObjectHoistingCrane, AbstractMap>>(); _mapStorages = new Dictionary<string, MapWithSetHoistingCraneGeneric<IDrawingObject, AbstractMap>>();
_pictureWidth = pictureWidth; _pictureWidth = pictureWidth;
_pictureHeight = pictureHeight; _pictureHeight = pictureHeight;
} }
@ -61,13 +66,13 @@ namespace HoistingCrane
/// </summary> /// </summary>
/// <param name="ind"></param> /// <param name="ind"></param>
/// <returns></returns> /// <returns></returns>
public MapWithSetHoistingCraneGeneric<DrawingObjectHoistingCrane, AbstractMap> this[string ind] public MapWithSetHoistingCraneGeneric<IDrawingObject, AbstractMap> this[string ind]
{ {
get get
{ {
if (ind != String.Empty) if (ind != String.Empty)
{ {
MapWithSetHoistingCraneGeneric<DrawingObjectHoistingCrane, AbstractMap> value; MapWithSetHoistingCraneGeneric<IDrawingObject, AbstractMap> value;
if (_mapStorages.TryGetValue(ind, out value)) if (_mapStorages.TryGetValue(ind, out value))
{ {
return value; return value;
@ -76,5 +81,69 @@ namespace HoistingCrane
return null; return null;
} }
} }
/// <summary>
/// Сохранение информации про лодки м в хранилище в файл
/// </summary>
/// <param name="filename">Путь и имя файла</param>
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<IDrawingObject, AbstractMap>(_pictureWidth, _pictureHeight, map));
_mapStorages[elems[0]].LoadData(elems[2].Split(separatorData, StringSplitOptions.RemoveEmptyEntries));
}
return true;
}
}
} }
} }

View File

@ -10,22 +10,17 @@ namespace HoistingCrane
where T : class where T : class
{ {
private readonly List<T> _places; private readonly List<T> _places;
public int Count => _places.Count; public int Count => _places.Count;
private readonly int _maxCount; private readonly int _maxCount;
public SetHoistingCraneGeneric(int count) public SetHoistingCraneGeneric(int count)
{ {
_maxCount = count; _maxCount = count;
_places = new List<T>(); _places = new List<T>();
} }
public int Insert(T hoistingCrane) public int Insert(T hoistingCrane)
{ {
return Insert(hoistingCrane, 0); return Insert(hoistingCrane, 0);
} }
public int Insert(T hoistingCrane, int position) public int Insert(T hoistingCrane, int position)
{ {
if (position < 0 || position > Count || _maxCount == Count) if (position < 0 || position > Count || _maxCount == Count)
@ -35,7 +30,6 @@ namespace HoistingCrane
_places.Insert(position, hoistingCrane); _places.Insert(position, hoistingCrane);
return position; return position;
} }
public T Remove(int position) public T Remove(int position)
{ {
if (position < Count && position >= 0 && _places[position] != null) if (position < Count && position >= 0 && _places[position] != null)
@ -47,7 +41,6 @@ namespace HoistingCrane
return null; return null;
} }
public T this[int position] public T this[int position]
{ {
get get
@ -63,7 +56,7 @@ namespace HoistingCrane
Insert(value, position); Insert(value, position);
} }
} }
public IEnumerable<T> GetHoistingCrane() public IEnumerable<T> GetHoistingCranes()
{ {
foreach (var hoistingcrane in _places) foreach (var hoistingcrane in _places)
{ {