public void Load(IReadOnlyList <TBoardItemData> boardItemDatas, int mapWidth, int mapHeight) { if (boardItemDatas.Count > mapWidth * mapHeight) { throw new ArgumentException($"Supplied amount of datas({boardItemDatas.Count}) is larger than map's size ({mapWidth * mapHeight})"); } var items = new List <TBoardItem>(); for (var i = 0; i < mapHeight; i++) { for (var j = 0; j < mapWidth; j++) { var index = i * mapWidth + j; var boardItemData = boardItemDatas[index]; if (boardItemData == null) { continue; } items.Add(_factory.Create(boardItemData, _coordinateService.GetAxialCoordinateFromNestedArrayIndex(j, i))); } } _boardItemsSetRepository.Set(items); }