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); } } }
// 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 ()); } } }
// 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; }
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); } }
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."); } }
private void UpdateLessonState() { LessonState state = GetLessonState(); if (m_LessonState == state) { return; } m_LessonState = state; EventBus.RaiseEvent <ILessonStateHandler>(h => h.HandlerLessonStateChanged(state)); }
public void ChangeState(State type, LessonState worshipState) { this.currentState = type; this.currentLessonState = worshipState; }
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); }
public void HandlerLessonStateChanged(LessonState state) { gameObject.SetActive(state == LessonState.Running); }