private void GameQuitHandler(MainGameData gameData)
        {
            if (gameData != null)
            {
                IsInGame = false;

                // clean up gameboard
                SceneActivationBehaviour <BoardUIActivator> .Instance.DestroyBoard();

                SessionFinished?.Invoke(gameData);
                currentSessionRuleset = null;
            }
        }
        private void GameRestartedHandler(MainGameData gameData)
        {
            if (gameData != null)
            {
                IsInGame = false;

                // clean up gameboard
                SceneActivationBehaviour <BoardUIActivator> .Instance.DestroyBoard();

                SessionRestarted?.Invoke(gameData);
                currentSessionRuleset = null;

                StartCoroutine(SceneActivationBehaviour <GameLogicActivator> .Instance.GameController.StartGameHandler(gameData.Ruleset));
            }
        }
        private void PuzzleSolvedHandler(MainGameData gameData)
        {
            if (gameData != null)
            {
                IsInGame = false;

                if (!gameData.Ruleset.IsGold)
                {
                    SceneActivationBehaviour <GameLogicActivator> .Instance.GameController.RecordLevelCompletion(gameData);
                }
                else
                {
                    SceneActivationBehaviour <GameLogicActivator> .Instance.GameController.RecordGoldLevelCompletion(gameData);
                }

                SessionSolved?.Invoke(gameData);
            }
        }