private void FinePartita() { using (formFinePartita f = new formFinePartita()) { DialogResult r = f.ShowDialog(); if (r == DialogResult.Yes) { Resetta(); } else { Invia("Utenti", 4, "N"); this.Hide(); EliminaCode(); Channel.Close(); Connection.Close(); Channel.Dispose(); Connection.Dispose(); formCaricamento formCaricamento = new formCaricamento(); AvvisaCartelle = false; formCaricamento.Closed += (s, args) => this.Close(); formCaricamento.ShowDialog(); } } }
private void btnNuovaLobby_Click(object sender, EventArgs e) { DialogResult r = MessageBox.Show("Sicuro di voler terminare la partita in corso e aprire una nuova lobby?", "", MessageBoxButtons.YesNo); if (r == DialogResult.Yes) { Invia("Utenti", 4, "N"); this.Hide(); EliminaCode(); Channel.Close(); Connection.Close(); Channel.Dispose(); Connection.Dispose(); formCaricamento formCaricamento = new formCaricamento(); AvvisaCartelle = false; formCaricamento.Closed += (s, args) => this.Close(); formCaricamento.ShowDialog(); } }
public void GeneraCode(List <CUtente> Utenti, IConnection conn, IModel chan) { this.Channel = chan; this.Connection = conn; this.Utenti = new List <CUtente>(); SoldiPremi = new double[6]; Channel.ExchangeDeclare("Utenti", ExchangeType.Fanout, false, false, null); var consumer = new EventingBasicConsumer(Channel); daEstrarre = new List <int>(); for (int i = 0; i < Utenti.Count; i++) { this.Utenti.Add(new CUtente(Utenti[i].Username, Utenti[i].NumCartelle)); } consumer.Received += (model, ea) => { var body = ea.Body; var props = ea.BasicProperties; string message = Encoding.UTF8.GetString(body); int oggetto = (int)props.Headers["Oggetto"]; switch (oggetto) { case 0: if (message != "") { Vincitori.Add(message); } Arrivati++; if (Arrivati == this.Utenti.Count()) { Arrivati = 0; AbilitaEstrazione(); } break; case 1: for (int i = 0; i < this.Utenti.Count(); i++) { if (this.Utenti[i].Username == message) { this.Utenti[i].NumCartelle = (int)props.Headers["NumCartelle"]; break; } } Arrivati++; if (Arrivati == this.Utenti.Count()) { Arrivati = 0; InviaCartelle(); AbilitaEstrazione(); CalcolaPremi(); CartelleInviate = true; } break; case 2: for (int i = 0; i < this.Utenti.Count(); i++) { if (this.Utenti[i].Username == message) { this.Utenti.RemoveAt(i); break; } } if (this.Utenti.Count() != 0) { MessageBox.Show(message + " si è disconnesso!", "", MessageBoxButtons.OK); if (Arrivati == this.Utenti.Count()) { Arrivati = 0; if (!CartelleInviate) { CartelleInviate = true; InviaCartelle(); CalcolaPremi(); } AbilitaEstrazione(); } } else { MessageBox.Show("Tutti gli utenti si sono disconnessi", "", MessageBoxButtons.OK); this.BeginInvoke((MethodInvoker) delegate() { this.Hide(); EliminaCode(); Channel.Close(); Connection.Close(); Channel.Dispose(); Connection.Dispose(); formCaricamento formCaricamento = new formCaricamento(); AvvisaCartelle = false; formCaricamento.Closed += (s, args) => this.Close(); formCaricamento.ShowDialog(); }); } break; } }; for (int i = 0; i < this.Utenti.Count; i++) { QueueCreate.Add("CS" + this.Utenti[i].Username); Channel.QueueDeclare("SC" + this.Utenti[i].Username, false, false, false, null); Channel.ExchangeDeclare("SC" + this.Utenti[i].Username, ExchangeType.Direct, false, false, null); Channel.QueueBind("SC" + this.Utenti[i].Username, "SC" + this.Utenti[i].Username, ""); Channel.QueueBind("SC" + this.Utenti[i].Username, "Utenti", ""); Channel.QueueDeclare("CS" + this.Utenti[i].Username, false, false, false, null); Channel.ExchangeDeclare("CS" + this.Utenti[i].Username, ExchangeType.Direct, false, false, null); Channel.QueueBind("CS" + this.Utenti[i].Username, "CS" + this.Utenti[i].Username, ""); Channel.BasicConsume(queue: "CS" + this.Utenti[i].Username, autoAck: true, consumer: consumer); } GeneraDaEstrarre(); }