public void Build(G[,] gridData, GridSpecs <T> gridSpecs, Transform parent) { CleanUp(); var cols = gridData.GetLength(0); var rows = gridData.GetLength(1); _physicalTiles = new GameObject[cols * rows]; Tiles = new T[cols, rows]; LoadSpecs(gridSpecs, cols, rows); for (var col = 0; col < cols; col++) { for (var row = 0; row < rows; row++) { var tileObj = Object.Instantiate(gridSpecs.TileInstance, parent).gameObject; var tileIndex = col * rows + row; _physicalTiles[tileIndex] = tileObj; Tiles[col, row] = tileObj.GetComponent <T>(); tileObj.name = $"TileObj [{col},{row}]"; RepositionTile(col, row, tileObj.transform); var tile = tileObj.GetComponent <IPhysical>(); tile.BindToLogical(gridData[col, row]); } } Object.Destroy(gridSpecs.TileInstance.gameObject); }
public TileSpecs(GridSpecs <T> gridSpecs, int cols, int rows) { Width = gridSpecs.Width / cols; Height = gridSpecs.Height / rows; ScaleX = Width / gridSpecs.TileInstance.VisualWidth; ScaleY = Height / gridSpecs.TileInstance.VisualHeight; }
public void LoadSpecs(GridSpecs <T> gridSpecs, int cols, int rows) { gridSpecs.Dimensions = new Vector2(cols, rows); gridSpecs.Initialise(); TileSpecs = new TileSpecs <T>(gridSpecs, cols, rows); gridSpecs.CalibrateTile(TileSpecs); // Because I cannot serialise GridSpecs<T> _gridSpecs = gridSpecs; }