示例#1
0
        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());
        }