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); }
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); }
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); }