public MiniGameInPlaySession[] CustomParseMinigames(PlaySessionData PSdata, Dictionary <string, object> dict, MiniGameTable table) { var list = new List <MiniGameInPlaySession>(); if (PSdata.Type == "Assessment") { // Assessments have AssessmentType as their minigame var minigameStruct = new MiniGameInPlaySession(); var assessmentType = ToString(dict["AssessmentType"]); if (assessmentType == "") { Debug.LogWarning(PSdata.GetType() + " could not find AssessmentType for assessment " + PSdata.Id); return(list.ToArray()); // this means that no assessment type has been selected } minigameStruct.MiniGameCode = (MiniGameCode)System.Enum.Parse(typeof(MiniGameCode), assessmentType); minigameStruct.Weight = 1; // weight is forced to be 1 list.Add(minigameStruct); } else { // Non-Assessments (i.e. Minigames) must be checked through columns for (int enum_i = 0; enum_i < System.Enum.GetValues(typeof(MiniGameCode)).Length; enum_i++) { if ((MiniGameCode)enum_i == MiniGameCode.Invalid) { continue; } var enum_string = ((MiniGameCode)enum_i).ToString(); int result = 0; if (enum_string == "") { // this means that the enum does not exist continue; } if (int.TryParse(enum_string, out result)) { // this means that the enum does not exist among the ones we want continue; } // this checks if a minigame isn't used in the PlaySession table if (!dict.ContainsKey(enum_string)) { if (!notFoundCodes.Contains((MiniGameCode)enum_i)) { Debug.LogWarning(PSdata.GetType() + " could not find minigame column for " + enum_string); notFoundCodes.Add((MiniGameCode)enum_i); } continue; } var minigameStruct = new MiniGameInPlaySession(); minigameStruct.MiniGameCode = (MiniGameCode)enum_i; // Debug.Log("mingame: " + enum_string); minigameStruct.Weight = ToInt(dict[enum_string]); if (minigameStruct.Weight == 0) { // Skip adding if the weight is zero continue; } list.Add(minigameStruct); } } return(list.ToArray()); }