/// <summary> /// wird aufgerufen wenn eine runde beender ist um alles zu aktualisieren und eine neue /// runde zu öffnen falls nötig /// </summary> /// <param name="sender"></param> /// <param name="e">welche antwort gewählt wurde</param> private void Round_OnClose(object sender, int e) { if (index < 3)//antwort setzen { game.LastRound.Questions[index].AnswerPlayer = e; } index++; if (index < 3)//runde noch nicht zu ende { round = new GuiRound(game.LastRound.Questions[index], game); round.OnRoundClose += Round_OnClose; fragenGerangel.OpenScreen(round); } else//runde zu ende und spiel wird aktualisiert { GuiRound round = (GuiRound)sender; new Thread(() => { Globals.APIManager.GetGame(game).Wait(); fragenGerangel.OpenScreen(new GuiGameOverview(fragenGerangel, game)); }).Start(); } }
/// <summary> /// Erstellt alle komponenten /// </summary> public override void Init() { Globals.APIManager.GetGame(game).Wait(); if (!game.Active)//wenn spiel zu ende kann man nicht mehr spielen { Components.Add(new GuiButton("Zurück") { Size = new Vector(200, 100), Location = new Vector(-100, -150), RX = 0.5f, RY = 1, FontColor = Color.White }); animation.Speed = 0.6f; base.Init(); GetComponent <GuiButton>("Zurück").OnClick += (object sender, Vector e) => { fragenGerangel.OpenScreen(new GuiMainScreen(fragenGerangel)); }; return; } //Falls der gegner dran ist kann man nicht spielen sonst schon Components.Add(new GuiButton(IsRemoteTurn() ? "Zurück" : "SPIELEN") { Size = new Vector(200, 100), Location = new Vector(-100, -150), RX = 0.5f, RY = 1, FontColor = Color.White, BackColor = IsRemoteTurn() ? Color.Gray : Color.LawnGreen }); GetComponent <GuiButton>(IsRemoteTurn() ? "Zurück" : "SPIELEN").OnClick += (object sender, Vector e) => { if (IsRemoteTurn()) { fragenGerangel.OpenScreen(new GuiMainScreen(fragenGerangel)); return; } Globals.APIManager.GetGame(game).Wait(); if (game.LastRound.Category == null)//wenn die kategorie der runde noch nicht gesetzt wurde wird diese ausgewählt { GuiCategory category = new GuiCategory(game); bool flag = true; category.OnClose += (object s, EventArgs args) => { new Thread(() => { if (!flag) { return; } //aktualisieren der kategorie und des spieles + aufrufen der runde flag = false; category.animation.Finished = true; category.animation.Incremental = true; Globals.APIManager.ChooseCategory(game, category.Category + 1).Wait(); Task task = Globals.APIManager.GetGame(game); task.Wait(); round = new GuiRound(game.LastRound.Questions[0], game); round.OnRoundClose += Round_OnClose; fragenGerangel.OpenScreen(round); }).Start(); }; fragenGerangel.OpenScreen(category); return; } //öffnet die letze frage welche nicht beantwortet wurde in der runde int index = 0; for (int i = 0; i < game.LastRound.Questions.Length; i++) { if (game.LastRound.Questions[i].AnswerPlayer == -1) { this.index = i; index = i; break; } } round = new GuiRound(game.LastRound.Questions[index], game); round.OnRoundClose += Round_OnClose; fragenGerangel.OpenScreen(round); }; animation.Speed = 0.6f; base.Init(); }