ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/Qzhteln/trunk/TELTest/Gamemodes/Turns.cs
Revision: 2
Committed: Wed Feb 11 13:07:01 2026 UTC (8 weeks, 4 days ago) by figdor32
File size: 4309 byte(s)
Log Message:
Initial check-in

File Contents

# Content
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace TELTest.Gamemodes {
8 public class Turns : QuizGamemode {
9 public Turns() {
10 }
11 public Turns(QuizContainer container, BaseQuizContext context) : base(container, context) {
12 }
13
14 public override String Name => "[MP] Rundy";
15
16 public override String SystemName => "Turns";
17
18 public override String Description => "Gracze odpowiadaja po kolei.";
19 public override QuizGamemode CreateInstance(QuizContainer quiz, BaseQuizContext context) => new Turns(quiz, context);
20 class TurnsStorage {
21 public ConnectionHandler[] Order;
22 public int CurrentPlayer = 0;
23 public int Score = 0;
24 }
25 public override async Task Begin() {
26 var lobby = await CreateJoinLobbyStandard();
27 if (lobby == null) return;
28 await Clear();
29 int score = 0;
30 await WriteLine("Tytul quizu: " + Quiz.Title);
31 await WriteLine("Autor quizu: " + Quiz.Author);
32 await WriteLine();
33 await WaitForPlayersReady(lobby);
34 if (lobby.Storage == null) {
35 TurnsStorage ts = new TurnsStorage();
36 ts.Order = lobby.Players.ToArray();
37 ts.CurrentPlayer = 0;
38 lobby.Storage = ts;
39 }
40 Context.Handler.PlayerReady = false;
41
42 await Clear();
43 await WriteLine("Tytul quizu: " + Quiz.Title);
44 await WriteLine("Autor quizu: " + Quiz.Author);
45 await WriteLine();
46 for (int i = 0; i < Quiz.Questions.Length; i++) {
47 TurnsStorage ts = lobby.Storage as TurnsStorage;
48 int cp = ts.CurrentPlayer;
49 if (Context.Handler != ts.Order[cp]) {
50 await Clear();
51 Context.Handler.PlayerReady = true;
52 await WriteLine("Oczekiwanie na " + ts.Order[cp].PlayerName);
53 await WaitForPlayersReady(lobby);
54 } else {
55 Context.Handler.PlayerReady = false;
56 await Clear();
57 await WriteLine((i + 1) + ". " + Quiz.Questions[i].Content);
58 string correct = "";
59 for (int j = 0; j < Quiz.Questions[i].Answers.Length; j++) {
60 var itm = Quiz.Questions[i].Answers[j];
61 await WriteLine("{0}. {1}", Utilities.NumberToLetter(j).ToLower(), itm.Content);
62 if (itm.Correct) correct += Utilities.NumberToLetter(j).ToUpper()[0];
63 }
64 await Write("Twoja odpowiedz: ");
65 char ans = await ReadUppercaseKey();
66 await Flush();
67 await WriteLine();
68 if (correct.Contains(ans)) {
69 await WriteLine("Dobrze! Zdobywacie punkt.");
70 ts.Score++;
71 } else {
72 await WriteLine("Zle! Poprawna odpowiedz to: {0}", correct);
73 }
74 await WriteLine();
75 await Pause();
76 ts.CurrentPlayer++;
77 if (ts.CurrentPlayer >= ts.Order.Length) ts.CurrentPlayer = 0;
78 Context.Handler.PlayerReady = true;
79 await Write("\r\n\r\n");
80 }
81 }
82
83
84 await WaitForPlayersReady(lobby);
85 await Clear();
86 StringBuilder sb = new StringBuilder();
87 await WriteLine("Wasz wynik: {0}/{1}\r\n", ((TurnsStorage)lobby.Storage).Score, Quiz.Questions.Length);
88 //foreach (var item in lobby.Players) {
89 // if (item == Context.Handler) continue;
90 // sb.AppendFormat("Wynik {0}: {1}/{2}\r\n", item.PlayerName, item.SharedTempUserObject, Quiz.Questions.Length);
91 //}
92 await WriteLine(sb.ToString());
93 await Pause();
94
95 //await DoScoreSubmission(score, true);
96 await EndMP(lobby);
97 }
98
99 }
100 }