Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #3
0
 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;
 }