Example #1
0
        private void btn_listar_pokemons_disponiveis_Click(object sender, EventArgs e)
        {
            ResultadoSorteio form = new ResultadoSorteio();

            DialogResult dr = MessageBox.Show("Deseja ver somente os pokémons do arquivo?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            // Se não obter pokémons, sai do método.
            if (!obter_pokemons(dr == DialogResult.Yes))
            {
                return;
            }

            form.alimentar_pokemons_disponiveis(_pokemons_disponiveis);
            form.ShowDialog();
        }
Example #2
0
        private void sortear_times(bool usar_arquivo)
        {
            if (lst_listview.Items.Count == 0)
            {
                MessageBox.Show("Adicione os jogadores");

                return;
            }

            // Obtem os pokémons disponíveis para sorteio.
            if (!obter_pokemons(usar_arquivo))
            {
                return;
            }

            int nmr_pokemons_por_jogador = (int)nmc_qtd_pokemons.Value;

            if (nmr_pokemons_por_jogador > _pokemons_disponiveis.Count)
            {
                MessageBox.Show("A quantidade de pokémons disponíveis é menor do que a quantidade de pokémons por jogador!", "Atenção",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);

                return;
            }

            ResultadoSorteio form = new ResultadoSorteio();

            foreach (string jogador in lst_listview.Items)
            {
                List <Pokemon> pokemons_sorteados = new List <Pokemon>();
                decimal        media_base_status  = 0m;

                bool sorteou_mega_form = false;
                bool precisa_mega_form = false;

                while (media_base_status < Convert.ToInt32(nmc_media_minima_base_status.Value) || precisa_mega_form)
                {
                    pokemons_sorteados = sortear_pokemons(nmr_pokemons_por_jogador, chk_permite_repetir.Checked);

                    int total_base_status = 0;

                    for (int i = 0; i < nmr_pokemons_por_jogador; i++)
                    {
                        if (!sorteou_mega_form)
                        {
                            if (sorteou_mega_form = pokemons_sorteados[i].MegaForms != null)
                            {
                                sorteou_mega_form = pokemons_sorteados[i].MegaForms.Length > 0;
                            }
                        }

                        total_base_status += pokemons_sorteados[i].TotalStatus;
                    }

                    if (chk_incluir_mega_evolucao.Checked)
                    {
                        precisa_mega_form = true;

                        if (sorteou_mega_form)
                        {
                            precisa_mega_form = false;
                        }
                    }

                    media_base_status = decimal.Divide(total_base_status, nmr_pokemons_por_jogador);

                    // Define false para caso tenha sorteado mega forma mas a média não tenha batido, garantindo que caso seja feito novo sorteio
                    // tenha uma mega evolução também
                    sorteou_mega_form = false;
                }

                // ATENÇÃO: Não sei o motivo, mas se tirar esse sleep, os jogadores ficam com os mesmos pokémons.
                Thread.Sleep(20);

                if (chk_sorteio_secreto.Checked)
                {
                    escrever_sorteio_arquivo(jogador, pokemons_sorteados);
                }
                else
                {
                    form.alimentar_resultado_sorteio(jogador, pokemons_sorteados);
                }

                pokemons_sorteados.Clear();
            }

            // Só abre o form do resultado se o sorteio não for secreto
            if (chk_sorteio_secreto.Checked)
            {
                MessageBox.Show("Sorteio realizado com sucesso!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                form.ShowDialog();
            }
        }