Exemplo n.º 1
0
        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);
        }