public virtual void GoNextStage() { if (CurrentStage != null) { CurrentStage.Remove(); CurrentStage = null; } if (!IsLoop) { CurrentStageData = stages.Dequeue(); } List <Piece> pieceList = GenerateStage(CurrentStageData); int timeLimit = CurrentStageData.TimeLimitSeconds; CurrentStage = new StageController(timeLimit, pieceList); }