145 lines
4.5 KiB
C#
145 lines
4.5 KiB
C#
|
using System;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Data;
|
|||
|
using System.Drawing;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Windows.Forms;
|
|||
|
using Lab.DrawningObjects;
|
|||
|
using Lab.Entities;
|
|||
|
using Lab.Generics;
|
|||
|
using Lab.MovementStrategy;
|
|||
|
using Lab.Properties;
|
|||
|
|
|||
|
|
|||
|
namespace Lab
|
|||
|
{
|
|||
|
public partial class FormTankerConfig : Form
|
|||
|
{
|
|||
|
DrawTanker? _tanker = null;
|
|||
|
private event Action<DrawTanker> EventAddTanker;
|
|||
|
public FormTankerConfig()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
BlackPanel.MouseDown += PanelColor_MouseDown;
|
|||
|
WhitePanel.MouseDown += PanelColor_MouseDown;
|
|||
|
PurplePanel.MouseDown += PanelColor_MouseDown;
|
|||
|
YellowPanel.MouseDown += PanelColor_MouseDown;
|
|||
|
GreenPanel.MouseDown += PanelColor_MouseDown;
|
|||
|
RedPanel.MouseDown += PanelColor_MouseDown;
|
|||
|
BluePanel.MouseDown += PanelColor_MouseDown;
|
|||
|
GrayPanel.MouseDown += PanelColor_MouseDown;
|
|||
|
|
|||
|
CancelButton.Click += (s, e) => Close();
|
|||
|
}
|
|||
|
public void DrawTanker()
|
|||
|
{
|
|||
|
Bitmap bmp = new(TankerDraw.Width, TankerDraw.Height);
|
|||
|
Graphics g = Graphics.FromImage(bmp);
|
|||
|
_tanker?.SetPosition(5, 5);
|
|||
|
if (_tanker is DrawGasolineTanker drawGasolineTanker)
|
|||
|
drawGasolineTanker.DrawTransport(g);
|
|||
|
else
|
|||
|
_tanker?.DrawTransport(g);
|
|||
|
TankerDraw.Image = bmp;
|
|||
|
}
|
|||
|
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 PanelObject_DragDrop(object sender, DragEventArgs e)
|
|||
|
{
|
|||
|
switch (e.Data?.GetData(DataFormats.Text).ToString())
|
|||
|
{
|
|||
|
case "BaseLabel":
|
|||
|
_tanker = new DrawTanker((int)SpeedNumeric.Value,
|
|||
|
(int)WeightNumeric.Value, Color.White, TankerDraw.Width,
|
|||
|
TankerDraw.Height);
|
|||
|
break;
|
|||
|
case "UpdateLabel":
|
|||
|
_tanker = new DrawGasolineTanker((int)SpeedNumeric.Value,
|
|||
|
(int)WeightNumeric.Value, Color.White, Color.Black, BodyKitCheck.Checked,
|
|||
|
WingCheck.Checked, SportLineCheck.Checked, TankerDraw.Width,
|
|||
|
TankerDraw.Height);
|
|||
|
break;
|
|||
|
}
|
|||
|
DrawTanker();
|
|||
|
}
|
|||
|
|
|||
|
public void AddEvent(Action<DrawTanker> ev)
|
|||
|
{
|
|||
|
if (EventAddTanker == null)
|
|||
|
{
|
|||
|
EventAddTanker = ev;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
EventAddTanker += ev;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void ButtonOk_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
EventAddTanker?.Invoke(_tanker);
|
|||
|
Close();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void PanelColor_MouseDown(object sender, MouseEventArgs e)
|
|||
|
{
|
|||
|
(sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor,
|
|||
|
DragDropEffects.Move | DragDropEffects.Copy);
|
|||
|
}
|
|||
|
|
|||
|
private void LabelColor_DragEnter(object sender, DragEventArgs e)
|
|||
|
{
|
|||
|
if (e.Data?.GetDataPresent(typeof(Color)) ?? false)
|
|||
|
{
|
|||
|
e.Effect = DragDropEffects.Copy;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
e.Effect = DragDropEffects.None;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void LabelColor_DragDrop(object sender, DragEventArgs e)
|
|||
|
{
|
|||
|
if (_tanker == null)
|
|||
|
return;
|
|||
|
|
|||
|
((Label)sender).BackColor = (Color)e.Data.GetData(typeof(Color));
|
|||
|
|
|||
|
switch (((Label)sender).Name)
|
|||
|
{
|
|||
|
case "BaseColorLabel":
|
|||
|
_tanker.SetBaseColor((Color)e.Data.GetData(typeof(Color)));
|
|||
|
|
|||
|
break;
|
|||
|
case "AddColorLabel":
|
|||
|
if (_tanker is DrawGasolineTanker)
|
|||
|
{
|
|||
|
(_tanker as DrawGasolineTanker).SetAddColor((Color)e.Data.GetData(typeof(Color)));
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
DrawTanker();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|