private void NextFigure() { FigureData newFigureData; if (nextFigure == null) { newFigureData = figureCreator.GenerateFigure(); } else { // take figure data from the next figure FigureDataComponent figureDataStorage = nextFigure.GetComponent <FigureDataComponent>(); newFigureData = figureDataStorage.Data; } currentFigure = figurePusher.Push(newFigureData); // returns null if can't push figure if (currentFigure) { FigurePolygon polygon = currentFigure.GetComponent <FigurePolygon>(); polygon.AddListener(this); } else { // can't push figure, so the game is over GameOver(); } if (nextFigure) { Destroy(nextFigure.gameObject); // remove previous figure from next figure area nextFigure = null; } // generate next figure for displaying FigureData nextFigureData = figureCreator.GenerateFigure(); nextFigure = nextFigurePusher.Push(nextFigureData); }