Compare commits
No commits in common. "ISEbd-21.Gismatullin.R.M.laba07" and "main" have entirely different histories.
ISEbd-21.G
...
main
@ -8,39 +8,4 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
|
|
||||||
<PackageReference Include="NLog" Version="5.2.8" />
|
|
||||||
<PackageReference Include="NLog.Config" Version="4.7.15" />
|
|
||||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" />
|
|
||||||
<PackageReference Include="NLog.Schema" Version="5.2.8" />
|
|
||||||
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.8" />
|
|
||||||
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0" />
|
|
||||||
<PackageReference Include="Serilog.Settings.Configuration" Version="8.0.0" />
|
|
||||||
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
|
|
||||||
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Update="Properties\Resources.Designer.cs">
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Update="Properties\Resources.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<None Update="appsettings.json">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
@ -1,21 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser
|
|
||||||
{
|
|
||||||
public enum Direction
|
|
||||||
{
|
|
||||||
|
|
||||||
Up = 1,
|
|
||||||
|
|
||||||
Down = 2,
|
|
||||||
|
|
||||||
Left = 3,
|
|
||||||
|
|
||||||
Right = 4
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Bulldoser.Entities;
|
|
||||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
||||||
|
|
||||||
namespace Bulldoser.Drawings
|
|
||||||
{
|
|
||||||
public class DrawingBulldoser : DrawingTractor
|
|
||||||
{
|
|
||||||
public DrawingBulldoser(int speed, double weight, Color bodyColor, Color additionalColor,
|
|
||||||
bool otval, bool seifBatteries, int width, int height) : base(speed, weight, bodyColor, width, height, 140, 123)
|
|
||||||
{
|
|
||||||
if (EntityTractor != null)
|
|
||||||
{
|
|
||||||
EntityTractor = new EntityBulldoser(speed, width, bodyColor, additionalColor, otval, seifBatteries);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public override void DrawTransport(Graphics g)
|
|
||||||
{
|
|
||||||
if (EntityTractor is not EntityBulldoser Bulldoser)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Pen pen = new(Color.Black);
|
|
||||||
Brush blackBrush = new SolidBrush(Color.Black);
|
|
||||||
Brush windows = new SolidBrush(Color.LightBlue);
|
|
||||||
Brush bodyColor = new SolidBrush(Bulldoser.BodyColor);
|
|
||||||
Brush additionalBrush = new SolidBrush(Bulldoser.AdditionalColor);
|
|
||||||
Brush grayBrush = new SolidBrush(Color.Gray);
|
|
||||||
if (Bulldoser.Otval)
|
|
||||||
{
|
|
||||||
g.FillRectangle(additionalBrush, _startPosX + 20, _startPosY + 55, 15, 5);
|
|
||||||
g.FillRectangle(additionalBrush, _startPosX + 10, _startPosY + 35, 10, 70);
|
|
||||||
g.FillRectangle(additionalBrush, _startPosX + 0, _startPosY + 100, 10, 5);
|
|
||||||
}
|
|
||||||
if (Bulldoser.SeifBatteries)
|
|
||||||
{
|
|
||||||
g.FillRectangle(additionalBrush, _startPosX + 130, _startPosY + 65, 25, 10);
|
|
||||||
g.FillRectangle(additionalBrush, _startPosX + 150, _startPosY + 75, 5, 30);
|
|
||||||
}
|
|
||||||
|
|
||||||
base.DrawTransport(g);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,160 +0,0 @@
|
|||||||
using Bulldoser.Entities;
|
|
||||||
using Bulldoser.MovementStrategy;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.Drawings
|
|
||||||
{
|
|
||||||
public class DrawingTractor
|
|
||||||
{
|
|
||||||
public EntityTractor? EntityTractor { get; set; }
|
|
||||||
|
|
||||||
protected int _pictureWidth;
|
|
||||||
|
|
||||||
protected int _pictureHeight;
|
|
||||||
|
|
||||||
protected int _startPosX;
|
|
||||||
|
|
||||||
protected int _startPosY;
|
|
||||||
|
|
||||||
private int tractWidth;
|
|
||||||
protected readonly int _tractWidth = 140;
|
|
||||||
|
|
||||||
protected readonly int _tractHeight = 123;
|
|
||||||
public int GetPosX => _startPosX;
|
|
||||||
public int GetPosY => _startPosY;
|
|
||||||
public int GetWidth => _tractWidth;
|
|
||||||
public int GetHeight => _tractHeight;
|
|
||||||
|
|
||||||
public IMoveableObject GetMoveableObject => new DrawingObjectTractor(this);
|
|
||||||
|
|
||||||
public DrawingTractor(int speed, double weight, Color bodyColor, int width, int heigth)
|
|
||||||
{
|
|
||||||
if ((heigth > _tractHeight) && (width > _pictureWidth))
|
|
||||||
{
|
|
||||||
EntityTractor = new EntityTractor(speed, weight, bodyColor);
|
|
||||||
}
|
|
||||||
_pictureWidth = width;
|
|
||||||
_pictureHeight = heigth;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected DrawingTractor(int speed, double weight, Color bodyColor, int width,
|
|
||||||
int height, int tractWidth, int tractHeight)
|
|
||||||
{
|
|
||||||
if ((height > tractHeight) && (width > tractWidth))
|
|
||||||
{
|
|
||||||
EntityTractor = new EntityTractor(speed, weight, bodyColor);
|
|
||||||
}
|
|
||||||
_pictureWidth = width;
|
|
||||||
_pictureHeight = height;
|
|
||||||
_tractWidth = tractWidth;
|
|
||||||
_tractHeight = tractHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Установка позиции
|
|
||||||
public void SetPosition(int x, int y)
|
|
||||||
{
|
|
||||||
if ((x < 0 || y < 0) || (x + _tractWidth > _pictureWidth || y + _tractHeight > _pictureHeight))
|
|
||||||
{
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
_startPosX = x;
|
|
||||||
_startPosY = y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void MoveTransport(Direction direction)
|
|
||||||
{
|
|
||||||
if (EntityTractor == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (direction)
|
|
||||||
{
|
|
||||||
case Direction.Left:
|
|
||||||
if (_startPosX - EntityTractor.Step > 0)
|
|
||||||
{
|
|
||||||
_startPosX -= (int)EntityTractor.Step;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Direction.Up:
|
|
||||||
if (_startPosY - EntityTractor.Step > 0)
|
|
||||||
{
|
|
||||||
_startPosY -= (int)EntityTractor.Step;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Direction.Right:
|
|
||||||
if (_startPosX + EntityTractor.Step + _tractWidth < _pictureWidth)
|
|
||||||
{
|
|
||||||
_startPosX += (int)EntityTractor.Step;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Direction.Down:
|
|
||||||
if (_startPosY + EntityTractor.Step + _tractHeight < _pictureHeight)
|
|
||||||
{
|
|
||||||
_startPosY += (int)EntityTractor.Step;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void DrawTransport(Graphics g)
|
|
||||||
{
|
|
||||||
{
|
|
||||||
if (EntityTractor == null) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Pen pen = new(Color.Black);
|
|
||||||
Brush brownBrush = new SolidBrush(Color.Brown);
|
|
||||||
Brush windows = new SolidBrush(Color.LightYellow);
|
|
||||||
Brush bodyColor = new SolidBrush(EntityTractor.BodyColor);
|
|
||||||
Brush blackBrush = new SolidBrush(Color.Black);
|
|
||||||
Brush grayBrush = new SolidBrush(Color.Gray);
|
|
||||||
|
|
||||||
//кузов
|
|
||||||
g.FillRectangle(bodyColor, _startPosX + 35, _startPosY + 35, 100, 40);
|
|
||||||
g.FillRectangle(bodyColor, _startPosX + 75, _startPosY + 0, 5, 35);
|
|
||||||
g.FillRectangle(bodyColor, _startPosX + 130, _startPosY + 0, 5, 35);
|
|
||||||
g.FillRectangle(bodyColor, _startPosX + 75, _startPosY + 0, 60, 5);
|
|
||||||
//труба
|
|
||||||
g.FillRectangle(bodyColor, _startPosX + 55, _startPosY + 5, 10, 30);
|
|
||||||
//кабина
|
|
||||||
g.FillRectangle(windows, _startPosX + 80, _startPosY + 5, 50, 30);
|
|
||||||
//гусеницы
|
|
||||||
g.FillEllipse(blackBrush, _startPosX + 25, _startPosY + 75, 30, 30);
|
|
||||||
g.FillEllipse(blackBrush, _startPosX + 115, _startPosY + 75, 30, 30);
|
|
||||||
g.FillRectangle(blackBrush, _startPosX + 35, _startPosY + 75, 100, 30);
|
|
||||||
g.FillEllipse(grayBrush, _startPosX + 28, _startPosY + 78, 25, 25);
|
|
||||||
g.FillEllipse(grayBrush, _startPosX + 118, _startPosY + 78, 25, 25);
|
|
||||||
g.FillEllipse(grayBrush, _startPosX + 58, _startPosY + 90, 15, 15);
|
|
||||||
g.FillEllipse(grayBrush, _startPosX + 88, _startPosY + 90, 15, 15);
|
|
||||||
g.FillEllipse(grayBrush, _startPosX + 78, _startPosY + 78, 10, 10);
|
|
||||||
g.FillEllipse(grayBrush, _startPosX + 105, _startPosY + 78, 10, 10);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CanMove(Direction direction)
|
|
||||||
{
|
|
||||||
if (EntityTractor == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return direction switch
|
|
||||||
{
|
|
||||||
//влево
|
|
||||||
Direction.Left => _startPosX - EntityTractor.Step > 0,
|
|
||||||
//вверх
|
|
||||||
Direction.Up => _startPosY - EntityTractor.Step > 0,
|
|
||||||
// вправо
|
|
||||||
Direction.Right => _startPosX + EntityTractor.Step < _pictureWidth,
|
|
||||||
//вниз
|
|
||||||
Direction.Down => _startPosY + EntityTractor.Step < _pictureHeight,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
using Bulldoser.Entities;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.Drawings
|
|
||||||
{
|
|
||||||
internal static class ExtentionDrawningTractor
|
|
||||||
{
|
|
||||||
public static DrawingTractor? CreateDrawingTractor(this string info,
|
|
||||||
char separatorForObject, int width, int height)
|
|
||||||
{
|
|
||||||
string[] strs = info.Split(separatorForObject);
|
|
||||||
if (strs.Length == 3)
|
|
||||||
{
|
|
||||||
return new DrawingTractor(Convert.ToInt32(strs[0]), Convert.ToInt32(strs[1]),
|
|
||||||
Color.FromName(strs[2]), width, height);
|
|
||||||
}
|
|
||||||
if (strs.Length == 7)
|
|
||||||
{
|
|
||||||
return new DrawingBulldoser(Convert.ToInt32(strs[0]),
|
|
||||||
Convert.ToInt32(strs[1]),
|
|
||||||
Color.FromName(strs[2]),
|
|
||||||
Color.FromName(strs[3]),
|
|
||||||
Convert.ToBoolean(strs[4]),
|
|
||||||
Convert.ToBoolean(strs[5]),
|
|
||||||
width, height);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
public static string GetDataForSave(this DrawingTractor drawingTractor,
|
|
||||||
char separatorForObject)
|
|
||||||
{
|
|
||||||
var tractor = drawingTractor.EntityTractor;
|
|
||||||
if (tractor == null)
|
|
||||||
{
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
var str =
|
|
||||||
$"{tractor.Speed}{separatorForObject}{tractor.Weight}{separatorForObject}{tractor.BodyColor.Name}";
|
|
||||||
if (tractor is not EntityBulldoser bulldozer)
|
|
||||||
{
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
return
|
|
||||||
$"{str}{separatorForObject}{bulldozer.AdditionalColor.Name}{separatorForObject}" +
|
|
||||||
$"{bulldozer.SeifBatteries}{separatorForObject}{bulldozer.Otval}{separatorForObject}";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net.NetworkInformation;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.Entities
|
|
||||||
{
|
|
||||||
public class EntityBulldoser : EntityTractor
|
|
||||||
{
|
|
||||||
public Color AdditionalColor { get; set; }
|
|
||||||
public bool Otval { get; private set; }
|
|
||||||
public bool SeifBatteries { get; private set; }
|
|
||||||
public EntityBulldoser(int speed, double weight, Color bodyColor, Color additionalColor, bool otval,
|
|
||||||
bool seifBatteries) : base(speed, weight, bodyColor)
|
|
||||||
{
|
|
||||||
AdditionalColor = additionalColor;
|
|
||||||
Otval = otval;
|
|
||||||
SeifBatteries = seifBatteries;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.Entities
|
|
||||||
{
|
|
||||||
public class EntityTractor
|
|
||||||
{
|
|
||||||
public int Speed { get; private set; }
|
|
||||||
public double Weight { get; private set; }
|
|
||||||
public Color BodyColor { get; set; }
|
|
||||||
public double Step => (double)Speed * 100 / Weight;
|
|
||||||
public EntityTractor(int speed, double weight, Color bodyColor)
|
|
||||||
{
|
|
||||||
Speed = speed;
|
|
||||||
Weight = weight;
|
|
||||||
BodyColor = bodyColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
using System.Runtime.Serialization;
|
|
||||||
namespace ProjectBulldozer.Exceptions
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
internal class BulldozerNotFoundException : ApplicationException
|
|
||||||
{
|
|
||||||
public BulldozerNotFoundException(int i) : base($"Не найден объект по позиции {i}") { }
|
|
||||||
|
|
||||||
public BulldozerNotFoundException() : base() { }
|
|
||||||
|
|
||||||
public BulldozerNotFoundException(string message) : base(message) { }
|
|
||||||
|
|
||||||
public BulldozerNotFoundException(string message, Exception exception) : base(message, exception) { }
|
|
||||||
|
|
||||||
protected BulldozerNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) { }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
using System.Runtime.Serialization;
|
|
||||||
namespace ProjectBulldozer.Exceptions
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
internal class StorageOverflowException : ApplicationException
|
|
||||||
{
|
|
||||||
public StorageOverflowException(int count) : base($"В наборе превышено допустимое количество: {count}") { }
|
|
||||||
|
|
||||||
public StorageOverflowException() : base() { }
|
|
||||||
|
|
||||||
public StorageOverflowException(string message) : base(message) { }
|
|
||||||
|
|
||||||
public StorageOverflowException(string message, Exception Exception) : base(message, Exception) { }
|
|
||||||
|
|
||||||
protected StorageOverflowException(SerializationInfo info, StreamingContext context) : base(info, context) { }
|
|
||||||
}
|
|
||||||
}
|
|
187
Bulldoser/Bulldoser/Form1.Designer.cs
generated
187
Bulldoser/Bulldoser/Form1.Designer.cs
generated
@ -1,6 +1,6 @@
|
|||||||
namespace Bulldoser
|
namespace Bulldoser
|
||||||
{
|
{
|
||||||
partial class FormBulldoser
|
partial class Form1
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Required designer variable.
|
/// Required designer variable.
|
||||||
@ -28,189 +28,12 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBulldoser));
|
this.components = new System.ComponentModel.Container();
|
||||||
pictureBoxBulldoser = new PictureBox();
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
buttonCreateBulldoser = new Button();
|
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||||
buttonRight = new Button();
|
this.Text = "Form1";
|
||||||
buttonLeft = new Button();
|
|
||||||
buttonUp = new Button();
|
|
||||||
buttonDown = new Button();
|
|
||||||
comboBoxStrategy = new ComboBox();
|
|
||||||
buttonCreateTractor = new Button();
|
|
||||||
buttonStep = new Button();
|
|
||||||
fileSystemWatcher1 = new FileSystemWatcher();
|
|
||||||
buttonSelectTransport = new Button();
|
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxBulldoser).BeginInit();
|
|
||||||
((System.ComponentModel.ISupportInitialize)fileSystemWatcher1).BeginInit();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// pictureBoxBulldoser
|
|
||||||
//
|
|
||||||
pictureBoxBulldoser.Dock = DockStyle.Fill;
|
|
||||||
pictureBoxBulldoser.Location = new Point(0, 0);
|
|
||||||
pictureBoxBulldoser.Margin = new Padding(2);
|
|
||||||
pictureBoxBulldoser.Name = "pictureBoxBulldoser";
|
|
||||||
pictureBoxBulldoser.Size = new Size(884, 461);
|
|
||||||
pictureBoxBulldoser.SizeMode = PictureBoxSizeMode.AutoSize;
|
|
||||||
pictureBoxBulldoser.TabIndex = 0;
|
|
||||||
pictureBoxBulldoser.TabStop = false;
|
|
||||||
//
|
|
||||||
// buttonCreateBulldoser
|
|
||||||
//
|
|
||||||
buttonCreateBulldoser.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
|
||||||
buttonCreateBulldoser.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
|
||||||
buttonCreateBulldoser.Location = new Point(121, 403);
|
|
||||||
buttonCreateBulldoser.Margin = new Padding(2);
|
|
||||||
buttonCreateBulldoser.Name = "buttonCreateBulldoser";
|
|
||||||
buttonCreateBulldoser.Size = new Size(100, 47);
|
|
||||||
buttonCreateBulldoser.TabIndex = 1;
|
|
||||||
buttonCreateBulldoser.Text = "Создать бульдозер";
|
|
||||||
buttonCreateBulldoser.UseVisualStyleBackColor = true;
|
|
||||||
buttonCreateBulldoser.Click += buttonCreateBulldozer_Click;
|
|
||||||
//
|
|
||||||
// buttonRight
|
|
||||||
//
|
|
||||||
buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
|
||||||
buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
|
|
||||||
buttonRight.BackgroundImageLayout = ImageLayout.Zoom;
|
|
||||||
buttonRight.Location = new Point(826, 425);
|
|
||||||
buttonRight.Margin = new Padding(2);
|
|
||||||
buttonRight.Name = "buttonRight";
|
|
||||||
buttonRight.Size = new Size(27, 25);
|
|
||||||
buttonRight.TabIndex = 4;
|
|
||||||
buttonRight.UseVisualStyleBackColor = true;
|
|
||||||
buttonRight.Click += buttonMove_Click;
|
|
||||||
//
|
|
||||||
// buttonLeft
|
|
||||||
//
|
|
||||||
buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
|
||||||
buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage");
|
|
||||||
buttonLeft.BackgroundImageLayout = ImageLayout.Zoom;
|
|
||||||
buttonLeft.Location = new Point(762, 425);
|
|
||||||
buttonLeft.Margin = new Padding(2);
|
|
||||||
buttonLeft.Name = "buttonLeft";
|
|
||||||
buttonLeft.Size = new Size(26, 25);
|
|
||||||
buttonLeft.TabIndex = 3;
|
|
||||||
buttonLeft.UseVisualStyleBackColor = true;
|
|
||||||
buttonLeft.Click += buttonMove_Click;
|
|
||||||
//
|
|
||||||
// buttonUp
|
|
||||||
//
|
|
||||||
buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
|
||||||
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
|
|
||||||
buttonUp.BackgroundImageLayout = ImageLayout.Zoom;
|
|
||||||
buttonUp.Location = new Point(792, 394);
|
|
||||||
buttonUp.Margin = new Padding(2);
|
|
||||||
buttonUp.Name = "buttonUp";
|
|
||||||
buttonUp.Size = new Size(30, 27);
|
|
||||||
buttonUp.TabIndex = 3;
|
|
||||||
buttonUp.UseVisualStyleBackColor = true;
|
|
||||||
buttonUp.Click += buttonMove_Click;
|
|
||||||
//
|
|
||||||
// buttonDown
|
|
||||||
//
|
|
||||||
buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
|
||||||
buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
|
|
||||||
buttonDown.BackgroundImageLayout = ImageLayout.Zoom;
|
|
||||||
buttonDown.Location = new Point(792, 425);
|
|
||||||
buttonDown.Margin = new Padding(2);
|
|
||||||
buttonDown.Name = "buttonDown";
|
|
||||||
buttonDown.Size = new Size(30, 25);
|
|
||||||
buttonDown.TabIndex = 5;
|
|
||||||
buttonDown.UseVisualStyleBackColor = true;
|
|
||||||
buttonDown.Click += buttonMove_Click;
|
|
||||||
//
|
|
||||||
// comboBoxStrategy
|
|
||||||
//
|
|
||||||
comboBoxStrategy.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
|
||||||
comboBoxStrategy.DropDownStyle = ComboBoxStyle.DropDownList;
|
|
||||||
comboBoxStrategy.DropDownWidth = 150;
|
|
||||||
comboBoxStrategy.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
|
||||||
comboBoxStrategy.FormattingEnabled = true;
|
|
||||||
comboBoxStrategy.Items.AddRange(new object[] { "К центру", "В угол" });
|
|
||||||
comboBoxStrategy.Location = new Point(723, 10);
|
|
||||||
comboBoxStrategy.Margin = new Padding(2);
|
|
||||||
comboBoxStrategy.Name = "comboBoxStrategy";
|
|
||||||
comboBoxStrategy.Size = new Size(150, 25);
|
|
||||||
comboBoxStrategy.TabIndex = 6;
|
|
||||||
//
|
|
||||||
// buttonCreateTractor
|
|
||||||
//
|
|
||||||
buttonCreateTractor.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
|
||||||
buttonCreateTractor.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
|
||||||
buttonCreateTractor.Location = new Point(11, 403);
|
|
||||||
buttonCreateTractor.Margin = new Padding(2);
|
|
||||||
buttonCreateTractor.Name = "buttonCreateTractor";
|
|
||||||
buttonCreateTractor.Size = new Size(106, 47);
|
|
||||||
buttonCreateTractor.TabIndex = 7;
|
|
||||||
buttonCreateTractor.Text = "Создать трактор";
|
|
||||||
buttonCreateTractor.UseVisualStyleBackColor = true;
|
|
||||||
buttonCreateTractor.Click += buttonCreateTractor_Click;
|
|
||||||
//
|
|
||||||
// buttonStep
|
|
||||||
//
|
|
||||||
buttonStep.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
|
||||||
buttonStep.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
|
||||||
buttonStep.Location = new Point(785, 39);
|
|
||||||
buttonStep.Margin = new Padding(2);
|
|
||||||
buttonStep.Name = "buttonStep";
|
|
||||||
buttonStep.Size = new Size(88, 34);
|
|
||||||
buttonStep.TabIndex = 8;
|
|
||||||
buttonStep.Text = "Шаг";
|
|
||||||
buttonStep.UseVisualStyleBackColor = true;
|
|
||||||
buttonStep.Click += buttonStep_Click;
|
|
||||||
//
|
|
||||||
// fileSystemWatcher1
|
|
||||||
//
|
|
||||||
fileSystemWatcher1.EnableRaisingEvents = true;
|
|
||||||
fileSystemWatcher1.SynchronizingObject = this;
|
|
||||||
//
|
|
||||||
// buttonSelectTransport
|
|
||||||
//
|
|
||||||
buttonSelectTransport.Location = new Point(785, 78);
|
|
||||||
buttonSelectTransport.Name = "buttonSelectTransport";
|
|
||||||
buttonSelectTransport.Size = new Size(88, 34);
|
|
||||||
buttonSelectTransport.TabIndex = 9;
|
|
||||||
buttonSelectTransport.Text = "Выбор";
|
|
||||||
buttonSelectTransport.UseVisualStyleBackColor = true;
|
|
||||||
buttonSelectTransport.Click += ButtonSelect_Tractor_Click;
|
|
||||||
//
|
|
||||||
// FormBulldoser
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
ClientSize = new Size(884, 461);
|
|
||||||
Controls.Add(buttonSelectTransport);
|
|
||||||
Controls.Add(buttonStep);
|
|
||||||
Controls.Add(buttonCreateTractor);
|
|
||||||
Controls.Add(comboBoxStrategy);
|
|
||||||
Controls.Add(buttonDown);
|
|
||||||
Controls.Add(buttonUp);
|
|
||||||
Controls.Add(buttonLeft);
|
|
||||||
Controls.Add(buttonRight);
|
|
||||||
Controls.Add(buttonCreateBulldoser);
|
|
||||||
Controls.Add(pictureBoxBulldoser);
|
|
||||||
Name = "FormBulldoser";
|
|
||||||
StartPosition = FormStartPosition.CenterScreen;
|
|
||||||
Text = "Создать транспорт";
|
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxBulldoser).EndInit();
|
|
||||||
((System.ComponentModel.ISupportInitialize)fileSystemWatcher1).EndInit();
|
|
||||||
ResumeLayout(false);
|
|
||||||
PerformLayout();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private PictureBox pictureBoxBulldoser;
|
|
||||||
private Button buttonCreateBulldoser;
|
|
||||||
private Button buttonRight;
|
|
||||||
private Button buttonLeft;
|
|
||||||
private Button buttonUp;
|
|
||||||
private Button buttonDown;
|
|
||||||
private ComboBox comboBoxStrategy;
|
|
||||||
private Button buttonCreateTractor;
|
|
||||||
private Button buttonStep;
|
|
||||||
private FileSystemWatcher fileSystemWatcher1;
|
|
||||||
private Button buttonSelectTransport;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,127 +1,10 @@
|
|||||||
using Bulldoser.Drawings;
|
|
||||||
using Bulldoser.MovementStrategy;
|
|
||||||
|
|
||||||
namespace Bulldoser
|
namespace Bulldoser
|
||||||
{
|
{
|
||||||
public partial class FormBulldoser : Form
|
public partial class Form1 : Form
|
||||||
{
|
{
|
||||||
|
public Form1()
|
||||||
private DrawingTractor? _drawingTractor;
|
|
||||||
private AbstractStrategy? _abstractStrategy;
|
|
||||||
public DrawingTractor? SelectedTractor { get; private set; }
|
|
||||||
public FormBulldoser()
|
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
_abstractStrategy = null;
|
|
||||||
SelectedTractor = null;
|
|
||||||
}
|
|
||||||
private void Draw()
|
|
||||||
{
|
|
||||||
if (_drawingTractor == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Bitmap bmp = new(pictureBoxBulldoser.Width, pictureBoxBulldoser.Height);
|
|
||||||
Graphics gr = Graphics.FromImage(bmp);
|
|
||||||
_drawingTractor.DrawTransport(gr);
|
|
||||||
pictureBoxBulldoser.Image = bmp;
|
|
||||||
}
|
|
||||||
private void buttonCreateBulldozer_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Random random = new Random();
|
|
||||||
Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
|
|
||||||
ColorDialog colorDialog = new ColorDialog();
|
|
||||||
if (colorDialog.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
color = colorDialog.Color;
|
|
||||||
}
|
|
||||||
Color dopColor = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
|
|
||||||
if (colorDialog.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
dopColor = colorDialog.Color;
|
|
||||||
}
|
|
||||||
_drawingTractor = new DrawingBulldoser(random.Next(100, 300), random.Next(1000, 3000), color, dopColor,
|
|
||||||
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)),
|
|
||||||
pictureBoxBulldoser.Width, pictureBoxBulldoser.Height);
|
|
||||||
_drawingTractor.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
|
||||||
Draw();
|
|
||||||
}
|
|
||||||
private void buttonCreateTractor_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Random rnd = new Random();
|
|
||||||
Color color = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
|
|
||||||
ColorDialog colorDialog = new ColorDialog();
|
|
||||||
if (colorDialog.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
color = colorDialog.Color;
|
|
||||||
}
|
|
||||||
_drawingTractor = new DrawingTractor(rnd.Next(100, 300), rnd.Next(1000, 3000), color,
|
|
||||||
pictureBoxBulldoser.Width, pictureBoxBulldoser.Height);
|
|
||||||
_drawingTractor.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100));
|
|
||||||
Draw();
|
|
||||||
}
|
|
||||||
private void buttonMove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (_drawingTractor == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string name = ((Button)sender)?.Name ?? string.Empty;
|
|
||||||
switch (name)
|
|
||||||
{
|
|
||||||
case "buttonUp":
|
|
||||||
_drawingTractor.MoveTransport(Direction.Up);
|
|
||||||
break;
|
|
||||||
case "buttonDown":
|
|
||||||
_drawingTractor.MoveTransport(Direction.Down);
|
|
||||||
break;
|
|
||||||
case "buttonLeft":
|
|
||||||
_drawingTractor.MoveTransport(Direction.Left);
|
|
||||||
break;
|
|
||||||
case "buttonRight":
|
|
||||||
_drawingTractor.MoveTransport(Direction.Right);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Draw();
|
|
||||||
}
|
|
||||||
private void buttonStep_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (_drawingTractor == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (comboBoxStrategy.Enabled)
|
|
||||||
{
|
|
||||||
_abstractStrategy = comboBoxStrategy.SelectedIndex switch
|
|
||||||
{
|
|
||||||
0 => new MoveToCenter(),
|
|
||||||
1 => new MoveToRightCorner(),
|
|
||||||
_ => null,
|
|
||||||
};
|
|
||||||
if (_abstractStrategy == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_abstractStrategy.SetData(_drawingTractor.GetMoveableObject, pictureBoxBulldoser.Width,
|
|
||||||
pictureBoxBulldoser.Height);
|
|
||||||
}
|
|
||||||
if (_abstractStrategy == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
comboBoxStrategy.Enabled = false;
|
|
||||||
_abstractStrategy.MakeStep();
|
|
||||||
Draw();
|
|
||||||
if (_abstractStrategy.GetStatus() == Status.Finish)
|
|
||||||
{
|
|
||||||
comboBoxStrategy.Enabled = true;
|
|
||||||
_abstractStrategy = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ButtonSelect_Tractor_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SelectedTractor = _drawingTractor;
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -117,296 +117,4 @@
|
|||||||
<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>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
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
|
|
||||||
AbKnmE6OL2IbAAAAAElFTkSuQmCC
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="buttonLeft.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
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
|
|
||||||
YII=
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="buttonUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
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
|
|
||||||
A8BIf/75P6f0psd4DXc2AAAAAElFTkSuQmCC
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAAekAAAIDCAYAAAAg+ebuAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
|
||||||
vAAADrwBlbxySQAAEHBJREFUeF7t2dlylMcWhFHb4fd/XwJjDtjexwMSqNX/kJW1VkQS3Gv4tKt/+gwA
|
|
||||||
xPn9999/E2kACCTSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQ
|
|
||||||
Ig0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgD
|
|
||||||
QCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBK
|
|
||||||
pAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkA
|
|
||||||
CCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEhT48s38+ePHz9+/u2332zD
|
|
||||||
zdcemog0NT58+PD5p59+so33yy+/fP706dNf3xGwPpGmwtcL6qVf2rbfvoYaWog0FUTaZiJNE5Gmgkjb
|
|
||||||
TKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTa
|
|
||||||
ZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDS
|
|
||||||
NhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWR
|
|
||||||
tplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqI
|
|
||||||
tM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNB
|
|
||||||
pG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoK
|
|
||||||
Im0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJU
|
|
||||||
EGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5Gm
|
|
||||||
gkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0
|
|
||||||
FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00Sk
|
|
||||||
qSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYi
|
|
||||||
TQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQR
|
|
||||||
aSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJ
|
|
||||||
SFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRN
|
|
||||||
RJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRp
|
|
||||||
ItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJN
|
|
||||||
E5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNp
|
|
||||||
mog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI
|
|
||||||
00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1E
|
|
||||||
miYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m
|
|
||||||
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
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="fileSystemWatcher1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
</root>
|
251
Bulldoser/Bulldoser/Form2.Designer.cs
generated
251
Bulldoser/Bulldoser/Form2.Designer.cs
generated
@ -1,251 +0,0 @@
|
|||||||
namespace Bulldoser
|
|
||||||
{
|
|
||||||
partial class FormTractorCollection
|
|
||||||
{
|
|
||||||
/// <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()
|
|
||||||
{
|
|
||||||
pictureBoxCollections = new PictureBox();
|
|
||||||
groupBoxTools = new GroupBox();
|
|
||||||
groupBox1 = new GroupBox();
|
|
||||||
listBoxStorage = new ListBox();
|
|
||||||
DelNabor = new Button();
|
|
||||||
AddNabor = new Button();
|
|
||||||
InputNabor = new MaskedTextBox();
|
|
||||||
maskedTextBoxNumbers = new MaskedTextBox();
|
|
||||||
buttonUpdateCollection = new Button();
|
|
||||||
buttonRemoveTransport = new Button();
|
|
||||||
buttonAddTransport = new Button();
|
|
||||||
menuStrip = new MenuStrip();
|
|
||||||
toolStripMenuItem = new ToolStripMenuItem();
|
|
||||||
SavetoolStripMenuItem = new ToolStripMenuItem();
|
|
||||||
LoadtoolStripMenuItem = new ToolStripMenuItem();
|
|
||||||
openFileDialog = new OpenFileDialog();
|
|
||||||
saveFileDialog = new SaveFileDialog();
|
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).BeginInit();
|
|
||||||
groupBoxTools.SuspendLayout();
|
|
||||||
groupBox1.SuspendLayout();
|
|
||||||
menuStrip.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// pictureBoxCollections
|
|
||||||
//
|
|
||||||
pictureBoxCollections.Dock = DockStyle.Left;
|
|
||||||
pictureBoxCollections.Location = new Point(0, 24);
|
|
||||||
pictureBoxCollections.Name = "pictureBoxCollections";
|
|
||||||
pictureBoxCollections.Size = new Size(588, 426);
|
|
||||||
pictureBoxCollections.SizeMode = PictureBoxSizeMode.AutoSize;
|
|
||||||
pictureBoxCollections.TabIndex = 1;
|
|
||||||
pictureBoxCollections.TabStop = false;
|
|
||||||
//
|
|
||||||
// groupBoxTools
|
|
||||||
//
|
|
||||||
groupBoxTools.Controls.Add(groupBox1);
|
|
||||||
groupBoxTools.Controls.Add(maskedTextBoxNumbers);
|
|
||||||
groupBoxTools.Controls.Add(buttonUpdateCollection);
|
|
||||||
groupBoxTools.Controls.Add(buttonRemoveTransport);
|
|
||||||
groupBoxTools.Controls.Add(buttonAddTransport);
|
|
||||||
groupBoxTools.Location = new Point(594, 24);
|
|
||||||
groupBoxTools.Name = "groupBoxTools";
|
|
||||||
groupBoxTools.Size = new Size(200, 414);
|
|
||||||
groupBoxTools.TabIndex = 2;
|
|
||||||
groupBoxTools.TabStop = false;
|
|
||||||
groupBoxTools.Text = "Инструменты";
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
groupBox1.Controls.Add(listBoxStorage);
|
|
||||||
groupBox1.Controls.Add(DelNabor);
|
|
||||||
groupBox1.Controls.Add(AddNabor);
|
|
||||||
groupBox1.Controls.Add(InputNabor);
|
|
||||||
groupBox1.Location = new Point(6, 22);
|
|
||||||
groupBox1.Name = "groupBox1";
|
|
||||||
groupBox1.Size = new Size(188, 198);
|
|
||||||
groupBox1.TabIndex = 6;
|
|
||||||
groupBox1.TabStop = false;
|
|
||||||
groupBox1.Text = "Наборы";
|
|
||||||
//
|
|
||||||
// listBoxStorage
|
|
||||||
//
|
|
||||||
listBoxStorage.FormattingEnabled = true;
|
|
||||||
listBoxStorage.ItemHeight = 15;
|
|
||||||
listBoxStorage.Location = new Point(6, 85);
|
|
||||||
listBoxStorage.Name = "listBoxStorage";
|
|
||||||
listBoxStorage.Size = new Size(176, 64);
|
|
||||||
listBoxStorage.TabIndex = 10;
|
|
||||||
listBoxStorage.SelectedIndexChanged += listBoxStorage_SelectedIndexChanged;
|
|
||||||
//
|
|
||||||
// DelNabor
|
|
||||||
//
|
|
||||||
DelNabor.Location = new Point(6, 155);
|
|
||||||
DelNabor.Name = "DelNabor";
|
|
||||||
DelNabor.Size = new Size(176, 30);
|
|
||||||
DelNabor.TabIndex = 9;
|
|
||||||
DelNabor.Text = "Удалить набор";
|
|
||||||
DelNabor.UseVisualStyleBackColor = true;
|
|
||||||
DelNabor.Click += ButtonRemoveObject_Click;
|
|
||||||
//
|
|
||||||
// AddNabor
|
|
||||||
//
|
|
||||||
AddNabor.Location = new Point(6, 49);
|
|
||||||
AddNabor.Name = "AddNabor";
|
|
||||||
AddNabor.Size = new Size(176, 30);
|
|
||||||
AddNabor.TabIndex = 8;
|
|
||||||
AddNabor.Text = "Добавить набор";
|
|
||||||
AddNabor.UseVisualStyleBackColor = true;
|
|
||||||
AddNabor.Click += ButtonAddObject_Click;
|
|
||||||
//
|
|
||||||
// InputNabor
|
|
||||||
//
|
|
||||||
InputNabor.Location = new Point(6, 21);
|
|
||||||
InputNabor.Margin = new Padding(3, 2, 3, 2);
|
|
||||||
InputNabor.Mask = "0";
|
|
||||||
InputNabor.Name = "InputNabor";
|
|
||||||
InputNabor.Size = new Size(176, 23);
|
|
||||||
InputNabor.TabIndex = 7;
|
|
||||||
//
|
|
||||||
// maskedTextBoxNumbers
|
|
||||||
//
|
|
||||||
maskedTextBoxNumbers.Location = new Point(6, 278);
|
|
||||||
maskedTextBoxNumbers.Margin = new Padding(3, 2, 3, 2);
|
|
||||||
maskedTextBoxNumbers.Mask = "0";
|
|
||||||
maskedTextBoxNumbers.Name = "maskedTextBoxNumbers";
|
|
||||||
maskedTextBoxNumbers.Size = new Size(188, 23);
|
|
||||||
maskedTextBoxNumbers.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// buttonUpdateCollection
|
|
||||||
//
|
|
||||||
buttonUpdateCollection.Location = new Point(6, 352);
|
|
||||||
buttonUpdateCollection.Name = "buttonUpdateCollection";
|
|
||||||
buttonUpdateCollection.Size = new Size(188, 40);
|
|
||||||
buttonUpdateCollection.TabIndex = 3;
|
|
||||||
buttonUpdateCollection.Text = "Обновление коллекции";
|
|
||||||
buttonUpdateCollection.UseVisualStyleBackColor = true;
|
|
||||||
buttonUpdateCollection.Click += ButtonRefreshCollection_Click;
|
|
||||||
//
|
|
||||||
// buttonRemoveTransport
|
|
||||||
//
|
|
||||||
buttonRemoveTransport.Location = new Point(6, 306);
|
|
||||||
buttonRemoveTransport.Name = "buttonRemoveTransport";
|
|
||||||
buttonRemoveTransport.Size = new Size(188, 40);
|
|
||||||
buttonRemoveTransport.TabIndex = 2;
|
|
||||||
buttonRemoveTransport.Text = "Удалить транспорт";
|
|
||||||
buttonRemoveTransport.UseVisualStyleBackColor = true;
|
|
||||||
buttonRemoveTransport.Click += ButtonRemoveTractor_Click;
|
|
||||||
//
|
|
||||||
// buttonAddTransport
|
|
||||||
//
|
|
||||||
buttonAddTransport.Location = new Point(6, 226);
|
|
||||||
buttonAddTransport.Name = "buttonAddTransport";
|
|
||||||
buttonAddTransport.Size = new Size(188, 47);
|
|
||||||
buttonAddTransport.TabIndex = 0;
|
|
||||||
buttonAddTransport.Text = "Добавить транспорт";
|
|
||||||
buttonAddTransport.UseVisualStyleBackColor = true;
|
|
||||||
buttonAddTransport.Click += ButtonAddTractor_Click;
|
|
||||||
//
|
|
||||||
// menuStrip
|
|
||||||
//
|
|
||||||
menuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem });
|
|
||||||
menuStrip.Location = new Point(0, 0);
|
|
||||||
menuStrip.Name = "menuStrip";
|
|
||||||
menuStrip.Size = new Size(800, 24);
|
|
||||||
menuStrip.TabIndex = 3;
|
|
||||||
menuStrip.Text = "menuStrip1";
|
|
||||||
//
|
|
||||||
// toolStripMenuItem
|
|
||||||
//
|
|
||||||
toolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { SavetoolStripMenuItem, LoadtoolStripMenuItem });
|
|
||||||
toolStripMenuItem.Name = "toolStripMenuItem";
|
|
||||||
toolStripMenuItem.Size = new Size(48, 20);
|
|
||||||
toolStripMenuItem.Text = "Файл";
|
|
||||||
//
|
|
||||||
// SavetoolStripMenuItem
|
|
||||||
//
|
|
||||||
SavetoolStripMenuItem.Name = "SavetoolStripMenuItem";
|
|
||||||
SavetoolStripMenuItem.Size = new Size(180, 22);
|
|
||||||
SavetoolStripMenuItem.Text = "Сохранить";
|
|
||||||
SavetoolStripMenuItem.Click += SavetoolStripMenuItem_Click;
|
|
||||||
//
|
|
||||||
// LoadtoolStripMenuItem
|
|
||||||
//
|
|
||||||
LoadtoolStripMenuItem.Name = "LoadtoolStripMenuItem";
|
|
||||||
LoadtoolStripMenuItem.Size = new Size(180, 22);
|
|
||||||
LoadtoolStripMenuItem.Text = "Загрузить";
|
|
||||||
LoadtoolStripMenuItem.Click += LoadtoolStripMenuItem_Click;
|
|
||||||
//
|
|
||||||
// openFileDialog
|
|
||||||
//
|
|
||||||
openFileDialog.FileName = "openFileDialog";
|
|
||||||
openFileDialog.Filter = "txt file | *.txt";
|
|
||||||
//
|
|
||||||
// saveFileDialog
|
|
||||||
//
|
|
||||||
saveFileDialog.FileName = "saveFileDialog";
|
|
||||||
saveFileDialog.Filter = "txt file | *.txt";
|
|
||||||
//
|
|
||||||
// FormTractorCollection
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
ClientSize = new Size(800, 450);
|
|
||||||
Controls.Add(groupBoxTools);
|
|
||||||
Controls.Add(pictureBoxCollections);
|
|
||||||
Controls.Add(menuStrip);
|
|
||||||
MainMenuStrip = menuStrip;
|
|
||||||
Name = "FormTractorCollection";
|
|
||||||
Text = "Набор автомобилей";
|
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).EndInit();
|
|
||||||
groupBoxTools.ResumeLayout(false);
|
|
||||||
groupBoxTools.PerformLayout();
|
|
||||||
groupBox1.ResumeLayout(false);
|
|
||||||
groupBox1.PerformLayout();
|
|
||||||
menuStrip.ResumeLayout(false);
|
|
||||||
menuStrip.PerformLayout();
|
|
||||||
ResumeLayout(false);
|
|
||||||
PerformLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private PictureBox pictureBoxCollections;
|
|
||||||
private GroupBox groupBoxTools;
|
|
||||||
private Button buttonUpdateCollection;
|
|
||||||
private Button buttonRemoveTransport;
|
|
||||||
private Button buttonAddTransport;
|
|
||||||
private MaskedTextBox maskedTextBoxNumbers;
|
|
||||||
private GroupBox groupBox1;
|
|
||||||
private ListBox listBoxStorage;
|
|
||||||
private Button DelNabor;
|
|
||||||
private Button AddNabor;
|
|
||||||
private MaskedTextBox InputNabor;
|
|
||||||
private MenuStrip menuStrip;
|
|
||||||
private ToolStripMenuItem toolStripMenuItem;
|
|
||||||
private ToolStripMenuItem SavetoolStripMenuItem;
|
|
||||||
private ToolStripMenuItem LoadtoolStripMenuItem;
|
|
||||||
private OpenFileDialog openFileDialog;
|
|
||||||
private SaveFileDialog saveFileDialog;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,214 +0,0 @@
|
|||||||
using Bulldoser.Drawings;
|
|
||||||
using Bulldoser.Generic;
|
|
||||||
using Bulldoser.MovementStrategy;
|
|
||||||
using Bulldozer.Generics;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using ProjectBulldozer.Exceptions;
|
|
||||||
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 Bulldoser
|
|
||||||
{
|
|
||||||
public partial class FormTractorCollection : Form
|
|
||||||
{
|
|
||||||
private readonly TractorGenericStorage _storage;
|
|
||||||
private readonly ILogger _logger;
|
|
||||||
public FormTractorCollection(ILogger<FormTractorCollection> logger)
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
_storage = new TractorGenericStorage(pictureBoxCollections.Width, pictureBoxCollections.Height);
|
|
||||||
_logger = logger;
|
|
||||||
}
|
|
||||||
private void ReloadObjects()
|
|
||||||
{
|
|
||||||
int index = listBoxStorage.SelectedIndex;
|
|
||||||
|
|
||||||
listBoxStorage.Items.Clear();
|
|
||||||
for (int i = 0; i < _storage.Keys.Count; i++)
|
|
||||||
{
|
|
||||||
listBoxStorage.Items.Add(_storage.Keys[i]);
|
|
||||||
}
|
|
||||||
if (listBoxStorage.Items.Count > 0 && (index == -1 || index >= listBoxStorage.Items.Count))
|
|
||||||
{
|
|
||||||
listBoxStorage.SelectedIndex = 0;
|
|
||||||
}
|
|
||||||
else if (listBoxStorage.Items.Count > 0 && index > -1 && index < listBoxStorage.Items.Count)
|
|
||||||
{
|
|
||||||
listBoxStorage.SelectedIndex = index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ButtonAddObject_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(InputNabor.Text))
|
|
||||||
{
|
|
||||||
MessageBox.Show("Не всё заполнено", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
_logger.LogWarning("Пустое название набора");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_storage.AddSet(InputNabor.Text);
|
|
||||||
ReloadObjects();
|
|
||||||
_logger.LogInformation($"Добавлен набор: {InputNabor.Text}");
|
|
||||||
}
|
|
||||||
private void listBoxStorage_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
pictureBoxCollections.Image = _storage[listBoxStorage.SelectedItem?.ToString() ?? string.Empty]?.ShowTractors();
|
|
||||||
}
|
|
||||||
private void ButtonRemoveObject_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (listBoxStorage.SelectedIndex == -1)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Выберите набор для удаления!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string name = listBoxStorage.SelectedItem.ToString() ?? string.Empty;
|
|
||||||
if (MessageBox.Show($"Удалить объект {listBoxStorage.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
||||||
{
|
|
||||||
_storage.DelSet(listBoxStorage.SelectedItem.ToString() ?? string.Empty);
|
|
||||||
ReloadObjects();
|
|
||||||
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
|
|
||||||
if (obj == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pictureBoxCollections.Image = obj.ShowTractors();
|
|
||||||
_logger.LogInformation($"Удален набор: {name}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ButtonAddTractor_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (listBoxStorage.SelectedIndex == -1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
|
|
||||||
if (obj == null)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Добавление пустого объекта");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
FormBulldoserConfig form = new(pictureBoxCollections.Width, pictureBoxCollections.Height);
|
|
||||||
Action<DrawingTractor> armoredTransportDelegate = new Action<DrawingTractor>((tractor) =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
bool selectedArmoredTransport = obj + tractor;
|
|
||||||
MessageBox.Show("Объект добавлен");
|
|
||||||
pictureBoxCollections.Image = obj.ShowTractors();
|
|
||||||
_logger.LogInformation($"Добавлен объект в набор {listBoxStorage.SelectedItem.ToString()}");
|
|
||||||
}
|
|
||||||
catch (StorageOverflowException ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show("Не удалось добавить объект");
|
|
||||||
_logger.LogWarning($"Не удалось добавить объект: {ex.Message}");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
form.AddEvent(armoredTransportDelegate);
|
|
||||||
form.Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ButtonRemoveTractor_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (listBoxStorage.SelectedIndex == -1)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Удаление объекта из несуществующего набора");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
|
|
||||||
if (obj == null)
|
|
||||||
{
|
|
||||||
_logger.LogWarning($"Не удалось удалить объект из набора {listBoxStorage.SelectedItem.ToString()}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(maskedTextBoxNumbers.Text) || maskedTextBoxNumbers.Text == "_")
|
|
||||||
{
|
|
||||||
MessageBox.Show("Введите корректное значение для номера");
|
|
||||||
_logger.LogWarning($"Не удалось удалить объект из набора {listBoxStorage.SelectedItem.ToString()}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int pos = Convert.ToInt32(maskedTextBoxNumbers.Text);
|
|
||||||
if (obj - pos != null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("Объект удален");
|
|
||||||
pictureBoxCollections.Image = obj.ShowTractors();
|
|
||||||
_logger.LogInformation($"Удален объект из набора {listBoxStorage.SelectedItem.ToString()}");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MessageBox.Show("Не удалось удалить объект");
|
|
||||||
_logger.LogWarning($"Не удалось удалить объект из набора {listBoxStorage.SelectedItem.ToString()}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (BulldozerNotFoundException ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show(ex.Message);
|
|
||||||
_logger.LogWarning($"{ex.Message} из набора {listBoxStorage.SelectedItem.ToString()}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ButtonRefreshCollection_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (listBoxStorage.SelectedIndex == -1) return;
|
|
||||||
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
|
|
||||||
if (obj == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pictureBoxCollections.Image = obj.ShowTractors();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SavetoolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_storage.SaveData(saveFileDialog.FileName);
|
|
||||||
MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
||||||
_logger.LogInformation($"Сохранение наборов в файл {saveFileDialog.FileName}");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show($"Не сохранилось: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
_logger.LogWarning($"Не удалось сохранить наборы с ошибкой: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadtoolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_storage.LoadData(openFileDialog.FileName);
|
|
||||||
MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
||||||
_logger.LogInformation($"Загрузились наборы из файла {openFileDialog.FileName}");
|
|
||||||
foreach (var collection in _storage.Keys)
|
|
||||||
{
|
|
||||||
listBoxStorage.Items.Add(collection);
|
|
||||||
}
|
|
||||||
ReloadObjects();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show($"Не удалось загрузить: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
_logger.LogWarning($"Не удалось сохранить наборы с ошибкой: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,129 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<metadata name="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>126, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>265, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
362
Bulldoser/Bulldoser/FormBulldoserConfig.Designer.cs
generated
362
Bulldoser/Bulldoser/FormBulldoserConfig.Designer.cs
generated
@ -1,362 +0,0 @@
|
|||||||
namespace Bulldoser
|
|
||||||
{
|
|
||||||
partial class FormBulldoserConfig
|
|
||||||
{
|
|
||||||
/// <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()
|
|
||||||
{
|
|
||||||
groupBox1 = new GroupBox();
|
|
||||||
labelModifiedObject = new Label();
|
|
||||||
labelSimpleObject = new Label();
|
|
||||||
groupBox2 = new GroupBox();
|
|
||||||
panelPurple = new Panel();
|
|
||||||
panelYellow = new Panel();
|
|
||||||
panelBlack = new Panel();
|
|
||||||
panelBlue = new Panel();
|
|
||||||
panelGray = new Panel();
|
|
||||||
panelGreen = new Panel();
|
|
||||||
panelWhite = new Panel();
|
|
||||||
panelRed = new Panel();
|
|
||||||
checkBoxSeifBatteries = new CheckBox();
|
|
||||||
checkBoxOtval = new CheckBox();
|
|
||||||
numericUpDownWeight = new NumericUpDown();
|
|
||||||
numericUpDownSpeed = new NumericUpDown();
|
|
||||||
label2 = new Label();
|
|
||||||
label1 = new Label();
|
|
||||||
panelColor = new Panel();
|
|
||||||
labelDopColor = new Label();
|
|
||||||
labelBaseColor = new Label();
|
|
||||||
pictureBoxObject = new PictureBox();
|
|
||||||
ButtonOk = new Button();
|
|
||||||
buttonCancel = new Button();
|
|
||||||
groupBox1.SuspendLayout();
|
|
||||||
groupBox2.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)numericUpDownWeight).BeginInit();
|
|
||||||
((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).BeginInit();
|
|
||||||
panelColor.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxObject).BeginInit();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
groupBox1.Controls.Add(labelModifiedObject);
|
|
||||||
groupBox1.Controls.Add(labelSimpleObject);
|
|
||||||
groupBox1.Controls.Add(groupBox2);
|
|
||||||
groupBox1.Controls.Add(checkBoxSeifBatteries);
|
|
||||||
groupBox1.Controls.Add(checkBoxOtval);
|
|
||||||
groupBox1.Controls.Add(numericUpDownWeight);
|
|
||||||
groupBox1.Controls.Add(numericUpDownSpeed);
|
|
||||||
groupBox1.Controls.Add(label2);
|
|
||||||
groupBox1.Controls.Add(label1);
|
|
||||||
groupBox1.Location = new Point(12, 12);
|
|
||||||
groupBox1.Name = "groupBox1";
|
|
||||||
groupBox1.Size = new Size(454, 228);
|
|
||||||
groupBox1.TabIndex = 1;
|
|
||||||
groupBox1.TabStop = false;
|
|
||||||
groupBox1.Text = "Параметры";
|
|
||||||
//
|
|
||||||
// labelModifiedObject
|
|
||||||
//
|
|
||||||
labelModifiedObject.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
labelModifiedObject.Location = new Point(345, 146);
|
|
||||||
labelModifiedObject.Name = "labelModifiedObject";
|
|
||||||
labelModifiedObject.Size = new Size(87, 27);
|
|
||||||
labelModifiedObject.TabIndex = 8;
|
|
||||||
labelModifiedObject.Text = "Продвинутый";
|
|
||||||
labelModifiedObject.TextAlign = ContentAlignment.MiddleCenter;
|
|
||||||
labelModifiedObject.MouseDown += LabelObject_MouseDown;
|
|
||||||
//
|
|
||||||
// labelSimpleObject
|
|
||||||
//
|
|
||||||
labelSimpleObject.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
labelSimpleObject.Location = new Point(247, 146);
|
|
||||||
labelSimpleObject.Name = "labelSimpleObject";
|
|
||||||
labelSimpleObject.Size = new Size(87, 27);
|
|
||||||
labelSimpleObject.TabIndex = 7;
|
|
||||||
labelSimpleObject.Text = "Простой";
|
|
||||||
labelSimpleObject.TextAlign = ContentAlignment.MiddleCenter;
|
|
||||||
labelSimpleObject.MouseDown += LabelObject_MouseDown;
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
groupBox2.Controls.Add(panelPurple);
|
|
||||||
groupBox2.Controls.Add(panelYellow);
|
|
||||||
groupBox2.Controls.Add(panelBlack);
|
|
||||||
groupBox2.Controls.Add(panelBlue);
|
|
||||||
groupBox2.Controls.Add(panelGray);
|
|
||||||
groupBox2.Controls.Add(panelGreen);
|
|
||||||
groupBox2.Controls.Add(panelWhite);
|
|
||||||
groupBox2.Controls.Add(panelRed);
|
|
||||||
groupBox2.Location = new Point(247, 31);
|
|
||||||
groupBox2.Name = "groupBox2";
|
|
||||||
groupBox2.Size = new Size(185, 106);
|
|
||||||
groupBox2.TabIndex = 6;
|
|
||||||
groupBox2.TabStop = false;
|
|
||||||
groupBox2.Text = "Цвета";
|
|
||||||
//
|
|
||||||
// panelPurple
|
|
||||||
//
|
|
||||||
panelPurple.BackColor = Color.Purple;
|
|
||||||
panelPurple.Location = new Point(139, 63);
|
|
||||||
panelPurple.Name = "panelPurple";
|
|
||||||
panelPurple.Size = new Size(35, 30);
|
|
||||||
panelPurple.TabIndex = 7;
|
|
||||||
panelPurple.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// panelYellow
|
|
||||||
//
|
|
||||||
panelYellow.BackColor = Color.Yellow;
|
|
||||||
panelYellow.Location = new Point(139, 22);
|
|
||||||
panelYellow.Name = "panelYellow";
|
|
||||||
panelYellow.Size = new Size(35, 30);
|
|
||||||
panelYellow.TabIndex = 3;
|
|
||||||
panelYellow.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// panelBlack
|
|
||||||
//
|
|
||||||
panelBlack.BackColor = Color.Black;
|
|
||||||
panelBlack.Location = new Point(98, 63);
|
|
||||||
panelBlack.Name = "panelBlack";
|
|
||||||
panelBlack.Size = new Size(35, 30);
|
|
||||||
panelBlack.TabIndex = 6;
|
|
||||||
panelBlack.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// panelBlue
|
|
||||||
//
|
|
||||||
panelBlue.BackColor = Color.Blue;
|
|
||||||
panelBlue.Location = new Point(98, 22);
|
|
||||||
panelBlue.Name = "panelBlue";
|
|
||||||
panelBlue.Size = new Size(35, 30);
|
|
||||||
panelBlue.TabIndex = 2;
|
|
||||||
panelBlue.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// panelGray
|
|
||||||
//
|
|
||||||
panelGray.BackColor = Color.Gray;
|
|
||||||
panelGray.Location = new Point(57, 63);
|
|
||||||
panelGray.Name = "panelGray";
|
|
||||||
panelGray.Size = new Size(35, 30);
|
|
||||||
panelGray.TabIndex = 5;
|
|
||||||
panelGray.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// panelGreen
|
|
||||||
//
|
|
||||||
panelGreen.BackColor = Color.Green;
|
|
||||||
panelGreen.Location = new Point(57, 22);
|
|
||||||
panelGreen.Name = "panelGreen";
|
|
||||||
panelGreen.Size = new Size(35, 30);
|
|
||||||
panelGreen.TabIndex = 1;
|
|
||||||
panelGreen.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// panelWhite
|
|
||||||
//
|
|
||||||
panelWhite.BackColor = Color.White;
|
|
||||||
panelWhite.Location = new Point(16, 63);
|
|
||||||
panelWhite.Name = "panelWhite";
|
|
||||||
panelWhite.Size = new Size(35, 30);
|
|
||||||
panelWhite.TabIndex = 4;
|
|
||||||
panelWhite.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// panelRed
|
|
||||||
//
|
|
||||||
panelRed.BackColor = Color.Red;
|
|
||||||
panelRed.Location = new Point(16, 22);
|
|
||||||
panelRed.Name = "panelRed";
|
|
||||||
panelRed.Size = new Size(35, 30);
|
|
||||||
panelRed.TabIndex = 0;
|
|
||||||
panelRed.MouseDown += panelColor_MouseDown;
|
|
||||||
//
|
|
||||||
// checkBoxSeifBatteries
|
|
||||||
//
|
|
||||||
checkBoxSeifBatteries.AutoSize = true;
|
|
||||||
checkBoxSeifBatteries.Location = new Point(10, 154);
|
|
||||||
checkBoxSeifBatteries.Name = "checkBoxSeifBatteries";
|
|
||||||
checkBoxSeifBatteries.Size = new Size(208, 19);
|
|
||||||
checkBoxSeifBatteries.TabIndex = 5;
|
|
||||||
checkBoxSeifBatteries.Text = "Признак наличия заднего отвала";
|
|
||||||
checkBoxSeifBatteries.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// checkBoxOtval
|
|
||||||
//
|
|
||||||
checkBoxOtval.AutoSize = true;
|
|
||||||
checkBoxOtval.Location = new Point(10, 119);
|
|
||||||
checkBoxOtval.Name = "checkBoxOtval";
|
|
||||||
checkBoxOtval.Size = new Size(163, 19);
|
|
||||||
checkBoxOtval.TabIndex = 4;
|
|
||||||
checkBoxOtval.Text = "Признак наличия отвала";
|
|
||||||
checkBoxOtval.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// numericUpDownWeight
|
|
||||||
//
|
|
||||||
numericUpDownWeight.Location = new Point(76, 60);
|
|
||||||
numericUpDownWeight.Name = "numericUpDownWeight";
|
|
||||||
numericUpDownWeight.Size = new Size(73, 23);
|
|
||||||
numericUpDownWeight.TabIndex = 3;
|
|
||||||
numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0 });
|
|
||||||
//
|
|
||||||
// numericUpDownSpeed
|
|
||||||
//
|
|
||||||
numericUpDownSpeed.Location = new Point(76, 31);
|
|
||||||
numericUpDownSpeed.Name = "numericUpDownSpeed";
|
|
||||||
numericUpDownSpeed.Size = new Size(73, 23);
|
|
||||||
numericUpDownSpeed.TabIndex = 2;
|
|
||||||
numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 });
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
label2.AutoSize = true;
|
|
||||||
label2.Location = new Point(10, 62);
|
|
||||||
label2.Name = "label2";
|
|
||||||
label2.Size = new Size(29, 15);
|
|
||||||
label2.TabIndex = 1;
|
|
||||||
label2.Text = "Вес:";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
label1.AutoSize = true;
|
|
||||||
label1.Location = new Point(10, 33);
|
|
||||||
label1.Name = "label1";
|
|
||||||
label1.Size = new Size(62, 15);
|
|
||||||
label1.TabIndex = 0;
|
|
||||||
label1.Text = "Скорость:";
|
|
||||||
//
|
|
||||||
// panelColor
|
|
||||||
//
|
|
||||||
panelColor.AllowDrop = true;
|
|
||||||
panelColor.Controls.Add(labelDopColor);
|
|
||||||
panelColor.Controls.Add(labelBaseColor);
|
|
||||||
panelColor.Controls.Add(pictureBoxObject);
|
|
||||||
panelColor.Location = new Point(492, 12);
|
|
||||||
panelColor.Name = "panelColor";
|
|
||||||
panelColor.Size = new Size(276, 184);
|
|
||||||
panelColor.TabIndex = 2;
|
|
||||||
panelColor.DragDrop += PanelObject_DragDrop;
|
|
||||||
panelColor.DragEnter += PanelObject_DragEnter;
|
|
||||||
//
|
|
||||||
// labelDopColor
|
|
||||||
//
|
|
||||||
labelDopColor.AllowDrop = true;
|
|
||||||
labelDopColor.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
labelDopColor.Location = new Point(164, 10);
|
|
||||||
labelDopColor.Name = "labelDopColor";
|
|
||||||
labelDopColor.Size = new Size(100, 29);
|
|
||||||
labelDopColor.TabIndex = 2;
|
|
||||||
labelDopColor.Text = "Доп. цвет";
|
|
||||||
labelDopColor.TextAlign = ContentAlignment.MiddleCenter;
|
|
||||||
labelDopColor.DragDrop += LabelDopColor_DragDrop;
|
|
||||||
labelDopColor.DragEnter += LabelColor_DragEnter;
|
|
||||||
labelDopColor.MouseDown += LabelObject_MouseDown;
|
|
||||||
//
|
|
||||||
// labelBaseColor
|
|
||||||
//
|
|
||||||
labelBaseColor.AllowDrop = true;
|
|
||||||
labelBaseColor.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
labelBaseColor.Location = new Point(12, 10);
|
|
||||||
labelBaseColor.Name = "labelBaseColor";
|
|
||||||
labelBaseColor.Size = new Size(100, 29);
|
|
||||||
labelBaseColor.TabIndex = 2;
|
|
||||||
labelBaseColor.Text = "Цвет";
|
|
||||||
labelBaseColor.TextAlign = ContentAlignment.MiddleCenter;
|
|
||||||
labelBaseColor.DragDrop += LabelBaseColor_DragDrop;
|
|
||||||
labelBaseColor.DragEnter += LabelColor_DragEnter;
|
|
||||||
labelBaseColor.MouseDown += LabelObject_MouseDown;
|
|
||||||
//
|
|
||||||
// pictureBoxObject
|
|
||||||
//
|
|
||||||
pictureBoxObject.Location = new Point(12, 46);
|
|
||||||
pictureBoxObject.Name = "pictureBoxObject";
|
|
||||||
pictureBoxObject.Size = new Size(252, 127);
|
|
||||||
pictureBoxObject.TabIndex = 0;
|
|
||||||
pictureBoxObject.TabStop = false;
|
|
||||||
//
|
|
||||||
// ButtonOk
|
|
||||||
//
|
|
||||||
ButtonOk.Location = new Point(492, 202);
|
|
||||||
ButtonOk.Name = "ButtonOk";
|
|
||||||
ButtonOk.Size = new Size(100, 32);
|
|
||||||
ButtonOk.TabIndex = 3;
|
|
||||||
ButtonOk.Text = "Добавить";
|
|
||||||
ButtonOk.UseVisualStyleBackColor = true;
|
|
||||||
ButtonOk.Click += ButtonOk_Click;
|
|
||||||
//
|
|
||||||
// buttonCancel
|
|
||||||
//
|
|
||||||
buttonCancel.Location = new Point(668, 202);
|
|
||||||
buttonCancel.Name = "buttonCancel";
|
|
||||||
buttonCancel.Size = new Size(100, 32);
|
|
||||||
buttonCancel.TabIndex = 4;
|
|
||||||
buttonCancel.Text = "Отмена";
|
|
||||||
buttonCancel.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// FormBulldoserConfig
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
ClientSize = new Size(800, 247);
|
|
||||||
Controls.Add(buttonCancel);
|
|
||||||
Controls.Add(ButtonOk);
|
|
||||||
Controls.Add(panelColor);
|
|
||||||
Controls.Add(groupBox1);
|
|
||||||
Name = "FormBulldoserConfig";
|
|
||||||
Text = "FormBulldoserConfig";
|
|
||||||
groupBox1.ResumeLayout(false);
|
|
||||||
groupBox1.PerformLayout();
|
|
||||||
groupBox2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)numericUpDownWeight).EndInit();
|
|
||||||
((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).EndInit();
|
|
||||||
panelColor.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxObject).EndInit();
|
|
||||||
ResumeLayout(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private GroupBox groupBox1;
|
|
||||||
private Label labelModifiedObject;
|
|
||||||
private Label labelSimpleObject;
|
|
||||||
private GroupBox groupBox2;
|
|
||||||
private Panel panelPurple;
|
|
||||||
private Panel panelYellow;
|
|
||||||
private Panel panelBlack;
|
|
||||||
private Panel panelBlue;
|
|
||||||
private Panel panelGray;
|
|
||||||
private Panel panelGreen;
|
|
||||||
private Panel panelWhite;
|
|
||||||
private Panel panelRed;
|
|
||||||
private CheckBox checkBoxSeifBatteries;
|
|
||||||
private CheckBox checkBoxOtval;
|
|
||||||
private NumericUpDown numericUpDownWeight;
|
|
||||||
private NumericUpDown numericUpDownSpeed;
|
|
||||||
private Label label2;
|
|
||||||
private Label label1;
|
|
||||||
private Panel panelColor;
|
|
||||||
private Label labelDopColor;
|
|
||||||
private Label labelBaseColor;
|
|
||||||
private PictureBox pictureBoxObject;
|
|
||||||
private Button ButtonOk;
|
|
||||||
private Button buttonCancel;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,150 +0,0 @@
|
|||||||
using Bulldoser.Drawings;
|
|
||||||
using Bulldoser.Entities;
|
|
||||||
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 Bulldoser
|
|
||||||
{
|
|
||||||
public partial class FormBulldoserConfig : Form
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Переменная-выбранная установка
|
|
||||||
/// </summary>
|
|
||||||
DrawingTractor? _bulldozer = null;
|
|
||||||
/// <summary>
|
|
||||||
/// Событие
|
|
||||||
/// </summary>
|
|
||||||
private event Action<DrawingTractor> EventAddBulldozer;
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
private readonly int PictureWidth;
|
|
||||||
private readonly int PictureHeight;
|
|
||||||
public FormBulldoserConfig(int width, int height)
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
panelBlack.MouseDown += panelColor_MouseDown;
|
|
||||||
panelPurple.MouseDown += panelColor_MouseDown;
|
|
||||||
panelGray.MouseDown += panelColor_MouseDown;
|
|
||||||
panelGreen.MouseDown += panelColor_MouseDown;
|
|
||||||
panelRed.MouseDown += panelColor_MouseDown;
|
|
||||||
panelWhite.MouseDown += panelColor_MouseDown;
|
|
||||||
panelYellow.MouseDown += panelColor_MouseDown;
|
|
||||||
panelBlue.MouseDown += panelColor_MouseDown;
|
|
||||||
// TODO buttonCancel.Click with lambda
|
|
||||||
buttonCancel.Click += (sender, e) => Close();
|
|
||||||
PictureWidth = width;
|
|
||||||
PictureHeight = height;
|
|
||||||
}
|
|
||||||
private void DrawBulldozer()
|
|
||||||
{
|
|
||||||
Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height);
|
|
||||||
Graphics gr = Graphics.FromImage(bmp);
|
|
||||||
_bulldozer?.SetPosition(5, 5);
|
|
||||||
_bulldozer?.DrawTransport(gr);
|
|
||||||
pictureBoxObject.Image = bmp;
|
|
||||||
}
|
|
||||||
public void AddEvent(Action<DrawingTractor> ev)
|
|
||||||
{
|
|
||||||
if (EventAddBulldozer == null)
|
|
||||||
{
|
|
||||||
EventAddBulldozer = new Action<DrawingTractor>(ev);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
EventAddBulldozer += ev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void LabelObject_MouseDown(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
(sender as Label)?.DoDragDrop((sender as Label)?.Name, DragDropEffects.Move | DragDropEffects.Copy);
|
|
||||||
}
|
|
||||||
private void PanelObject_DragEnter(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Data?.GetDataPresent(DataFormats.Text) ?? false)
|
|
||||||
{
|
|
||||||
e.Effect = DragDropEffects.Copy;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
e.Effect = DragDropEffects.None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void panelColor_MouseDown(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
(sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor, DragDropEffects.Move | DragDropEffects.Copy);
|
|
||||||
}
|
|
||||||
private void PanelObject_DragDrop(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
switch (e.Data?.GetData(DataFormats.Text).ToString())
|
|
||||||
{
|
|
||||||
case "labelModifiedObject":
|
|
||||||
_bulldozer = new DrawingBulldoser((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, Color.White,
|
|
||||||
Color.Black, checkBoxSeifBatteries.Checked,checkBoxOtval.Checked,
|
|
||||||
PictureWidth, PictureHeight);
|
|
||||||
break;
|
|
||||||
case "labelSimpleObject":
|
|
||||||
_bulldozer = new DrawingTractor((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, Color.White,
|
|
||||||
PictureWidth, PictureHeight);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
DrawBulldozer();
|
|
||||||
}
|
|
||||||
private void LabelBaseColor_DragDrop(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
if (_bulldozer != null)
|
|
||||||
{
|
|
||||||
if (e.Data.GetDataPresent(typeof(Color)))
|
|
||||||
{
|
|
||||||
_bulldozer.EntityTractor.BodyColor = (Color)e.Data.GetData(typeof(Color));
|
|
||||||
|
|
||||||
}
|
|
||||||
DrawBulldozer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void LabelColor_DragEnter(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
if (_bulldozer != null && _bulldozer.EntityTractor is EntityBulldoser entitybulldoser)
|
|
||||||
{
|
|
||||||
labelDopColor.AllowDrop = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
labelDopColor.AllowDrop = false;
|
|
||||||
|
|
||||||
if (e.Data.GetDataPresent(typeof(Color)))
|
|
||||||
{
|
|
||||||
e.Effect = DragDropEffects.Copy;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
e.Effect = DragDropEffects.None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LabelDopColor_DragDrop(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
if (_bulldozer != null && _bulldozer.EntityTractor is EntityBulldoser entitybulldoser)
|
|
||||||
{
|
|
||||||
if (e.Data.GetDataPresent(typeof(Color)))
|
|
||||||
{
|
|
||||||
entitybulldoser.AdditionalColor = (Color)e.Data.GetData(typeof(Color));
|
|
||||||
|
|
||||||
}
|
|
||||||
DrawBulldozer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ButtonOk_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
EventAddBulldozer?.Invoke(_bulldozer);
|
|
||||||
Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
</root>
|
|
@ -1,97 +0,0 @@
|
|||||||
using Bulldoser.Drawings;
|
|
||||||
using Bulldoser.MovementStrategy;
|
|
||||||
using Microsoft.VisualBasic;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.Generic
|
|
||||||
{
|
|
||||||
public class TractorGenericCollection<T, U> where T : DrawingTractor where U : IMoveableObject
|
|
||||||
{
|
|
||||||
//ширина /высота окна
|
|
||||||
private readonly int _pictureWidth;
|
|
||||||
private readonly int _pictureHeight;
|
|
||||||
//ширина /высота занимаемого места
|
|
||||||
private readonly int _placeSizeWidth = 170;
|
|
||||||
private readonly int _placeSizeHeight = 130;
|
|
||||||
/// Набор объектов
|
|
||||||
private readonly SetGeneric<T> _collection;
|
|
||||||
public IEnumerable<T?> GetTractors => _collection.GetTractors();
|
|
||||||
public TractorGenericCollection(int picWidth, int picHeight)
|
|
||||||
{
|
|
||||||
// высчитываем размер массива для setgeneric
|
|
||||||
int width = picWidth / _placeSizeWidth;
|
|
||||||
int height = picHeight / _placeSizeHeight;
|
|
||||||
_pictureWidth = picWidth;
|
|
||||||
_pictureHeight = picHeight;
|
|
||||||
_collection = new SetGeneric<T>(width * height);
|
|
||||||
}
|
|
||||||
/// Перегрузка оператора сложения
|
|
||||||
public static bool operator +(TractorGenericCollection<T, U> collect, T tract)
|
|
||||||
{
|
|
||||||
if (tract == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return collect?._collection.Insert(tract) ?? false;
|
|
||||||
}
|
|
||||||
public static T? operator -(TractorGenericCollection<T, U> collect, int
|
|
||||||
pos)
|
|
||||||
{
|
|
||||||
T? obj = collect._collection[pos];
|
|
||||||
if (obj != null)
|
|
||||||
{
|
|
||||||
collect._collection.Remove(pos);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
// получение объекта imoveableObj
|
|
||||||
public U? GetU(int pos)
|
|
||||||
{
|
|
||||||
return (U?)_collection[pos]?.GetMoveableObject;
|
|
||||||
}
|
|
||||||
/// Вывод всего набора объектов
|
|
||||||
public Bitmap ShowTractors()
|
|
||||||
{
|
|
||||||
Bitmap bmp = new(_pictureWidth, _pictureHeight);
|
|
||||||
Graphics gr = Graphics.FromImage(bmp);
|
|
||||||
DrawBackground(gr);
|
|
||||||
DrawObjects(gr);
|
|
||||||
return bmp;
|
|
||||||
}
|
|
||||||
private void DrawBackground(Graphics g)
|
|
||||||
{
|
|
||||||
Pen pen = new(Color.Black, 3);
|
|
||||||
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < _pictureHeight / _placeSizeHeight + 1; ++j)
|
|
||||||
{
|
|
||||||
//линия рамзетки места
|
|
||||||
g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 3, j * _placeSizeHeight);
|
|
||||||
}
|
|
||||||
g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, _pictureHeight / _placeSizeHeight * _placeSizeHeight);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void DrawObjects(Graphics g)
|
|
||||||
{
|
|
||||||
int width = _pictureWidth / _placeSizeWidth;
|
|
||||||
int height = _pictureHeight / _placeSizeHeight;
|
|
||||||
int i = 0;
|
|
||||||
foreach (var tractor in _collection.GetTractors()) {
|
|
||||||
if (tractor != null) {
|
|
||||||
// Получение объекта
|
|
||||||
// Установка позиции
|
|
||||||
int row = height - 1 - (i / width);
|
|
||||||
int col = width - 1 - (i % width);
|
|
||||||
tractor.SetPosition(col * _placeSizeWidth, row * _placeSizeHeight);
|
|
||||||
// Прорисовка объекта
|
|
||||||
tractor?.DrawTransport(g);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
using ProjectBulldozer.Exceptions;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.Generic
|
|
||||||
{
|
|
||||||
internal class SetGeneric<T> where T : class
|
|
||||||
{
|
|
||||||
private readonly List<T?> _places;
|
|
||||||
public int Count => _places.Count;
|
|
||||||
private readonly int _maxCount;
|
|
||||||
public SetGeneric(int count)
|
|
||||||
{
|
|
||||||
_places = new List<T?>(count);
|
|
||||||
_maxCount = count;
|
|
||||||
}
|
|
||||||
public bool Insert(T tract)
|
|
||||||
{
|
|
||||||
return Insert(tract, 0);
|
|
||||||
}
|
|
||||||
public bool Insert(T tract, int position)
|
|
||||||
{
|
|
||||||
if (position < 0 || position >= _maxCount)
|
|
||||||
{
|
|
||||||
throw new BulldozerNotFoundException(position);
|
|
||||||
}
|
|
||||||
if (Count >= _maxCount)
|
|
||||||
{
|
|
||||||
throw new StorageOverflowException(_maxCount);
|
|
||||||
}
|
|
||||||
_places.Insert(position, tract);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Remove(int position)
|
|
||||||
{
|
|
||||||
if (position < 0 || position >= _maxCount)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (_places[position] == null)
|
|
||||||
{
|
|
||||||
throw new BulldozerNotFoundException(position);
|
|
||||||
}
|
|
||||||
_places[position] = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
//Получение объекта из набора по позиции
|
|
||||||
public T? this[int position]
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (!(position >= 0 && position < Count))
|
|
||||||
return null;
|
|
||||||
return _places[position];
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!(position >= 0 && position < Count && _places.Count < _maxCount))
|
|
||||||
return;
|
|
||||||
_places.Insert(position, value);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public IEnumerable<T?> GetTractors(int? maxTracts = null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < _places.Count; ++i)
|
|
||||||
{
|
|
||||||
yield return _places[i];
|
|
||||||
if (maxTracts.HasValue && i == maxTracts.Value)
|
|
||||||
{
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,130 +0,0 @@
|
|||||||
|
|
||||||
using Bulldoser.Drawings;
|
|
||||||
using Bulldoser.Generic;
|
|
||||||
using Bulldoser.MovementStrategy;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Bulldozer.Generics
|
|
||||||
{
|
|
||||||
internal class TractorGenericStorage
|
|
||||||
{
|
|
||||||
readonly Dictionary<string, TractorGenericCollection<DrawingTractor, DrawingObjectTractor>> _TractorsStorage;
|
|
||||||
public List<string> Keys => _TractorsStorage.Keys.ToList();
|
|
||||||
private readonly int _pictureWidth;
|
|
||||||
private readonly int _pictureHeight;
|
|
||||||
|
|
||||||
private static readonly char _separatorForKeyValue = '|';
|
|
||||||
private readonly char _separatorRecords = ';';
|
|
||||||
private static readonly char _separatorForObject = ':';
|
|
||||||
public TractorGenericStorage(int pictureWidth, int pictureHeight)
|
|
||||||
{
|
|
||||||
_TractorsStorage = new Dictionary<string, TractorGenericCollection<DrawingTractor, DrawingObjectTractor>>();
|
|
||||||
_pictureWidth = pictureWidth;
|
|
||||||
_pictureHeight = pictureHeight;
|
|
||||||
}
|
|
||||||
public void AddSet(string name)
|
|
||||||
{
|
|
||||||
if (!_TractorsStorage.ContainsKey(name))
|
|
||||||
{
|
|
||||||
_TractorsStorage.Add(name, new TractorGenericCollection<DrawingTractor, DrawingObjectTractor>(_pictureWidth, _pictureHeight));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void DelSet(string name)
|
|
||||||
{
|
|
||||||
if (_TractorsStorage.ContainsKey(name))
|
|
||||||
{
|
|
||||||
_TractorsStorage.Remove(name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public TractorGenericCollection<DrawingTractor, DrawingObjectTractor>? this[string ind]
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_TractorsStorage.ContainsKey(ind))
|
|
||||||
{
|
|
||||||
return _TractorsStorage[ind];
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public bool SaveData(string filename)
|
|
||||||
{
|
|
||||||
if (File.Exists(filename))
|
|
||||||
{
|
|
||||||
File.Delete(filename);
|
|
||||||
}
|
|
||||||
StringBuilder data = new();
|
|
||||||
|
|
||||||
foreach (KeyValuePair<string, TractorGenericCollection<DrawingTractor, DrawingObjectTractor>>
|
|
||||||
record in _TractorsStorage)
|
|
||||||
{
|
|
||||||
StringBuilder records = new();
|
|
||||||
foreach (DrawingTractor? elem in record.Value.GetTractors)
|
|
||||||
{
|
|
||||||
records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
|
|
||||||
}
|
|
||||||
data.AppendLine($"{record.Key}{_separatorForKeyValue}{records}");
|
|
||||||
}
|
|
||||||
if (data.Length == 0)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("Невалиданя операция, нет данных для сохранения");
|
|
||||||
}
|
|
||||||
using StreamWriter sw = new(filename);
|
|
||||||
sw.Write($"TractorsStorage{Environment.NewLine}{data}");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
public bool LoadData(string filename)
|
|
||||||
{
|
|
||||||
if (!File.Exists(filename))
|
|
||||||
{
|
|
||||||
throw new FileNotFoundException("Файл не найден");
|
|
||||||
}
|
|
||||||
using (StreamReader sr = File.OpenText(filename))
|
|
||||||
{
|
|
||||||
string str = sr.ReadLine();
|
|
||||||
if (str == null || str.Length == 0)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!str.StartsWith("TractorsStorage"))
|
|
||||||
{
|
|
||||||
throw new FormatException("Неверный формат данных");
|
|
||||||
}
|
|
||||||
|
|
||||||
_TractorsStorage.Clear();
|
|
||||||
string strs = "";
|
|
||||||
|
|
||||||
while ((strs = sr.ReadLine()) != null)
|
|
||||||
{
|
|
||||||
if (strs == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
string[] record = strs.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries);
|
|
||||||
if (record.Length != 2)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
TractorGenericCollection<DrawingTractor, DrawingObjectTractor> collection =
|
|
||||||
new(_pictureWidth, _pictureHeight);
|
|
||||||
string[] set = record[1].Split(_separatorRecords, StringSplitOptions.RemoveEmptyEntries);
|
|
||||||
foreach (string elem in set)
|
|
||||||
{
|
|
||||||
DrawingTractor? tractor = elem?.CreateDrawingTractor(_separatorForObject,
|
|
||||||
_pictureWidth, _pictureHeight);
|
|
||||||
if (tractor != null)
|
|
||||||
{
|
|
||||||
if (!(collection + tractor))
|
|
||||||
{
|
|
||||||
throw new ApplicationException("Ошибка добавления в коллекцию");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_TractorsStorage.Add(record[0], collection);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,137 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.MovementStrategy
|
|
||||||
{
|
|
||||||
public abstract class AbstractStrategy
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Перемещаемый объект
|
|
||||||
/// </summary>
|
|
||||||
private IMoveableObject? _moveableObject;
|
|
||||||
/// <summary>
|
|
||||||
/// Статус перемещения
|
|
||||||
/// </summary>
|
|
||||||
private Status _state = Status.NotInit;
|
|
||||||
/// <summary>
|
|
||||||
/// Ширина поля
|
|
||||||
/// </summary>
|
|
||||||
protected int FieldWidth { get; private set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Высота поля
|
|
||||||
/// </summary>
|
|
||||||
protected int FieldHeight { get; private set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Статус перемещения
|
|
||||||
/// </summary>
|
|
||||||
public Status GetStatus() { return _state; }
|
|
||||||
/// <summary>
|
|
||||||
/// Установка данных
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="moveableObject">Перемещаемый объект</param>
|
|
||||||
/// <param name="width">Ширина поля</param>
|
|
||||||
/// <param name="height">Высота поля</param>
|
|
||||||
public void SetData(IMoveableObject moveableObject, int width, int
|
|
||||||
height)
|
|
||||||
{
|
|
||||||
if (moveableObject == null)
|
|
||||||
{
|
|
||||||
_state = Status.NotInit;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_state = Status.InProgress;
|
|
||||||
_moveableObject = moveableObject;
|
|
||||||
FieldWidth = width;
|
|
||||||
FieldHeight = height;
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// Шаг перемещения
|
|
||||||
/// </summary>
|
|
||||||
public void MakeStep()
|
|
||||||
{
|
|
||||||
if (_state != Status.InProgress)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (IsTargetDestinaion())
|
|
||||||
{
|
|
||||||
_state = Status.Finish;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
MoveToTarget();
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// Перемещение влево
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Результат перемещения (true - удалось переместиться, false -
|
|
||||||
///неудача)</returns>
|
|
||||||
protected bool MoveLeft() => MoveTo(Direction.Left);
|
|
||||||
/// <summary>
|
|
||||||
/// Перемещение вправо
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Результат перемещения (true - удалось переместиться,
|
|
||||||
///false - неудача)</returns>
|
|
||||||
protected bool MoveRight() => MoveTo(Direction.Right);
|
|
||||||
/// <summary>
|
|
||||||
/// Перемещение вверх
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Результат перемещения (true - удалось переместиться,
|
|
||||||
///false - неудача)</returns>
|
|
||||||
protected bool MoveUp() => MoveTo(Direction.Up);
|
|
||||||
/// <summary>
|
|
||||||
/// Перемещение вниз
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Результат перемещения (true - удалось переместиться,
|
|
||||||
///false - неудача)</returns>
|
|
||||||
protected bool MoveDown() => MoveTo(Direction.Down);
|
|
||||||
/// <summary>
|
|
||||||
/// Параметры объекта
|
|
||||||
/// </summary>
|
|
||||||
protected ObjectParameters? GetObjectParameters =>
|
|
||||||
_moveableObject?.GetObjectPosition;
|
|
||||||
/// <summary>
|
|
||||||
/// Шаг объекта
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected int? GetStep()
|
|
||||||
{
|
|
||||||
if (_state != Status.InProgress)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return _moveableObject?.GetStep;
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// Перемещение к цели
|
|
||||||
/// </summary>
|
|
||||||
protected abstract void MoveToTarget();
|
|
||||||
/// <summary>
|
|
||||||
/// Достигнута ли цель
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected abstract bool IsTargetDestinaion();
|
|
||||||
/// <summary>
|
|
||||||
/// Попытка перемещения в требуемом направлении
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="Direction">Направление</param>
|
|
||||||
/// <returns>Результат попытки (true - удалось переместиться, false -
|
|
||||||
///неудача)</returns>
|
|
||||||
private bool MoveTo(Direction Direction)
|
|
||||||
{
|
|
||||||
if (_state != Status.InProgress)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (_moveableObject?.CheckCanMove(Direction) ?? false)
|
|
||||||
{
|
|
||||||
_moveableObject.MoveObject(Direction);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
using Bulldoser.Drawings;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.MovementStrategy
|
|
||||||
{
|
|
||||||
public class DrawingObjectTractor : IMoveableObject
|
|
||||||
{
|
|
||||||
private readonly DrawingTractor? _drawningTractor = null;
|
|
||||||
|
|
||||||
public DrawingObjectTractor(DrawingTractor drawningTractor)
|
|
||||||
{
|
|
||||||
_drawningTractor = drawningTractor;
|
|
||||||
}
|
|
||||||
public ObjectParameters? GetObjectPosition
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_drawningTractor == null || _drawningTractor.EntityTractor == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ObjectParameters(_drawningTractor.GetPosX,
|
|
||||||
_drawningTractor.GetPosY, _drawningTractor.GetWidth, _drawningTractor.GetHeight);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int GetStep => (int)(_drawningTractor?.EntityTractor?.Step ?? 0);
|
|
||||||
public bool CheckCanMove(Direction direction) => _drawningTractor?.CanMove(direction) ?? false;
|
|
||||||
public void MoveObject(Direction direction) => _drawningTractor?.MoveTransport(direction);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.MovementStrategy
|
|
||||||
{
|
|
||||||
public interface IMoveableObject
|
|
||||||
{
|
|
||||||
ObjectParameters? GetObjectPosition { get; }
|
|
||||||
|
|
||||||
int GetStep { get; }
|
|
||||||
|
|
||||||
bool CheckCanMove(Direction direction);
|
|
||||||
void MoveObject(Direction direction);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,51 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.MovementStrategy
|
|
||||||
{
|
|
||||||
public class MoveToCenter : AbstractStrategy
|
|
||||||
{
|
|
||||||
protected override bool IsTargetDestinaion()
|
|
||||||
{
|
|
||||||
var objParams = GetObjectParameters;
|
|
||||||
if (objParams == null) return false;
|
|
||||||
|
|
||||||
return objParams.ObjectMiddleHorizontal <= FieldWidth / 2 && objParams.ObjectMiddleHorizontal
|
|
||||||
+ GetStep() >= FieldWidth / 2 && objParams.ObjectMiddleVertical <= FieldHeight / 2 &&
|
|
||||||
objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void MoveToTarget()
|
|
||||||
{
|
|
||||||
var objParams = GetObjectParameters;
|
|
||||||
if (objParams == null) return;
|
|
||||||
var diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2;
|
|
||||||
if (Math.Abs(diffX) > GetStep())
|
|
||||||
{
|
|
||||||
if (diffX > 0)
|
|
||||||
{
|
|
||||||
MoveLeft();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MoveRight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var diffY = objParams.ObjectMiddleVertical - FieldHeight / 2;
|
|
||||||
if (Math.Abs(diffY) > GetStep())
|
|
||||||
{
|
|
||||||
if (diffY > 0)
|
|
||||||
{
|
|
||||||
MoveUp();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MoveDown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.MovementStrategy
|
|
||||||
{
|
|
||||||
public class MoveToRightCorner : AbstractStrategy
|
|
||||||
{
|
|
||||||
protected override bool IsTargetDestinaion()
|
|
||||||
{
|
|
||||||
var objParams = GetObjectParameters;
|
|
||||||
if (objParams == null) return false;
|
|
||||||
|
|
||||||
return objParams.RightBorder >= FieldWidth - GetStep() && objParams.DownBorder >= FieldHeight - GetStep();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void MoveToTarget()
|
|
||||||
{
|
|
||||||
var objParams = GetObjectParameters;
|
|
||||||
if (objParams == null) return;
|
|
||||||
|
|
||||||
if (objParams.RightBorder < FieldWidth - GetStep()) MoveRight();
|
|
||||||
if (objParams.DownBorder < FieldHeight - GetStep()) MoveDown();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.MovementStrategy
|
|
||||||
{
|
|
||||||
public class ObjectParameters
|
|
||||||
{
|
|
||||||
private readonly int _x;
|
|
||||||
private readonly int _y;
|
|
||||||
private readonly int _width;
|
|
||||||
private readonly int _height;
|
|
||||||
/// <summary>
|
|
||||||
/// Левая граница
|
|
||||||
/// </summary>
|
|
||||||
public int LeftBorder => _x;
|
|
||||||
/// <summary>
|
|
||||||
/// Верхняя граница
|
|
||||||
/// </summary>
|
|
||||||
public int TopBorder => _y;
|
|
||||||
/// <summary>
|
|
||||||
/// Правая граница
|
|
||||||
/// </summary>
|
|
||||||
public int RightBorder => _x + _width;
|
|
||||||
/// <summary>
|
|
||||||
/// Нижняя граница
|
|
||||||
/// </summary>
|
|
||||||
public int DownBorder => _y + _height;
|
|
||||||
/// <summary>
|
|
||||||
/// Середина объекта
|
|
||||||
/// </summary>
|
|
||||||
public int ObjectMiddleHorizontal => _x + _width / 2;
|
|
||||||
/// <summary>
|
|
||||||
/// Середина объекта
|
|
||||||
/// </summary>
|
|
||||||
public int ObjectMiddleVertical => _y + _height / 2;
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="x">Координата X</param>
|
|
||||||
/// <param name="y">Координата Y</param>
|
|
||||||
/// <param name="width">Ширина</param>
|
|
||||||
/// <param name="height">Высота</param>
|
|
||||||
public ObjectParameters(int x, int y, int width, int height)
|
|
||||||
{
|
|
||||||
_x = x;
|
|
||||||
_y = y;
|
|
||||||
_width = width;
|
|
||||||
_height = height;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +1,3 @@
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Serilog;
|
|
||||||
|
|
||||||
namespace Bulldoser
|
namespace Bulldoser
|
||||||
{
|
{
|
||||||
internal static class Program
|
internal static class Program
|
||||||
@ -16,28 +11,7 @@ namespace Bulldoser
|
|||||||
// To customize application configuration such as set high DPI settings or default font,
|
// To customize application configuration such as set high DPI settings or default font,
|
||||||
// see https://aka.ms/applicationconfiguration.
|
// see https://aka.ms/applicationconfiguration.
|
||||||
ApplicationConfiguration.Initialize();
|
ApplicationConfiguration.Initialize();
|
||||||
var services = new ServiceCollection();
|
Application.Run(new Form1());
|
||||||
ConfigureServices(services);
|
|
||||||
using (ServiceProvider serviceProvider = services.BuildServiceProvider())
|
|
||||||
{
|
|
||||||
Application.Run(serviceProvider.GetRequiredService<FormTractorCollection>());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private static void ConfigureServices(IServiceCollection services)
|
|
||||||
{
|
|
||||||
services.AddSingleton<FormTractorCollection>().AddLogging(option =>
|
|
||||||
{
|
|
||||||
string[] path = Directory.GetCurrentDirectory().Split('\\');
|
|
||||||
string appPath = "";
|
|
||||||
for (int i = 0; i < path.Length - 3; i++)
|
|
||||||
{
|
|
||||||
appPath += path[i] + "\\";
|
|
||||||
}
|
|
||||||
var configuration = new ConfigurationBuilder().AddJsonFile($"{appPath}appsettings.json").Build();
|
|
||||||
var logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();
|
|
||||||
option.SetMinimumLevel(LogLevel.Information);
|
|
||||||
option.AddSerilog(logger);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
63
Bulldoser/Bulldoser/Properties/Resources.Designer.cs
generated
63
Bulldoser/Bulldoser/Properties/Resources.Designer.cs
generated
@ -1,63 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// Этот код создан программой.
|
|
||||||
// Исполняемая версия:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
|
||||||
// повторной генерации кода.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace Bulldoser.Properties {
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
|
||||||
/// </summary>
|
|
||||||
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
|
|
||||||
// с помощью такого средства, как ResGen или Visual Studio.
|
|
||||||
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
|
||||||
// с параметром /str или перестройте свой проект VS.
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
internal class Resources {
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
|
||||||
internal Resources() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
|
||||||
get {
|
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bulldoser.Properties.Resources", typeof(Resources).Assembly);
|
|
||||||
resourceMan = temp;
|
|
||||||
}
|
|
||||||
return resourceMan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
|
|
||||||
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Globalization.CultureInfo Culture {
|
|
||||||
get {
|
|
||||||
return resourceCulture;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
resourceCulture = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
</root>
|
|
@ -1,19 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Bulldoser.MovementStrategy
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Статус выполнения операции перемещения
|
|
||||||
/// </summary>
|
|
||||||
public enum Status
|
|
||||||
{
|
|
||||||
NotInit,
|
|
||||||
InProgress,
|
|
||||||
Finish
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"Serilog": {
|
|
||||||
"Using": [ "Serilog.Sinks.File" ],
|
|
||||||
"MinimumLevel": "Information",
|
|
||||||
"WriteTo": [
|
|
||||||
{
|
|
||||||
"Name": "File",
|
|
||||||
"Args": {
|
|
||||||
"path": "logs/bulldozerlog-.log",
|
|
||||||
"rollingInterval": "Day",
|
|
||||||
"outputTemplate": "[{Timestamp:HH:mm:ss.fff}]{Level:u4}: {Message:lj}{NewLine}{Exception}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
|
|
||||||
"Properties": {
|
|
||||||
"Application": "Bulldozer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user