Попробуйте это:
if (ply1Squads.Length == 0)
{
for (int i = 0; i < 15; i++)
{
ply1Squads[i] = new Squad();
}
}
Вы уже заявили, что ply1Squads
имеет 15 Squad
объектов, так что это просто вопрос инициализации объектов в этой точке.
Вы можете сделать то же самое для ply2Squads
.
Кстати, вам также нужно объявить ply1Squads
и ply2Squads
как static
, поскольку статические классы не могут иметь членов экземпляра:
static Squad[] ply1Squads = new Squad[15];
static Squad[] ply2Squads = new Squad[15];
По умолчанию это будут приватные переменные, поэтому вам также понадобятся свойства для этих двух массивов:
public static Squad[] Ply1Squads
{
get
{
return ply1Squads;
}
set
{
ply1Squads = value;
}
}
public static Squad[] Ply2Squads
{
get
{
return ply2Squads;
}
set
{
ply2Squads = value;
}
}
Дополнительные мысли
Если ваша цель разработки состоит в том, чтобы MedGameController
обрабатывать всю информацию, касающуюся отрядов, я бы отошел от того, что вы представляете , - создание дублирующих методов для каждого Squad
массива (т. е. Player1Squads
). Вместо этого передайте некоторый флаг, сообщающий контроллеру, какой массив использовать, например:
public void CreateSquads(int playerNum)
{
select (playerNum)
{
case 1:
for (int i = 0; i < 15; i++)
{
ply1Squads[i] = new Squad();
}
break;
case 2:
for (int i = 0; i < 15; i++)
{
ply2Squads[i] = new Squad();
}
break;
default:
// Handle wrong number here
break;
}
}
Это (очень маленький) шаг рефакторинга. Я бы придумал список вещей, которые вы хотите, чтобы контроллер делал, а затем выяснил, как избежать отображения 1-1 каждой функции в оба массива.
Надеюсь, это имеет какой-то смысл и дает вам направление. У меня есть еще несколько идей, которые щекочут мой мозг, но я пока не могу вытащить их вперед. Если я это сделаю, я добавлю больше, если вам интересно (какие еще два или два редактирования после первой полдюжины, верно? :)).