готовая 6 лба
This commit is contained in:
parent
b47e67cf6f
commit
ca8a0d1118
@ -41,7 +41,7 @@ namespace Tank.Generics
|
||||
/// <summary>
|
||||
/// Получение объектов коллекции
|
||||
/// </summary>
|
||||
public IEnumerable<T?> GetCars => _collection.GetTanks();
|
||||
public IEnumerable<T?> GetTanks => _collection.GetTanks();
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
|
@ -114,23 +114,52 @@ namespace Tank.Generics
|
||||
StringBuilder data = new();
|
||||
foreach (KeyValuePair<string, TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar>> record in _tankStorages)
|
||||
{
|
||||
StringBuilder records = new();
|
||||
StringBuilder Records = new();
|
||||
|
||||
foreach (DrawingArmoredCar? elem in record.Value.GetCars)
|
||||
foreach (DrawingArmoredCar? elem in record.Value.GetTanks)
|
||||
{
|
||||
records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
|
||||
Records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
|
||||
}
|
||||
data.AppendLine($"{record.Key}{_separatorForKeyValue}{records}");
|
||||
data.AppendLine($"{record.Key}{_separatorForKeyValue}{Records}");
|
||||
}
|
||||
if (data.Length == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
using FileStream fs = new(filename, FileMode.Create);
|
||||
byte[] info = new
|
||||
UTF8Encoding(true).GetBytes($"TankStorage{Environment.NewLine}{data}");
|
||||
fs.Write(info, 0, info.Length);
|
||||
return true;
|
||||
using (StreamWriter writer = new StreamWriter(filename))
|
||||
{
|
||||
writer.WriteLine("TankStorage");
|
||||
writer.Write(data.ToString());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public bool SaveCollection(string filename)
|
||||
{
|
||||
if (File.Exists(filename))
|
||||
{
|
||||
File.Delete(filename);
|
||||
}
|
||||
StringBuilder data = new();
|
||||
foreach (KeyValuePair<string, TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar>> record in _tankStorages)
|
||||
{
|
||||
StringBuilder Records = new();
|
||||
|
||||
foreach (DrawingArmoredCar? elem in record.Value.GetTanks)
|
||||
{
|
||||
Records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
|
||||
}
|
||||
data.AppendLine($"{record.Key}{_separatorForKeyValue}{Records}");
|
||||
}
|
||||
if (data.Length == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
using (StreamWriter writer = new StreamWriter(filename))
|
||||
{
|
||||
writer.WriteLine("TankStorage");
|
||||
writer.Write(data.ToString());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Загрузка информации по автомобилям в хранилище из файла
|
||||
@ -143,102 +172,36 @@ namespace Tank.Generics
|
||||
{
|
||||
return false;
|
||||
}
|
||||
string bufferTextFromFile = "";
|
||||
using (FileStream fs = new(filename, FileMode.Open))
|
||||
using (StreamReader reader = new StreamReader(filename))
|
||||
{
|
||||
byte[] b = new byte[fs.Length];
|
||||
UTF8Encoding temp = new(true);
|
||||
while (fs.Read(b, 0, b.Length) > 0)
|
||||
string strCheck = reader.ReadLine();
|
||||
if (!strCheck.StartsWith("TankStorage"))
|
||||
return false;
|
||||
_tankStorages.Clear();
|
||||
string Str;
|
||||
while ((Str = reader.ReadLine()) != null)
|
||||
{
|
||||
bufferTextFromFile += temp.GetString(b);
|
||||
}
|
||||
}
|
||||
var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' },
|
||||
StringSplitOptions.RemoveEmptyEntries);
|
||||
if (strs == null || strs.Length == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!strs[0].StartsWith("TankStorage"))
|
||||
{
|
||||
//если нет такой записи, то это не те данные
|
||||
|
||||
return false;
|
||||
}
|
||||
_tankStorages.Clear();
|
||||
foreach (string data in strs)
|
||||
{
|
||||
string[] record = data.Split(_separatorForKeyValue,
|
||||
StringSplitOptions.RemoveEmptyEntries);
|
||||
if (record.Length != 2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar>
|
||||
collection = new(_pictureWidth, _pictureHeight);
|
||||
string[] set = record[1].Split(_separatorRecords,
|
||||
StringSplitOptions.RemoveEmptyEntries);
|
||||
foreach (string elem in set)
|
||||
{
|
||||
DrawingArmoredCar? car = elem?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight);
|
||||
if (car != null)
|
||||
if (Str == null)
|
||||
break;
|
||||
string name = Str.Split('|')[0];
|
||||
TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar> collection = new(_pictureWidth, _pictureHeight);
|
||||
foreach (string data in Str.Split('|')[1].Split(';'))
|
||||
{
|
||||
if (!(collection + car))
|
||||
DrawingArmoredCar? ArmoredCar = data?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight);
|
||||
if (ArmoredCar != null)
|
||||
{
|
||||
return false;
|
||||
if (!(collection + ArmoredCar))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
_tankStorages.Add(name, collection);
|
||||
}
|
||||
_tankStorages.Add(record[0], collection);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//if (!File.Exists(filename))
|
||||
//{
|
||||
// return false;
|
||||
//}
|
||||
//using (StreamReader reader = new StreamReader(filename))
|
||||
//{
|
||||
// string checker = reader.ReadLine();
|
||||
// if (checker == null)
|
||||
// return false;
|
||||
// if (!checker.StartsWith("TankStorage"))
|
||||
// return false;
|
||||
// _tankStorages.Clear();
|
||||
// string strs;
|
||||
// bool firstinit = true;
|
||||
// while ((strs = reader.ReadLine()) != null)
|
||||
// {
|
||||
// if (strs == null && firstinit)
|
||||
// return false;
|
||||
// if (strs == null)
|
||||
// break;
|
||||
// firstinit = false;
|
||||
// string name = strs.Split('|')[0];
|
||||
// TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar> collection = new(_pictureWidth, _pictureHeight);
|
||||
// foreach (string data in strs.Split('|')[1].Split(';'))
|
||||
// {
|
||||
// DrawingArmoredCar? vehicle = data?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight);
|
||||
// if (vehicle != null)
|
||||
// {
|
||||
// if (!(collection + vehicle))
|
||||
// {
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// _tankStorages.Add(name, collection);
|
||||
// }
|
||||
// return true;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user