Этап 1. Смена массива на список.
This commit is contained in:
parent
1e66082200
commit
b091beba51
@ -69,14 +69,9 @@ namespace Airbus
|
|||||||
{
|
{
|
||||||
Shaking();
|
Shaking();
|
||||||
|
|
||||||
for(int i = 0; i < _setPlanes.Count; i++)
|
foreach(var plane in _setPlanes.GetAirbus())
|
||||||
{
|
{
|
||||||
var plane = _setPlanes.Get(i);
|
return _map.CreateMap(_pictureWidth, _pictureHeight, plane);
|
||||||
|
|
||||||
if(plane != null)
|
|
||||||
{
|
|
||||||
return _map.CreateMap(_pictureWidth, _pictureHeight, plane);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new(_pictureWidth, _pictureHeight);
|
return new(_pictureWidth, _pictureHeight);
|
||||||
@ -100,11 +95,11 @@ namespace Airbus
|
|||||||
|
|
||||||
for (int i = 0; i < _setPlanes.Count; i++)
|
for (int i = 0; i < _setPlanes.Count; i++)
|
||||||
{
|
{
|
||||||
if (_setPlanes.Get(i) == null)
|
if (_setPlanes[i] == null)
|
||||||
{
|
{
|
||||||
for (; j > i; j--)
|
for (; j > i; j--)
|
||||||
{
|
{
|
||||||
var plane = _setPlanes.Get(j);
|
var plane = _setPlanes[j];
|
||||||
|
|
||||||
if (plane != null)
|
if (plane != null)
|
||||||
{
|
{
|
||||||
@ -186,13 +181,20 @@ namespace Airbus
|
|||||||
public void DrawPlanes(Graphics g)
|
public void DrawPlanes(Graphics g)
|
||||||
{
|
{
|
||||||
int position = 0;
|
int position = 0;
|
||||||
|
int index = 0;
|
||||||
int currentWidth = 1;
|
int currentWidth = 1;
|
||||||
int currentHeight = 5;
|
int currentHeight = 5;
|
||||||
|
|
||||||
for (int i = 0; i < _setPlanes.Count; i++)
|
// for (int i = 0; i < _setPlanes.Count; i++)
|
||||||
|
|
||||||
|
//_setPlanes[index]?.SetObject(currentWidth * _placeSizeWidth + 20, currentHeight * _placeSizeHeight + 20, _pictureWidth, _pictureHeight);
|
||||||
|
//_setPlanes[index]?.DrawningObject(g);
|
||||||
|
|
||||||
|
foreach (var plane in _setPlanes.GetAirbus())
|
||||||
{
|
{
|
||||||
_setPlanes.Get(i)?.SetObject(currentWidth * _placeSizeWidth + 20, currentHeight * _placeSizeHeight + 20, _pictureWidth, _pictureHeight);
|
plane.SetObject(currentWidth * _placeSizeWidth + 20, currentHeight * _placeSizeHeight + 20, _pictureWidth, _pictureHeight);
|
||||||
_setPlanes.Get(i)?.DrawningObject(g);
|
plane.DrawningObject(g);
|
||||||
|
index++;
|
||||||
|
|
||||||
if(position % 2 == 0)
|
if(position % 2 == 0)
|
||||||
{
|
{
|
||||||
|
@ -9,21 +9,28 @@ namespace Airbus
|
|||||||
internal class SetPlanesGeneric<T>
|
internal class SetPlanesGeneric<T>
|
||||||
where T: class
|
where T: class
|
||||||
{
|
{
|
||||||
//массив объектов, которые храним
|
//список объектов, которые храним
|
||||||
private readonly T[] _places;
|
private readonly List<T> _places;
|
||||||
|
|
||||||
//количество объектов в массиве
|
//количество объектов в массиве
|
||||||
public int Count => _places.Length;
|
public int Count => _places.Count;
|
||||||
|
|
||||||
|
//ограничение по кол-ву объектов
|
||||||
|
private readonly int _maxCount;
|
||||||
|
|
||||||
//конструктор
|
//конструктор
|
||||||
public SetPlanesGeneric(int count)
|
public SetPlanesGeneric(int count)
|
||||||
{
|
{
|
||||||
_places = new T[count];
|
_maxCount = count;
|
||||||
|
_places = new List<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
//добавление объекта в набор
|
//добавление объекта в набор
|
||||||
public int Insert(T plane)
|
public int Insert(T plane)
|
||||||
{
|
{
|
||||||
|
//вставка в начало набора
|
||||||
|
//проверка на максим. кол-во////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
return Insert(plane, 0);
|
return Insert(plane, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,7 +38,7 @@ namespace Airbus
|
|||||||
public int Insert(T plane, int position)
|
public int Insert(T plane, int position)
|
||||||
{
|
{
|
||||||
// проверка позиции
|
// проверка позиции
|
||||||
if (position >= _places.Length || position < 0)
|
if (position >= _places.Count || position < 0)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -76,7 +83,7 @@ namespace Airbus
|
|||||||
public T Remove(int position)
|
public T Remove(int position)
|
||||||
{
|
{
|
||||||
// проверка позиции
|
// проверка позиции
|
||||||
if (position >= _places.Length || position < 0)
|
if (position >= _places.Count || position < 0)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -89,18 +96,42 @@ namespace Airbus
|
|||||||
}
|
}
|
||||||
|
|
||||||
//получение объекта из набора по позиции
|
//получение объекта из набора по позиции
|
||||||
public T Get(int position)
|
public T this[int position]
|
||||||
{
|
{
|
||||||
if (position >= _places.Length || position < 0)
|
get
|
||||||
{
|
{
|
||||||
return null;
|
if (position >= _places.Count || position < 0)
|
||||||
}
|
{
|
||||||
else if (_places[position] == null)
|
return null;
|
||||||
{
|
}
|
||||||
return null;
|
else if (_places[position] == null)
|
||||||
}
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return _places[position];
|
return _places[position];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
//TODO проверка позиции
|
||||||
|
//TODO вставка в список по позиции
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//проход по набору до первого пустого
|
||||||
|
public IEnumerable<T> GetAirbus()
|
||||||
|
{
|
||||||
|
foreach(var plane in _places)
|
||||||
|
{
|
||||||
|
if(plane != null)
|
||||||
|
{
|
||||||
|
yield return plane;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user