public void TransformSurroundingShapes() { Transform gameBoardParent = gameManager.gameBoardParent; List <int> surroundingShapes = boardManager.CheckForSurroundingShapes(transform.GetSiblingIndex(), gameBoardParent); if (surroundingShapes != null && surroundingShapes.Count > 0) { undoManager.PushBoardData(new BoardData(gameBoardParent, new Vector2Int(boardManager.GetBoardWidth(), boardManager.GetBoardHeight()))); shapesToTransform = new List <GameShape>(); foreach (int shapeIndex in surroundingShapes) { GameShape gameShape = boardManager.GetGameSlot(shapeIndex, gameBoardParent)?.GetSlotShape(); ShapeData shapeData = boardManager.GetBoardShapeData(shapeIndex, gameBoardParent); Image shapeImage = gameShape?.GetComponent <Image>(); if (gameShape != null && shapeData != null && shapeImage != null) { shapesToTransform.Add(gameShape); GameShape.ShapeType shapeType = shapeData.shapeType; int newShapeTypeIndex = (int)shapeType + 1; if (newShapeTypeIndex > Enum.GetNames(typeof(GameShape.ShapeType)).Length - 1) { newShapeTypeIndex = 1; } GameShape.ShapeType newShapeType = (GameShape.ShapeType)newShapeTypeIndex; gameShape.TriggerShapeTransform(newShapeType, gameShape.GetShapeColor()); } } transformerData.transformerCounter--; UpdateCounterText(); gameManager.CheckForVictory(gameManager.gameBoardParent, gameManager.solutionBoardParent); } transforming = false; }