using UnityEngine; namespace Components.TileObjects { public class MovingObstacle : TileObject { [SerializeField] private MovingPillar[] tiles; protected override void ReleaseReferences() { tiles = null; } public override void Initialize((int, int) spawnRange) { var activeCount = Random.Range(spawnRange.Item1, spawnRange.Item2 + 1); if (activeCount > tiles.Length) activeCount = tiles.Length; ShuffleTiles(); var direction = -1; for (var i = 0; i < activeCount; i++) { tiles[i].AnimateTile(direction); direction *= -1; } } private void ShuffleTiles() { var length = tiles.Length; for (var i = 0; i < length; i++) { var rnd = Random.Range(0, length); (tiles[i].transform.localPosition, tiles[rnd].transform.localPosition) = (tiles[rnd].transform.localPosition, tiles[i].transform.localPosition); } } public override void ResetObject() { foreach (var tile in tiles) tile.StopTile(); } public override void PauseMovement() { base.PauseMovement(); foreach (var tile in tiles) tile.Pause(); } public override void ResumeMovement() { base.ResumeMovement(); foreach (var tile in tiles) tile.Resume(); } } }