лаб-6
This commit is contained in:
parent
382cf11d89
commit
910cc861f9
@ -111,6 +111,26 @@ namespace AircraftCarrier
|
||||
}
|
||||
return new(_pictureWidth, _pictureHeight);
|
||||
}
|
||||
public string GetData(char separatorType, char separatorData)
|
||||
{
|
||||
string data = $"{_map.GetType().Name}{separatorType}";
|
||||
foreach (var aircraftcarrier in _setAircraftCarriers.GetAircraftCarriers())
|
||||
{
|
||||
data += $"{aircraftcarrier.GetInfo()}{separatorData}";
|
||||
}
|
||||
return data;
|
||||
}
|
||||
/// <summary>
|
||||
/// Загрузка списка из массива строк
|
||||
/// </summary>
|
||||
/// <param name="records"></param>
|
||||
public void LoadData(string[] records)
|
||||
{
|
||||
foreach (var rec in records)
|
||||
{
|
||||
_setAircraftCarriers.Insert(DrawningObjectAircraftCarrier.Create(rec) as T);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// "Взбалтываем" набор, чтобы все элементы оказались в начале
|
||||
/// </summary>
|
||||
@ -164,10 +184,8 @@ namespace AircraftCarrier
|
||||
{
|
||||
int yNumOfPlaces = _pictureHeight / _placeSizeHeight;
|
||||
int xNumOfPlaces = _pictureWidth / _placeSizeWidth;
|
||||
|
||||
int rowNum = yNumOfPlaces - 1;
|
||||
int columnNum = 0;
|
||||
|
||||
for (int i = 0; i < _setAircraftCarriers.Count; i++)
|
||||
{
|
||||
if (_setAircraftCarriers[i] != null)
|
||||
|
@ -11,7 +11,7 @@ namespace AircraftCarrier
|
||||
/// <summary>
|
||||
/// Словарь (хранилище) с картами
|
||||
/// </summary>
|
||||
readonly Dictionary<string, MapWithSetAircraftCarriersGeneric<DrawningObjectAircraftCarrier,
|
||||
readonly Dictionary<string, MapWithSetAircraftCarriersGeneric<IDrawningObject,
|
||||
AbstractMap>> _mapStorages;
|
||||
/// <summary>
|
||||
/// Возвращение списка названий карт
|
||||
@ -30,10 +30,11 @@ namespace AircraftCarrier
|
||||
/// </summary>
|
||||
/// <param name="pictureWidth"></param>
|
||||
/// <param name="pictureHeight"></param>
|
||||
private readonly char separatorDict = '|';
|
||||
private readonly char separatorData = ';';
|
||||
public MapsCollection(int pictureWidth, int pictureHeight)
|
||||
{
|
||||
_mapStorages = new Dictionary<string,
|
||||
MapWithSetAircraftCarriersGeneric<DrawningObjectAircraftCarrier, AbstractMap>>();
|
||||
_mapStorages = new Dictionary<string,MapWithSetAircraftCarriersGeneric<IDrawningObject, AbstractMap>>();
|
||||
_pictureWidth = pictureWidth;
|
||||
_pictureHeight = pictureHeight;
|
||||
}
|
||||
@ -63,7 +64,7 @@ namespace AircraftCarrier
|
||||
/// </summary>
|
||||
/// <param name="ind"></param>
|
||||
/// <returns></returns>
|
||||
public MapWithSetAircraftCarriersGeneric<DrawningObjectAircraftCarrier, AbstractMap> this[string
|
||||
public MapWithSetAircraftCarriersGeneric<IDrawningObject, AbstractMap> this[string
|
||||
ind]
|
||||
{
|
||||
get
|
||||
@ -72,7 +73,7 @@ namespace AircraftCarrier
|
||||
return mapWithSetAircraftCarriersGeneric;
|
||||
}
|
||||
}
|
||||
public MapWithSetAircraftCarriersGeneric<DrawningObjectAircraftCarrier, AbstractMap> this[int index]
|
||||
public MapWithSetAircraftCarriersGeneric<IDrawningObject, AbstractMap> this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
@ -88,5 +89,66 @@ namespace AircraftCarrier
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Сохранение информации по автомобилям в хранилище в файл
|
||||
/// </summary>
|
||||
/// <param name="filename">Путь и имя файла</param>
|
||||
/// <returns></returns>
|
||||
public bool SaveData(string filename)
|
||||
{
|
||||
if (File.Exists(filename))
|
||||
{
|
||||
File.Delete(filename);
|
||||
}
|
||||
using (StreamWriter sw = new(filename))
|
||||
{
|
||||
sw.Write($"MapsCollection{Environment.NewLine}");
|
||||
foreach (var storage in _mapStorages)
|
||||
{
|
||||
sw.Write($"{storage.Key}{separatorDict}{storage.Value.GetData(separatorDict, separatorData)}{Environment.NewLine}");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// Загрузка нформации по автомобилям на парковках из файла
|
||||
/// </summary>
|
||||
/// <param name="filename"></param>
|
||||
/// <returns></returns>
|
||||
public bool LoadData(string filename)
|
||||
{
|
||||
if (!File.Exists(filename))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
using (StreamReader sr = new(filename))
|
||||
{
|
||||
string str = "";
|
||||
if ((str = sr.ReadLine()) == null || !str.Contains("MapsCollection"))
|
||||
{
|
||||
//если нет такой записи, то это не те данные
|
||||
return false;
|
||||
}
|
||||
//очищаем записи
|
||||
_mapStorages.Clear();
|
||||
while ((str = sr.ReadLine()) != null)
|
||||
{
|
||||
var elem = str.Split(separatorDict);
|
||||
AbstractMap map = null;
|
||||
switch (elem[1])
|
||||
{
|
||||
case "SimpleMap":
|
||||
map = new SimpleMap();
|
||||
break;
|
||||
case "HardMap":
|
||||
map = new ComplexMap();
|
||||
break;
|
||||
}
|
||||
_mapStorages.Add(elem[0], new MapWithSetAircraftCarriersGeneric<IDrawningObject, AbstractMap>(_pictureWidth, _pictureHeight, map));
|
||||
_mapStorages[elem[0]].LoadData(elem[2].Split(separatorData, StringSplitOptions.RemoveEmptyEntries));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -55,6 +55,7 @@ namespace AircraftCarrier
|
||||
_places.Insert(position, AircraftCarrier);
|
||||
return position;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Удаление объекта из набора с конкретной позиции
|
||||
/// </summary>
|
||||
@ -75,7 +76,6 @@ namespace AircraftCarrier
|
||||
/// </summary>
|
||||
/// <param name="position"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public T this[int position]
|
||||
{
|
||||
get
|
||||
@ -86,14 +86,15 @@ namespace AircraftCarrier
|
||||
{
|
||||
Insert(value, position);
|
||||
}
|
||||
|
||||
}
|
||||
public IEnumerable<T> GetCars()
|
||||
public IEnumerable<T> GetAircraftCarriers()
|
||||
{
|
||||
foreach (var car in _places)
|
||||
foreach (var aircraftcarrier in _places)
|
||||
{
|
||||
if (car != null)
|
||||
if (aircraftcarrier != null)
|
||||
{
|
||||
yield return car;
|
||||
yield return aircraftcarrier;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -101,6 +102,5 @@ namespace AircraftCarrier
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user