示例#1
0
    ///<summary>
    ///Internal communication with Javascript components
    ///</summary>
    ///<remarks>
    ///Serializes the entire SCORM datamodel object to the correct API calls, and sends to the
    ///Javascript API
    ///</remarks>
    private static void SubmitStudentData_imp(object b)
    {
        BroadcastDelegate broadcast = (BroadcastDelegate)b;

        try{
            if (!CheckThread())
            {
                return;
            }
            WaitForInitialize();
            if (ScormBridge.IsScorm2004)
            {
                ScormSerializer serializer = new ScormSerializer(StudentRecord);
                serializer.Serialize(ScormBridge);
                ScormBridge.Commit();
            }
            else
            {
                Scorm1_2.DataModel tempdata   = ScormVersionConversion.DataModel.Translate(StudentRecord);
                ScormSerializer    serializer = new ScormSerializer(tempdata);
                serializer.Serialize(ScormBridge);
                ScormBridge.Commit();
            }
        }catch (System.Exception e)
        {
            UnityEngine.Application.ExternalCall("DebugPrint", "***ERROR***" + e.Message + "<br/>"
                                                 + e.StackTrace + "<br/>" + e.Source
                                                 );
        }
        broadcast("Scorm_Commit_Complete", SendMessageOptions.RequireReceiver);
    }
示例#2
0
    ///<summary>
    ///Internal implementation of communication with the LMS
    ///</summary>
    ///<remarks>
    ///Read all the data from the LMS into the internal data structure. Runs in a seperate thread.
    ///Will fire "Scorm_Initialize_Complete" when the datamodel is ready to be manipulated
    ///</remarks>
    private static void Initialize_imp(  )
    {
        if (!CheckThread())
        {
            return;
        }


        ScormBridge = new Unity_ScormBridge(ObjectName, "ScormValueCallback");
        ScormBridge.Initialize();

        try{
            if (ScormBridge.IsScorm2004)
            {
                StudentRecord = new Scorm2004.DataModel();
                ScormDeSerializer deserializer = new ScormDeSerializer(StudentRecord);
                StudentRecord = (Scorm2004.DataModel)deserializer.Deserialize(ScormBridge);
            }
            else
            {
                Scorm1_2.DataModel tempStudentRecord = new Scorm1_2.DataModel();
                ScormDeSerializer  deserializer      = new ScormDeSerializer(tempStudentRecord);
                tempStudentRecord = (Scorm1_2.DataModel)deserializer.Deserialize(ScormBridge);
                StudentRecord     = ScormVersionConversion.DataModel.Translate(tempStudentRecord);
            }
        }catch (Exception e)
        {
            UnityEngine.Application.ExternalCall("DebugPrint", "***ERROR***" + e.Message + "<br/>" + e.StackTrace + "<br/>" + e.Source);
        }
        Initialized = true;
    }
示例#3
0
        static void Main(string[] args)
        {
            {
                //Serialize a cocdtype to a scorm API
                //create an object to handle the get set calls
                InMemoryScormSimulator2004 sim2004 = new InMemoryScormSimulator2004();
                InMemoryScormSimulator1_2  sim12   = new InMemoryScormSimulator1_2();

                Scorm1_2.DataModel model12     = ScormSerialization.ScormDatamodelCommandParser1_2.GetTestData1_2();
                ScormSerializer    serialize12 = new ScormSerializer(model12);
                serialize12.Serialize(sim12);

                ScormVersionConversion.DataModel.Translate(new Scorm1_2.DataModel());
                ScormVersionConversion.DataModel.Translate(new Scorm2004.DataModel());

                Console.WriteLine("\n*****Translated to 2004*****\n");
                Scorm2004.DataModel model2004 = ScormVersionConversion.DataModel.Translate(model12);
                //create a serializer for the lr object
                ScormSerializer serialize2004 = new ScormSerializer(model2004);
                //serialize the lr object to the InMemoryScormSimulator
                serialize2004.Serialize(sim2004);

                Console.WriteLine("\n*****Translated Back to 12*****\n");

                model12     = ScormVersionConversion.DataModel.Translate(model2004);
                serialize12 = new ScormSerializer(model12);
                serialize12.Serialize(sim12);
            }
        }
        public static Scorm1_2.DataModel Translate(Scorm2004.DataModel i)
        {
            if (i == null)
            {
                return(null);
            }

            Scorm1_2.DataModel ret = new Scorm1_2.DataModel();
            ret.core          = new Scorm1_2.coreType();
            ret.attemptNumber = i.attemptNumber;
            if (i.comments_from_learner.Count > 0)
            {
                ret.comments = i.comments_from_learner[0].comment.Value;
            }
            if (i.comments_from_lms.Count > 0)
            {
                ret.comments_from_lms = i.comments_from_lms[0].comment.Value;
            }

            if (i.completion_status != Scorm2004.completionStatusType.not_set && i.completion_status != Scorm2004.completionStatusType.unknown)
            {
                ret.core.lesson_status = Enums.Translate(i.completion_status);
            }
            else
            {
                ret.core.lesson_status = Enums.Translate(i.success_status);
            }

            ret.core.credit = Enums.Translate(i.credit);

            ret.core.entry                    = Enums.Translate(i.entry);
            ret.core.exit                     = Enums.Translate(i.exit);
            ret.interactions                  = Arrays.Translate(i.interactions);
            ret.launch_data                   = i.launch_data;
            ret.core.student_id               = i.learner_id;
            ret.core.student_name             = Types.Translate(i.learner_name);
            ret.student_preference            = Types.Translate(i.learner_preference);
            ret.core.lesson_location          = i.location;
            ret.student_data                  = new Scorm1_2.studentDataType();
            ret.student_data.max_time_allowed = new Scorm1_2.TimeSpan(i.max_time_allowed);
            ret.core.lesson_mode              = Enums.Translate(i.mode);
            ret.objectives                    = Arrays.Translate(i.objectives);


            ret.core.score        = Types.Translate(i.score);
            ret.core.session_time = new Scorm1_2.TimeSpan(i.session_time);

            ret.suspend_data = i.suspend_data;
            ret.student_data.time_limit_action = Enums.Translate(i.time_limit_action);
            ret.core.total_time = new Scorm1_2.TimeSpan(i.total_time);
            return(ret);
        }
        public static Scorm2004.DataModel Translate(Scorm1_2.DataModel i)
        {
            if (i == null)
            {
                return(null);
            }

            Scorm2004.DataModel ret = new Scorm2004.DataModel();
            ret.learner_name       = new Scorm2004.learnerName();
            ret.score              = new Scorm2004.scoreType();
            ret.learner_preference = new Scorm2004.learnerPreferenceType();

            ret.attemptNumber = i.attemptNumber;

            if (i.comments_from_lms != "" && i.comments_from_lms != null)
            {
                ret.comments_from_lms = new System.Collections.Generic.List <Scorm2004.commentType>();
                ret.comments_from_lms.Add(new Scorm2004.commentType());
                ret.comments_from_lms[0].comment       = new Scorm2004.commentTypeComment();
                ret.comments_from_lms[0].comment.Value = i.comments_from_lms;
                ret.comments_from_lms[0].id            = "Comment:1";
                ret.comments_from_lms[0].location      = "";
                ret.comments_from_lms[0].timestamp     = new Scorm2004.DateTime(System.DateTime.Now);
            }

            if (i.comments != "" && i.comments != null)
            {
                ret.comments_from_learner = new System.Collections.Generic.List <Scorm2004.commentType>();
                ret.comments_from_learner.Add(new Scorm2004.commentType());
                ret.comments_from_learner[0].comment       = new Scorm2004.commentTypeComment();
                ret.comments_from_learner[0].comment.Value = i.comments;
                ret.comments_from_learner[0].id            = "Comment:1";
                ret.comments_from_learner[0].location      = "";
                ret.comments_from_learner[0].timestamp     = new Scorm2004.DateTime(System.DateTime.Now);
            }
            if (i.core != null)
            {
                ret.completion_status = Enums.Translate(i.core.lesson_status);
                ret.credit            = Enums.Translate(i.core.credit);
                ret.entry             = Enums.Translate(i.core.entry);
                ret.exit               = Enums.Translate(i.core.exit);
                ret.learner_id         = i.core.student_id;
                ret.learner_name.Value = i.core.student_name;
                ret.mode               = Enums.Translate(i.core.lesson_mode);
                if (i.core.score != null)
                {
                    ret.score = Types.Translate(i.core.score);
                }
                ret.session_time = new Scorm2004.TimeSpan(i.core.session_time);
                ret.total_time   = new Scorm2004.TimeSpan(i.core.total_time);
                ret.location     = i.core.lesson_location;

                if (i.core.lesson_status == Scorm1_2.lessonStatusType.failed)
                {
                    ret.success_status = Scorm2004.successStatusType.failed;
                }
                else if (i.core.lesson_status == Scorm1_2.lessonStatusType.passed)
                {
                    ret.success_status = Scorm2004.successStatusType.passed;
                }
                else
                {
                    ret.success_status = Scorm2004.successStatusType.not_set;
                }
            }
            if (i.student_data != null)
            {
                ret.scaled_passing_score = i.student_data.mastery_score;
                ret.time_limit_action    = Enums.Translate(i.student_data.time_limit_action);
                ret.max_time_allowed     = new Scorm2004.TimeSpan(i.student_data.max_time_allowed);
            }

            ret.dataModelVersion = "Scorm 2004";

            if (i.interactions != null)
            {
                ret.interactions = Arrays.Translate(i.interactions);
            }

            ret.launch_data = i.launch_data;

            ret.learner_name.lang = "en-US";

            if (i.student_preference != null)
            {
                ret.learner_preference = Types.Translate(i.student_preference);
            }

            if (i.objectives != null)
            {
                ret.objectives = Arrays.Translate(i.objectives);
            }

            ret.suspend_data = i.suspend_data;

            return(ret);
        }
        public static Scorm1_2.DataModel Translate(Scorm2004.DataModel i)
        {
            if (i == null) return null;

            Scorm1_2.DataModel ret = new Scorm1_2.DataModel();
            ret.core = new Scorm1_2.coreType();
            ret.attemptNumber = i.attemptNumber;
            if (i.comments_from_learner.Count > 0)
                ret.comments =   i.comments_from_learner[0].comment.Value;
            if (i.comments_from_lms.Count > 0)
                ret.comments_from_lms =   i.comments_from_lms[0].comment.Value;

            if (i.completion_status != Scorm2004.completionStatusType.not_set && i.completion_status != Scorm2004.completionStatusType.unknown)
                ret.core.lesson_status = Enums.Translate(i.completion_status);
            else
                ret.core.lesson_status = Enums.Translate(i.success_status);

            ret.core.credit = Enums.Translate(i.credit);

            ret.core.entry = Enums.Translate(i.entry);
            ret.core.exit = Enums.Translate(i.exit);
            ret.interactions = Arrays.Translate(i.interactions);
            ret.launch_data = i.launch_data;
            ret.core.student_id = i.learner_id;
            ret.core.student_name = Types.Translate(i.learner_name);
            ret.student_preference = Types.Translate(i.learner_preference);
            ret.core.lesson_location = i.location;
            ret.student_data = new Scorm1_2.studentDataType();
            ret.student_data.max_time_allowed = new Scorm1_2.TimeSpan(i.max_time_allowed);
            ret.core.lesson_mode = Enums.Translate(i.mode);
            ret.objectives = Arrays.Translate(i.objectives);

            ret.core.score = Types.Translate(i.score);
            ret.core.session_time = new Scorm1_2.TimeSpan(i.session_time);

            ret.suspend_data = i.suspend_data;
            ret.student_data.time_limit_action = Enums.Translate(i.time_limit_action);
            ret.core.total_time = new Scorm1_2.TimeSpan(i.total_time);
            return ret;
        }