/// <summary> /// Método para salvar as partidas da súmula em outro arquivo. /// </summary> /// <param name="fullName">Caminho completo do arquivo</param> public void SalvarArquivo(string fullName) { StreamWriter sw = new StreamWriter(fullName, false, System.Text.Encoding.GetEncoding(1252)); sw.WriteLine(arvorePartidas.Count); Partida[] partidas = new Partida[arvorePartidas.Count]; arvorePartidas.CopyTo(partidas); foreach (Partida item in partidas) { sw.Write(item.ToString()); } sw.Close(); }
/// <summary> /// Método de leitura do arquivo texto e transformação /// na estrutura de partida /// </summary> public void LerArquivo() { StreamReader sr = new StreamReader(arquivo.FullName, System.Text.Encoding.GetEncoding(1252)); Partida aux = new Partida(); Cartao cartao; Gol gol; Substituicao subs; aux.JogoNormal = new Placar(); aux.Prorrogacao = new Placar(); aux.Penaltis = new Placar(); int sub = 0; // Variável que garante que ajam apenas 3 substituições int n = 0; //Pega a quantidade de súmulas no arquivo int.TryParse(sr.ReadLine(), out n); string read; int linha = 0; // Variável que indica o que procurar no arquivo string[] dados = null; while (!sr.EndOfStream) { // Enquanto não chegar ao final do arquivo read = sr.ReadLine().ToUpper(); dados = read.Split(';'); switch (linha) { case 0: // Equipes aux.EquipeA = dados[0].Trim(); aux.EquipeB = dados[1].Trim(); linha++; break; case 1: // Local e data aux.Local = dados[0].Trim(); aux.Data = DateTime.Parse(dados[1].Trim() + " " + dados[2].Trim()); linha++; break; case 2: // Fase aux.Fase = aux.GetFases(dados[0].Trim()); linha++; break; case 3: // Gols int a, b; if (dados.Length < 3) { if (dados.Length == 2) { int.TryParse(dados[0].Split('X')[0], out a); int.TryParse(dados[0].Split('X')[1], out b); aux.JogoNormal.GolsEquipeA = a; aux.JogoNormal.GolsEquipeB = b; int.TryParse(dados[1].Split('X')[0], out a); int.TryParse(dados[1].Split('X')[1], out b); aux.Prorrogacao.GolsEquipeA = a; aux.Prorrogacao.GolsEquipeB = b; } if (dados.Length == 1) { int.TryParse(dados[0].Split('X')[0], out a); int.TryParse(dados[0].Split('X')[1], out b); aux.JogoNormal.GolsEquipeA = a; aux.JogoNormal.GolsEquipeB = b; } } else { int.TryParse(dados[0].Split('X')[0], out a); int.TryParse(dados[0].Split('X')[1], out b); aux.JogoNormal.GolsEquipeA = a; aux.JogoNormal.GolsEquipeB = b; int.TryParse(dados[1].Split('X')[0], out a); int.TryParse(dados[1].Split('X')[1], out b); aux.Prorrogacao.GolsEquipeA = a; aux.Prorrogacao.GolsEquipeB = b; int.TryParse(dados[2].Split('X')[0], out a); int.TryParse(dados[2].Split('X')[1], out b); aux.Penaltis.GolsEquipeA = a; aux.Penaltis.GolsEquipeB = b; } linha++; break; default: //Dados complementares como Gol, Cartão, Substituição e Obs if (dados[0].Contains(":")) { switch (dados[0].Split(':')[0]) { case "GOL": case "GOLS": gol = new Gol(dados[0].Split(':')[1], dados[1], byte.Parse(dados[2])); aux.Gols.Add(gol); break; case "CARTÃO": case "CARTAO": case "CARTÕES": cartao = new Cartao(dados[0].Split(':')[1], dados[1], byte.Parse(dados[2]), (TipoCartao)Enum.Parse(typeof(TipoCartao), dados[3])); aux.Cartoes.Add(cartao); break; case "SUBS": case "SUBSTITUIÇÃO": case "SUBSTITUICAO": case "SUBSTITUIÇÕES": subs = new Substituicao(dados[0].Split(':')[1], dados[1], dados[2], byte.Parse(dados[3])); aux.Substituicoes[sub++] = subs; break; case "OBS": case "OBSERVAÇÕES": case "OBSERVACOES": aux.Obs.Add(new Observacao(dados[0].Split(':')[1])); break; } } else { arvorePartidas.Add(aux); aux = new Partida(); aux.JogoNormal = new Placar(); aux.Prorrogacao = new Placar(); aux.Penaltis = new Placar(); aux.EquipeA = dados[0].Trim(); aux.EquipeB = dados[1].Trim(); linha = 1; sub = 0; } break; } } arvorePartidas.Add(aux); }
/// <summary> /// Método para adicionar sumula /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btAdicionar_Click(object sender, EventArgs e) { Partida nova = new Partida(); nova.EquipeA = txtEquipeA.Text; nova.EquipeB = txtEquipeB.Text; nova.Local = txtLocal.Text; if (rbPrimeiraFase.Checked) nova.Fase = Fases.PRIMEIRA_FASE; else if (rbOitavas.Checked) nova.Fase = Fases.OITAVAS; else if (rbQuartas.Checked) nova.Fase = Fases.QUARTAS; else if (rbSemiFinal.Checked) nova.Fase = Fases.SEMIFINAL; else if (rbTerceiroLugar.Checked) nova.Fase = Fases.DISPUTA_3_LUGAR; else if (rbFinal.Checked) nova.Fase = Fases.FINAL; nova.Data = dtpData.Value; nova.JogoNormal.GolsEquipeA = (int)nudPlacarNormalA.Value; nova.JogoNormal.GolsEquipeB = (int)nudPlacarNormalB.Value; nova.Prorrogacao.GolsEquipeA = (int)nudPlacarProrrogacaoA.Value; nova.Prorrogacao.GolsEquipeB = (int)nudPlacarProrrogacaoB.Value; nova.Penaltis.GolsEquipeA = (int)nudPlacarPenaltisA.Value; nova.Penaltis.GolsEquipeB = (int)nudPlacarPenaltisB.Value; for (int i = 0; i < dgvGols.Rows.Count - 1; i++) { nova.Gols.Add(new Gol(dgvGols[0, i].Value.ToString(), dgvGols[1, i].Value.ToString(), byte.Parse(dgvGols[2, i].Value.ToString()))); } for (int i = 0; i < dgvCartoes.Rows.Count - 1; i++) { nova.Cartoes.Add(new Cartao(dgvCartoes[0, i].Value.ToString(), dgvCartoes[1, i].Value.ToString(), byte.Parse(dgvCartoes[2, i].Value.ToString()), (TipoCartao)Enum.Parse(typeof(TipoCartao), dgvCartoes[3, i].Value.ToString()))); } for (int i = 0; i < dgvSubstituicoes.Rows.Count - 1; i++) { if (i < 3) { nova.Substituicoes[i] = new Substituicao(dgvSubstituicoes[0, i].Value.ToString(), dgvSubstituicoes[1, i].Value.ToString(), dgvSubstituicoes[2, i].Value.ToString(), byte.Parse(dgvSubstituicoes[3, i].Value.ToString())); } } for (int i = 0; i < dgvObs.Rows.Count - 1; i++) { nova.Obs.Add(new Observacao(dgvObs[0, i].Value.ToString())); } dataSumula.ArvorePartidas.Add(nova); UpdateGridPrincipal(); UpdateGrids(0); }