コード例 #1
0
    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;
    }