This commit is contained in:
m1aksim1 2022-11-10 00:50:42 +04:00
parent 3f93e90ef3
commit 9b56a06fb4
4 changed files with 34 additions and 45 deletions

View File

@ -28,7 +28,7 @@
void IDrawningObject.DrawningObject(Graphics g)
{
_warplane.DrawTransport(g);
_warplane?.DrawTransport(g);
}
public string GetInfo() => _warplane?.GetDataForSave();

View File

@ -22,7 +22,7 @@
return new DrawningWarPlane(Convert.ToInt32(strs[0]),
Convert.ToInt32(strs[1]), Color.FromName(strs[2]));
}
if (strs.Length == 7)
if (strs.Length == 6)
{
return new DrawningFighter(Convert.ToInt32(strs[0]),
Convert.ToInt32(strs[1]), Color.FromName(strs[2]),
@ -44,7 +44,7 @@
{
return str;
}
return $"{str}{_separatorForObject}{Fighter.DopColor.Name}{_separatorForObject}{_separatorForObject}{Fighter.Wing}{_separatorForObject}";
return $"{str}{_separatorForObject}{Fighter.DopColor.Name}{_separatorForObject}{Fighter.Rocket}{_separatorForObject}{Fighter.Wing}";
}
}
}

View File

@ -232,17 +232,16 @@
private void LoadToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
if(openFileDialog.ShowDialog() == DialogResult.OK)
{
try
if (_mapsCollection.LoadData(openFileDialog.FileName))
{
_mapsCollection.LoadData(openFileDialog.FileName);
MessageBox.Show("Открытие прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
ReloadMaps();
}
catch (Exception ex)
else
{
MessageBox.Show($"Не удалось открыть: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

View File

@ -10,7 +10,7 @@ namespace AirFighter
/// <summary>
/// Словарь (хранилище) с картами
/// </summary>
readonly Dictionary<string, MapWithSetWarPlanesGeneric<DrawningObjectWarPlane, AbstractMap>> _mapStorages;
readonly Dictionary<string, MapWithSetWarPlanesGeneric<IDrawningObject, AbstractMap>> _mapStorages;
/// <summary>
/// Возвращение списка названий карт
/// </summary>
@ -38,7 +38,7 @@ namespace AirFighter
/// <param name="pictureHeight"></param>
public MapsCollection(int pictureWidth, int pictureHeight)
{
_mapStorages = new Dictionary<string, MapWithSetWarPlanesGeneric<DrawningObjectWarPlane, AbstractMap>>();
_mapStorages = new Dictionary<string, MapWithSetWarPlanesGeneric<IDrawningObject, AbstractMap>>();
_pictureWidth = pictureWidth;
_pictureHeight = pictureHeight;
}
@ -63,9 +63,6 @@ namespace AirFighter
{
_mapStorages.Remove(name);
}
/// <summary>
/// Метод записи информации в файл
/// </summary>
@ -87,17 +84,16 @@ namespace AirFighter
{
File.Delete(filename);
}
using (FileStream fs = new(filename, FileMode.Create))
using (StreamWriter fs = new(filename))
{
WriteToFile($"MapsCollection{Environment.NewLine}", fs);
fs.Write($"MapsCollection{Environment.NewLine}");
foreach (var storage in _mapStorages)
{
WriteToFile($"{storage.Key}{separatorDict}{storage.Value.GetData(separatorDict, separatorData)}{Environment.NewLine}", fs);
fs.Write($"{storage.Key}{separatorDict}{storage.Value.GetData(separatorDict, separatorData)}{Environment.NewLine}");
}
}
return true;
}
/// <summary>
/// Загрузка нформации по самолётам на парковках из файла
/// </summary>
@ -109,46 +105,40 @@ namespace AirFighter
{
return false;
}
string bufferTextFromFile = "";
using (FileStream fs = new(filename, FileMode.Open))
using (StreamReader fs = new(filename))
{
byte[] b = new byte[fs.Length];
UTF8Encoding temp = new(true);
while (fs.Read(b, 0, b.Length) > 0)
{
bufferTextFromFile += temp.GetString(b);
}
}
var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
if (!strs[0].Contains("MapsCollection"))
if (!fs.ReadLine().Contains("MapsCollection"))
{
//если нет такой записи, то это не те данные
return false;
}
//очищаем записи
_mapStorages.Clear();
for (int i = 1; i < strs.Length; ++i)
while (!fs.EndOfStream)
{
var elem = strs[i].Split(separatorDict);
var elem = fs.ReadLine().Split(separatorDict);
AbstractMap map = null;
switch (elem[1])
{
case "SimpleMap":
map = new SimpleMap();
break;
case "CloseMap":
map = new CloseMap();
break;
}
//_mapStorages.Add(elem[0], new MapWithSetWarPlanesGeneric<IDrawningObject, AbstractMap>(_pictureWidth, _pictureHeight, map));
_mapStorages.Add(elem[0], new MapWithSetWarPlanesGeneric<IDrawningObject, AbstractMap>(_pictureWidth, _pictureHeight, map));
_mapStorages[elem[0]].LoadData(elem[2].Split(separatorData, StringSplitOptions.RemoveEmptyEntries));
}
}
return true;
}
/// <summary>
/// Доступ к парковке
/// </summary>
/// <param name="ind"></param>
/// <returns></returns>
public MapWithSetWarPlanesGeneric<DrawningObjectWarPlane, AbstractMap> this[string ind]
public MapWithSetWarPlanesGeneric<IDrawningObject, AbstractMap> this[string ind]
{
get
{