Массив коллекций List[] - можно так сделать? - C#
Формулировка задачи:
Добрый день!
У меня вопрос следующего характера: у меня есть три стадии жизни юнитов - рождение, логика (передвижение, столкновения и тд) и смерть.
С логикой и смертью все понятно, для них у меня есть следующие коллекции:
У каждого юнита есть свои параметры, они уже выстроены, считаются. Если логика говорит, что юнит должен умереть, этот юнит переходит в "мертвый бассейн".
Но вопрос возник со списком рождаемых юнитов. Армий может быть несколько, из разных зданий; в армии есть первый юнит (генерал, ведущий за собой конкретную армию) и остальные. Есть распределение по дороге. Все эти параметры просчитываются при создании списка. Когда армия создана, распределена, полностью появилась и сделала первые шаги, она начинает передаваться в список юнитов Units для дальнейшего управления логикой.
Так вот, если всех рождаемых юнитов из разных домов поместить в один список, не знаю, как их контролировать и отделять друг от друга, как выявлять генерала и распределять по дороге (проблема не в отслеживании дома-родителя или каких других параметров, а именно с указанными вещами). Мне нужен массив коллекций, что-то по типу
Но я такого определения не нашел, язык ругается. Есть что-то похожее?
Каждый элемент этого массива будет содержать коллекцию, описывающую конкретную армию конкретного дома. Коллекция, в свою очередь, содержит юнитов, распределяет их, а дальше передает в следующую общую для всех армий коллекцию Units.
Помогите, пожалуйста
public List<UnitWalk> Units = new List<UnitWalk>();// список юнитов для просчета логики
public List<UnitWalk> UnitsDeadPool = new List<UnitWalk>(); // список юнитов на умерщвлениеpublic List[]<UnitWalk> UnitsBornPool = new List[]<UnitWalk>();
Решение задачи: «Массив коллекций List[] - можно так сделать?»
textual
Листинг программы
public void AddUnit(int _army, House argAttacking, House argTarget)
{
UnitLines _unitLine; // их расположение на дороге
double _timeBorn=0; // для партий юнитов
int _bornScore=0; // счетчик. Сначала двое бегут, потом партия из троих, потом опять двое и тд.
for (int i = 0; i < _army; i++)
{
UnitWalk locUnit = new UnitWalk(Content);
int _lineChoosing = i % 5;
switch (_lineChoosing)
{
case 0:
_unitLine = UnitLines.Mid;
_bornScore++;
break;
case 1:
_unitLine = UnitLines.LeftMid;
break;
case 2:
_unitLine = UnitLines.RigthMid;
_bornScore++;
break;
case 3:
_unitLine = UnitLines.Left;
break;
case 4:
_unitLine = UnitLines.Right;
break;
default:
_unitLine = UnitLines.Mid;
break;
}
_timeBorn = Settings.UnitBornTime * _bornScore;
locUnit.Load(_timeBorn, _unitLine, argAttacking.HouseDescript, argTarget.HouseDescript);
Units.Add(locUnit);
}
}