Exemplo n.º 1
0
    private void UpdatePiecesReplacement()
    {
        for (int i = selection.transform.childCount - 1; i >= 0; i--)
        {
            Transform piece         = selection.transform.GetChild(i);
            var       logical_piece = piece.gameObject.GetComponent <Piece>();
            logical_piece.SetInactiveOnMapState();
            if (logical_piece.GoesOut(movement_direction))
            {
                // Si la ficha sale del tablero se genera automaticamente su reemplazo en la
                // direccion opuesta para realizar la animacion correspondiente y se elimina
                // la ficha ke muere
                int next_x = logical_piece.x, next_y = logical_piece.y;
                if (moving_on_x)
                {
                    next_x = logical_piece.x == 0 ? levelBuilder.level_width : -1;
                }
                else
                {
                    next_y = logical_piece.y == 0 ? levelBuilder.level_height : -1;
                }

                GameObject new_piece = levelBuilder.BuildPieceGameObject(new Vector2(next_x, next_y),
                                                                         LevelBuilder.piece_kind_normal);
                new_piece.transform.parent = selection.transform;
                new_piece.name             = piece.name;

                // Manda a eliminar la ficha al terminar la animacion del movimiento actual
                logical_piece.AutoDestroyOnFuture();
            }
        }
    }