//Game Analytics
        // Start = 0, Quit = 1, Finish = 2, Pause = 3, Resume = 4, Restart = 5

        private QLGameSourceType MapGameSource(GameSourceType source)
        {
            switch (source)
            {
            case GameSourceType.Start:
                return(QLGameSourceType.QLGameSourceTypeStart);

            case GameSourceType.Finish:
                return(QLGameSourceType.QLGameSourceTypeFinish);

            case GameSourceType.Pause:
                return(QLGameSourceType.QLGameSourceTypePause);

            case GameSourceType.Quit:
                return(QLGameSourceType.QLGameSourceTypeQuit);

            case GameSourceType.Restart:
                return(QLGameSourceType.QLGameSourceTypeRestart);

            case GameSourceType.Resume:
                return(QLGameSourceType.QLGameSourceTypeResume);

            default:
                //TODO add asset here? -> SHouldn't reach here
                return(QLGameSourceType.QLGameSourceTypeQuit);
            }
        }
        public void SendGameData(GameSourceType gameSource, MainGameData gameData)
        {
            LevelID = gameData.Ruleset.Id + "_" + gameData.Ruleset.PuzzleNameKey; //.PuzzleName;

            if (gameSource == GameSourceType.Start)
            {
                GameId = Guid.NewGuid().ToString();

                AdjustEvent adjustEvent = new AdjustEvent(Constants.Analytics.AdjustEvents.GamePlayed);
                Adjust.trackEvent(adjustEvent);
            }

            int timeTakenToSolve = 0;
            int starsEarned      = 0;

            if (gameSource == GameSourceType.Finish)
            {
                timeTakenToSolve = gameData.TimeLimit - gameData.SecondsLeft;
                starsEarned      = gameData.StarScore;
            }

            if (ShouldSkipSendEvent)
            {
                DebugLog($"[ANALYTICS] [Skip] {Constants.Analytics.Events.GameEvent}: {MapGameSource(gameSource).ToString()} " +
                         $"{Constants.Analytics.Parameters.GameType}: {MapGameType(gameData.GameType).ToString()} " +
                         $"{Constants.Analytics.Parameters.GameId}: {GameId} " +
                         $"{Constants.Analytics.Parameters.GameLevel}: {LevelID}" +
                         $"{Constants.Analytics.Parameters.TimeTakenToSolve}: {timeTakenToSolve}" +
                         $"{Constants.Analytics.Parameters.StarsEarned}: {starsEarned}" +
                         $"{Constants.Analytics.Parameters.RemainingFilm}: {gameData.PlayerFilmRemaining}");
                return;
            }

            QLGameEvent gameEvent = new QLGameEvent(MapGameSource(gameSource), MapGameType(gameData.GameType), GameId, LevelID, timeTakenToSolve, starsEarned, gameData.PlayerFilmRemaining);

            TrackEvent(gameEvent);
        }