示例#1
0
        public void LogMiniGameScores(int appSession, List <LogMiniGameScoreParams> logMiniGameScoreParams)
        {
            //if (AppConstants.VerboseLogging) Debug.Log("LogMiniGameScore " + logMiniGameScoreParams.MiniGameCode + " / " + logMiniGameScoreParams.Score);

            // Retrieve previous scores
            string query = string.Format("SELECT * FROM " + typeof(MiniGameScoreData).Name);
            var    previousScoreDataList = db.Query <MiniGameScoreData>(query);

            var logDataList   = new List <LogMiniGameScoreData>();
            var scoreDataList = new List <MiniGameScoreData>();

            foreach (var parameters in logMiniGameScoreParams)
            {
                // Log for history
                var logData = new LogMiniGameScoreData(appSession, parameters.Pos, parameters.MiniGameCode, parameters.Score, parameters.PlayTime);
                logDataList.Add(logData);

                // Score update
                var scoreData = GetMinigameScoreDataWithMaximum(parameters.MiniGameCode, parameters.PlayTime, parameters.Score, previousScoreDataList);
                scoreDataList.Add(scoreData);

                // We also log play skills related to that minigame, as read from MiniGameData
                var minigameData = db.GetMiniGameDataByCode(parameters.MiniGameCode);
                var results      = new List <PlayResultParameters>();
                foreach (var weightedPlaySkill in minigameData.AffectedPlaySkills)
                {
                    results.Add(new PlayResultParameters(PlayEvent.Skill, weightedPlaySkill.Skill, parameters.Score));
                }
                LogPlay(appSession, parameters.Pos, parameters.MiniGameCode, results);
            }

            db.InsertAll(logDataList);
            db.InsertOrReplaceAll(scoreDataList);
        }
示例#2
0
        public void LogMiniGameScore(int appSession, JourneyPosition pos, MiniGameCode miniGameCode, int score, float playTime)
        {
            if (ApplicationConfig.I.DebugLogEnabled)
            {
                Debug.Log("LogMiniGameScore " + miniGameCode + " / " + score);
            }

            // Log for history
            var data = new LogMiniGameScoreData(appSession, pos, miniGameCode, score, playTime);

            db.Insert(data);

            // Retrieve previous scores
            string query = string.Format("SELECT * FROM " + typeof(MiniGameScoreData).Name);
            var    previousScoreDataList = db.Query <MiniGameScoreData>(query);

            // Score update
            var scoreData = GetMinigameScoreDataWithMaximum(miniGameCode, playTime, score, previousScoreDataList);

            db.InsertOrReplace(scoreData);

            // We also log play skills related to that minigame, as read from MiniGameData
            var   minigameData    = db.GetMiniGameDataByCode(miniGameCode);
            var   results         = new List <PlayResultParameters>();
            float normalizedScore = Mathf.InverseLerp(AppConfig.MinMiniGameScore, AppConfig.MaxMiniGameScore, score);

            foreach (var weightedPlaySkill in minigameData.AffectedPlaySkills)
            {
                results.Add(new PlayResultParameters(PlayEvent.Skill, weightedPlaySkill.Skill, normalizedScore));
            }
            LogPlay(appSession, pos, miniGameCode, results);
        }
示例#3
0
        public void DifficultySelectionTest()
        {
            var minigameCode = RandomHelper.GetRandomEnum <MiniGameCode>();

            for (int i = 0; i < 10; i++)
            {
                var score = RND.Range(0, 4);
                var data  = new LogMiniGameScoreData(0, JourneyPosition.InitialJourneyPosition, minigameCode, score, RND.Range(1, 15f));
                dbManager.Insert(data);
            }

            var difficulty = teacherAI.GetCurrentDifficulty(minigameCode);

            string output = "Minigame " + minigameCode + " selected difficulty " + difficulty;

            PrintOutput(output);
        }