private async void ClickSC(UnidadeDoExperimento SC, Label labelMensagem, PictureBox pictureSC) { Feedback feedback = SC.Feedback; bool positivo = feedback.ValorClick > 0; Color novaCor = positivo ? Color.Green : Color.Red; string mensagem = feedback.Neutro ? "NEUTRO!" : positivo ? "CORRETO!" : "ERRADO!"; string textoEvento = $"Sessão {sessaoAtual.Nome}; MTS {CCAtual.Nome}; SC da imagem {SC.NomeImagem} {mensagem} tocado"; sessaoAtual.NumeroTentativas++; if (feedback.ProbabilidadeComplementar >= random.Next(0, 101)) { relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"{textoEvento}, valendo {feedback.ValorClick} pontos", positivo ? 1 : 0)); if (positivo) { sessaoAtual.AcertosConcecutivos++; CCAtual.AcertosConcecutivos++; } else { sessaoAtual.AcertosConcecutivos = 0; CCAtual.AcertosConcecutivos = 0; } AtualizaPontos(feedback.ValorClick); if (!feedback.Neutro) { SC.PlayAudio(); labelMensagem.Text = mensagem; labelMensagem.ForeColor = novaCor; labelMensagem.Visible = true; } if (!feedback.SemCor) { pictureSC.BackColor = novaCor; } } else { relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"{textoEvento}, porém não houve feedback por probabilidade", -1)); } await Task.Delay(1000); labelMensagem.Visible = false; pictureSC.BackColor = Color.Transparent; taskCC.TrySetResult(true); }
private async Task ApresentarCC(ContingenciaColateral CC) { taskCC = new TaskCompletionSource <bool>(false); taskSModelo = new TaskCompletionSource <bool>(false); CCAtual = CC; pictureSModelo.Visible = true; pictureSModelo.Image = ImageUtils.Resize(CC.sModelo.Imagem, imageWidth, imageHeight); pictureSModelo.BackColor = Color.Transparent; List <UnidadeDoExperimento> SCs = new List <UnidadeDoExperimento>() { CC.SC1, CC.SC2, CC.SC3 }; await taskSModelo.Task; UnidadeDoExperimento sModelo = CC.sModelo; relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"Sessão {sessaoAtual.Nome}; MTS {CC.Nome}; SModelo da imagem {sModelo.NomeImagem} tocado")); if (sModelo.Feedback != null && !sModelo.Feedback.SemCor) { pictureSModelo.BackColor = Color.Green; } sModelo.PlayAudio(); pictureSC3.Visible = true; if (!CC.SC1.Feedback.Neutro && !CC.SC2.Feedback.Neutro && !CC.SC3.Feedback.Neutro) { panelPontos.Visible = true; } pictureSC2.Visible = true; pictureSC1.Visible = true; EmbaralhaSCs(SCs); await taskCC.Task; }
private async void ClickBotao(UnidadeDoExperimento SC, Label labelMensagem, PictureBox pictureSC) { if (SessoesFinalizadas) { return; } Feedback feedback = SC.Feedback; if (feedback.Neutro || feedback.ValorClick == 0) { sessaoAtual.AcertosConcecutivos = 0; sessaoAtual.NumeroTentativas++; relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, 0)); await Task.Delay(1000); } else { if (feedback.ProbabilidadeComplementar > random.Next(0, 100)) { bool positivo = feedback.ValorClick > 0; Color novaCor = positivo ? Color.Green : Color.Red; string mensagem = positivo ? "CORRETO!" : "ERRADO!"; sessaoAtual.NumeroTentativas++; if (positivo) { sessaoAtual.AcertosConcecutivos++; CCAtual.AcertosConcecutivos++; } else { sessaoAtual.AcertosConcecutivos = 0; CCAtual.AcertosConcecutivos = 0; } AtualizaPontos(feedback.ValorClick); SC.PlayAudio(); labelMensagem.Text = mensagem; labelMensagem.ForeColor = novaCor; labelMensagem.Visible = true; if (!feedback.SemCor) { pictureSC.BackColor = novaCor; } relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, feedback.ValorClick)); } else { relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, 0)); } await Task.Delay(1000); labelMensagem.Visible = false; pictureSC.BackColor = Color.White; } ultimoSC = SC; taskCC.TrySetResult(true); }