# Übergabe HublzGoConcert ## To Do - [ ] [TD1] In Artventure einbinden: JoinGroup Feature und Minigames durch Chatbot verbinden und testen - [ ] [TD2] Webhook: onComplete Minigame - Puntke an Backend Webhook schicken (letztes Meeting Tobi) - [ ] [TD3] QuizDuell Logik: Mit dem Fall umgehen, dass Gruppenleader rausfällt - [ ] [TD4] QuizDuell Logik: Wenn nicht Leader, Quizantworten im Code setzen - [ ] [TD5] Testen: iOS - [ ] [TD6] Testen: UI auf verschiedenen Bildschirmgrößen - [ ] [TD7] QuizDuell UI: mehr Feedback an User (e.g., "Du kannst nichts klicken du bist nicht Groupleader") - [ ] [TD8] Final Ranking Screen (Oumayma hat da schon angefangen) - [x] [TD9] Strings an neue Translation-Struktur anpassen Im Code sind noch einige Todos -> das sind alles Hilfskonstanten für die Entwicklung (e.g. fixierte Group Ids) - entfernen wenn in Artventure eingebunden ### TD3 - Erläuterung **Situation/Requirement:** Es soll möglich sein das Spiel fortzusetzen auch wenn Spieler:innen rausfallen. **Problem:** Nur Teamleader kann mit der UI interagieren, wenn die Person rausfliegt muss neuer Teamleader gewählt werden. Teamleader sind aber im Backend fixiert -> Methode im Backend wird benötigt, um einen neuen Teamleader zu wählen ### TD4 - Erläuterung Ein QuizDuell enthält ein Quiz als Attribut. **Situation:** Wenn ich im Spiel kein Teamleader bin, sende ich keine Antworten, sondern erhalte nur Feedback über die SyncMessages **Problem:** Der Progress des Quizzes wird für "normale" Team Members nicht geupdated. Im Quiz sind die Methoden so gekapselt, dass ich Antworten nicht programmiererisch setzen kann - Antworten werden nur über UI Interaktion gelesen Team Leader: ![](https://i.imgur.com/6TjCZtu.png) Team Member: ![](https://i.imgur.com/KthRUqM.png) **Lösung:** Prinzipiell hätte ich die Quizklasse einfach umgeschrieben, dass es eine Möglichkeit gibt die gesetzen Antworten im Code zu übergeben. Wollte aber da nicht herum pfuschen, da es nicht mein Code ist. ## Offene Fragen - WordCloudSettings & QuizDuellSettings: Es werden wahrscheinlich nicht alle Attribute gebraucht (siehe Kommentare in den Klassen) - Minigames allgemein brauchen eine "isMultiplayer" Flag? (siehe [Slack](https://hublzworkspace.slack.com/archives/C039B7SKH4K/p1655716006783549?thread_ts=1655712999.184679&cid=C039B7SKH4K)) ## Design Entscheidungen @Barbara: Dinge, die ich einfach beschlossen habe, da eine Rücksprache sich nicht ausgezahlt hätte. Falls etwas nicht passt kann es leicht wieder eingebaut werden. - wenn man eine Frage beantwortet, sieht man nur ob richtig/falsch -> keine Erklärung, um den Spielflow nicht zu unterbrechen - Einzelspieler Quizzes erlauben erneutes Antworten, wenn nur eine Frage in Quiz enthalten -> Quizduelle nicht ### (Ab)Using PageController Die Screens des QuizDuell werden initalisiert, in dem für jede Frage ein Widget erstellt wird und zwischend den Fragen ein InterventionPageWidget eingefügt wird. Ob die aktuelle Page ein InterventionPageWidget ist, wird mit index%2 ermittelt. 100% zufrieden bin ich mit der Lösung nicht, aber da die gesamte (einzel) Quiz Logik auf dem PageController aufbaut, erschien mir das die schönere Lösung als die Quiz Logik neu zuschreiben. ----- # Bestandteile ## SyncMessagingService Klasse, die die Kommunikation mit der Firebase RealtimeDB handlet. Siehe Dokumentation im Code für mehr Info. ## WordCloud ### FlowDiagram ![](https://i.imgur.com/HYozB7k.png) ## QuizDuel ### Conditions: * GUI Interaction: true if isLeader * canSubmit: whether the action button is displayed * on question page: true if current question has not been answered before AND an answer is selected * on intervention page: true if currently on intervention page AND !needToWait * needToWait: whether group needs to wait for other group interaction true if: * i am the first to answer (one message received more than one group in game) * other groups and i have answered, others haven't ### FlowDiagram ![](https://i.imgur.com/iWMbEKq.png) ## Link * [Draw.io Flowdiagramme](https://drive.google.com/file/d/1tW1YbIaEJU1DYq2HRqGRmZXJkotCikU7/view?usp=sharing)