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, 3 days ago) by figdor32
File size: 4309 byte(s)
Log Message:
Initial check-in

File Contents

# User Rev Content
1 figdor32 2 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     }