Esempio n. 1
0
 void OpenTourUI()
 {
     // set the state to be waiting for the player to respond
     lessonState = LessonState.waitingForRespose;
     // set the UI to be at the position and rotation as our itm UI
     tourGuide.uiObject.transform.position = tourItems[tourGuide.currentTourItem].uiTransform.position;
     tourGuide.uiObject.transform.rotation = tourItems [tourGuide.currentTourItem].uiTransform.rotation;
     // turn on the UI object so its usable
     tourGuide.uiObject.SetActive(true);
     // turn on UI elements according to tourmde and question
     if (StaticStuff.tourMode == TourMode.tour)
     {
         tourGuide.uiObject.transform.Find("TourUI").gameObject.SetActive(true);
     }
     if (StaticStuff.tourMode == TourMode.quiz)
     {
         // start taking time for answer as soon as UI for answers is available for student to answer
         StartCoroutine(TimeAnswer());
         if (tourItems [tourGuide.currentTourItem].answer == "True" || tourItems [tourGuide.currentTourItem].answer == "False")
         {
             tourGuide.uiObject.transform.Find("True_False").gameObject.SetActive(true);
             tourGuide.uiObject.transform.Find("MultipleChoice").gameObject.SetActive(false);
         }
         else
         {
             tourGuide.uiObject.transform.Find("MultipleChoice").gameObject.SetActive(true);
             tourGuide.uiObject.transform.Find("True_False").gameObject.SetActive(false);
         }
     }
 }
Esempio n. 2
0
 // this method moves from one item to the next
 void PlayNextItem()
 {
     // check if we are at our tour/quiz end
     if (tourGuide.currentTourItem < tourItems.Count - 1)
     {
         // set the state to moving
         lessonState = LessonState.moving;
         // play animation to next item
         PlayertransAnimation();
         // index our item in list
         tourGuide.currentTourItem++;
         // turn the ui off again
         tourGuide.uiObject.SetActive(false);
     }
     else
     {
         if (StaticStuff.tourMode == TourMode.tour)
         {
             // set our lesson state to be the end of the tour
             lessonState = LessonState.endOfTour;
             // turn the ui off again
             tourGuide.uiObject.SetActive(false);
             // lets say the conclusion here
             transform.SendMessage("Say", tourGuide.conclusion);
         }
         else if (StaticStuff.tourMode == TourMode.quiz)
         {
             StartCoroutine(AddStudentScores());
             //StartCoroutine (ScoreStudent ());
         }
     }
 }
Esempio n. 3
0
 // starts tour/quiz from intro
 void LetsStart()
 {
     foreach (GameObject go in tourGuide.introActiveObjects)
     {
         go.SendMessage("DoThing", -1);
     }
     // sets the lessonstate to be moving
     lessonState = LessonState.moving;
 }
Esempio n. 4
0
 void PlayQuizItem()
 {
     // set the state to be at lecture
     lessonState = LessonState.lecture;
     transform.SendMessage("Say", tourItems[tourGuide.currentTourItem].question);
     // play animation for active objects of this item
     foreach (GameObject go in tourItems[tourGuide.currentTourItem].activeObjects)
     {
         go.SendMessage("DoThing", tourGuide.currentTourItem);
     }
 }
Esempio n. 5
0
 public void ChangeState(State type)
 {
     if (type == State.notinuse)
     {
         this.currentState       = type;
         this.currentLessonState = LessonState.off;
     }
     else
     {
         Log.Error("Changed default state of Sacrificial Altar this should never happen.");
     }
 }
Esempio n. 6
0
        private void UpdateLessonState()
        {
            LessonState state = GetLessonState();

            if (m_LessonState == state)
            {
                return;
            }

            m_LessonState = state;
            EventBus.RaiseEvent <ILessonStateHandler>(h => h.HandlerLessonStateChanged(state));
        }
Esempio n. 7
0
 public void ChangeState(State type, LessonState worshipState)
 {
     this.currentState       = type;
     this.currentLessonState = worshipState;
 }
Esempio n. 8
0
        private async Task <IEnumerable <Lesson> > GetLessons(int elementType, int elementId, DateTime date)
        {
            string        dateStr = date.ToString("yyyy-MM-dd");
            string        url     = $"timetable/weekly/data?elementType={elementType}&elementId={elementId}&date={dateStr}";
            List <Lesson> lessons = new List <Lesson>();
            // JSON Daten des Stundenplanes empfangen.
            JsonElement response = await SendWebRequestAsync(url);

            JsonElement parsed;

            try
            {
                // Die einzelnen Unterrichtsstunden behandeln und die Navigation Properties in
                // Lesson erzeugen. Dabei werden die Collections Lehrer, Räume, ... abgefragt.
                JsonElement periods = response.GetProperty("result").GetProperty("data").GetProperty("elementPeriods").EnumerateObject().First().Value;
                foreach (JsonElement period in periods.EnumerateArray())
                {
                    try
                    {
                        int    dateInt      = period.GetProperty("date").GetInt32();
                        int    beginInt     = period.GetProperty("startTime").GetInt32();
                        int    endInt       = period.GetProperty("endTime").GetInt32();
                        Period lessonPeriod = (await Periods).FirstOrDefault(p => p.StartTime == new TimeSpan(beginInt / 100, beginInt % 100, 0));

                        // Den Status der Stunde in folgender Reihenfolge setzen.
                        LessonState lessonState = LessonState.Other;
                        if (period.GetProperty("is").TryGetProperty("event", out parsed) ? parsed.GetBoolean() : false)
                        {
                            lessonState = LessonState.Event;
                        }
                        else if (period.GetProperty("is").TryGetProperty("substitution", out parsed) ? parsed.GetBoolean() : false)
                        {
                            lessonState = LessonState.Substitution;
                        }
                        else if (period.GetProperty("is").TryGetProperty("shift", out parsed) ? parsed.GetBoolean() : false)
                        {
                            lessonState = LessonState.Shift;
                        }
                        else if (period.GetProperty("is").TryGetProperty("standard", out parsed) ? parsed.GetBoolean() : false)
                        {
                            lessonState = LessonState.Standard;
                        }
                        else if (period.GetProperty("is").TryGetProperty("cancelled", out parsed) ? parsed.GetBoolean() : false)
                        {
                            lessonState = LessonState.Cancelled;
                        }

                        // Die Unterrichtsstunde erzeugen
                        Lesson lesson = new Lesson
                        {
                            StudentGroup = period.TryGetProperty("studentGroup", out parsed) ? parsed.GetString() : "",
                            LessonText   = period.TryGetProperty("lessonText", out parsed) ? parsed.GetString() : "",
                            PeriodText   = period.TryGetProperty("periodText", out parsed) ? parsed.GetString() : "",

                            Period = lessonPeriod,
                            Begin  = new DateTime(dateInt / 10000, dateInt / 100 % 100, dateInt % 100)
                                     + new TimeSpan(beginInt / 100, beginInt % 100, 0),
                            End = new DateTime(dateInt / 10000, dateInt / 100 % 100, dateInt % 100)
                                  + new TimeSpan(endInt / 100, endInt % 100, 0),

                            State = lessonState
                        };

                        // Eine Stunde kann mehrere Klassen, Lehrer, ... betreffen. Bei einer
                        // Vertretung wird außerdem die originale ID geliefert.
                        List <LessonResource <SchoolClass> > classes  = new List <LessonResource <SchoolClass> >();
                        List <LessonResource <Teacher> >     teachers = new List <LessonResource <Teacher> >();
                        List <LessonResource <Subject> >     subjects = new List <LessonResource <Subject> >();
                        List <LessonResource <Room> >        rooms    = new List <LessonResource <Room> >();
                        foreach (JsonElement element in period.GetProperty("elements").EnumerateArray())
                        {
                            int currentId  = element.TryGetProperty("id", out parsed) ? parsed.GetInt32() : -1;
                            int originalId = element.TryGetProperty("orgId", out parsed) ? parsed.GetInt32() : -1;

                            // Die Details zu den Ressourcen auslesen. Da es Lazy Properties sind,
                            // wird nur bei der ersten Verwendung vom Web eingelesen.
                            switch (element.GetProperty("type").GetInt32())
                            {
                            case (int)ResourceType.SchoolClass:
                                SchoolClass currentClass = (await Classes).FirstOrDefault(c => c.InternalId == currentId);
                                classes.Add(new LessonResource <SchoolClass>
                                {
                                    Current  = currentClass,
                                    Original = (await Classes)
                                               .FirstOrDefault(c => c.InternalId == originalId) ?? currentClass
                                });;
                                break;

                            case (int)ResourceType.Teacher:
                                Teacher currentTeacher = (await Teachers).FirstOrDefault(t => t.InternalId == currentId);

                                teachers.Add(new LessonResource <Teacher>
                                {
                                    Current  = currentTeacher,
                                    Original = (await Teachers)
                                               .FirstOrDefault(t => t.InternalId == originalId) ?? currentTeacher
                                });
                                break;

                            case (int)ResourceType.Subject:
                                Subject currentSubject = (await Subjects).FirstOrDefault(s => s.InternalId == currentId);

                                subjects.Add(new LessonResource <Subject>
                                {
                                    Current  = currentSubject,
                                    Original = (await Subjects)
                                               .FirstOrDefault(s => s.InternalId == originalId) ?? currentSubject
                                });
                                break;

                            case (int)ResourceType.Room:
                                Room currentRoom = (await Rooms).FirstOrDefault(r => r.InternalId == currentId);

                                rooms.Add(new LessonResource <Room>
                                {
                                    Current  = currentRoom,
                                    Original = (await Rooms)
                                               .FirstOrDefault(r => r.InternalId == originalId) ?? currentRoom
                                });
                                break;

                            default:
                                break;
                            }
                        }
                        lesson.Classes  = classes;
                        lesson.Teachers = teachers;
                        lesson.Subjects = subjects;
                        lesson.Rooms    = rooms;
                        lessons.Add(lesson);
                    }
                    catch { }
                }
            }
            catch (Exception e)
            {
                throw new UntisException("Invalid Timetable data.", e)
                      {
                          Method = url
                      };
            }

            return(lessons);
        }
Esempio n. 9
0
 public void HandlerLessonStateChanged(LessonState state)
 {
     gameObject.SetActive(state == LessonState.Running);
 }