コード例 #1
0
 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();
         }
     }
 }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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();
        }