Я сейчас работаю над небольшой текстовой игрой после просмотра нового фильма о Троне на днях. (как вы делаете, когда вы гик, у которого много времени на руках).
Я создал сетку, в которую можно помещать объекты, и в настоящее время обнаруживаю, что создание моей сетки занимает много времени.
Меня интересует, как вы можете повлиять на это и любые шаблоны проектирования, идеи, концепции и т. Д., Которые полезны для такого рода вещей.
В настоящее время у меня есть 4 основных «части», которые составляют сетку.
Во-первых, у меня есть сама сетка, которая содержит массив 'строк'
public interface IGrid
{
GridRow[] Rows { get; set; }
}
A GridRow
в свою очередь содержит массив GridCell
, каждый из которых содержит массив IEntity (каждый объект, который может быть помещен в ячейку сетки, должен содержать IEntity.
public class GridRow
{
public int Index { get; set; }
public GridCell[] Cells { get; set; }
}
public class GridCell
{
public int Index { get; set; }
public IEntity[] Entities { get; set; }
}
Когда дело доходит до создания сетки, это занимает довольно много времени. В настоящее время для создания сетки 200 * 200 требуется ~ 17 секунд.
Я совершенно уверен, что должен быть гораздо более эффективный способ либо сохранить эти данные, либо создать сетку с использованием текущей концепции.
Любые советы приветствуются.
UPDATE
Вот как я сейчас составляю сетку:
public IGrid Create(int rows, int cols, int concurentEntitiesPerCell)
{
var grid = new Grid();
Rows = new GridRow[rows];
grid.Rows = Rows;
var masterCells = new GridCell[cols];
var masterRow = new GridRow();
var masterCell = new GridCell();
for (var i = 0; i < masterCells.Count(); i++)
{
masterCells[i] = new GridCell();
masterCells[i].Index = i;
masterCells[i].Entities = new IEntity[concurentEntitiesPerCell];
}
masterRow.Cells = masterCells;
for (var j = 0; j < rows; j++)
{
grid.Rows[j] = new GridRow();
}
return grid;
}