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