PIbd-11_Tarasov_V.D._Simple/ProjectMonorail/FormMonorailCollection.cs
2024-03-10 19:05:31 +04:00

149 lines
4.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using ProjectMonorail.Scripts.Monorail.CollectionGenericObjects;
using ProjectMonorail.Scripts.Monorail.Drawnings;
namespace ProjectMonorail
{
/// <summary>
///
/// </summary>
public partial class FormMonorailCollection : Form
{
/// <summary>
///
/// </summary>
private AbstractCompany? _company = null;
/// <summary>
/// Конструктор
/// </summary>
public FormMonorailCollection()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ComboBoxSelectorCompany_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBoxSelectorCompany.Text)
{
case "Хранилище":
_company = new MonorailSharingService(pictureBox.Width, pictureBox.Height, new MassiveGenericObjects<DrawingMonorail>());
break;
}
}
/// <summary>
/// Создание объекта класса-перемещения
/// </summary>
/// <param name="type">Тип создоваемого объекта</param>
private void CreateObject(string type)
{
if (_company == null) return;
Random random = new();
DrawingMonorail drawningMonorail;
switch (type)
{
case nameof(DrawingMonorail):
drawningMonorail = new DrawingMonorail(random.Next(100, 300), random.Next(1000, 3000),
GetColor(random));
break;
case nameof(DrawingModernMonorail):
bool randomTrack = Convert.ToBoolean(random.Next(0, 2));
drawningMonorail = new DrawingModernMonorail(random.Next(100, 300), random.Next(1000, 3000), GetColor(random), GetColor(random), randomTrack, (randomTrack ? Convert.ToBoolean(random.Next(0, 2)) : true));
break;
default:
return;
}
if (_company + drawningMonorail)
{
MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show();
}
else
{
MessageBox.Show("Не удалось добавить объект");
}
}
/// <summary>
/// Получение цвета
/// </summary>
/// <param name="random">Генератор случайных чесел</param>
/// <returns></returns>
private static Color GetColor(Random random)
{
Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
ColorDialog dialog = new ColorDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
color = dialog.Color;
}
return color;
}
private void ButtonAddMonorail_Click(object sender, EventArgs e)
{
CreateObject(nameof(DrawingMonorail));
}
private void ButtonAddModernMonorail_Click(object sender, EventArgs e)
{
CreateObject(nameof(DrawingModernMonorail));
}
private void buttonRemoveMonorail_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(maskedTextBox.Text) || _company == null) return;
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
int position = Convert.ToInt32(maskedTextBox.Text);
if (_company - position)
{
MessageBox.Show("Объект удален");
pictureBox.Image = _company.Show();
}
else
{
MessageBox.Show("Не удалось удалить объект");
}
}
private void ButtonGoToCheck_Click(object sender, EventArgs e)
{
if (_company == null) return;
DrawingMonorail? monorail = null;
int coutner = 100;
while (monorail == null && coutner-- > 0)
{
monorail = _company.GetRandomObject();
}
if (monorail == null) return;
FormMonorail form = new FormMonorail()
{
SetMonorail = monorail
};
form.ShowDialog();
}
private void ButtonRefresh_Click(object sender, EventArgs e)
{
if (_company == null) return;
pictureBox.Image = _company.Show();
}
}
}