public FieldModel(IMainGameSettings mainGameSettings) { _mainGameSettings = mainGameSettings; uint columns = mainGameSettings.ColumnAmount; uint rows = mainGameSettings.RowAmount; _field = new Cell[columns, rows]; InitializeField(); }
private void CreateBackground() { IMainGameSettings _mainGameSettings = (MainGameSettings)_mainGameSettingsField.value; Transform _spawnPoint = (Transform)_spawnPointField.value; Transform _parent = (Transform)_parentField.value; SpriteRenderer _cellPrefab = (SpriteRenderer)_cellPrefabField.value; SpriteRenderer _backgroundPrefab = (SpriteRenderer)_backgroundPrefabField.value; float xOffset = _xOffsetField.value; float yOffset = _yOffsetField.value; Color cellColor = _cellColorField.value; Color backgroundColor = _backgroundColorField.value; Color originCellColor = _cellPrefab.color; _backgroundPrefab.color = backgroundColor; float columns = _mainGameSettings.ColumnAmount; float rows = _mainGameSettings.RowAmount; float width = _backgroundPrefab.sprite.bounds.size.x; float height = _backgroundPrefab.sprite.bounds.size.y; float requiredWidth = (_cellPrefab.sprite.bounds.size.x + xOffset) * columns - xOffset; float requiredHeight = (_cellPrefab.sprite.bounds.size.y + yOffset) * rows - yOffset; Vector3 backgroundSpawnPoint = _spawnPoint.localPosition; backgroundSpawnPoint.x -= _cellPrefab.sprite.bounds.size.x / 2f; backgroundSpawnPoint.y += _cellPrefab.sprite.bounds.size.y / 2f; backgroundSpawnPoint.x += requiredWidth / 2f; backgroundSpawnPoint.y -= requiredHeight / 2f; float scaleX = requiredWidth / width; float scaleY = requiredHeight / height; float scaleZ = 1; _backgroundPrefab.transform.localScale = new Vector3(scaleX, scaleY, scaleZ); Instantiate(_backgroundPrefab, backgroundSpawnPoint, Quaternion.identity, _parent); _backgroundPrefab.transform.localScale = Vector3.up; _cellPrefab.color = cellColor; _cellPrefab.name = "BackgroundCell"; Vector3 spawnPosition = _spawnPoint.localPosition; for (int row = 0; row < _mainGameSettings.RowAmount; row++) { for (int column = 0; column < _mainGameSettings.ColumnAmount; column++) { Instantiate(_cellPrefab, spawnPosition, Quaternion.identity, _parent); spawnPosition.x += xOffset + _cellPrefab.sprite.bounds.size.x; } spawnPosition.x = _spawnPoint.localPosition.x; spawnPosition.y -= yOffset + _cellPrefab.sprite.bounds.size.y; } _cellPrefab.color = originCellColor; }